Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Rippleheart v0.1.4
Rippleheart.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Net; using System.Net.Sockets; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.ExceptionServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Versioning; using System.Security; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Timers; using A0wIwYFS33NHq03BWPYF; using A4R3mdkatIEijGV9YF2; using A64cLLjiqtWaAX6OagDi; using A8xQ3ljTEqNjV3SoCrKm; using AE88vQQaorx0SgwX8YU; using AFx3ukFUp08vIpY1sexD; using AGCBBj8jqgy87loSW36b; using AI2N7EjqO550SaIW8ark; using AJ0yVMjRfC6LKqK0gOUK; using AJBIrcj35qjBXm9JuiAp; using AKIWeIjCNvNkJXHowgls; using AN8raCcu21WdxSsRcTH; using ANCtBrMWKqrFVZO9eKQw; using AOXHpq2RzWtINtsTn1y7; using ARNy1m8iQLxweqKFVKjj; using ARZQOE2LuKO5xj3ZQuXT; using AUJvZZMQKI0dDeUMxAiM; using AVClMr8HqdqHNoXmFOq1; using AVjSfXjXC5hrGATpXkPD; using AYYjNDFvA22rTsjss1dT; using AcRnSb2P9iZtxSJEel59; using Aek5UN83cbD3CEFTiHgU; using Agmm4yFTZkGteJIbk7SX; using AhIy665GPiP9PMj2Pme; using AhlZMBKCEiNKHKSwDkU; using AiLe68F1nhnQM54Aqmmu; using Akbt3tFIPoBTM5HIoFgB; using AkjD1K2wIB14ykblicKu; using AmwdmcFp6ubqDGLhFZoS; using AoKEAajRMiy7d9CQWUeK; using ArBJHYFKnQh8XS0DvofR; using ArnQ4sFRBnPTXrD9iDAm; using AsJZLd29vaUpLVNmErF8; using AsRIBD2Qr0aND4ICTmXW; using AtIKiEjM5XQcUVN1XGYy; using AwuJBr8YkUCTmIqrDZVs; using B1QM9yFlJmevpF6cIloF; using B27BEN2sGD8gRNHNoudZ; using B4IU7LjpMTp4BYsYJjTF; using B4hTbE8izcoKaOmc41IN; using B5S5hB2HZ1mRuc4w1GVJ; using BB3Q9Q8FKt7xF3RL9LJI; using BBYCZmMQVvN14YuWbAAA; using BE9yc6MWs79gZxYIKaii; using BFnuxF20G8WBO62bmQGf; using BIId5n2PYyU78ac9FNLX; using BIuTaAMRhpLWhWJDOv1l; using BK5rrQ8rLO2Tmmlq1sxB; using BLbqqKighOsEdayZyZ0j; using BLgGLF2IfuHX0DG1yeqP; using BMl6WaFxLUNPD2E5XDap; using BNAaL8Myx5huMpnb07kn; using BQVfya2SEoRLNA6EmbQ6; using BTYRDB2Mnh0qxPVlYmiM; using BTv8Xb8KKofRnwqyl18u; using BV2swc8Urm7uLVXQkVBS; using BWPhXSn8CGybPLnD75A; using BWQUXX2gAiGprWoJBGyy; using Ba32VmjWHJyDeuWC7fSf; using BdB3qs8E2NQGVT7MLDaL; using BeRnJmjrrR1b7NI4KxAZ; using BepInEx; using Bf9SQwjzRqK8l0aGGVB9; using BfpdrsF6GLlflWQ5eWkv; using Bh9molMkXXm4kjNP0wrK; using BhwVlnFEai07bXD1OF3d; using Bj1BtAM5wo7rYmOeDYQc; using BjBS5g8nwuFXfbJeH5jf; using BkKcLdjTiCS9IYPilqP3; using BluKl9jHpWtgwOUDb3Ol; using BmGjLwzKmH25OWa9JGk; using BnJ0CAfCHteXme1WxkP; using BpGi7JrVOFmC74jNnPj; using BpoCSJuGyjCxJeRUvWA; using BtBcCTi7sOxTwqr8ZwiM; using BvXLi08Qew6BbbyWiSFc; using BxIGvpM8S293fjB3Z3K6; using C5FFyPFf5QQeAmx6Tplv; using C6eg8hMVUYW5pUkR532g; using C6f8GSFxJK4F1MKa3A6T; using C7V30M8MCLihF6tUOZIk; using C82NQjpKSa4NryDJH1t; using C95USVFbwRBvjRgNZhdw; using CBRytnFHAGwsVHrF4oGJ; using CBVABN2xJRDikOBSi61b; using CDALvUjbBvlXwkoqDGe6; using CHS4ibMAfFjbylX1PeMC; using CIQnS1oBTxjcGGlCTfF; using CIeK431YnrUskYQEOqT; using CJBfa9iedw9Ryhw85YNA; using COF8E1FpjOFfxeN1uVX8; using COPVc2FXPLqCBdjegqUv; using COnjL58HoBxKxEDDrl9Z; using CPFh7QckPd7yNpV5P8T; using CSn43NjzifXRFYgcKRbD; using CV4wBeFlqrp3IH2rTy3j; using CbJwDo8GzfsidXm2Pu45; using CbiJfxjDgti582ZD56C8; using CfMehNjrRUHpbRaxSVZp; using CiUXMWFdTY6MDyiWdJCw; using CmY8eeF9q6rtpxmaN0Tf; using Cmbp8CIPq2SoV6wNktq; using CmkKrkMyPS9E1Cuc0hCR; using CnBxfpMNS51TVZ8rfqWa; using Cq565Sj3Up3GsqRSm3cE; using Cqcf3h24YJvdDdgZoSVd; using CxmYnEfuFZgOFReAgvS; using CyS7aUjdUZtxAFjTcn9w; using D1sfGGFK4UDq5TIMiHOm; using D4Am0h2gdcelX6Ju28om; using D6LYaLEBhRIrEelleWR; using D6ZKMEFHfmmK7qn8V26K; using D71AYHKUALfBAo5w7Jm; using D7Cn4YFl4WgVlAEFJpYe; using D8HLhu2CeMQIyLXtc1yf; using D8SeiPkXX975RBCvYfi; using D8r6DR2oqjPl5AK6nran; using D92NrmFtZi73OOxx7Jgx; using D9xlgTjLP7JgOxiM0XqE; using DAx9veFxmsPdpHyTdhJw; using DDGNZjilVgv2uloIYj9S; using DEOfw2i3jL7kUZl9Wnao; using DEPAZOFEIFtvTt6xx74r; using DIPsPFTCnGu3p7AqU7Y; using DJ3xsv8gpalKuqPX0LbH; using DJPsRU8WjPRcbn3Dm6wH; using DJUQ59iQqtk9PqbYXhOZ; using DK0g8iMcRWTBIc5BB4Hx; using DLXpdejcqAyTl0H4BsYj; using DMNlw48ygX1pFqQJTe7Z; using DMQK9EFsGDbUZkfaqkTA; using DOIXJJ81Z80YXlCd6P1T; using DQBXPp2emWkRV8xaPVfy; using DTHmdq2t2I7B727LekmJ; using DWjPNYMEk1n4KL4J4Z2u; using DXmQ1aiEPrEyyoQXDQcV; using DYLvlbj2Cbi7SFXtEmSS; using DbfumCFSrmO2yw9Zv1OB; using Dci78G9MZ0YtNGE7gno; using Dg32qa58YlZ5BpFrgiG; using DgNAnh2dOYsLWLaJaGL3; using DhZbCBFK1vRknRRKtpnl; using DnIkxr2qKyS3msaj6j6m; using DpHRbFj2UQqnoAH7HUXj; using DrlKqL86agS88KVJeMiv; using DwRZ0k82DdtHFDqCHb40; using E9343XFJ7NL30DKFmLfH; using E9fj5n8dHApgckx0higM; using EB9gFivFE9WoUN4pnGy; using EBkTCl8GXvPr6nAsJjoY; using EDH65ccxy85YLnDRXRa; using EDasJuMOnKgHeeZjA7co; using EEqq332sgQCSt6M1Odpt; using EG6uOkFYjf9exvwmfHCC; using EHmOBHMp5V0OfJBMX21m; using EIutZRFvztNoshD4yf1V; using EJxxSDFprcdV2jtR13Ae; using EKKPyXMzWJbDSOeSMtJE; using EKrMQyiRvn4MlkWV6FZA; using EMdKYJibPbe7H2KlYUv8; using ENXABaMJv6ESIrAapKX7; using EOGP5W2b7k2iHmG1YJ1M; using EOa2oC6vnUnwLM1xYOC; using EPNhRD2uiamafxt9iEZY; using ERhxs086ww5VrJ1VuCsJ; using ET3XSGjDDNYqpsBg4N8i; using EThL6mjfK9xSO6slc656; using EU2DZ6j1GoQn39MkMKHl; using EX5KRM89wJLuFclk4NWu; using EYi9Uyg1b1g7nMSMlar; using EYk5S7iWPregblUk44ZB; using EYs6w02Ye0tjG7eSRhZN; using EbC3uY2SaD8ctal7UYuU; using Ee7nT0ib7DeBWbhVCruG; using EfKlV62NrTcCcXHT3OCY; using EhVQnwgi4L8e1KfZuIb; using EjOPL1jVwBvF39wDy2dL; using EkK6OCilTocj2WoF99Kv; using EkgguDMn7Uhyaj8jffsn; using ElnSlA2tOpRFCPdIQV9A; using EnYnS5F2lMNwx8cdFb98; using EnZtNO8U6QwqU2Sw3g9i; using Eo211mM2Is03oSKReFst; using EoT5FEiQ6yBAdv3TRoI1; using EsA3y52XRwrIKYhGxUdR; using Eu8j0YjEQCRFuuR59KeH; using EvBuxTjC0oi1dcGoGFDv; using EvaFmCM2hZcuY3Ns8bgI; using Evusbjj2JtrolwBTqXoh; using EvyrtWKdql8qs9Xl1uQ; using F0PdGkjtT7yWJjv42pJr; using F3pC4kj1EcTqAOdmOZ5l; using F4alDsje9WWvCRAce6js; using F4fNCS2HofnkpNs77aIS; using F5hQ97Kxtg7oU2LxrUv; using F7cjqhj1dojwlRJvOSQe; using F8YipopPGgnvOeWkPyq; using F8cRi28yFJ1H6mtquj74; using F8etTViRHMdtD2ZUDnuF; using FEO5GNMKfeWDpCWaTmN7; using FFJX5IF5vmeZNPVYYruG; using FFj7BZiE54TMhy3GWHVr; using FGhKAlvB9wb9w0gL5nQ; using FGmfxIFEkbQPRxPmlbeF; using FHG2AW2lHgN5WFYF8qGi; using FLL5lgHH3EAb9uVxGUv; using FR3ss08J5FqWfv376YkO; using FTEF82FRzO4MkFN0NJYr; using FTX2IQMFm5HJGHdbi8rT; using FWoHi07M7bygDvaW7kl; using FXNI09M42wIi8FGxEKCu; using FXtAQd2Eoiyursf4RAHm; using FZJFAnFkVJG11QPc08ep; using FZK769MnbJ87TnMLOMeN; using FbIlEn25FT6iYmjZjSQc; using FbVKmt284vP2BOuaosti; using Ff6OuTMc4KfPsVjOw9am; using Ff6mSO8wytTelU3cwr9R; using FgORM9iEun3EOhriV7o9; using Fh2PGQF6B9vKJhUEcZBO; using Fi2UFi86PtS0O2w4pZfR; using FjqIuH2HhsumXqvNnphV; using FkkFHW23zRjlwDOLBpTY; using FlUvPYjfuKuColZ6TWrt; using FljIwNi8fwBHTpSIk8Di; using FnDKdR8hjSTwwNlojD07; using FpJDBF9KSsUjwPSuiwS; using FpRditM2WCVf0cnmCDPt; using FqGqW6pxIepYZB4JMlB; using FrGlS1AqUFfqQA60Bv3; using FrpGueFMWP3mwFgt66q5; using FsPgZZIe9RH6WFQu6yy; using Ft0pTkiXdeCC98aaRnMq; using Fu3GILkba0DX10rC5eE; using FubJY58U9WSHwPYcPZlx; using FvyeCIF0NaCtCZVKpeok; using FxkN6IFk2M1oe2aIPrxi; using G2KZitFKgi31d2XtKEa3; using G2ymyEjcfxBYPRha9SXN; using G3MVRDFup3r2KCowJgug; using G46I4OMqg0q7S1b3xplw; using G4XAfwMvVhWfQalHNFjP; using G4dGdTjpACmkaiamTHve; using G6A95t2GJYeO99SNSOsH; using G6Safqjg5w0S5KLwR7Qn; using G7QO0NivZvCwbwvWOuvb; using G8dXu52XALVduOSt3mKm; using GBi9JQ85SAYe4Ewmlchb; using GD7DhM8fLRRtlQWsTVY7; using GEJCx7NikqktqNekmt2; using GFihLG2qyipMTxp3RaCZ; using GGtdrsR8vITDa3T2jSN; using GH2m9DA8PgjPdpafwMu; using GIFIc58fjaP8IEsFOnd; using GIgI8aF76neq8frt5Urs; using GIrv0NjYLvgF5bMEOk21; using GJW0w7FoNlXtGdXGJQE1; using GLB5eFM8tv0AUNs2sMM0; using GNEMZToN1ilPt8pOfyy; using GOKm2jF3ss3rLFHOcbsx; using GQd3RDjWVBqAQnDkrcLD; using GSZHeJMB1OfVJLYlceg8; using GUVmppbOBg2rsfcRVnM; using GWPcmmFx28b7sXkXQ16h; using GWbmqPjhyR0ta0hX9c4K; using GaC8GjjPuKXNwXZQnxDY; using GdhYTMvnZpuOj0XEvwQ; using GhRvUmiuHf9PqGkpv18P; using GijrpvjEAG93VCUANLTx; using Gm8M92M50SOroR1TmClO; using GmOP3xFDZQlfiGS8UnC3; using GoPbCi28LgaDLGM7UcmO; using GpJtf5j5O4R8gdwBRIp1; using GrJSBlMDfNa8vCcQqINs; using GvH0EF2P1jD05p8heKvJ; using GxXRlIjWCXOT1UVVpufS; using H0EQFUjqz12e0xAEd5R3; using H0Esux2w7uJke9bMgqc8; using H2HAn4MgRb1QlIRDfiIx; using H2UCNJ8Wnv62b2t3WAs3; using H3p3mXFfBIdBGbZt0Mbc; using H51aPDdg5RwjpjaeMyf; using H9aOFPFRJ8VAo7jN368p; using HA6P7apmXRarkCG2MrW; using HAps5p1UBuiDmrXV6yH; using HBQ95DilBihYo3G5YwJI; using HDQijTFRZOUIZbcjNnbt; using HEPo428ybEkaS6DeB8O7; using HFmbkujp5gCvf40sAYcU; using HILYQ72cCnvNVacuqDOY; using HJRiay52KuFdBGXtT4o; using HPfJPXjeaArIM8u0kCBZ; using HRGxPL82z5RL7pXH2Kbc; using HRdBsOMkNbGjDJdRauPb; using HVl27yba7lCCgxw2iHi; using HWKdsXFSyQ6SGX0ql185; using HY8nlGn0bPBEmLK3Lkt; using HYO1kI2KvItFGn3f0HI1; using HaGKsGFtC0pUcb4X0mN4; using HaIQTwFKOp0euvthmK3O; using HarmonyLib; using HhtUJDjP2wVFsvnFggxT; using HiDPJaMnfekkIlapjw8W; using HiaCu5oFPZNyw1eMg5f; using Hj2QbljmveedZHX973Uv; using Hk43nbK5kx6BunlfEvO; using HlKN5A2QNO5cINMqbOrK; using HllRPiF9pPefPHcA0JMR; using HmEyYoMhMQETKlGOb27; using Hntqat2JZENyDnPSylrN; using HorW6jF28D5GPpLlpvLT; using HtMsfc2QwYRQ3nI1opUF; using HxXIqHM6TB0jTegamBZN; using Hxs6sRFykZt4J21M7Q0g; using Hy7yBXMxhiMQpPsyf5NF; using HyamjAiS2UvoN3k5RxEj; using HyfDv228H0786xlHFXNU; using I5XwwVF0DceRXcg8vwi5; using I6iVymFRFQ0fHvM9Wm67; using I9Wx2DFvTYU6ssROgrqd; using IAWJLI8wM2LMZdMWxWfD; using IChL6VMHfh91Syy7CLGm; using ICkG1hivR3f5I9La6Dvf; using IE6y8XMPN6VBHVb3JgST; using IGXo4PFrKkvKQaKCRc30; using IHHkJD2gNT1uEER4s8JA; using IJsNLIXMnfMgBRopcWe; using INQ0XjFoecLgx9LtbqRr; using IOpdQYMD09FVKfZbZhuX; using IQQMJxFm8eNgq889am2R; using IQYPk48kAqXVptCZUFGZ; using IRsSgc2qs3AH6T6WBhjU; using IStPAvF8jbP46FYy6av1; using IXV9cp8fkvuOFlTWcyRx; using IY9vo689K1lOc2EZs7F0; using IYAdCH229O9ZGO6NYeUF; using IYbEh82T0gCKiGrOGRD4; using IZtRfeQMfqXLkYLI5GL; using Ia3Z4rMy7GdR4bFW8LoH; using Ibt3btiTSZj654nrYSQq; using IcCe612snC3XW9e38Seh; using IeetMEjPmd5x3EeONFww; using If3aPXildALch6udWd7u; using Io2P52Mpp59YRZILDa3n; using IoH1tSj1gHFgwSmK8Inc; using IqECXjFKyNACBoG5Wyr0; using IrmWWHC0X4M081R12Ha; using IsEfUn8Zpvmx4dJDXxt9; using IsRGlM867BVMnbMgf5CH; using IvEWGAMjbn7AS4PBFZQr; using IwLLIIjClPyO6QufaNoQ; using IxJxGTit2VkgMtZ8RKED; using J0M0dBFV4F0VOWC9EtF1; using J0hF0k2QeCPnlF8Ky9Lk; using J1XYsLjY8XZZfYsqSKkw; using J1apBlMiPDTnNcfuxXA4; using J6os7AMqAfLG29nh5pbC; using J9YcRb0BdPeSaYEQySn; using JBYTOJjVEq6D9n8KxdgX; using JCBDd9FwMbRBhu393IoP; using JChAqYF6HZ6U3bxsx0aG; using JFApLk2PvyhrGqbDBZ7A; using JMKEDqFss79F0eXNQbty; using JQcPflFpYykU08doBkR9; using JSvvZEilO4Hxw7YKh8Z1; using JW0CpOjC6ZNOegrEVQOQ; using JWoQbbFgZadK9PNXPvrA; using JZDYE92d3BvjYAEyHMO4; using JZrOhy2PXJ7fKUlrXRZf; using JbkPxE2Psd9Uwn0WdWbq; using JcLpFP2IwlGxGFRP1pmf; using JcUa6m2TkwatblS4McjW; using JeiLq68TJFXtPSPNWrOM; using JkwOp8i9K71X2jXogsUi; using Jmm21IFnRuWkvYQLfQiq; using JoxiutdDxbcAO5axFpN; using Jq9qsDCFn8WimtP7Fua; using JqfLWpFozbQrlLyNlqOt; using Jr4hp1F0xiUeJWYLRvJr; using JrMA24Apbo9mbwpNcd8; using JsJDPAFu61lYqgYR0Vf2; using JtfKjM2mCOfGP0LdJUr0; using Jw4bQ12q8WLUMJ2DxIkl; using Jx8aRBnCwW5M0tp6H4y; using K0EAmEiRzldrYcO6tLKH; using K6Y7pGiBCxTRCKw4XjNd; using K8Bq4b2UscKB9ymrWUq1; using K8h0vihyNDH3EcDQPqH; using K9G4Qyj97wGSNLIorrfT; using K9eQHlMlfNKEMNFfdt6O; using KBa5dtok54UFPhxXDJ4; using KC98GjFC07ERUVcWGvbl; using KCFg0w89BYZdVAkRrTp8; using KCWU5uTqxQTMapIZXG5; using KFJHqtbqFTJvDtAwrfF; using KFsvcSF2XUANDOdLjqhw; using KGL6vORHtmf8DZEIUyG; using KGRjLvhi5lJY924LMCy; using KGfLr20Yvf4uYOIVwCK; using KIGkKT8rRIOHqqysRn7c; using KIxTEEM6K4ILYnEwuBFj; using KJVQf1FBJXb2HiECanRo; using KOJjLc8Xut3lWHmxQGAA; using KQqMZ42H4g0gvX1nrDgA; using KW5nPy2T8NQFMJdNcGZM; using KXOH36MDlBmO0sgw9SFI; using Kbr7yMFh3rIbuApqGioQ; using KcOFC7kLr876NHXIIbO; using KdQXOZ2IjW7KhJLICn0r; using KeAD1vipJLGu5DINecY3; using KeCQ34jHSJKDqgdQNMvI; using Kf02q7jTOI7jbuMauxwM; using KfKQDWMmL6MOh0tn7xlA; using Kim0Ociv5SnkK3nRDBqS; using KkaoopFsrByIKW4jEumU; using Kl2xr38s7DeBYVMpcCYh; using Km9E7cjWfudWxQNq7OR4; using KvHefVyc0phsHFprRce; using KvO2GY2FeqYW8mM7l4QJ; using KvfeBLFRWHy5ecVVFFYH; using KyuF51iAui0FNkMvDREY; using L0NKVkFZZFWfA0WwTrgA; using L18HTd2iDLU5FlTjnMZU; using L1dwX2FiyJ6t2LgG6xsk; using L219cRFKhXKSQ4y3Og4t; using L2HtpUjNnLaE05VTmnv0; using L2R4yo2xqUruPLs3KGhF; using L8beRnjcpHxeocsRx67y; using L8gVbDSr0Z9BmSRUe8A; using L8qtEjFyFAB4KhC5WHHf; using L9GYiCiAzyAFTfdDGRoq; using LBiMtkjWRPOxflYgbfbg; using LCy0oM8m0KYpNEUARh82; using LDB20NMWT0K2W5ahdKl; using LEoQjdj9eSlqw04cwhVO; using LGFdRwg7xRoUF7UcDu2; using LHHVX3FtLb2yAD3ZSijV; using LHpts3M6xe7CmBRloRP5; using LL5np8j8TKixJ3hkgAjP; using LMJTjHAhEX9KsKYCfZ2; using LMWf9xiCo9GdIuYSAtGA; using LMxV0t2ZGpknvpJMDruW; using LNRAcS2oGatiZ7HIncXh; using LOGKkmFUCdE4p26PBqwO; using LRPFU9vUVh2srRIuY76; using LS0Vxt87yBwtDe3FyRhF; using LShulOFbEfwG50QMQEPD; using LTDCj5F0LDi9P3Cqt3YH; using LWCQCf2VpdYR9dKI1NIY; using LXWjGEg9dTRaegOyMDo; using LaJgMJG2EojjrVnvIfU; using LaODbKjgBgF8UCJa6uLG; using Law3fj84bU10r843VeHN; using LcgKQvMQibVe9uFdvHVU; using Lckhk8FTBegfEZRXJ4cp; using LeGFjY2ueJ1TOBJMJL7T; using LeUgIiis3rPMj6Mw50Fv; using LggVTb8WfVZnxWOM01XY; using Lj4G9QjjoBhLevuTaVCr; using LkALiOFiJDExD7fV5e7a; using LlW9x62kP6F3h6t5yaXW; using LpkRCVGH6WpcwrEXZJh; using LpseS12jA8gQAJ7QYt1D; using LrQjbxM1F84E4LTs2RpN; using LvrWYxiK3tOuxHcHf6Ay; using Lw2DSV20ZRMitSduHgws; using LwOTwRFTiiSYA04RUC5R; using LxJqpsiXIRbI6gjl0lNK; using LxqC1U2BCQVhd7JHCopa; using M07QGCj2dGOFCpDdUYfn; using M0IjBjFVTg5m1Yx2YFsM; using M15YEBFUOwIVnGuqmUYc; using M1v6HSFZwjSy3iMcraSA; using M32F4O2QPGOibUA0xUpn; using MBwC6t2I0W7WCRSOgXFs; using MD0Hx0FKRNB0KFE9Qu88; using MEXPGpFHjDtoCmRJ89C0; using MFkiivsgGojlNnkYa5D; using MGJOKHnmaNC6mcl7rt2; using MIPcecM6prN28g6qmAQ6; using MJOJCamu2qZppLHR3NF; using MNdX0UijSEbu845TcTbS; using MO3A2DFVI5wLH8w0Cyq2; using MPpapuwmaMDTjdI16vS; using MQekhBFIfcpkTL9Kd6VG; using MRkBdKjbWU65hV1k4Zkg; using MYTVFF8CLqXOpJNf622P; using Mal5R4M0Z3qU9pntw6tJ; using MbvxZf8nzDdVIKmnGcuJ; using McD32XMxLM890rWMiuyG; using McTGMm81Rb40yT55uRX5; using MgZSohM03ZHFUjARMxtg; using MhLrQK82B7XxTHNhTcqv; using MhNOjKigeDRGQbeArpcI; using MhvZC1b8VkIS6ljlLm9; using Mi90ffMsWmpQb4h8deRC; using Mi9arlFD7xs8mdX63NGj; using Microsoft.CodeAnalysis; using MmPCPCwePEkhD7bBWOM; using MmvygdFK8qxZRLmBJnpO; using MnugvWMAX6U1fAcrTts0; using MoZ4eBbJj90IQxwRr8n; using MpMOCTFy60TEQuXuACkW; using MprJYo8i0r9AneUeZ6yK; using Mqk8nXFQYkIBLlvvBM3h; using MrdTeDFruJLDqpYc2iV8; using Ms32WTMnkPwogJRZtabx; using MtvRWGMNWMr84OOdFZBn; using MuHaRR2ifecqkYM6w89Z; using MwGGV0Fx9RDdTokmXgGD; using MwfT0jjRVROSDUvfs5Qd; using MyUAuxFKmNxKdndOI2vC; using N0iB0C0MOJaYJSH0ukb; using N2j2hRFS4CUvlXtGvVBl; using N38RFMFhGNFITkgAVNYV; using N4HIvP2aPsjAKsliQXO6; using N5OhD9jEvOO1Vt1JcXqq; using N6AyO7EgKeS5aOp2Zny; using N73QND8GpvVF9p2gnysN; using N9ENel2WmT9EvPYGSFtZ; using NClDweFXMEQ6pNIvRuOY; using NCnh8vMXTbaMVDDq5RMA; using NEh0iyf5AQmK7tNUyOq; using NEpcJd2LrLsltFSUmKSQ; using NGgihy2ycktLT5fZsJ0O; using NHGicM23qCgXVSItt3QX; using NItvAmiS7SfxhSxT8MIg; using NJaKh7jCYQFhchTZjJyp; using NJpc7mFOl6XoUb6k6BGY; using NN0nNSibHomeokW9wA2j; using NSWSkl89x8ao7nPWP4ru; using NTFC3I265qCTIeTc9CDg; using NU0Eq4FVfsFlc3ky8aok; using NU3BEp8bxayQ35eR1UyO; using NW6qJRmvsZuujqUPKAh; using NWvE2KFASvU3J6x6M6lO; using NXFNOqjNTY4TfM0hemxU; using Nb7oR18upnwgGZRuqDpv; using NbGXQoiXMssBCuoyCLaP; using NcXDAX2TJbfhFQ5Jq104; using NcxyVviBPhZ3IafLXrSn; using NdLFKJMizeW0NDyjx1E0; using NdNC5A2ML90MCZDZfFef; using Ne1flXFojB6evsCcsVcP; using NfN15IiAvDvqZf84E2C2; using NgK5FpioBZXDo9SSvPrk; using NhJ0ckFHe56ES8mRi4IV; using Nj3qcV8GoudPbOSRvWNG; using Njuck85JDe27yBXUDUR; using Nl5Zgc8Nm48vuw1wseCW; using NlmL41Mj5QDGuTl8cu7X; using Nmtl3LjTo2hV48NvCWR3; using No2XxijhcWuMyHM9W7we; using NoioGJaQNBE6voL2JIP; using NolcUTiKkSop41ylu2nO; using Npff1tFpL3nJEWeQQu7Z; using Ns4udH8QjtBYPvrAEP45; using NsVfHT89OwmYKaDLZ9fI; using NuleA8Mj0MqW3vuxUmVK; using NvnwFpgcGd0MH0e3OGU; using O1G4VtjTG4xgR0DEgdNv; using O2L3vY2gOXOhusebLFMJ; using O2wqks2901CgGebp3M4B; using O377dZ8ikbYjA0yxnCxw; using O3QnZPFmYVq0RRjpXijq; using O6MWtxaFOe51u8BgwZl; using O6VD1EkB9FB3vaFyodl; using O7jJ3DjW70w2evvpkO9r; using O8VmMpioo64LesqJ6Uoy; using OAA7Ip8qwm0QZh2StQJl; using OArgffjMKrb2IbseTLGW; using OBRF2RNqtPj9RhgKTEM; using OEKw6ZF5weHKJ0mPht7L; using OFVyfwMfVf5xSCOM5yqR; using OGCHqfFOClU0HdDk1tVL; using OHgpdM27ame1tlqtT54F; using OIMyq9dcNuwrvgZ8lON; using OIOQoeFBrZ34PEcVMkpx; using ONlriR8koIU9KsNh1pxJ; using OOZ5fd0PtVf5mf7F5Tr; using OPipHEjJfs7ViM3CGSeU; using OPt8di2ahyiuDkevBiEN; using OPtTavFDB4KGp4NStjVG; using OQyGWK2VUxGKyCj4hMjV; using OSk6Rs8p5oVPVt1jJoKe; using OTHjxhM4YLuh0Hcv93P9; using OUGtYsMEOhN5v79UL835; using OVKNHjMCWVar29jXdQnn; using OVZNNFM5EJj9qTnDS9wU; using OXKGPBM1swUOepI3glf; using OXsJHAF2kyKoo3T6gkJ9; using OZBHpYFGfiKHw54pEuZZ; using OZbOediF9wVAnxm12j4U; using OZo4DP84fWs5uLJFEfRy; using Obw0h285JVZPVlKFkCkR; using Odinfb2XQLM9WhDoCPsm; using OeVkaqWP3rQEFjapOtK; using OeohpEjEGE2vfstBM4vE; using OfYxJB2olCCoaATNSdGf; using OfuJHNMGGu5kqJd6eQsB; using OfyE2X8viYuYqVq3typX; using OhfLt62Fq7y4ioXOrSbQ; using OhwUsk8PImDWbkMsk0Qv; using Ol1bs6iwGhEgJ7hQAlny; using On1A3wTg7mMgaklhGMR; using OnkH0v2FkqZRBt92DAMX; using Oo5KYXMznPJGHqDUoOTF; using OoJ2KW223dLe3R7Q9Uk5; using OprG73jZ5HvDIVWIZkka; using OqWnjdiZfY6pu25dTMPM; using Ov7QtJ0GH2DPTfIENv8; using Ow63W7jJpagXXwycvjIt; using OxU4omFAmRHB6YUsv3Cx; using OxhgBbF0t2vv5WABoxnI; using OyNTJwMlSI6Ex2ESaShD; using P0MefcFkhCcuFBKplGQZ; using P1wXRR2y6wNCo41aQJWy; using P3xi2mFl3jtsBnJ8LFrG; using P5aMwTFl0lEqc4a8I5q3; using P67KxkjYJ2O5DsyscZXU; using P9aio1mZ76pc5Q6amfK; using P9bQ19M5Avk9RC3T32vU; using PDQQfw4BSlD1LTdrDfP; using PDSiKXiB13h8wUrBubXO; using PEa3NPFXW6yu1okY81tq; using PEgESRMny84KRhvLgLCU; using PErIthjWvhcCxq1nnDCM; using PFk0sts1iRDZ7g6UvNY; using PGY0rtjrCscSLxQLTGvX; using PH4REMMxwNH9GstEWXKA; using PHGms7iXxIKmbfxp5XHM; using PHSbDM2Uk888KVb6Xmtv; using PIMG6WjW23q1d0dbGM3a; using PK578GNwLCOGDm0C8LD; using PKvsBQ8iuWuOl2XMLvat; using PLL18mF2iP2IhIoTBdE8; using PMDhAKjtgb9pnSLXTb6q; using PMxAQiKSx9jhvvK1rux; using PNlKffHffJIikqvNYih; using PORfF58MJiCX4HjPPSKx; using PPlq7382fso7Ro32sKOH; using PQVNnwFkCes7nCS8n70u; using PQW9HKMS7nPhrDgDZcTt; using PRUJVbM5DPWNEBdIKCIp; using PTvEU9j9LQ9CM18SleaJ; using PX1CalF6NvSiOSOgl04o; using PXVNm8MPur6Hv0xPwNZx; using PanZv6Mr7s9GJNGUI2vX; using Pbg6xK2C5HIax7NXXmGp; using PdS5ER8E351jYleWJH4y; using Pe319djNNTaQmn52003g; using Pg72gN8CqZpSl0q8CKnc; using PgvOdViIgYK86Z70dGD; using PhlNPuMna5g2oVvUinAd; using PjStiSF0BjZIy88dBOLb; using PkciIq86Gw72NpgfSpu0; using Pkmyp5iZn3EKOLNiZrSY; using PlJIuB2eJYUfLdlbmQ7W; using PmUeU5iMoOdY04AraBao; using PogVlI8hHU5845Tq91RP; using PohIRMi9VIuiyRbKIMsK; using PsmwxXjwksl66UL2D0EZ; using Pudcdi2HSUKdXRR1Dh1r; using Pw0GDjbpw2084cXJK5g; using PwDAhVMUVuiyiw4sqbgr; using PxkDFbFfdrmguU75fYfn; using Pxo2wujTScEyDtta0Kbi; using Q4rg2ei9loXGaB9GIiM7; using Q5JEncjFVvkMujJZ18ld; using Q5j1adjxR8UXouGxS5nS; using Q5nlgS8L0ZolsCNneKoV; using Q6OKuD2gZIqwEg0GJ4W1; using QAwVchFK0aJxLM54e181; using QCV3fBTPUjbo0xfU3xW; using QErm678le32bRAYjO77U; using QGbEo58F8m1TgOpurlfa; using QOCJH22P0JIe0tQ5dQ1W; using QOIBo7FR2QsCcKVE9P1X; using QPhlRt8Qs8Ciu7ek3AGY; using QR8VP5FW0jjkLom2gvIF; using QSfm3184419HHhLqRUMG; using QTKuP32i23MdJpNXgD1P; using QTw6vxMbz3pXCyxNItUy; using QVNBiOsABRRo1L7BlIP; using QW5HlwMyLBdm08xqCwJJ; using QYGTeOj397m2ZQho0Tt4; using QYJJEtFVxyBvta8BcOZH; using QZs7On8mGGpeHGkUds5y; using QdBkhb24opBqR9gp9muJ; using QeNAvrF0eHKrHKpafavt; using QfvVYbisubPj6IU3ZCuT; using QiSfSA8lRuvTsPR8en3n; using QmrT4GMdimRMTFE671Zt; using QqMee7LlAkka9wIXGIn; using QrYvNNpDxsckFZ6oMNj; using QsEDgwF59pueeu6rBTc6; using Qu6kVC2QK8Lwhw6PuKGQ; using QxrD5UF0CfXGuYYXI0Yq; using Qyrbaw2dGOmDFnE1ijE7; using R043ecjPNO7wFxGWP976; using R0KS4k8ZatlfB5XicMpM; using R0wXhT8TsObWPpxVktiT; using R3FxvC8pGVvoUteliFTx; using R44anmidigW42coVt03G; using R4yxy0jTNsvQB02kCdB7; using R5yFYIK6MkNGACKCnbL; using R7EWNX2B2XdaxRFn1q8K; using RAVxbNFOUGQAAfoO1F7y; using RB5jS92iqM4UhSG6cRhF; using RBQ1j28p10fqMXyKlU5U; using RDyUGCj981RO6VZPiTEf; using RGUlNi2Qz2RoYHIYKeFp; using RHRi8xMcDkkVhA3tkfN0; using RIFCU0JBr5LJFDHJmbS; using RIcHLvMzYQdREAFLfvcU; using RMhaMfFU7rC6dV9dxt8r; using RNEDLDj9y7NXdfxUfYha; using RQKW9LGQuqwdscSoWyM; using RQy3hnj3aZKn0jA5PYLr; using RRE0Z8FY2Cw8jVSE8MsS; using RTsLOCFSCoOLYMS02dR7; using RV6kKDjTr3oLN6c0w3tb; using RWPZv78HdMUfWly8nUVb; using ReAywf8wxjrVAoi5Nji5; using Rfb9awSCpXB1GUWPOwy; using RhbyDOSyIrjOMMkdxLf; using Rippleheart; using RlJxTTFYg38ymhoW6KQw; using RnVMdEFiaZg3JtPA6Mb5; using RoIt6UMVYWvLvZ5wpjSb; using Rooc2uX53GToThs6vKl; using RovXYVoj3JcMNNHEnId; using RrbHprjD1R3NeSPilwda; using RseSKw8hxG6RZCXSmaXw; using RuUHNAjWhIWwVYlKg6Fx; using Rv4Mko2Wbvc9403x4jTe; using Rv9fbWjYkIxLFhUIWm2H; using RvQx3qFkdWQDxOwMCAsm; using S08aWXMfrmNFtKCgnN2; using S0N2xU0Z1eUgfhT4YQn; using S1ianEFDuYobii8dr2uI; using S4ZeMN28hIEoLgFuf7kA; using S56Pco89EiWZKlp0ZVki; using S7gaixMCPVGOJWQGhFHB; using S8Jkgu2dlSRsDjpJeWX0; using S9PRVVicuZJh799UMZ50; using S9duSONAaKLvPtDKe3f; using SI2wPDiPIWV5SiApqYf; using SJ1rcDipsGRqun3Sdr24; using SQGjyAjDLngZv72sbtlc; using SQmKNvjP6hOSk5UHJVRx; using SRFxlZMWx7bswoYpyO3v; using ST12FZMUHZWXWsq65SdY; using ST7umUjucL2T6JV06YbC; using SV7eY62dST26xgAKLly1; using SWPFZbj3kw4ufHi5kbRU; using SYGfRt8TfknWeEsljuwC; using SffQtrSOjg4HehWtVsY; using Sjip0TjVynZ2SjIGTOxo; using SnVrdtFWAe4VejW337Mp; using St4MhZisK3nqSXs4nQmU; using StcDnYMfcAlMQNt1Lj1M; using SuchnQ2KHdIFx1YeOqXw; using T1UFMw2WEvNA4kbMXxuk; using T1Wgcw2dE9auwWYoaxdA; using T4Cc3sF42cW6vJRlGgIc; using T6Ibsr2wp151UG460fsK; using T7LbRniR7unVgjpmOMDI; using T8Q906960sX3RFc30Hn; using T8j3uoMZZAJOXiZ6n0B7; using TByi3hj859mnXLpTpL6C; using TDAKLEAzhCboRnJUgPS; using TDNUql8HYcJP0HAKR8Cu; using TE8MUW2Y8Yeo7svmTZxL; using TF4EXnMIkTSPhFEcD09A; using TJjXKmMVB85dVZn0vMvE; using TJl6fA8j8o5KFxtkWmwS; using TL8peCjIoTZYOBdJYqWY; using TO4mUBjWFfStv8rDKw7Q; using TO5y3u2K47IJqZH6FN4l; using TP2AjsF2cUZkaIaPlFTU; using TPhWHMyUGi3eg9UepX0; using TRbOnKjfwR2OOA9424g7; using TS7AvH2NxV0jJ1x5xVf2; using TSAIpkM0wM1b2SdkhhlB; using TSI5mmiZq4pDIqm04EGL; using TSvA6grQIySnxLu5ZWH; using TUTyMt2bKy4Q273oKs6a; using TbJrGkMB8fWSGDvwIIuh; using TbSRWXFUTmixnhqEbZZK; using TexWOb8VjC9FEqeL0qpn; using ThqSDP8dwGu6pcFlp0Oq; using TiBSvbj0y9R0G4lXM3Cj; using Tic8v1FYe3vFvX7oTJZo; using Tk7sbxigtQue0p8rE4TY; using Tk8Z3rjTTUmTcfWcEchm; using TmGnYHjHAg9Yhjm875w4; using TnmZaqM9BOEQPPFw8Dal; using TpbtdFiaxsoyh1qlZuHI; using TrTDbLisgvK1pcf8GEox; using Tu9RGA2mXuPCXt0Q5vNZ; using TuSLobMkDq2j8fBqFSZK; using Tvi1PQp9x0iu7YUDkOp; using TwHuZQjtA8O87w6Bt7Hr; using TybyCC8PrlDPgEDHfMMD; using U2nJTcFRjAkDD9WNAvO0; using U43RCQ8RNvxBUShlyHcw; using U4hxPMiE93KA0hZiZY62; using U7RvLdMaz763nMhTp6IH; using U8oRBHj2vwueXGWO7gFe; using UBaFh9jLslBkvoETdSws; using UE3ji02i0bqtqSdgfLZ3; using UK26F928PNHkAy0JrZLF; using UKVFGR2WcSUoTHr59a9C; using ULqVFXC3MRsNBNXyQSB; using UMKVuFMqcf1iA30B2oPg; using UMqMGr2FUyluhS6YNBVX; using UMrqCy2hK3VYeOM2G9yy; using UNsAkMiZZArXHlhMZ1wB; using UOTNs12iF8byxuu94NI0; using UQAg5qFEfs8ZqB5chKCd; using USV5E62HyGhAyUIsRXt5; using UV6sSriQZ4bjZpLfYUe3; using UYrDYsCE1ceNFdeY7d9; using UYwNOHjZb8fH0ylsc8fp; using UdfNyUiKZw3x4G50156d; using Udfrgc8QAJ2rPpBSOk9y; using Uhy5fsFZQKpY2lfkL9K0; using UjTmUbiFMGWsaDW4dRCg; using UnityEngine; using UobwcAFnUW6qEvRgv4tM; using UwOIRhiGVuSQioUWfKoi; using UwqpKdFrOZhOlGSHvknh; using Uxh78oMAkeEm9qMITnky; using V1La6y2X9jEBr5o9T2ZU; using V1hVhSlHILh8GLhnanL; using V4TBAWMNYL22Wm1gWV2p; using V4gVUN5EvDqamwCB941; using V4wyyFM6nTqkc3JPgTYL; using V5G8yxFRKML2Z6rTh4Ma; using V5IhwrFNJR5mSmTcoEFb; using V6uTrkFg9pSgA9DNJy6m; using V8ltdXFMsYDohQ85oIIi; using V9xU2T6L9sISHtqWiWX; using VBYgkdWje8JRFVMYHLP; using VCK9mM8KsmhsVTYO3pi9; using VCujNrk0g5gjpQsUAag; using VGbHEBRq8MHuOUTyPjc; using VIm4WhMjL09PVS6DlWKP; using VLgFPV8XAaF398eRJru2; using VMahEJFMIOynNUX3ZSvv; using VN7WtWiQKSgZrWvDycQZ; using VPlGZNFsIyGgkgvgvSK9; using VRLTisjsnrY9FkZJicg7; using VSiqad2KjXLVhkMx2rVH; using VTEi8xMsv1jFyiPhI05g; using VTu3tP2AO828HkCc4uuS; using VUSAZI8Bb6yDqrS6PbQ4; using VUuZ9oi7Kq39VWa48MPl; using VUyDKOjd0cgMWlQQbgXF; using VWB6N3iMX6m9neCO9PLy; using VWEjdeFDdCDNeeVq7nyX; using VWF4rjMiumfyXCpFqeXO; using VWRjfI2QMjAaoQelBB4I; using VXZlEBXyuj45WSZ67gh; using VaHTuHiwVjf5d7j6eebY; using VbwIDMMHoMq21bCuDwrU; using VcC51qjVo2LKOkA0cUBh; using VcbMVkiXu3Uv7Cwn8iva; using VePiEhjwsLcvZiZEli69; using VgcELi8yd40PBtQ0Pucp; using VhipXeFRU8Zdpjw5ygN8; using VjLdDQ8q5sjiCvpqUxrn; using VlfnXNjCZhyOmJry7uMU; using Vm49QoFOJT7ESMHmU2xY; using VmtLJj8nvbesmekVLTZB; using VnDAirFRHvIp9YoIN9Ri; using VnVscoiZpSQNnjegXdHp; using VnY2Wjj3nVF8ylLUlkD3; using VoT3u78fYXhmRmTgjXDs; using Vrc4V0rNukKStIOgjst; using VuLVpxFLljZwgo0JwCf8; using Vy78fojTtpUuWwugfnrc; using W2e4aRsvwhBLa8PCkTJ; using W3gWpn8VWSrZvpZKlKdw; using W4mBOnFNOBfV0I8HZJ13; using W628XhjVtt2mgD22kXnq; using W7KxplMiby3rQgcvBxVk; using W8ihT6MtBPaO2L5QBOQl; using W95lr5FYWw3li51hWkc4; using WA6dtRQ1ik8y5v2j7a4; using WAPvi2OqAfPO9dqD9rJ; using WBGaym8Ny5wKGeH0skEw; using WF2DO228UaMxTNOyQPt7; using WN4ttUlPqQrEcSGxC6M; using WNHXbr2fLndDPXSBu401; using WNQ18gSdcCECKirXvcA; using WQFiN58yWpwZEPekT7eu; using WRRlEJGwE928RQ1wDia; using WSjswH28b0t69fLdFGt3; using WW4nEcFRcaJXolk1lm4n; using WXm64AMXdKctcMWJxgb9; using WY3DXWFMQJMVuj38B8gm; using WYG4BBis8EeIB0HQj5bk; using Wd5I7M2OJgN7cY7lEaCo; using WdS8yE5bhuAQa5NYNkx; using WgFre3jWQTBGbDyqOA6i; using WhGZixjZKAsPQ6LvpjQU; using WiAWmcjrMCB7RQ3Y5CT6; using WiKp6vFExn7h5KwIm3CJ; using WiPbjl8ELGIOsi7kpTE3; using WiYKb4FZ5BHmmkLDm51s; using WjhdSm82vJ4fbpCt7xRS; using Wm2laA8pRbBsQ7JZVwyv; using WqhMm5FKElACrn8P7kU1; using Wr5Q6QkF9y4tSRihoR5; using WrZI5J83244ZL7nSxi8S; using WsTcZRiCw1RVkOIcPyK; using WsvtkdFlbSUpaBhnFj26; using WtvoeBiXvRKeRJaUEwBU; using Wu2ZjRFgHm2GjUuZWEj0; using WveppnCgrqm84T319jX; using Wy2sU5tFinDTXxRFOu7; using X1nbjl89PqtDLVTPlCSR; using X26pxgFnwY1n9jZOY8Jj; using X8NXpYjU6WGyNPuVbv0L; using XA0Yv8FaSJ2eBQ7uBqQ6; using XC80TTjmPl2tjX8sCSHE; using XCMUhZTck4QWBlPHLae; using XCX3GFiwA5KN8ejLviQm; using XJmk2RFQLuKYGvdBmrPn; using XKcBu62l6u69yOLMXB6K; using XKtvsDF1P1rPMCvofuF2; using XL4qQnjc3rPdaBFlJtN6; using XLNybZdBesQSvbEM6yQ; using XNjdq7ig088eGuCb4OEJ; using XPZWBMFpxS9fG7Zy8kiC; using XQGi1csDuvOLPZ6TTEv; using XRi68ti7tv5BtQHKr0rv; using XRiYtojPJ0OFX00bLkji; using XSA92c8qicOZF7tKCB7R; using XTZyQZibCQIooCtUBHw2; using XWjGphaCox5F4bEPHQe; using XXSD5KjGrQ7qUHxE7079; using XY7uBg2kJdsdyD5dyEh5; using XZLXk62oFuEYjvqBiAUZ; using XZrYXsjdC2A15mToD1NX; using XdDy3WFWNbAZ2iAagYG8; using Xdn5kqiCA3ZuiOXbfhxC; using XfPjJdFNxq77ljarHUbJ; using XgFTg5itUl1wcx4DcKCB; using XgthKT83pHV7MTsq2QMH; using XhXyp82FLpYCl8mw5IEX; using XhnYpQFNqk00ISlodFiX; using XkCvllcB2P6bMJ1gj69; using XklxAd2RT8IOALjxvXyC; using XmNJKAFEcYTJT0NPM6IK; using XngPIxMh0QD37LYDRNDR; using Xq96MZRmFugdQZlXHUN; using XqVaTKFXzsOSNRmh1JpK; using Xrw2sf8wkl0GCtVqLo0x; using Xsmnp7jAL6ISfJCZ7YZw; using XtSbd28cc4e7WnGJjN1Z; using Xw27w3FKftnoVjtp3k7i; using XwBwwx2hMOoVVNvfFQ8U; using XxM6xPMGB3VRPkk3a9Pd; using Y0lsudSlRBnN5Z2CGPG; using Y14l64Rl7rgFGfdmIOO; using Y19BwT8DGLIaSLjub5Z; using Y2y2ytjVFIaexcaBvcJM; using Y4oCAKF9OhXE0AE8gOpr; using Y7R16Y2KUjx0LcAQLwn5; using Y8KCYR28NPXsVSjiwX9A; using Y9RV9QFZ0yDKLYlBGha9; using YCLBCvIicBLql3pUS4O; using YF1wd0jgQXMoewQTGfE0; using YF26AcMC2RZo1fDuygnL; using YFili280j8bsjXGNrsmS; using YH1naHM0NvkmrConE65s; using YLFgO2MJn5VpVFfF5sBm; using YMQkYCFcp1dr7A1oV3wW; using YPqIknMzmITj8BvSnEpr; using YQRwMl2XZSn7DYcIPUC3; using YS4senM7w6W7muSf17oK; using YSWAcW8xbEgIqbKJ8RSj; using YSqsALjeLT3WuE3mH2Ut; using YTKjW9jGxgPbvjm0Zg0b; using YUsZCt40FaUqcLAstEQ; using YVTt4LF3PPPAsFuqTJ36; using YWGyl0G7bpvJ4V0iOyL; using YXUsP1VQqXep7J8pf33; using YXeQ6XjIusXsYsQCiA1S; using YaOY5gisO8WF3KLe3eYR; using YbKPg6iMqIrM62yl5Zr4; using YdDP68F6OXrrO3JULvxu; using Yjf3SkcXMnTYGtKiKdj; using YkoGVq2MCMQ9gbMggtZw; using YoCGiY8TtkWYDEH48dwp; using YpAUaljCF3XjrxjNySxM; using Yu6N0N8Rx52h6FD788KB; using YuILHu2TZjD5yVqZI4Py; using YvyxhO07kAaj3hXYRqy; using Yx5vsq29JZ5EHDC0wX9y; using YxP8UOMDklmNrdwCTJ4F; using YxhwmljNgga9VTGHc4TD; using a5amOs2A5rg499jRlWuv; using a5q1se8UHUdTCLskKDJ5; using a5rjsJjIwJ7bOGIw6t17; using a7OhKHFRuqEkd8TmNhMk; using a7miRCM5nJx64gOFNtGF; using a8s1Du8erDScAnbtd81L; using a9G9xQM1DMb7c6TlUbql; using a9V3utF4FsybTW8IdajH; using aAZCbRFs7BbQaha1emew; using aBvaJ0F21miw1YFqmc84; using aGNpPAFIH8Nl7Yy6ISKt; using aJT9TM2ljXh7kCxUrma9; using aKx80goTYqCGHAHFHNb; using aL3viZ8tC0O0OLfgYlX2; using aL7EZBcWZuSgte0POol; using aMdOQV2lvwQahyJjNrpf; using aMpdFY4m5vY24LC7B6G; using aNOuYsi8SbK2HCar15Vw; using aRxKX58O3tBdH3pT2w7N; using aX63hl8qoNKUpeO5VJwX; using aaYjuu8lfWFSGtomQsK0; using acmQG72RqyrBMmNlkUp8; using afFVid8PEDTfdis35ywX; using ahJ5uPFKVErgQ4Ij76UR; using akr1pOFa1WqhtiFdUtEK; using am7SUQ2TzfvQ9Z80PSPe; using amO1It2oLEhciGt3yIOa; using amOElvjf2UeeQBX44f3R; using amxSn9jNV0QaEZPutI2S; using auT8kj2vqxD0LRrVXaLR; using auscCL2X7Yr7AUKaaKvi; using auteh28glPwBJTpKFyDQ; using avmHwWF235PlNXBisIrK; using aw3dI42RykDiCL4MZ0fP; using b1qgcKFfLd6eQesxMJjS; using b2nqFbFdxLFoqTQRycot; using b4dy3d2EIBFN4YMeJNFc; using b4kpgj2ts3jO3loyE08h; using b5D2e8M3AG7TlqmQyoGP; using b5hJCy2BTgWtJyJpom0N; using b76HIHFbW1A58RXuQxmK; using b76TII8scZtCMwxm4JEM; using bA3s1AicOBNLLpjrHFql; using bEKMC3FPRyGngsc7QTYp; using bEsMr1iKKhBqYpXEnTTs; using bFoojdFxtwf4ONkecv7s; using bH6GHPHRuIxr2oIfvkC; using bHhwIZ8eN2NkShRBcHtZ; using bI7T5XM6Nr9mcDVJIdKm; using bJFGDw8K48WkmaPtwvBZ; using bLCW962v5xakbH83Y7W9; using bM5v9w2us1gbONHCvWuj; using bMkCy3j20DACchack76o; using bNPwhqFE5RHBYwnuvoKc; using bOFYWc8bXMksegN1QeOh; using bOSWj0jYNibAtG96cow9; using bPrsye2a1tR6UGDLTANi; using bQlaQI2v89L87N5CoUdt; using bV2UEjFUaQ9l2ehTe1fl; using bXF3cWjmcXa7JR50kLdW; using bZee5n4UAhhTa6Wd11k; using baf080FpAwfpjfeJ4GTa; using bhA05HjZ6lYn030e5wAx; using bl56twlwCaSoMw6Pltd; using blCkMAibIPhmc9vIsMEV; using bm6cOZjCpyavdQE2Pjic; using bsS7yJ8UBSK2HKKTnOG6; using bv7AXLF9cSNC5tMRGQIN; using bvB3Uf8kCMih3DmKGpmI; using bwSP658FpgKk3Leh7e4U; using c3B7koGejYO9J0GA5Y8; using c3HWiCjT73vPlkQT5KLr; using cA5gmOMFqQj4ZNM0reON; using cCD1cMFoLeemWW9G2snh; using cCkq3Zi3XRQNECRNlltP; using cE8KIiEnswgUeJqqL7N; using cEC6nmMbcogRPNWkJsIY; using cFI8ZkisGeIAJg0hWSkN; using cFqaMKFMUPygSxahye3U; using cHW9CN8iJ6wOHsTSosiU; using cLAeUaFRbCTCGerfeXqL; using cLhVDrjLEHAeBUMQCrar; using cOx3G9jfsO2YoWnJIQ0A; using cP0YweLbVAUmj2DZZ4U; using cPeTpmMXK3LHLUetqq9u; using cS8kgajqVxVcvlbCL1pY; using cSqXZRi4le4qVWW4hejO; using cVZefMjEhOv81fvWZ1jm; using cXN8cu2wKoevHKNSMD2a; using cYmT55i2QvG6bvXoUWDE; using cZ7sERruj7xHrXejU2b; using caITt15wNhA112y5CKI; using cbZHl721PVqkp4Lcgg74; using cbv3EbMflE432sh7Oye1; using cdkWc3jCJd1ZT070an5F; using cdyEseFuYa5uPAUZE1YE; using ce3mpk8jppsmyj3sY26b; using cfAralAJdGl6l2y2nMc; using cfGkCMFGmt6iZNNC3ycr; using cfb6hOFlo2yAHJO61JbZ; using cjgp6vwhNhB6sONT5Cv; using cnUEuliie6VVNuQP64MM; using coV87AM5JG49vjfIi2yD; using cq7Y738gK0tD8rvL7wDR; using cstPXWigODi4oAV4krbR; using cyouBdK4f68cEMr6Yr7; using d1ieU78Ufy7UfSwcaQ6O; using d3abv48hSvqbnE3Iab5X; using d4mXm4jPRuGTSrc4kkZy; using d7wYT6LAXPW3UpLPnAZ; using d9K5BSFvRTGQtFlLNOxO; using dA0aBXiHBBwEwLN3IUre; using dDvSgq8JbVpBLnDPUKGu; using dFMcetFIZXaThD3NMsx3; using dFqNssiCCdNAGGJw8aVf; using dHa7C7iolhqGrhsuc8mc; using dJ4wloFIjQZE9XU7vRVk; using dJl3t7jEuVWjRCnHlwvf; using dOpDAq2Ecpur8gpD8uOd; using dQv3lZMIbR1H65328kiY; using dRT3PIFINMy9t935aUTQ; using dSMqhc2d1BTk5ObWp5rM; using dSsh1aFYf5nu9e1mKotB; using dVnRpGjTeoZ72xtk5y5C; using dVuwb58vs1Mo0eyFC4Ax; using dX6qHlKgK5RPa4UBZ16; using dZv2PNNCvZy2msnObsx; using dbNphTMf3ykPTVItM17r; using ddlulH8bNBqaluhl6baH; using dfyneBFdtw8T2Zb0fwtT; using diXtZm6YYJK9Zn2GyvQ; using dnGb6fM86Sm2ffSKXn1U; using dnUG6R2FMBcE7HqO9rrQ; using dnhBLoigbOTY361pBSQo; using drNlgXiuWf4LK1G2bJeb; using dsG6jRFEpGHTS1pVtyIN; using dtsDCbjd2OLe7kZcl72b; using duKGWibQu8ndRAIm0bP; using dv47LVjVfb47oaBj08Lx; using dwuZ2jltYMm5pUT0cTT; using dxTiiq2FZUlhWfdomCVs; using dxhyTCI806qw3sYyxhn; using dxkB4y2Qvp0BJ1yLB5wg; using e1F4JJiqo6Cn7dfNFvEm; using e1tBAy2OYi1PThWhoyh2; using e30jovMpVKZa4uOefUXG; using e3ZtnrFWSgy2TTOJUYwP; using e5o2URF1twKl6R85VwMB; using e5y1Zf8LPSeYL9e5sXJu; using e7qc6A8iZJ68ptRDHLa5; using e9w08c5ofrpXKlPBq2c; using eD97mS8pMfjbw94M9Dac; using eELtjtDjJFDFuMHcGsj; using eGpAUWFlGCZDosJ1UUXf; using eLH3FbFaEf0yGFlNUpEh; using eLNrCgMMp4HK696TbTAr; using eLkXsR2a7QR2ywVMWNqN; using eLnEdXMwmCPUsB9DgiiJ; using eMKs5eMPi5y3Xixkk8uZ; using eNB1BDFfHQplDxLSia5Z; using eOpu2YAc85W9hbwYtTJ; using ePZUOmF068oAKtXG29G5; using eR5GcsFifySmY0WPdoUq; using eXNTNyiqSrPxCUC6Tkiu; using eaCWgXv5hjxiWThk9V1; using ead8wl2mZtJ62kHO0aCA; using ebmMHkjUm8k6KgUungpH; using ec3EG7F4WoC1L7I95oqU; using edRtPJjUNEBeLiau0uAT; using egmM8e245ZoPHhI0X0Dx; using eh2mvP2oidvu8K726HwS; using ehMS9qiSYUVpcv4NMtw0; using ehqsnVjT483pCOI5K4GM; using el4AnBF90Vy6pNxiGgmd; using el9hptMV6wliiTRSrmjE; using elRNPQMgjwAZnXSXGM2b; using eoiAmcFobmDtTFGwIqUr; using eokCItjc8IObKejXP4Kb; using ep6cGeFYEfF3dBjKBYkc; using eq5BQ7jrVW4grIsE781M; using erjcxOi4h3VpobKrE3sx; using euLDqCFAgxLjEyYha6GC; using ewG4w8VBHMqfM2Jgv5V; using exYoQIFKCdn4P9D11nJK; using f0VlBTM4EOPi8nX9llyY; using f0cvkGFPH2DclVYuG7Zk; using f0iBoXFQel07jgsnkD5n; using f5FTnZC2s8duVY06gjr; using f8fGZNMCeMQIa1gICXTn; using f90tOw2EvOV10tNSdhVr; using f9uLGsMBVwAlWVr6dZkn; using fASestF3F6JvO0iZxHhS; using fAhuZUjXT7BVGvefqw9m; using fBhbUUbSSsU5rVv8Ztu; using fCYfrVMeFg16VQqQxx42; using fFpMyM8Fu9vU5iJo3eCF; using fGZZ1XMUhN0thPS5gaMc; using fI494KjTgGEyf8l3y7nf; using fIjZjf2mJnx2b5lAMQgb; using fJYZd68gZIxwpCraDOPe; using fLdSQZieWEPnaoIyH6Pm; using fLtVy7jZBYt0tmm2Fon3; using fN3Ce32R3mFJmRhtO6bw; using fPKM288NutkaS2VyN5H; using fRMNk82XpVi3smUEKUkt; using fT8wAo2GX3eH8W47XFgb; using fVCklPu0eaCfCdX7w0D; using fVE69Y8MtghA6458Y3g4; using fXI2fWmMD99LoxftoYe; using fb5tOAFKvELUfvvJtjvk; using feJu2iFnMJBr1P9oWZc4; using fgHwsu2dWHYqoUYgMliS; using fgSM6r836fAtNpaTipKi; using fgrc5V5kbeWnWNfyBVm; using fh124uMJ0oONStbWk2oK; using fhH8xxjLt4pIMtrJiZuA; using fkMo6Op634KpW4tusxa; using fkjZMQ8PeWBdLRc4ichM; using fmXRCJiZzJOQ5JWdSCyt; using fnfvh3jrUfFuUCc28532; using fo6Lg1ER4erC4CtdQCa; using fpaVUyF4DApktoo4Vc9P; using fqb6inFRQfCWO6bkAtn7; using fvvHiU25JrDIViKRQmbp; using fyepIFFknKlBmvJdnq2o; using g22qj9jbKBrOh3MKcwuE; using g25tYqFucJfi3eAAeYAH; using g3kBAsjDExtdJDcNHX4c; using g5hG5orHT9tbbfeZL0d; using g6SWBjceuLW4ja3oGvt; using g6tKo4OeWfYvu5l5bx; using g86fbBMCVHxiBw9YjF40; using g8Lj0lFrpt9R2PbVvmsW; using gAjfs8jd8B13AEdbTiwd; using gAn1VuMQ7lDJfw36pGEP; using gCcFru2om8Rg0NZMmWkL; using gCosMt8BZ1FTrdUYlEZm; using gEOdm1fH0X46oJKQcpv; using gF4YSIMDCVvVBnDguKCr; using gFx7tvF3owx8FCtPh4Rx; using gHFUxLiBfYdtQ2Ki740; using gHfcVyiTkrN1FID7mVMl; using gIDXKyFQblBAb81SQ14h; using gJXFYDGscALoU23wWit; using gJZIKcRMUr7nfw1GRFY; using gK1yAOiCOMDx67DgVtWj; using gN6t5cjqNZgYREEhP5eD; using gNV53sFK30JRXuiJZZSh; using gNY2I88KlCf2FpBiF4pM; using gOu5oRFamVOd9oFbqjig; using gP56sn2np3XNrIfoeVp1; using gQge7pjVjaxHergUSQLH; using gQgvctbxjhPFcBBE3F8; using gSCCwQ2qXHkfZwheARRF; using gSCIYhjVnB7ybNIB9UbK; using gWiSCNLm6hYqA9dEFa4; using gWilAZ8NsRp3uHlV1XbL; using gXoesYiKmKHYYG6U5Wrb; using gYvKDXi4LUvuDSUFhCL6; using gZx1N6v3ebSC8jByTw3; using geODUEfNZWHO8Tjkerg; using gk1RxV8foiwgLRafEHXS; using gp1GhSMeoUvaPY5xhKKL; using gqiDUn2tNLQ5TgvBO7rP; using gv6MJ5jH4ExNk0YRR4wc; using gvbuIfMpdMl2DBa67LXY; using gwbjgAMD3DH4gpfSHZmu; using gxPbx4iwEZl73xMTqHAS; using h1fnbLMsiVlnwIMqlBnH; using h2IcNF2PR0j1cUCR7e4N; using h3dWFA89ALomTOWXUQMQ; using h4S52o2ovJb7Tr3ou4Lt; using h6eDn8Mynbgw8UadPlnT; using h7A4wI8x0mqQLhVX88cu; using h7BwIt8rzv6OYXpbxMjG; using h7T08qFSGcL48sIJIcV2; using h80pHpjWXYoI332XwfZg; using h9vLMXMooHEIgaSrenFs; using hEbZNZMuOjnieAF8nFO7; using hFHVvd22W6UsT4dOU7t4; using hGYA7I2LYXQ166YKb6u4; using hHjGFajjrvJDqr7jZleH; using hIEkZt8f6k6JPaGTJPRJ; using hJVHYvFaRNxsrNEVta3s; using hM85FTFXfegX7RZ7upIu; using hMZVVTMaEC8R64rrSGjF; using hOTkT3MimjeUERhKHlu2; using hSHmsbFLoKgDCbPbZMJK; using hSfT2PGPuNqfAZXYZXq; using hWB93RoKKJLTyIN3wbm; using hWkqnRjN2aJVmsCH5tJk; using hWnCrkF5bylFSqGHqkYD; using hX8puu2n78B6iLoC8GpI; using hZg2fy2lrFDJbkoVYG2h; using haeJolFho5EP4W6E0Bja; using hb98vFjXpNkSyouRX0e3; using hdg6FRF2dEG0wlC9ylXt; using hew5gxij1j2Mw4IB12WJ; using hgFB86zbvIbLDb9YRc8; using himfNKi45uhqPeUHM5n3; using hjEkYh8iH0QjKVE0bcMa; using hkZkEn2XOl8FDEoeqdKt; using hkqpnCjMuymYxvhdtIrQ; using hnWfCe2pilDD33EcU8g4; using hqFoKyj3w6No9rAoGBs9; using hsImraFX8oOT4qAOuG7V; using hsLGqHjV476VlCHHhkXA; using hsYZ4EjTfY8QjqZli9Lf; using i2c1l523epMEnhejFIqP; using i6GnDjiBAVhhDXUPBAU6; using i7E4AAFRpZFI7cgedHFb; using i7GqMsFUr8T8tA6di8Nr; using i7oBsqiZkQmBmfnB8Bow; using i963Mij3R6lpXaJ4QO7O; using i9N85C21jGjU7J0Bp0t6; using i9aEUP2o4lZqSBUATaSl; using iBpoX58Z91PvO2vkvsFf; using iDIwbT2X4uPX2FCjSKau; using iFH7A26ppSs2TID77qV; using iFyQARMBXJvKmAxhH4Ib; using iGr4I48BTjL4gt1G1uLZ; using iGxSSK2gqdlOfyWLj5eY; using iHC5u6FHgN0p69mAk4f3; using iI6Ij8jD0lpB7E7B4XLU; using iIKpZB2iSc9QegNGIQCR; using iJ6GaSjVJMOxa8Ne3X6a; using iLBiNVMtfFNiPUhgd8YN; using iM2swTFKtJUrA7X7jNgb; using iMuocpM2GOjpsfOPVvGX; using iNaBOVMagvXK2rkyecuu; using iSiv5lEyQ8WNrZyKPZn; using iTEkZmFMPbrrMFh412ts; using iVUxJO8bVnn1WUNEF3uJ; using ibrMbWyZfCJFZjAqfUb; using icrvI3jE8M3c07MAJ931; using igYg9iM8oGEEX7qmA9c1; using ihpuM28WiAErHxoldw6G; using ihvjZ18rNT5vNICmgK6X; using ik3wJLKIyvqNdjxXS4Y; using ilVKb1RD43kwKG6VEIs; using ilwjs92bUVsHOanY1pQj; using impR9RFRddR44SCBX1iY; using in4UsiWDZ5NYYXdkcXa; using ipnJVC292tdNmo579xg1; using is0geAMPGs4jNwl3MICx; using itetONpYq93qoRg8Ele; using ivMKKD8LnOURQ5BDKNu8; using j0wUAmjWe0xxXgpchYK2; using j18JNwjPoKBavl3BCLtV; using j1FEJQjw5WP8XXQSAAjW; using j2h5io8J4mdh0WJAlkfW; using j4MP6RMUmvId104dcCPZ; using j4q5xyilmvLJ1f2fSpKh; using j6h9ZKigk1hvFZrsro3L; using j7knVsM81SGlWZUl5xIf; using jAZBEMG8TCPd8ykBFtH; using jBjc34jWNo3b2W3tkkdg; using jCNOTiCfYSWLTarqlUG; using jEpfw6jUBBtHWw9PSCxD; using jF5isMM0RTG1BhsllOgt; using jFG8ylMzqoU0K7ln4GHF; using jG8o4S2dINTQB4FgCHpQ; using jGEfJYiM7nrxw6sJ1Wdi; using jIdH2HMgtmukxfuJ2FY3; using jKAqe9XJAKnUqQoyjpn; using jKwjJ8MzgyZjlmDt3b7V; using jMhSma8nF311mkHLjEbI; using jQq9nBiPNAdbusZwcFVx; using jQxx9TMPLMmBNT8NGZdD; using jSpoGM2Xs0koSYhp8K1K; using jTqBIm8i2KLB3f3DKHvx; using jUTy398eztFCBAAmXjdX; using jUWriQiS0txSTTBwrLHV; using jVFFr6jRkQjFmhluU8ax; using jVi93dFyW7l1WwFBOXsh; using jW45fpFNawM5ykDWRxDG; using jXwc0X2QioodtNGNPhwE; using jYjYusiC77LNAW7rdRK8; using jap88AFKSI7UQtGfjKvf; using jbPBYPMesBatdIHwRB4r; using jh0RH0iHIDmXUm5VjHmh; using jhLa2YFAvxGrcSpJ1HbB; using jj3dlS2W63ua78gUUIVB; using jjHhd72oNvIiOl2yCMHu; using jlQQPH2qVxNLW5wfoD3s; using jrgjYgj8gE17l6XMLkTS; using jsiLOrste6PIdRgG127; using jtnA8RGZhDV2hfKi07V; using jvxWAC8LFaQx3ghRIWpZ; using jwBYQx2QgkCPjU9OdnAu; using jwoOUWRBmlHRaCGurmQ; using jxeYtjMp0qtG4CB0y9jQ; using jyDM4xiGUNfLXGy6WEM3; using jyJ9ehGqVeWDbPnEMDh; using k0qIdrM9bRGHFUbeStaU; using k3QDFPoJlFMFJ2bV9As; using k3TOlqFNSTrBvs3VYH97; using k4ERgF8WWYmtnYxaLpIg; using k4FSiU86eT93fd9DaPV7; using k6NECnjs4kWqG3rHQdMI; using k8dkOV8cMxTs0oZOiWbj; using k9T881FkFjEHlSP4XM2R; using kBaC4viXHvNQFNcEERKj; using kCFj6yF6MoRDwTc7wvTN; using kCTtEEmDsbKfOVJvYwt; using kCjNfk2Fasoahw3KMam9; using kCwUW6FShJRofwhc06Rs; using kCxfdyiox6XAi45Ro4Rk; using kETWVs2FdAYmEXykKe0I; using kJkow3jGJYjHmf6IbGHy; using kO6bP8ijw4XpQuIdm0vU; using kOgpnikyC5fiZh4otqb; using kPFqdL8dBnTJhh3Bl2hY; using kQy8T8Vcn1T7sGwAau8; using kR1w9RopoY5VMfhetUW; using kRMEDx2BdwabeZEdWkRK; using kRffWmi8QhCgdR7PO7Rc; using kUChxnMDnaZFq6nM8LgI; using kVTcexjtuDYUnpW9ZjEB; using kYc1V6F9S4jJPgCJQfGK; using kc9tRCjWpSl2CMRGl9kf; using kesHOE2Di1AmlT9LvmtS; using kfrT592qaqsb1kELQBG9; using kmCY8bjtvijF5yOVrOvM; using kmFyqYFQ7pq50ASM0is1; using kr8369MSj8HL78q523YG; using kriJwgFTKRlkEgF8OumZ; using ktsxCI8xooPL7JTP8w0B; using kvnq5miQvobf64H6PYKq; using kwMbc3jCmRjeG8sx1rYF; using kwZxMAF1iIGQ612pO8KH; using kwuKQiFtNbcPmWVsl1W4; using l1eF7H2oEPS0kTBpIkWZ; using l2InC2Mw3ZS6XX2Te8AF; using l2jNTg8kd7AqiTf9V5RE; using l7op91CjIc5pbqAAssJ; using l8u5Yw8imIIJeXTXX3uI; using lCkxpDF05SSGSmyBvgh9; using lHNWBDMOhYe4oxlsqpXv; using lIiVPZjh73DukcQiINjJ; using lJVKFqRdrSVI1t74lhA; using lMe2ag8yKoll6EbHPsVa; using lObrqm2ArEIwpKY8AlIV; using lRXrbIiFkJQujNgkaD2r; using lSd1E183bebmuX1tGrM1; using lSyDGRFXO3HgUNUunJgF; using lYYwnq2QoKwoVEr2MtG4; using lZFao9F0uHJ3MTiMBfR0; using lbLyXpFYhbt9uNJ0EsgB; using lduNOwFSADsmBKLs4Bh7; using le4YWX2tEOXx2fGu9g0F; using le9qfvF0otD3G4yETJZc; using lfBteSFIItFBLxQXMBWr; using lg0sYYMlAx737lqN6LIQ; using ll4tOdFtjKe9LQ9rbQ2d; using lmOy3gMZeAeJVKMLJprF; using lrhlt8FNQaLMjSx2QKUp; using ltnNMVMi0QLbSqcIKXRO; using luDVZRiRhF2I9FGBdcmB; using luYxf3iGSdsLLpy95yBu; using lxXu6RgaJM2DugDbqFa; using lyEDqsFqNes2Heb61JjY; using lympuYKEkqrMMSldif4; using m1VdfNvQWqMKGhrZUJW; using m1dJJEjC1BkT4Zdtm3Gy; using m3gkZtFmwE6emjSsbocC; using m3wsh42ge2FM4933I6RT; using m78IVTMOzxEaumSDBGLs; using m7xpS4b2uOUyQ0jiJSZ; using m8QlWoFKdsX3hAgSRMJq; using m8WrC8EupK4VuCUS75R; using m8ajIBF0RVRpRIK0GSdd; using m9jS62ioGn3ZStu8cPGT; using mAKgWs8SrsfanMEapFx7; using mDYZMBjrS0n8TnyWN1L8; using mFnDgNMccCUICkBZUAwJ; using mGOXjlFFTAxBLyj8U8gZ; using mH8XrFMfdISY0U4lDsDO; using mJ1DJwlBY9I6H3YxHKL; using mKVgEe87wAdL7W0vhiwO; using mLbCB02UuQUGa74rplG0; using mM1hvV8SfpeS1KNnm8oK; using mNu6E1jVbXbTZUQMktdN; using mP8Yd3jC3q0rhD4gRQWf; using mPly1ksrZusTBuVPvGN; using mU1bhSFGxBME0gPouuxt; using mUNDYo9PA8JdUlCxbcC; using mVngjniJOb0djgWnNKSf; using mW3M4i8NEN79qboKLu8X; using mWRnOAjZWnSZPYwuppDN; using mZX2hdMp6NYFeHVdDCS2; using mZgomJjxZJNUOHcCoaPj; using mcdlcS5VH82E3qhXa47; using mcr6Fx8lQiBxQ08cFjqv; using mfE2MhF8xF0FO6oHpGG2; using miUhQ7jDRGl9JHm9DqID; using mm3mVH2K9KkQYtMfZ4Xx; using mpwXeOkdCYnomKaeVJD; using mtmb1UMygmCTjqE0iNwA; using mvil24jVTX2iDHRPDiFM; using myxlkCji1i6so31Q5Lnd; using n1ZRDM2NiJjxKVrwSCGO; using n2jATbMvZ4SYnWhtxZ0M; using n3RhTeGaWQDSq0x569U; using n8KMRX2NvwPWxsCHmyky; using n907dvigBs9lV6wDEZBo; using n9VZsOitkfqvkmjbBZFx; using n9X6opMcUkDWnk69GefZ; using n9pOwwMzcMfmBnBSMs47; using nDh7jMjto6KfrKLo7ImS; using nEwMGO88nsDMldR5SSAp; using nF1MrrjWsA3WB41epCcA; using nFIlCg2GUif4IlnXH2yc; using nJWULZilihQrYcWutwGS; using nKgsPNTA2KQSRPhCHq7; using nNXUTZMAaHZ53G3xOOo1; using nNsOH7Mut5kioLIHugXv; using nOOOfCFHzPPCGNuNnHI2; using nQ1t93jEOnjMOuHJBBda; using nQRfurFpv5jJS6FRXqNT; using nRBU5QgZ6ZrLpPhdU5q; using nRuUp9WCoPxkneqYZFJ; using nTCU7D82PCvMNdP684bM; using nTCWNlsKgkOoJmTij60; using nUs3HuFsYUMe60X3xxwa; using nVhnfDFsPoJcypL79pu3; using nY6QLiMaWZDEglj9fAig; using nYJqm1jWlPnx5wsOH8xZ; using nac2y32FuMbFYOBnAgWS; using ncjC0ViqlYh75Au5lQOA; using ncoiCF8JVgQHLLXdrOpn; using neAmk4MBfya7ZL4XrEQp; using neCt2l8UW0LkVS0aHE8B; using ngueup2iJTvKDBlNSvCn; using nievg9jC2OQbURXRBZ2s; using njgvKfiUANtvcEPxqdH; using nk1V3ZibpsPgLyqbk2hY; using nl1xQKjp4oa38hCNUyFw; using nnOVIJii81FCybIA1TsZ; using nnb7ZCXGj1lPN6WAUES; using nsZC82MCmHXelSMMttwD; using nsqZ3rFpIs0BwTkIpyf9; using nuS2bW226sktYAdeTYlu; using nv9YsCQpT7vMrPn1spd; using nvXxcosT1iYqaSifULH; using nvqJJhFxDE3PBqhtmpEx; using nvvwRf2Hes57JmIAXSNp; using nxJJsgjMqv8M6ArmELsD; using nyNLR9FyxCO64x1Iag7P; using o32QntjEZApG5ORTCwmC; using o5qTkGien09xnlLlaTUQ; using oAeNXjFRgYMk8Y35JH93; using oC2fe52WLRWUCIZX9BeM; using oCtcCOMYUSVdwv5HKG5P; using oD1sANCdRe3M1p2CJ4g; using oExZc0v2yu5ewWt2cZo; using oFwXZoiaitTDVNyNxi4h; using oG2jyl8EnUji5gctmHfY; using oHN97i2KZ0xt7D0y0plQ; using oHfkBe2mrgb4P883Jajp; using oIAXwQl7abEaucwlqVT; using oL3wkr2j9rMi23lCIwKj; using oLLAvgMdsb2FpyG90J2h; using oMQCv7M0MCnghRmJBlZB; using oMwwrOiqLJSKephqTE4L; using oNGJACjVOLvlikKto8UQ; using oNOS28jDdva6tA9RnX4V; using oNiPR72QTvixerANDcnq; using oO4jfXic17xmQgFBhfNt; using oSw9FGbCDOs1q1fZr1m; using oTcvwNx0whQJG34gEfy; using oUydZ4jMbM7aLLirfEv1; using oV8CBXF6wHts6Td3IsDp; using oaBgUZ81qpwW0TOqScaA; using obZWTibzraqglGdvTuS; using obdaCjW7m6TGxbW1cZ3; using ocOsDjFuVgkEYhe9XtIp; using occ1cfMP1DCDhhqJdJYc; using oe5uItjt711UwQuKx6jy; using ojwhJ92vaWM781mwoYOr; using okSjW9gCO6MYVe8ICRi; using okUOwaVgEsqlCDlfEJ0; using okYiAZC1QOhUl5ph5Jb; using omHMJYa4o2dHg5y466e; using ooBe1JMps0CggqNEhRd2; using ooFYe42sy348pqAejTPP; using oqK9IGFdLdU4MPmsMqNL; using oqvUe9MZmRLVGoBfTKf4; using ouX3TtFKNJa0SVBaRhnu; using ovZo7yMgOivWTdt1I6y7; using p0HQf02WdtChQOJKfuMJ; using p1DB7VF3bMsrUXdtcos5; using p3vR2QjcB3PVccjlZVIS; using p8eyUOFAT6S0sMMYRrWY; using pBAK4d2qhjMIeMMCWvUl; using pCsh1FMzBZdA6KDqqPh2; using pEEToN8SdcWq4il5FGmx; using pJNmeil1WafjURc2hnL; using pMPguEFVAuqAZN5Sctiq; using pObV0oMgNtNVGiiPB70C; using pPf15DiR2TJ6cP57g6Ib; using pQLI1WiPzWGfGVnlx39Z; using pUKMD7rbEXY7NiK9Hfp; using pUhdovwGnJkrCufdR1j; using pUqM1t22FlmFbFMssPn0; using pYEHOA8XpGDudO7Eh1PZ; using pZ99OGR9dYm8RHpfygD; using pb8iOS2dqywEZ1wfUqMp; using pdDX89F2JTWQF9BTN42R; using peeb2fF4xehqwiM1rtRM; using pelg5xiMesqagBH2AgUm; using pev9B9jawUObx9cwqoTC; using pgX0qEFLiFqsPMhY7hTT; using phk7A7jOnaNYPucesFZF; using piQ5Bt8YHqUFj6maYMj; using pihT1WMz2kIE2l3VWutl; using plSjmwMvKdLimEIpNhqf; using pndcBsa2tJxmpoJkKfa; using pocRJRFRYEnggfSqsO4u; using pronlS6RQ15UPoCwvCd; using psK636dfIoLET0P1Yid; using psqm2yHsip2uYdFMMxP; using pvdADHjfjw8Rt9RKTLCO; using pweQn1jmRcwuQuEmjdyF; using pyf3IwjhlNSmbZX9hnTF; using q2MoE1FnJq9E6hMeUoGQ; using q3MUvNFbAGPUIpPQtmMt; using q5rho224DEeD1gZGGrIy; using q71wT2jFhL29CIo5HZWq; using q9fmnk2sfSO1gPbjFLoI; using qCCpJ9F1k104SkvNJD6a; using qCaMSaZffRjqePFlBGQ; using qDdXekj9N97OMyeKqofW; using qDrtwpFWYlCVSti7v4Aa; using qFuUgy8HJCMKc8Qt2B5j; using qHTrXQ8FDHx6SwsACIfW; using qKWrJv5skE9q9TtoLO7; using qNaSeekjH0B4jSWRMS6; using qOvOo68PA7G9hnpTdLPr; using qPG2RMMm43xmS5T5fPCl; using qRuUMKjVG31RJ3ytspEb; using qSIjfKFRvYEok2hHaL1N; using qUYubuFtYjEuUVbZwrQI; using qV5FfL24b2vb9HyQXKMh; using qXn9D3iEs2792j6C3nPy; using qYoutPRfJGs3LO3SHcD; using qYppu62XDBp1x7HLplVD; using qZv0b7jcTvKcDEQmRXkP; using qaQQeVMNhTgyG3LJivfh; using qo7KWK8YCaStxBbRENP4; using qp424V2qkajRryHxZb50; using qpf2Yi2auRiFGdSA4x15; using qsCMAbFbi0BhwwHstu03; using qtuvUaM2XNa0KeTZEa3y; using qv5yhe28EiL5eLsWPtmO; using qw0AhXjG5TwR52XEjpYb; using qwHnM6iZW2BAfLZLI0dU; using qwg5Za8VRdmV3qaIA0VD; using r27AGPjWuImP29FuyQMG; using r3rwTiiM0BQDKWfOpjbN; using r6AHJOFQNIovI4pWZRNG; using r6pH4kFKTtP02PRWieAW; using r7ZCqvMeAB14D5pXFlrR; using rAC9f226XGplCnZlYE1S; using rAKF6RjVxnckC6290pGg; using rArTGJMzbkmk1ZyXBBMw; using rCo2rR5BetQWdC8EvKw; using rEBOwXFT5EYj3ZPp1Xym; using rFKsHqi2PfdZyGCoWt1b; using rGeg0TmlJ5wsPbrBcuM; using rGg2rig5celCSOGWias; using rH1YMB2ELg2dZ3vVRFOW; using rHHfJ3j7RKanl911b6Zg; using rJHMoFigqdNrNa6eeuAl; using rLD83lFoY7XadbGFWqwY; using rLW2rD84so5rtLSPdfCJ; using rP7KqBFdEVOIYVvA44vq; using rSRTU1FpFJTPYnHgh72n; using rSSdktjvkdBYJl2hfL2s; using rTYUQTjhMq5VhC7EYkA2; using rYf8TuiFYZo6SSr3iwkQ; using raTVPBFuWonWNtyupXOB; using rfe6jw8qIpr6rdHK2uW5; using rgfJ8c8K2j3BQ7mNLMGT; using rh3fEsMkSq3Yuf02YEiU; using rhaPQZjrESAj9vJSgj15; using rlSF2uFvoo2F594IfgTh; using rlwubJFZv3USNsrmMf90; using roGU0hFd6E0v04hOrkGc; using roSAHXMrjuD3qRyTiiYp; using roXISCjPDlbloXTYlO9U; using rq7LMFMDmwOoylMG6E9D; using rriLNppbOSEGo6EtXVM; using rtiERY8dsCSRp3QmUAuu; using rxKDU9jWPdACc9q38rW4; using rxXwop8kYfPmSE5FRri0; using rxZDVD89pdrU8n97Q7uy; using ry3fwFj6gevg5WYFxG40; using ryFqcbFpUE7HyVRA94Uf; using ryGoIJjupRKZ4aHgL2F4; using s0Z06n2U6F6ZRqvaodL5; using s36mRA2CrlHHjakNTKR2; using s3BrIgiKT8kNemvl1b52; using s3J9gA29dclVAPdywyvB; using s4YFNyjYZ5ZrQgFCqn6L; using s6KbDFjDF3aFyArwBxnj; using s871qwswUPJMFEtrlV9; using s8oO3oFigBH7tk175I1k; using s93WXZ89NwMUI9O81Fl3; using sBKLNDMFGSQD2GHEpfsM; using sCCIdlFm9pNwTtPs5Mu7; using sDPF49M8FuaRO76TmsiN; using sEUXL1MDePmHpt1Id4wK; using sEdITVMEc2EwnPXIqyky; using sEyW4IMtJUncWpu2PDnh; using sFNILDMvcJxRNwD0AktK; using sG0J958rANjdpPjHGJnl; using sHWBMdukEIuvNLnK6lI; using sI2F8LiAUdPry0XrwZ3T; using sJ30mWfR5YkGe86idRk; using sJ3PMwm5lstVL363j62; using sKP1saFl9GE4sKocQ7wE; using sKuRS8jREvhlidPbNvw5; using sLPRsWjWrmMWcANhYAfI; using sOOn4vKrpbAcuECQwSy; using sRUA6pMwpvMOlULbSBMQ; using sTeW8WFtorhsPSb6dpsV; using sV1BRB2jPLmaAhKZt4Ir; using sVr4El0vFKGTwYOMfeB; using sVsJyClnsxJm2dy4MeA; using sVyjehMy6Wtoddb21rA; using sXUDw8Gkj5nYFDHD9MP; using sZGjG52PQ9paI1vk5M2r; using sdf00O8UbH62ArJ12i4X; using siAwHeMAjVYZ8nBr7UNI; using sjlF4ujcZBRvY5bA8Pfe; using sm7ftlF0GUHfatRtQNNv; using snX267itZ6cT1EPW47hb; using sqWWUaFryoL5718XU4Fh; using sql6IJjr41gVsUbx4aaJ; using sr6BS5jmMV3u3IdvqvTc; using srkrUXjDqeLxh7Ff9NCk; using ssXVMY8AihCZr8QxSDJj; using st9lhsFWxvF0iURi4XaL; using suTR4dFKoRTdOaKJNUlN; using sx1urY8lrZbvUVDrR5ir; using t0CdQ5MaybLjBf6FJDna; using t1ifab8RZdvg5NqV4hUh; using t3ENr9Mj8HX8Iw14tyfJ; using t3gdwmpU4KsFl9ieI3f; using t4heeA2lVi6SQ9YwMTM8; using t72OWWFDoUtGfro0GMeL; using tBvyDhkmH28Oe5AB25j; using tEFX6G8EKdZlROMOTiSQ; using tGE2bLFwikVJm9l77B7w; using tGQE7t8bKxwbblTruHlO; using tGfq06icB1oShgaUIPmk; using tHEwrbMNzofLYaGUI6VX; using tJEPFN2kFRatUlaqx1tL; using tJbVFYvDnTE2oFHutYl; using tMLDjSFQjfXY6Ramp2WS; using tOav2siBnIWFTkwT2cCY; using tQmru9jV0OkSSpf1YoSc; using tRvcNxKRu8HJiuOuSvY; using tYfMsMFIwuVyQc3n72xV; using tZbOhVjHQpeq8aOdZHVl; using taE78KMn2vmsr5G2EUn5; using tayHbe20OXNNSD0pU2b0; using tbN47biuUNCJPOY4YPGQ; using tbYiSgMMyUXBZFQsDjBn; using teqfP1RvsgvUPiX7kd9; using tiEWaaMzZTKDLFlPWqkl; using tiuDVc8BJfjVUyYoD6NL; using tj624S2OFhM8CJu1NiTP; using tj7SgQaLLnToXOmjnB2; using tjC2f5FWcnpnyn730Vxf; using tjRW99MKvDvOCwYGkmwh; using tkWLUyFdKOmWbX7LjtuR; using tniw80jDt863UTBS4QJd; using tpfFIS8hFe23h1syeOZ0; using tsvYaT2VRNlEEWifBKAt; using tt5qc7FH7QlbG8qITWZ9; using tu67CyjDNhuQYAej3abV; using tu9l1J2rBBTyWVkOV7ub; using tvivHpF6mmR8XAKqSAeZ; using txh4XujEiL23bSIDGbr0; using txrLUv2QO1sQKCe9K6SC; using tyxxJxFKzZipZpebKXgO; using u1hlZEMp8p5ceAcMBUZZ; using u1t0oaFrVXLmOmjKhYvw; using u3Cys8Fl12HARhnG67Nk; using u46FZ3E0783T2NUpQvD; using u46SP5p06u3kaaOs7Aj; using u4xGBJ8XHrWt0C4fdsJG; using u5Lp2mjtBHlOknRZFDHt; using u5evJR2L1kxWZItBPqAU; using u7LuFhiHJIpJaxhHLAOI; using uA03yTMVKmbX55w45OvC; using uCrPnuGGlnb8aweTZS0; using uEtNx3F1LqGqcmIRUZ5p; using uEyrnUj9IpDD0u6JsiOw; using uF4ZMW8yIRua8Z2djWXi; using uFOLGoMmYMBSwOXAP8co; using uGJNDqMzvbuIGHcJDTCh; using uJOdjqMN0nhlFEVpNrnB; using uRbDt4KpctQoJr9cobd; using uTWGnWFOi0LF6yVsNE39; using uVpxdt8Fzv1mb2LjKnXa; using uWxIqJLxLHfIYksEMxP; using uYdKVdFIXtNqPUHWna9C; using udaoDdFRAkZXhcWKjQqE; using uesalRMIFwH0p5KXoacQ; using uj2Vfp8aRYnkZ977IThD; using unN1wZ2vookebGESfQDs; using unvc8D2JCZL5FNjFLucG; using uojFw1FllenrFM7SXUIs; using upA4jr4xXJSln67txkC; using uqCUtWjshtClrQgoPxIq; using uqv1mbF0kKQYerDHfdUu; using ut4W8rFKATeJkqFhVYsW; using utgMNV8g7wCNFsIjlKmS; using uuPnhRJoB8iEVfXwVoF; using uugjmkiXc7wajppqGVFg; using uw4eji8wKVxxKwUBxn0O; using uw68o38pjTyw0LHt6sFl; using uwsi9x89VXkbSMAQV53h; using v1dGQ88mfxnsy1JdF4r0; using v1yIna2sMmF8wiqlcMyW; using v3RWIS2dAob8g25iciBF; using v3byUP8pOSbP8Z5V30Zg; using v3lHr8F0jIfkoa6Lqup6; using v4S8RJILC9CZskX4Hcw; using v9J1goMFxRd8PyLdf7dZ; using vDkoxbMzFQxwD6ZlaOsm; using vFHeKYMBNp8PIqFjwq7u; using vFwcftsoQpcgEmIJiYN; using vHveJK2RKqXO1vqObwVD; using vIjBkE2YZmn6fXmFJ6oI; using vJlDY3ITX25atirrp1l; using vLrrJMFSUoVN2GemKMEi; using vNENQKCzqOiUfjbRSEY; using vOF8guaXZbBt3BxlZ8y; using vPpNH1MnO1q6TvsyLgWp; using vVJsubapEDVx7AQceIQ; using vVhyigFwagMVQL5VUnHQ; using vWDBavMC8JKPQqhaO6Jc; using vWWamFMMQUfybgkmGLJS; using vZE0u1EoBhVgDr2hlpN; using vbKIK3F4dpGQkj4CrUFT; using vbl0fT2DtZ6586GuRHGh; using vcLXNbGBIXcjPjtXUHd; using vfd2GkFNIpHBWLc30ERr; using vfkgnE2PcHUZiq13Sqwp; using vgrACM2x8f8Arm2QaF5h; using vhBQtRjhkQxCTxRhZAsk; using vhmy4e2Hr1hCKEHGemHE; using vhpMrEiMRfZyHs1VsJuv; using viWDBEFI231aYsDA7OuB; using vjPOfMnnQxIkR2YLhMc; using vjxs4CjeWNu8q5flO4VH; using vklXqFFhCdh0ViDY7kp6; using vm5YkmKodt3hMF0JhuH; using vmo94hMVL48VpWNPuXbj; using vnDQCtF1z3QG1wMpQWkm; using vnyEQjFIznhsiXIJi0Zw; using volpcEiPfPh5ALwcZ3ZD; using vu2YZ8AZdVLcvl7jCQb; using vuoiKF86i6dDw7o96Wic; using vwKkn7jiCVf5WpUTgYwv; using vx7b9g2QAhiq0X1Z0EJe; using vxC6mfisavuGgyIZbBFu; using vxEdq2MXzP29SymR40GF; using w2ENQS28VpBnVMQm87IP; using w4GZZ0FntyqiWDcgmVFP; using w6GG7eNhFxUroLX5t1n; using w6UCPxjTMjbQglqQxBQC; using w7oVFj2SNirem9u54RMS; using w9akVviH933LJCOj5dQV; using wALh6v8KQBGPKoe4AHdI; using wBv5Vb20Crthj1Bmc4Gd; using wCmMEiMjEofYcyJ6UAB1; using wCqtIpMPrHksAH81lvYX; using wCtJ64FrTiARqMNW58gD; using wD8xbOFLxaiUcJo4QSEf; using wERlAxM5aqHdkMuWJn30; using wG81W32mcdcQM5uSWT33; using wGHu4qFiOKbrpXZCPTdc; using wH6mWDFnAfCulIL7qm6Z; using wIQYnXFRl5RlppPtqI5o; using wIV0PaFIyyVWpPgZmGkH; using wJnsqrjtwf9sQu2UwZVl; using wNLL70jzjikZfu7FtZqk; using wNfd5cFR3N1yUZvqTdPy; using wOnmfa2jWZWLcePiVLdL; using wQ0Hf5CmEc64SnA0GF9; using wQjoC1i4chZFASqXF7Me; using wQx43UMeb9CFOecLsX22; using wVRgATFm2E2PHSlaTuJT; using wWHtlEF95r4dLN1Fx0RA; using wWTj32Y9CjHTgxsl9fW; using wX67JIjMGUKrygIL1EKY; using wYcgu9X8voDLKRm6o4A; using wZbT7UjGXMld6m8bbwm3; using wcalyiMRlE9nx5j6ylFb; using wdCBT487i8poQ0A56QoX; using wdfMJn8vthK9YPjrOfoD; using wfBDwQFo74JqhoVP8tyH; using wiIKFoiCj63Dit1BiyPE; using wnXpeB2IZCVVJ9b96gEM; using ws9cBokeyWt1wr0ceEP; using wv1fZXi21XFEmElZ26Ct; using wwRhFVMqvwnHJiEG0np4; using wyir8oFSZJljZk7ZuILv; using x19jICFHYyv0TkmncDn8; using x432hqivAH6IQUvmOY4d; using x4KrJcjz9tdpVJiPX1tM; using x5yPdLFLbsTcp32Da1aF; using x7JxNK2mqvr18bjpSXW5; using x9CCTcjM9TetOt2inw58; using xBb0vf2doJwDsayuSqYL; using xC2uT1FdYJUbDePPnpls; using xFPklijz1E3ea2lMLy9g; using xHp5HSF5sKCFnWouVjO; using xI5uhS20x4yht17ChUcc; using xIXZ3m8qubxKPBo5HO3S; using xJ3KY48piFfu7CxwYqK8; using xOUX4SjWZMKbdPa1hu21; using xQ18sGQdoi6g2kdCuIW; using xQ8Hda2FToBij7mgel80; using xQQtZKNGVKamehbLqT0; using xRoSHk2wbx348nKAQJ9J; using xUmUYh8gVlsUMNc0slYC; using xVGq48sqHJCgK9V3uNT; using xXVgb7FQzK0bekyOENcK; using xcyiGfjXwpBrn0lB0umm; using xfUGMA2L9ooABvGdGBBX; using xgA54n2ozbplZyCn3sUF; using xiB3LM26hlT9hwxHdNQt; using xjivoL28KlPjwQrHYirY; using xkQyMGQDyjdg90ErOKx; using xklWuqibxGIg2FtC9vuM; using xkpbC82l4sxLdpQP945C; using xnSSA5r7G7WWTcRqNkA; using xp1DTZ2vrnkwK8b3t0VK; using xq3bFsFdorQIOsuvHDXM; using xqLB9R2FiU7YmKDZL3RL; using xwh0bCsEhjXlV0EMTxB; using y2jjcgMzuyMtBkiSZ0Z8; using y2ns1r8rJNay262Hf27O; using y4Lngk2ICCf89Li1ul8w; using y4SGufXt7QwtYLIdkuK; using y4Uhe82D9dKt1v7q3lEZ; using y5Bgo72uv9B0W3dUampx; using y5wx0OjDkMwsvdyNoP8s; using y7UguhigdKTm25n0TDFw; using yGyc02juMf9GbFnY0SKy; using yHuTILFyzjQjMcBb7CNq; using yIJAKA2gMi6kIoPeFfPF; using yPKE6Jkn4kUm1Jr0EEn; using yReCxm81pQUBlWtRfQYs; using yTckQRsfxDAbQTtpmY3; using yWjTkg2XCHYidSd3cbIC; using ydBYE2MtEdcYmc4qUp5u; using yfmZr62kCfGnW1pPoUli; using yhEMlwFa22PAb414WVXf; using yiwQyb8OdUUfhHfq4L67; using yjNPi5FLYRyKqkqiD5pH; using ykHxmtFLIylhqlSAuB3T; using ylaFREFfngD77MjhbIy2; using yoB4oNFmHWraJsnEJvRw; using yqU2o4iBoHZakoVfUxps; using yqmcVLjttkw0UxlvoxMn; using yr1URr8fiBN5mEOYfdKp; using yrDC43jchd4mcGuKrfha; using ys7ELpikHW30YZgluIKI; using ytaAsg2QUQQWKAhkR9rp; using yvdEBoM0S0SCuUNukpn3; using ywDmLs8oXAkS4RPYVUKF; using yy4yGiiBcFkIQi19qKWh; using z29asa8YJLB1i71q1doR; using z2HnKuM5UpOrkw0ah53B; using z4plUWFRLhWEfF5YpdJe; using z6fBwHiQhD6AQJ7Zc8A8; using z6idyVjF0jN0922eMwg8; using z6wcDs8bYUT8VwEV5fi2; using z73SY2jEHivGYFTb73jW; using z7DqEDFguXaQADGmGdgN; using z7iMhpFSoaKTxJCKYbro; using z8gWKqFafwDeldMvHZIn; using z9HBQx2MYNU9nLRjKtMd; using zB99xMjDitO89601I3nn; using zCihXA87hrBFnFG8ZfRr; using zFLFEOKLJVOTaGlwbQp; using zGouwijHwcRK4kRsAM3r; using zHUY5K2w2sZPqSEuCmvD; using zIS4Oe2YCsnt91OHkgEv; using zJLFIBM7zhVjuImADBBY; using zLZKN0GXe56fALPlFqW; using zLo6sbjEqv3xlQqnnhcW; using zM7Qe1fJ0MdqTqXuAGA; using zQutlF8nA4jwL2kstvZm; using zRbrgNFitVdjFtIuPeHO; using zU7YIf8H056Abaa2k4LD; using zVSWVwj7DQJxUBZskkSE; using zWrQ7g8Szrqf0W4SsBy6; using zXqKhxMUzKYvO1SBxc6L; using zYJ1BSFUDv7xHxZEEvau; using zYVVkb8ZgquykFIrtMR9; using zZ864iMNFcTRMm456X9r; using zZDqMuLdca8TpiAHh2M; using zZMgObjZuGH9sXO7nbHP; using zaF0vNps2qVLMrta6Gn; using zb4LKuM6eVawLYcYQL9M; using zbAS89jaHtMRmpCbdA4H; using zbZnZy8ZmPSq91H9dAK4; using zcYJfuMCRVYHWdi3UnPc; using zcapyVnM3vGVnGkhTpZ; using zd5lMcjl6q4nHw0yaB3q; using zeTTH1pWZO1XqATQsHW; using zflQHLpHMUAm6riFHke; using zhSH7dETnIwQXd2Vu3s; using zlSPWIFOZx9pGnsymdgY; using zllfoMjDHE8mc97RLO6V; using zprYLl8SS4dwpHBG9Epx; using zpwS458YcHyCsavtiX4J; using zqU12FiRlFEXk7ylbeJn; using zrHq1uFIcuWZAYpVGIaD; using zrbKfDFjTfHkhUa71iBn; using zskafwMLxuQ7v8RSfIqY; using ztK2Y78H5knKg38FyWiT; using ztYDn4icKpMhAmGvdf9f; using zuoA03T6s0gqdsaGyjD; using zwyQlGMvvriJuBV3uaLp; [assembly: AssemblyProduct("Rippleheart")] [assembly: AssemblyInformationalVersion("0.1.4+509dfd587e33e243349fd5d29118de2c7cd2436d")] [assembly: SuppressIldasm] [assembly: AssemblyTitle("Rippleheart")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: TargetFramework(".NETFramework,Version=v4.8.1", FrameworkDisplayName = ".NET Framework 4.8.1")] [assembly: AssemblyFileVersion("0.1.4.0")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyCompany("Rippleheart")] [assembly: AssemblyVersion("0.1.4.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] [Microsoft.CodeAnalysis.Embedded] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] [CompilerGenerated] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] [Microsoft.CodeAnalysis.Embedded] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Rippleheart { public class MTHC { internal static ConcurrentDictionary<string, string> rgJ3fWOxI(string folderPath, StringBuilder logBuilder, bool isServer = true) { string path = Path.GetDirectoryName(folderPath) ?? string.Empty; string fileName = Path.GetFileName(folderPath); string[] array = fileName.Split(new char[1] { ',' }); List<string> list = new List<string>(); string[] value = (from p in array where p.Length > 2 select p.Substring(2)).ToArray(); logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x131F4D4F ^ 0x131F4D4F)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-340993411 ^ -340993459), isServer ? vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1394395626 ^ -1394395556) : vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1528009292 ^ -1528009330))); logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x759DC857 ^ 0x759DC80D)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x617915F2 ^ 0x617915C2), string.Join(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1356308803 ^ -1356308943), value))); string[] array2 = array; foreach (string text in array2) { list.AddRange(Directory.GetFiles(path, text.Trim(), SearchOption.AllDirectories)); } ConcurrentDictionary<string, string> aTHgBbhw1 = new ConcurrentDictionary<string, string>(); DateTime now = DateTime.Now; int initialCount = Environment.ProcessorCount / 2; SemaphoreSlim BPKsbKuVX = new SemaphoreSlim(initialCount); List<Task> list2 = new List<Task>(); foreach (string qZ9HTS5v3 in list) { BPKsbKuVX.Wait(); list2.Add(Task.Run(delegate { c33dZsfbv(qZ9HTS5v3, aTHgBbhw1, BPKsbKuVX, ConfigKeys.cAUjAYx0W7() ?? string.Empty, useRelativePath: true); })); } Task.WaitAll(list2.ToArray()); DateTime now2 = DateTime.Now; TimeSpan timeSpan = now2 - now; logBuilder.AppendLine(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x7773BD6D ^ 0x7773BDF9)); logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x617915F2 ^ 0x617914F4)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-896128074 ^ -896128122), list.Count.ToString()).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x72BF636B ^ 0x72BF622B), timeSpan.ToString())); logBuilder.AppendLine(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-453480580 ^ -453480472)); logBuilder.AppendLine(""); return aTHgBbhw1; } internal static ConcurrentDictionary<string, string> SMcPLmtXD() { string[] files = Directory.GetFiles(zvDMX7LmQumenl0slt.EvtjiqojOc(), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-403316567 ^ -403316253), SearchOption.AllDirectories); List<string> list = new List<string>(files.Length); list.AddRange(files); List<string> list2 = list; ConcurrentDictionary<string, string> OrpQQDmSY = new ConcurrentDictionary<string, string>(); DateTime now = DateTime.Now; int location = 0; int initialCount = Environment.ProcessorCount / 2; SemaphoreSlim ulrtb1nfV = new SemaphoreSlim(initialCount); List<Task> list3 = new List<Task>(); foreach (string eHoE7ON0r in list2) { ulrtb1nfV.Wait(); list3.Add(Task.Run(delegate { c33dZsfbv(eHoE7ON0r, OrpQQDmSY, ulrtb1nfV); })); Interlocked.Increment(ref location); } Task.WaitAll(list3.ToArray()); DateTime now2 = DateTime.Now; TimeSpan timeSpan = now2 - now; return OrpQQDmSY; } private static void c33dZsfbv(string file, ConcurrentDictionary<string, string> fileHashes, SemaphoreSlim semaphore, string value = "", bool useRelativePath = false) { try { string value2 = k3ilZ0v7J(file); string key = (useRelativePath ? Ew7wEcho2(file, value) : Path.GetFileName(file)); fileHashes.TryAdd(key, value2); } finally { semaphore.Release(); } } public static string GetCurrentAssemblyHash() { string location = Assembly.GetExecutingAssembly().Location; string text = k3ilZ0v7J(location); string text2 = Ew7wEcho2(location, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x35CF61A0 ^ 0x35CF60F0)); return text2 + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x3DEE06BC ^ 0x3DEE07DE) + text; } private static string Ew7wEcho2(string fullPath, string breakpoint) { int num = fullPath.IndexOf(breakpoint); return fullPath.Substring(num + breakpoint.Length); } internal static string k3ilZ0v7J(string filePath) { kAyDLDMB96wHGoX1l9GR kAyDLDMB96wHGoX1l9GR = new kAyDLDMB96wHGoX1l9GR(512); using FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.SequentialScan); byte[] array = new byte[512]; int len; while ((len = fileStream.Read(array, 0, array.Length)) > 0) { kAyDLDMB96wHGoX1l9GR.svYi0EDt8PA(array, 0, len); } byte[] array2 = new byte[kAyDLDMB96wHGoX1l9GR.JNHi0tYX6lV()]; kAyDLDMB96wHGoX1l9GR.okqinYPYBxy(array2, 0); StringBuilder stringBuilder = new StringBuilder(); byte[] array3 = array2; foreach (byte b in array3) { stringBuilder.Append(b.ToString(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(--1228969872 ^ 0x494096FC))); } return stringBuilder.ToString(); } } public class DB { internal static bool SYD4uLsV5(ConcurrentDictionary<string, string> clientHashes, ConcurrentDictionary<string, string> serverHashes, ConcurrentDictionary<string, string> greylistHashes, StringBuilder logBuilder) { ConcurrentDictionary<string, string> concurrentDictionary = bLsBsQXFu(clientHashes, greylistHashes); ConcurrentDictionary<string, string> concurrentDictionary2 = bLsBsQXFu(serverHashes, greylistHashes); if (concurrentDictionary.Count != concurrentDictionary2.Count) { List<KeyValuePair<string, string>> list = concurrentDictionary2.Except(concurrentDictionary).ToList(); List<KeyValuePair<string, string>> list2 = concurrentDictionary.Except(concurrentDictionary2).ToList(); if (list.Any()) { logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(--1545155712 ^ 0x5C1935F4))); int num = 1; foreach (KeyValuePair<string, string> item in list) { logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1719705273 ^ -1719705371)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-2050834694 ^ -2050834742), num++.ToString()).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1749150600 ^ -1749150408), item.Key)); } } if (list2.Any()) { logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x22C7AF3A ^ 0x22C7AEF4))); int num2 = 1; foreach (KeyValuePair<string, string> item2 in list2) { logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1356308803 ^ -1356308667)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x4D8A9892 ^ 0x4D8A98A2), num2++.ToString()).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x7CDEE713 ^ 0x7CDEE653), item2.Key)); } } logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-922545264 ^ -922545744)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1461454712 ^ -1461454664), concurrentDictionary.Count.ToString()).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-927698122 ^ -927698314), concurrentDictionary2.Count.ToString())); return false; } List<string> list3 = new List<string>(); foreach (KeyValuePair<string, string> item3 in concurrentDictionary) { if (!concurrentDictionary2.TryGetValue(item3.Key, out var value) || value != item3.Value) { list3.Add(item3.Key); logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x4DE3A3E ^ 0x4DE3864)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x6D0D07F8 ^ 0x6D0D07C8), item3.Key)); logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1536463877 ^ -1536464525)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x6050B640 ^ 0x6050B670), item3.Value)); logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1356308803 ^ -1356309495)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1888877326 ^ -1888877374), value)); } } if (list3.Any()) { logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1888877326 ^ -1888877038))); return false; } logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-5581979 ^ -5582725))); return true; } internal static ConcurrentDictionary<string, string> bLsBsQXFu(ConcurrentDictionary<string, string> Hashes, ConcurrentDictionary<string, string> greylist) { HashSet<string> hashSet = new HashSet<string>(greylist.Values); ConcurrentDictionary<string, string> concurrentDictionary = new ConcurrentDictionary<string, string>(); foreach (KeyValuePair<string, string> Hash in Hashes) { if (!hashSet.Contains(Hash.Value)) { concurrentDictionary.TryAdd(Hash.Key, Hash.Value); } } return concurrentDictionary; } internal static bool DliSvNbcp(string value, ConcurrentDictionary<string, string> greylist) { HashSet<string> hashSet = new HashSet<string>(greylist.Values); return hashSet.Contains(value); } } [BepInPlugin("HsgtLgt.Rippleheart", "Rippleheart", "0.1.4")] public class Rippleheart : BaseUnityPlugin { internal readonly Harmony XtAKEuNuw = new Harmony(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x6449AB ^ 0x644A6F)); internal static readonly RippleheartLogger VGVRlWvKG = RippleheartLogger.POt8EnQvfp(); public void Awake() { zvDMX7LmQumenl0slt.dUbIVU96t(); ((BaseUnityPlugin)this).Logger.LogInfo((object)zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x13C317FC ^ 0x13C314AC)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x31EF5040 ^ 0x31EF5070), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x35CF61A0 ^ 0x35CF62CC)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x29BD899C ^ 0x29BD88DC), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1247458479 ^ -1247459113))); VGVRlWvKG.LogInfo(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x23B8B636 ^ 0x23B8B5A2)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x13B31B70 ^ 0x13B31B40), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x40F6822C ^ 0x40F68140))); XtAKEuNuw.PatchAll(); } public void Update() { try { UpdateTimer(); } catch (Exception ex) { VGVRlWvKG.LogError(ex.Message); RippleheartCore.Client.Vwu8M5I3EN(); } } public void UpdateTimer() { if (!Modinfo.w5RNlrr5d() || ZNet.instance.IsServer() || ZNet.instance.IsDedicated() || ZRoutedRpc.instance == null || ZNet.instance.GetServerPeer() == null) { return; } if (Game.instance.IsShuttingDown()) { Modinfo.eIl9gNZnH(value: false); return; } Modinfo.zosCEWjUM(Modinfo.KBeb6GAtR() + Time.deltaTime); if (Modinfo.KBeb6GAtR() >= (float)ConfigKeys.L4rjaHrWSS()) { RippleheartCore.Client.iiq8F2YRC1(); Modinfo.zosCEWjUM(0f); Modinfo.eIl9gNZnH(value: false); } if (Modinfo.w5RNlrr5d() && Input.GetKeyDown((KeyCode)287) && !ZNet.instance.IsServer() && ZRoutedRpc.instance != null) { RippleheartCore.Client.iiq8F2YRC1(); } } } public class Modinfo { internal static List<ZRpc> KR8x1PPGG = new List<ZRpc>(); [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] private static float gW41X6UP3 = 0f; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] private static bool NxTUhro2N = false; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] private static int a5kfxqWO0 = 1; internal static int a { [CompilerGenerated] get { return a5kfxqWO0; } [CompilerGenerated] set { a5kfxqWO0 = value; } } [SpecialName] [CompilerGenerated] internal static float KBeb6GAtR() { return gW41X6UP3; } [SpecialName] [CompilerGenerated] internal static void zosCEWjUM(float value) { gW41X6UP3 = value; } [SpecialName] [CompilerGenerated] internal static bool w5RNlrr5d() { return NxTUhro2N; } [SpecialName] [CompilerGenerated] internal static void eIl9gNZnH(bool value) { NxTUhro2N = value; } } } namespace g6tKo4OeWfYvu5l5bx { internal class zvDMX7LmQumenl0slt { internal static Dictionary<string, string> fR8jeuBuXL = new Dictionary<string, string>(); internal static Dictionary<string, object> e1jjJj5mgP = new Dictionary<string, object>(); [SpecialName] internal static string gj3j8qOb7O() { return Path.Combine(Paths.ConfigPath, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-5581979 ^ -5582709) + eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0xDBC0790 ^ 0xDBC038A)) + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x50DB58AB ^ 0x50DB5C81)); } [SpecialName] internal static string byIjM3VU7J() { return vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x48C90B08 ^ 0x48C908CC) + eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-927698122 ^ -927697138)); } [SpecialName] internal static string EvtjiqojOc() { return Path.Combine(Paths.ConfigPath, byIjM3VU7J()); } [SpecialName] internal static string i3OjGB9sun() { return vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x617915F2 ^ 0x617911A8); } internal static T notY6gdh0<T>(string key) { if (e1jjJj5mgP.TryGetValue(key, out object value)) { if (value is T result) { return result; } try { if (typeof(T) == typeof(bool) && value is string text) { if (bool.TryParse(text, out var result2)) { return (T)(object)result2; } throw new FormatException(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1783300021 ^ -1783298851) + text + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x3DEE06BC ^ 0x3DEE020C) + key + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x131F4D4F ^ 0x131F499D)); } return (T)Convert.ChangeType(value, typeof(T)); } catch (InvalidCastException) { throw new InvalidCastException(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x5A21B26E ^ 0x5A21B77A) + key + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-967973687 ^ -967974483) + typeof(T).Name + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1062172002 ^ -1062170654)); } catch (FormatException ex2) { throw new FormatException(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x28A96030 ^ 0x28A965B2) + key + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x1DA21CD9 ^ 0x1DA21923) + ex2.Message); } } throw new KeyNotFoundException(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0xC59AF04 ^ 0xC59A900) + key + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x676D2F45 ^ 0x676D295F)); } internal static void TCXyOS1il() { if (!File.Exists(gj3j8qOb7O())) { iaQrtr6RI(gj3j8qOb7O()); e1jjJj5mgP.Clear(); } vxQnRE0tb(gj3j8qOb7O()); Directory.CreateDirectory(EvtjiqojOc()); } internal static void VL16sK0bf() { DpTjj2RsLg(); global::Rippleheart.Rippleheart.VGVRlWvKG.LogDebug(eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1624317728 ^ -1624316286), ConfigKeysEnum.ServerValidation)) + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x6050B640 ^ 0x6050B036) + ConfigKeys.eLqj7vQ90l()); global::Rippleheart.Rippleheart.VGVRlWvKG.LogDebug(eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x1DA21CD9 ^ 0x1DA21ABB), ConfigKeysEnum.ClientValidation)) + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x48C90B08 ^ 0x48C90D7E) + ConfigKeys.QtYjdEHQMu()); global::Rippleheart.Rippleheart.VGVRlWvKG.LogDebug(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x4948D6E8 ^ 0x4948D096), eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x4948D6E8 ^ 0x4948D08A), ConfigKeysEnum.PeriodicCheck)), ConfigKeys.L4rjaHrWSS())); global::Rippleheart.Rippleheart.VGVRlWvKG.LogDebug(eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x7388AABE ^ 0x7388ACDC), ConfigKeysEnum.CustomRelativePoint)) + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(--1545155712 ^ 0x5C1932F6) + ConfigKeys.cAUjAYx0W7()); global::Rippleheart.Rippleheart.VGVRlWvKG.LogDebug(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x6050B640 ^ 0x6050B03E), eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x56757B86 ^ 0x56757DE4), ConfigKeysEnum.LogSwitch)), ConfigKeys.rXajskL3iw())); global::Rippleheart.Rippleheart.VGVRlWvKG.LogDebug(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(--1228969872 ^ 0x494091EE), eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x6D0D07F8 ^ 0x6D0D019A), ConfigKeysEnum.DebugSwitch)), ConfigKeys.f5kjocgsNL())); global::Rippleheart.Rippleheart.VGVRlWvKG.LogDebug(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x72015CC8 ^ 0x72015AB6), eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1172631997 ^ -1172633567), ConfigKeysEnum.ResetLogSwitch)), ConfigKeys.LdGjZktdmp())); global::Rippleheart.Rippleheart.VGVRlWvKG.LogDebug(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1395870666 ^ -1395871160), eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x5B89C4A6 ^ 0x5B89C2C4), ConfigKeysEnum.ResetLogTime)), ConfigKeys.cdYj4rqtO5())); } internal static void vxQnRE0tb(string configPath) { try { string input = File.ReadAllText(configPath); WMV46dpC21ryWqYUB32 wMV46dpC21ryWqYUB = new W36xOFMY6gmsSw0RwnM().UT12P4lq2h(); e1jjJj5mgP = wMV46dpC21ryWqYUB.gh0ihpWhUy3<Dictionary<string, object>>(input) ?? new Dictionary<string, object>(); ZLog.Log((object)string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1624317728 ^ -1624316302), e1jjJj5mgP.Count)); } catch (Exception ex) { ZLog.LogError((object)(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0xEB79778 ^ 0xEB791A6) + ex.Message)); } } internal static void iaQrtr6RI(string configPath) { string value = Path.Combine(Paths.PluginPath, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x22C7AF3A ^ 0x22C7AE70)); string value2 = vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-522430133 ^ -522428847); using StreamWriter streamWriter = File.CreateText(configPath); streamWriter.WriteLine(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-32524488 ^ -32526214) + eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-773114212 ^ -773115416))); streamWriter.WriteLine(); Dictionary<ConfigKeysEnum, string> dictionary = new Dictionary<ConfigKeysEnum, string> { { ConfigKeysEnum.ServerValidation, value }, { ConfigKeysEnum.ClientValidation, value2 }, { ConfigKeysEnum.PeriodicCheck, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x40558DA6 ^ 0x40558A3E) }, { ConfigKeysEnum.CustomRelativePoint, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1533293849 ^ -1533293641) }, { ConfigKeysEnum.LogSwitch, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x35CF61A0 ^ 0x35CF6604) }, { ConfigKeysEnum.DebugSwitch, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x72BF636B ^ 0x72BF64CF) }, { ConfigKeysEnum.ResetLogSwitch, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1783300021 ^ -1783298065) }, { ConfigKeysEnum.ResetLogTime, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x50DB58AB ^ 0x50DB5F1B) } }; foreach (KeyValuePair<ConfigKeysEnum, string> item in dictionary) { streamWriter.WriteLine(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1573519064 ^ -1573517680) + eAk0mC6O1(item.Key.ToString())); streamWriter.WriteLine(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0xBD77B97 ^ 0xBD77C55) + eAk0mC6O1(item.Key.ToString() + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x35263198 ^ 0x35263652))); if (eAk0mC6O1(item.Key.ToString() + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1749150600 ^ -1749150820)) != item.Key.ToString() + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1297663721 ^ -1297662221)) { streamWriter.WriteLine(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x131F4D4F ^ 0x131F4A8D) + eAk0mC6O1(item.Key.ToString() + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1120038486 ^ -1120037298))); } streamWriter.WriteLine(eAk0mC6O1(item.Key.ToString() + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-522430133 ^ -522428739)) + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x40558DA6 ^ 0x40558BD0) + item.Value); streamWriter.WriteLine(); } } internal static string eAk0mC6O1(string key) { string value; return fR8jeuBuXL.TryGetValue(key, out value) ? value : key; } internal static void dUbIVU96t() { string selectedLanguage = Localization.instance.GetSelectedLanguage(); string text = Path.Combine(Paths.PluginPath, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1395870666 ^ -1395868622), i3OjGB9sun()); try { if (File.Exists(text) && selectedLanguage != vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x31D4BCE ^ 0x31D43EE)) { RKKzRRAxA(text); return; } aov5OM1nl(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x265F44E0 ^ 0x265F4CD2)); Debug.Log((object)eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x759DC857 ^ 0x759DC0F9)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x676D2F45 ^ 0x676D2F75), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x23541B87 ^ 0x235418EB)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x676D2F45 ^ 0x676D2E05), selectedLanguage)); tZNmTlRV4(selectedLanguage, text); } catch (Exception ex) { Debug.LogError((object)(ex.Message ?? "")); Debug.Log((object)eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-491850913 ^ -491848771))); tZNmTlRV4(selectedLanguage); } } internal static void tZNmTlRV4(string language, string languageFilePath = "") { if (language == vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x4D3FAAA6 ^ 0x4D3FA286)) { JE2jqYSX2M(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-212927946 ^ -212929762)); } else { JE2jqYSX2M(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x5B89C4A6 ^ 0x5B89CC94)); } } internal static void aov5OM1nl(string resourceName) { try { Assembly executingAssembly = Assembly.GetExecutingAssembly(); using Stream stream = executingAssembly.GetManifestResourceStream(resourceName); if (stream == null) { throw new FileNotFoundException(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1233423129 ^ -1233420929) + resourceName + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x54B071 ^ 0x54B9C1)); } using StreamReader streamReader = new StreamReader(stream); string input = streamReader.ReadToEnd(); WMV46dpC21ryWqYUB32 wMV46dpC21ryWqYUB = new W36xOFMY6gmsSw0RwnM().UT12P4lq2h(); Dictionary<string, string> graph = wMV46dpC21ryWqYUB.gh0ihpWhUy3<Dictionary<string, string>>(input) ?? new Dictionary<string, string>(); string path = Path.Combine(Paths.PluginPath, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x38E1388 ^ 0x38E1B8C), i3OjGB9sun()); string directoryName = Path.GetDirectoryName(path); if (!string.IsNullOrEmpty(directoryName) && !Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } using StreamWriter writer = new StreamWriter(path); TAo4o9Gc1mCtwNx0Px8 tAo4o9Gc1mCtwNx0Px = new M43S9Rch3loupwoQiNc().jp6el8vBDA(); tAo4o9Gc1mCtwNx0Px.snoihO4J9oi(writer, graph); } catch (Exception ex) { ZLog.LogError((object)(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-212927946 ^ -212929542) + ex.Message)); ZLog.LogError((object)(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-177006131 ^ -177007657) + ex.StackTrace)); } } internal static void RKKzRRAxA(string languageFilePath) { try { using StreamReader streamReader = new StreamReader(languageFilePath); string input = streamReader.ReadToEnd(); WMV46dpC21ryWqYUB32 wMV46dpC21ryWqYUB = new W36xOFMY6gmsSw0RwnM().UT12P4lq2h(); fR8jeuBuXL = wMV46dpC21ryWqYUB.gh0ihpWhUy3<Dictionary<string, string>>(input) ?? new Dictionary<string, string>(); } catch (Exception ex) { ZLog.LogError((object)(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-858716293 ^ -858714817) + ex.Message)); ZLog.LogError((object)(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x674B8EC1 ^ 0x674B84DB) + ex.StackTrace)); } } internal static void JE2jqYSX2M(string resourceName) { try { Assembly executingAssembly = Assembly.GetExecutingAssembly(); using Stream stream = executingAssembly.GetManifestResourceStream(resourceName); if (stream == null) { throw new FileNotFoundException(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0xBD77B97 ^ 0xBD7720F) + resourceName + vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x12447BD4 ^ 0x12447264)); } using StreamReader streamReader = new StreamReader(stream); string input = streamReader.ReadToEnd(); WMV46dpC21ryWqYUB32 wMV46dpC21ryWqYUB = new W36xOFMY6gmsSw0RwnM().UT12P4lq2h(); fR8jeuBuXL = wMV46dpC21ryWqYUB.gh0ihpWhUy3<Dictionary<string, string>>(input) ?? new Dictionary<string, string>(); } catch (Exception ex) { ZLog.LogError((object)(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x40558DA6 ^ 0x40558724) + ex.Message)); ZLog.LogError((object)(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x58DF2A61 ^ 0x58DF207B) + ex.StackTrace)); } } internal static void DpTjj2RsLg() { ConfigKeys.Bu3j35AdIZ(notY6gdh0<string>(eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-343094924 ^ -343093482), ConfigKeysEnum.ServerValidation)))); ConfigKeys.QSpjwch8vu(notY6gdh0<string>(eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-773114212 ^ -773115650), ConfigKeysEnum.ClientValidation)))); ConfigKeys.RoIjvFLhGX(notY6gdh0<int>(eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x2C986D1 ^ 0x2C980B3), ConfigKeysEnum.PeriodicCheck)))); ConfigKeys.TL1jX6GcWU(notY6gdh0<string>(eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1528009292 ^ -1528009770), ConfigKeysEnum.CustomRelativePoint)))); ConfigKeys.BE7jTCuZvu(notY6gdh0<bool>(eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x58DF2A61 ^ 0x58DF2C03), ConfigKeysEnum.LogSwitch)))); ConfigKeys.bMgjQiZRBC(notY6gdh0<bool>(eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-2061140430 ^ -2061141936), ConfigKeysEnum.DebugSwitch)))); ConfigKeys.W5njEh91Ub(notY6gdh0<bool>(eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1817480036 ^ -1817480450), ConfigKeysEnum.ResetLogSwitch)))); ConfigKeys.EBnjBeOSc8(notY6gdh0<float>(eAk0mC6O1(string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x72BF636B ^ 0x72BF6509), ConfigKeysEnum.ResetLogTime)))); } } } namespace Rippleheart { [Serializable] public class ConfigKeys { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] private static string vy3jKw0Y9C; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static string J4kjRxAhcp; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static int dPCjbKYtp8; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static string Io5jC7CqKA; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static bool m2NjWutMRE; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static bool GyCjNC1bZw; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static bool F11j9X7AkS; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static float V8sjVOkPnG; [SpecialName] [CompilerGenerated] internal static string eLqj7vQ90l() { return vy3jKw0Y9C; } [SpecialName] [CompilerGenerated] internal static void Bu3j35AdIZ(string value) { vy3jKw0Y9C = value; } [SpecialName] [CompilerGenerated] internal static string QtYjdEHQMu() { return J4kjRxAhcp; } [SpecialName] [CompilerGenerated] internal static void QSpjwch8vu(string value) { J4kjRxAhcp = value; } [SpecialName] [CompilerGenerated] internal static int L4rjaHrWSS() { return dPCjbKYtp8; } [SpecialName] [CompilerGenerated] internal static void RoIjvFLhGX(int value) { dPCjbKYtp8 = value; } [SpecialName] [CompilerGenerated] internal static string cAUjAYx0W7() { return Io5jC7CqKA; } [SpecialName] [CompilerGenerated] internal static void TL1jX6GcWU(string value) { Io5jC7CqKA = value; } [SpecialName] [CompilerGenerated] internal static bool rXajskL3iw() { return m2NjWutMRE; } [SpecialName] [CompilerGenerated] internal static void BE7jTCuZvu(bool value) { m2NjWutMRE = value; } [SpecialName] [CompilerGenerated] internal static bool f5kjocgsNL() { return GyCjNC1bZw; } [SpecialName] [CompilerGenerated] internal static void bMgjQiZRBC(bool value) { GyCjNC1bZw = value; } [SpecialName] [CompilerGenerated] internal static bool LdGjZktdmp() { return F11j9X7AkS; } [SpecialName] [CompilerGenerated] internal static void W5njEh91Ub(bool value) { F11j9X7AkS = value; } [SpecialName] [CompilerGenerated] internal static float cdYj4rqtO5() { return V8sjVOkPnG; } [SpecialName] [CompilerGenerated] internal static void EBnjBeOSc8(float value) { V8sjVOkPnG = value; } } public enum ConfigKeysEnum { ServerValidation, ClientValidation, PeriodicCheck, CustomRelativePoint, LogSwitch, DebugSwitch, ResetLogSwitch, ResetLogTime } public class RippleheartCore { public class RpcMessageHandler { internal static async void sCPjUwQ2Gv(ZRpc rpc, ZPackage package) { if (ZNet.instance.IsServer() || ZNet.instance.IsDedicated()) { await SyCjfCotr0(rpc, package); } else { await r5DjLF4YRt(rpc, package); } } internal static async Task SyCjfCotr0(ZRpc rpc, ZPackage pkg) { int flag = pkg.ReadInt(); switch (flag) { case 0: { string version = pkg.ReadString(); if (c5ujhLwUbS(rpc, version)) { ZLog.Log((object)zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-671560037 ^ -671563083)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x31EF5040 ^ 0x31EF5070), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-522430133 ^ -522429913))); Server.t4JjOMwK01(rpc, 1); } break; } case 1: { if (!pkg.ReadBool()) { ZLog.LogWarning((object)zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-896128074 ^ -896129046)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1573519064 ^ -1573519080), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x35CF61A0 ^ 0x35CF62CC))); rpc.GetSocket().Dispose(); break; } ZNetPeer peer = Tools.fT98704P3V(rpc); if (!ZNet.instance.IsAdmin(peer.m_socket.GetHostName())) { Tools.Sg08cMuPUf(rpc, 2, isCritical: true); } else { ZLog.Log((object)zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x4E685CE8 ^ 0x4E685070)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x126727B8 ^ 0x12672788), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1233423129 ^ -1233422453)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1373249349 ^ -1373249029), peer.m_socket.GetHostName())); } break; } case 2: { StringBuilder logBuilder = new StringBuilder(); logBuilder.AppendLine(""); logBuilder.AppendLine(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x567A1955 ^ 0x567A19C1)); if (Modinfo.a == 1) { logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-573479684 ^ -573478860)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x67065854 ^ 0x67065864), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x4DE3A3E ^ 0x4DE3952)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x66CD65D2 ^ 0x66CD6492), Tools.fT98704P3V(rpc).m_socket.GetHostName()) .Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-797989608 ^ -797987114), Modinfo.a++.ToString())); } else { logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x7CDEE713 ^ 0x7CDEEBE7)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x45759294 ^ 0x457592A4), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x4D8A9892 ^ 0x4D8A9BFE)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-967973687 ^ -967973495), Tools.fT98704P3V(rpc).m_playerName) .Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-220351450 ^ -220348440), Modinfo.a++.ToString())); } Task<bool> task = Server.bFFjyiEly8(pkg, logBuilder); if (await task) { Tools.Sg08cMuPUf(rpc, 2, isCritical: true); } else { rpc.GetSocket().Dispose(); Modinfo.a = 1; logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0xEB79778 ^ 0xEB79A56))); } logBuilder.AppendLine(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x6F17A26D ^ 0x6F17A2F9)); Rippleheart.VGVRlWvKG.LogInfo(logBuilder.ToString()); break; } case 3: if (!pkg.ReadBool()) { rpc.GetSocket().Dispose(); Rippleheart.VGVRlWvKG.LogError(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(--1545155712 ^ 0x5C1939E2))); } break; default: throw new NotImplementedException(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1314171080 ^ -1314170202)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x5A21B26E ^ 0x5A21B25E), flag.ToString())); } } internal static async Task r5DjLF4YRt(ZRpc rpc, ZPackage pkg) { switch (pkg.ReadInt()) { case 0: { string version = pkg.ReadString(); c5ujhLwUbS(rpc, version); break; } case 1: { if (!Client.jmp88qBrni(pkg)) { Tools.Sg08cMuPUf(rpc, 1, isCritical: false); break; } StringBuilder logBuilder = new StringBuilder(); await Client.Ls182WH9YK(rpc, 2, new StringBuilder()); Rippleheart.VGVRlWvKG.LogInfo(logBuilder.ToString()); break; } case 2: Modinfo.eIl9gNZnH(pkg.ReadBool()); break; default: throw new NotImplementedException(); } } } public static class Server { internal static void t4JjOMwK01(ZRpc rpc, int messageTag) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown ZPackage val = new ZPackage(); val.Write(messageTag); byte[] array; using (MemoryStream memoryStream = new MemoryStream()) { BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(memoryStream, zvDMX7LmQumenl0slt.e1jjJj5mgP); array = memoryStream.ToArray(); } val.Write(array); rpc.Invoke(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-2044712085 ^ -2044714973), new object[1] { val }); } internal static void I84jYJNqHG(string server, StringBuilder logBuilder) { string Qmf8q1g7P8 = server; StringBuilder DSt8jJaghx = logBuilder; Task.Run(delegate { joMjxNPvj2 = MTHC.rgJ3fWOxI(Qmf8q1g7P8, DSt8jJaghx); }); Task.Run(delegate { sCpj1ggOUx = MTHC.SMcPLmtXD(); }); } internal static Task<bool> bFFjyiEly8(ZPackage pkg, StringBuilder logBuilder) { byte[] serializedData = pkg.ReadByteArray(); ConcurrentDictionary<string, string> clientHashes = Tools.Ex38etqqFu<ConcurrentDictionary<string, string>>(serializedData); if (joMjxNPvj2 != null && sCpj1ggOUx != null) { string[] value = (from p in Path.GetFileName(ConfigKeys.QtYjdEHQMu()).Split(new char[1] { ',' }) where p.Length > 2 select p.Substring(2)).ToArray(); logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-773114212 ^ -773113014)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x45759294 ^ 0x457592A4), string.Join(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1120038486 ^ -1120038618), value))); bool result = DB.SYD4uLsV5(clientHashes, joMjxNPvj2, sCpj1ggOUx, logBuilder); return Task.FromResult(result); } logBuilder.AppendLine(zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x2C986D1 ^ 0x2C988DF))); return Task.FromResult(result: false); } } public static class Client { internal static bool jmp88qBrni(ZPackage zpackage) { byte[] buffer = zpackage.ReadByteArray(); try { using MemoryStream serializationStream = new MemoryStream(buffer); BinaryFormatter binaryFormatter = new BinaryFormatter(); if (binaryFormatter.Deserialize(serializationStream) is Dictionary<string, object> e1jjJj5mgP) { zvDMX7LmQumenl0slt.e1jjJj5mgP = e1jjJj5mgP; ZLog.Log((object)zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x5B89C4A6 ^ 0x5B89CA92))); foreach (KeyValuePair<string, object> item in zvDMX7LmQumenl0slt.e1jjJj5mgP) { ZLog.Log((object)string.Format(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-73906972 ^ -73905526), item.Key, item.Value)); } zvDMX7LmQumenl0slt.VL16sK0bf(); RippleheartLogger.LL88dg54lq(Path.Combine(Paths.ConfigPath, vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x617915F2 ^ 0x61791B76)), a: false); return true; } ZLog.LogWarning((object)zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-2061140430 ^ -2061143932))); return false; } catch (Exception ex) { ZLog.LogError((object)zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x4D8A9892 ^ 0x4D8A9662)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x35CF61A0 ^ 0x35CF6190), ex.Message)); return false; } } internal static async void iiq8F2YRC1() { StringBuilder logBuilder = new StringBuilder(); ZNetPeer peer = Tools.TWx83sfVBU(ZNet.instance.GetServerPeer().m_uid, a: false); if (peer != null) { await Ls182WH9YK(peer, 2, logBuilder); } else { ZLog.LogWarning((object)zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x617915F2 ^ 0x61791ADC))); } Rippleheart.VGVRlWvKG.LogInfo(logBuilder.ToString()); } internal static void Vwu8M5I3EN() { StringBuilder stringBuilder = new StringBuilder(); ZNetPeer val = Tools.TWx83sfVBU(ZNet.instance.GetServerPeer().m_uid, a: false); if (val != null) { Tools.Sg08cMuPUf(val, 3, isCritical: false); } else { ZLog.LogWarning((object)zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-866810000 ^ -866809762))); } Rippleheart.VGVRlWvKG.LogInfo(stringBuilder.ToString()); } internal static async Task Ls182WH9YK(object peerOrRpc, int logo, StringBuilder logBuilder) { byte[] bytes = await E998iOPw80(logBuilder); ZPackage package = new ZPackage(); package.Write(logo); package.Write(bytes); ZNetPeer peer = (ZNetPeer)((peerOrRpc is ZNetPeer) ? peerOrRpc : null); if (peer != null) { peer.m_rpc.Invoke(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x28A96030 ^ 0x28A96B78), new object[1] { package }); return; } ZRpc rpc = (ZRpc)((peerOrRpc is ZRpc) ? peerOrRpc : null); if (rpc != null) { rpc.Invoke(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x5A21B26E ^ 0x5A21B926), new object[1] { package }); return; } throw new ArgumentException(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1297663721 ^ -1297664387)); } internal static async Task<byte[]> E998iOPw80(StringBuilder logBuilder) { StringBuilder M728G76UD7 = logBuilder; return await Task.Run(() => Tools.zxJ8JxSM5h(MTHC.rgJ3fWOxI(Path.Combine(Paths.GameRootPath) + ConfigKeys.QtYjdEHQMu(), M728G76UD7, isServer: false))); } } public static class Tools { internal static void Sg08cMuPUf(object peerOrRpc, int messageTag, bool isCritical) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown ZPackage val = new ZPackage(); val.Write(messageTag); val.Write(isCritical); ZNetPeer val2 = (ZNetPeer)((peerOrRpc is ZNetPeer) ? peerOrRpc : null); if (val2 != null) { val2.m_rpc.Invoke(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x48C90B08 ^ 0x48C90040), new object[1] { val }); return; } ZRpc val3 = (ZRpc)((peerOrRpc is ZRpc) ? peerOrRpc : null); if (val3 != null) { val3.Invoke(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-671560037 ^ -671562285), new object[1] { val }); return; } throw new ArgumentException(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1120038486 ^ -1120035136)); } internal static T Ex38etqqFu<T>(byte[] serializedData) { using MemoryStream serializationStream = new MemoryStream(serializedData); BinaryFormatter binaryFormatter = new BinaryFormatter(); return (T)binaryFormatter.Deserialize(serializationStream); } internal static byte[] zxJ8JxSM5h<T>(T objectToSerialize) { using MemoryStream memoryStream = new MemoryStream(); BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(memoryStream, objectToSerialize); return memoryStream.ToArray(); } internal static ZNetPeer fT98704P3V(ZRpc rpc) { foreach (ZNetPeer connectedPeer in ZNet.instance.GetConnectedPeers()) { if (connectedPeer.m_rpc == rpc) { return connectedPeer; } } return null; } internal static ZNetPeer TWx83sfVBU(long uid, bool a) { List<ZNetPeer> list = new List<ZNetPeer>(); list = (List<ZNetPeer>)(a ? ((IList)swY8PJGVa7()) : ((IList)ZNet.instance.GetConnectedPeers())); foreach (ZNetPeer item in list) { if (item.m_uid == uid) { return item; } } return null; } internal static List<ZNetPeer> swY8PJGVa7() { FieldInfo fieldInfo = AccessTools.Field(typeof(ZRoutedRpc), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1573519064 ^ -1573515598)); return (List<ZNetPeer>)fieldInfo.GetValue(ZRoutedRpc.instance); } } internal static ConcurrentDictionary<string, string>? joMjxNPvj2; internal static ConcurrentDictionary<string, string>? sCpj1ggOUx; internal static void adgjDFm0wN(ZNetPeer peer) { //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Expected O, but got Unknown if (ZNet.instance.IsServer() || ZNet.instance.IsDedicated()) { ZLog.Log((object)zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1983369307 ^ -1983371913)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1783300021 ^ -1783299973), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x72BF636B ^ 0x72BF6007)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1120038486 ^ -1120038678), peer.m_socket.GetHostName())); } else { ZLog.Log((object)zvDMX7LmQumenl0slt.eAk0mC6O1(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-967973687 ^ -967970875)).Replace(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x4D8A9892 ^ 0x4D8A98A2), vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1247458479 ^ -1247459267))); } ZPackage val = new ZPackage(); val.Write(0); val.Write(MTHC.GetCurrentAssemblyHash()); peer.m_rpc.Invoke(vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-754245056 ^ -754243320), new object[1] { val }); } internal static bool c5ujhLwUbS(ZRpc rpc, string version) { if (version != MTHC.GetCurrentAssemblyHash()) { string newValue = vgylUai99P4JJEHo3lAx.A46iV8ZejLa(0x15A37FBE ^ 0x15A374C4) + version; string newValue2 = vgylUai99P4JJEHo3lAx.A46iV8ZejLa(-1901140752 ^ -1901138038) + MTHC.GetCurrentAssemblyHash(); s