Decompiled source of Rippleheart v0.1.3
Rippleheart.dll
Decompiled 2 weeks 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.Collections.Specialized; 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 A1U6JIRBM4LYHT8q7pV; using A32jrb5S2CDqaauw05tS; using A3OqyFrj9VJbSyss1oWS; using A3ojxHvGOCMR9GcBCBbT; using A4VH6ovPpDqeBlHCaDjk; using A7BFpnjNutIA1SlW28Hs; using A7J6cZjbQbeia9nRWvXL; using A8CR2Ajv9NKQ2T5ERkOj; using A8ykFYjSHNaAeDpeFs32; using A9PPEG5gdemFQs4t6KxA; using AAqtQx03O0ksEjeI8fr; using AAwpf8rYxDt2NnxrgJqZ; using ACuPeTj4aEHQp2TphHbr; using AFBoI8ujXhlsmOWNkGA; using AFgMQar8jkFuYJ56Cg8D; using AH1cBKF1GMAco5B43If; using AIIwlsv2qHMxpON9I0hE; using AJx5i9jSRYvZJ4U9Ne1N; using ALsieRXZVEb45EIycgch; using ASL65bMP3yMHrin2pZXP; using ASMlIIrhWt0Bo6Ti7qji; using ATCuQMMGEkVhepONB3cG; using ATU3J2v7cWVnV8bC3eQX; using ATqbFMMJgC0rdCKebBQl; using AU9ngajJ9oBWegursLAT; using AUNWaOrwXFis0EtaeOWr; using AVZagvjSI3w2L87OgTwe; using AXVH1o5rJ80ltacocSY3; using AXkUOEvP1eIOpbJxKCTe; using AY6Jk7MvcQyR6w1QdasC; using AZPI3srSErcogN3soOMx; using AcnLYLrMoaxvHsyaBTbL; using AeCPKrj9PX1iSBvcr3xP; using AfcwGIrFCJXtBHMcP5Nr; using Amjw6gvK0FAL9sRS2K4K; using AnOStCvh4184INjNx6ts; using AoU7fRjA3GRlhZNdOJmh; using Ap5wbrPz08SaKslQTBc; using ApG8nKSgHQyQW8f5rZH; using ApHB7FMTJt5daAKUukld; using ApZbcmXOwa8RVYnN7C2P; using AqitawvXP26HjDTHx1FL; using AqqovIMr4ddKX6DBRVkP; using ArPftX5hbISsbWYt6CIP; using ArSVSvrsAi3DhSn91MuZ; using AtM3yTXrUZ5FFUmAe7V7; using AuN6rojEgig1ms2I6Whl; using AvAWh0jw70HoKeewdC4u; using Ax0fhyrJ2fgbbWEKGE2N; using AxToRKjqNfdIsdLoXZKl; using AxsDu3v8N1CDr59FY06E; using Ay6CsfrKeH7TR4w01IGh; using B1BynpXZEDNAnglBefj3; using B1sSmCvdE03FVhDE4PRR; using B2sCpqv5LwJktVngYFpW; using B38ytvXFBjxXUOOSHWOF; using B4YiuNrLZPfunP9h9S9Z; using B702tE5fwJDpHp2C80uc; using B7cyR9jSVxHhM07Ei67m; using B9KfAHr1E6sqPc5PGODB; using BBYGQZXkmpLlsdR6WHqj; using BCCX2xMFfqQY0Vj0NMea; using BCWYRkjOyMEuEi3HR4HY; using BDCSqAXbutPNcynbEfH4; using BEL4Gmv5WGbxPKZV9kYp; using BEU5iSjx4a8sK7srMjDe; using BEcdEZjH57qZoxU0UKIc; using BFJJdv5oH9ilXm4J18RH; using BFQLpVjLyZbaj808kZVt; using BHsoUvXhLPMW72BBMFUJ; using BLsHWX5ZZFtnKdr4tr9I; using BMpWNfjBpWp9TVrgedR1; using BORQW9uOl8W4Rf0Lcse; using BPIlkarht0CclkJ9PetC; using BPgk9yMWWfSTXU1KERTG; using BQPFV4MBK3uWSUI10r7B; using BRuBVPYM4V53GlYDFVU; using BUSIZUrA1sdLN3co1mQ0; using BV5uJl5DoiyKHa1pTKrE; using BVPDvCr6zs8w5ldK4bvJ; using BXrjd45uoGDI0UD6ZhF9; using BZTiJuws8tuVsNJd8Ag; using BbjuGi5anWij33P8CXFT; using Bc2vDLrXg3wZo8dvSxZY; using Bd6BSLrzFpeBHy8x8i99; using BdMtNxj4I9XMMEVLb9si; using BeC3p4paOvDasPRL6R7; using BepInEx; using BeqoQhjI6NZiAaiyQy8B; using BexJIi5A3B7mB61tWhFo; using Bjr7lyjWxeKWe1eEWr9e; using BmatbIvFA6AZIU4FvE3V; using BneABCjMtJ0TE2QHqaJ; using BrY80uj9mbSmN0LAf5N8; using BsrYcyMfADME5OgiJ7Tm; using BtPFKy53JDwGHAeuFkvn; using BvhcjxXBNVBKxbS1GDED; using BwZKAejvwlmcNdBsKxB8; using Bx5vL5j0c00avZJp2bMP; using C0cVwGMO5MsunCCRFaF7; using C2Z4ZPXP8geEyeyoUpsr; using C3snVkv3PHFpSUA6gtEf; using C4wW1hXNqfp8qyb7Hnbh; using CA6UKbjxtnyeVGEXQC4W; using CAj17g0boHP0KZIqNP4; using CAlMaTXg4GaXNorLxc9v; using CAxO48jb2byVnBC5qH5x; using CBjSqlRe4FAt8HqJaeI; using CD8d9Tr1vOIedNqYv23h; using CIahcxjSB8IeTAIx4USN; using CL2iXVvcK6xODCydS59k; using CLh2SYvuw68KkVr7qCBS; using CMunP3rDUbCg0xQ3VAry; using CQgtOB5ERPd1m4qQyXCX; using CSKBltjcRQai2RxUSUSx; using CSnWpaXihpehLV9xQM0x; using CSvZfBjZVxEwrndA8YTk; using CU0YOun6giPK7o4ZlYl; using CVxULGXed0sPb4rvbtlu; using CZRMnpvdwgkAnM9JTxL9; using CZUu4Vrc4rMAwgANnft0; using CaVCxFfC9U9KrAUenuY; using CbjYgwjOhMRUbqxo2GQp; using CdFt0BjPM2MRAUsh914i; using Ci1wGZ598ZSKbikJunUB; using Cj6gc0vPvnHoIo81foM6; using ClxrFi5DBykwpy7iC91e; using Cmmu0s5HiWgSX19bngmr; using CqOjEDvA2kNJYTDbS7Ao; using CquNIe5XZuHUThWoQTdG; using CrDKatV2H6rl1u0AoVI; using CrkhpvXwqWDpvtFdAWb4; using CtgncpXd0vaZRRgV1ffK; using D0ExcjXOA8TW9BdJTDGg; using D1iAZAXXhZj3tN8utiU3; using D3d5kwrhEkOtUwd3ZtEx; using D3sfV45BCIAqcksNW84b; using D4S477jZGrRD5bevAPQX; using D4kt1IXd1nZXTnKgpSSE; using D6a02arH8pW5OKINN3hc; using D83FVNjSNYHuHX8MNJhe; using D9If6hX1cyPslEAgnSrV; using DCX03UVyp3fUhdCNDKe; using DDeBVNW0NJ9HYrxdOyI; using DE4HQBiFqQApMLLcc9n; using DF3GHsXhbiIBH5HkPHYu; using DInFhorhSfdtDKHVUy9j; using DKcM2oP8DSYPfn9r4FD; using DKgS8VjdIsgCoeolfMmi; using DKh9q8MKr4ZCiEM49auY; using DMjDaWjzeWcvWEMl4u1c; using DOXtQhK87xf64aqp4dD; using DVlXWoA271lua1O6X8t; using DZGx4yj4cc6A6yvBx2A9; using DaDnK9jywYLAZsgnXhXK; using DbjmTUMsVrr0fNCQ68ju; using DcrTfdwTJOxpu6q6yPs; using De4kbv5CnRfcD0sOjHkn; using DePMt5q2mTw55a52kLp; using DiS50MXTQX7HJeRiIxlR; using DjBMUWMQZpgn89PMVrxV; using DlKFsLj6tLeUsA3I0xD5; using DlkiUTjSeY4eCHSl25dO; using DsYbs8rrGfg8fhQN1hvf; using DvB4r4vQExJJxHRq5gf; using DvGK6o5LMXDTBjwMDIRb; using DxVQDPrtFSlsGpdAkLCQ; using E07JJZXhaX408pkGDu8e; using E2M6SLXGdX2s410EjQXH; using E2jiLQvou51ZFBCVCjt2; using E6IdNvVMXPqMt6JG6I0; using E7x0YP5zkIm4euMnZtiQ; using E8j6yTjpeoAE3X3oZ9Ic; using EALin5rc69AM7Xg7GpZK; using EAtj23rJbUyk7MKMeuhY; using EBHLH4IOyqvo1AnQPpb; using EBeb3ejJ39o52IQ7ji0s; using ECpppJjHpaE2Cs03ZJHS; using EEbOFQ81sgfkwvCNB2W; using EFUSgcjvm5EWccOVZVaZ; using EFtTmNcUcBfUwAfrbF6; using EHTTV7rxf1uMxaZ6BHJ6; using EMVcTwXxc9NyV4cRb1S7; using EMZEEVy4gyWtAwTffvN; using EOR1UjXjtZao4JwVKO1g; using EQ3rnFXDbCFcGVkIldGH; using EQFdYYXkzFgaj9r87PYV; using ERyjJ8jz1RXfhuask2sl; using ESbGgBXIT1ONVeSHf8AL; using EVWvrurRlpKUkZmpbfnb; using EXsJVhXZDPYck8KC0jtt; using Eates8jbWAtS8ehj9dDW; using EdeMhY5HyqDlGauFeduG; using Ee07wJ62TVex5GjIaYe; using EiWtyLXtubipltwH2HU3; using EkqNclMEjhSplvCVj5H6; using ElIWs0jtY0wE1lMAWWAq; using Enkk2TjLU80chHmeHJNr; using EsAesLXZ5eaj17tGDPYR; using EsOHiojK71sxppyNRglS; using Et24LFZKYJC8vnvfHHm; using EveXF5XkHutNn9Raeimr; using ExnSJ5ngOyC6IgD29Oq; using F038wxvhR7jvQYmnHf2D; using F0vux5rGgc88fZCAFf4P; using F5wttjrPzXII7vKdiZQw; using F8DNWZkZPRWxjC6Uu9n; using FEf8XDwMUEltuvsDJpF; using FH8tOHrStCfJBT2PqNhB; using FJRhL4p6GcC4r06b2Rp; using FJZ9LVkiQYQav9SbyRx; using FJZlXyXTcYWeZZUmC7gL; using FKWum1X4kNqg7xDlZvUN; using FLfyIvXZpjSsVgw7UeOP; using FNdHNKMIi6HtlZnm0Ht1; using FOGIlOMyRt13w0awICsS; using FP4eoaMs4BrghxNRbahN; using FRAuPhjuUTFf5SXjPGZk; using FRdetgcevsLdyZ7CKtp; using FScRJcMsQ2MaUDBHRKC2; using FSfXeXi4RcsclJ3rcT6; using FVXHVsvM9mKruU5i2Yl4; using FVftNXj5skmXyea6tAD0; using FbrYjcXduJydsQDFUjVe; using Fc3RVwrPDcIORQKEJJbR; using FfQ2HYXXQQLwrseXhig2; using FfuU9HjIEl4b1Z223V9T; using Fg8QayjmDcXvG4mh0uTq; using FgPLZJ5GLKQmrfDWW3GU; using Fgc5Uov5MKHDby9K6pgn; using FjvUfQXGYdrZV2dHvmuF; using FkZiU35VfGEXR430mwR8; using FlRECRjHzK4I0nk1D4Hv; using FphuqP5HNKJsUn2AQ1gf; using Fqr2RivoS0MPAW6PySgN; using Frdcct5oVEDhFInvehUk; using FrguDmXDo77YQbp6sTTN; using Fur2ma5z8esxSy21d613; using Fur6bejc3Pbpvwu2VWL4; using Fx5xcVvSoM6LsyEIcBZA; using FxvdYh5Qrso2lxjjkN3h; using FyXNu1jEAfaLgXQCtQVi; using G5yKi65XIU5SmaW9o6h0; using G9pOSAMxETshRXvrq8jV; using GA4QPM5CxZiUZci9sXoN; using GKQ1u6v35hdKsZfUixVD; using GM5nLor4pwXRFpZAmOux; using GM9aU4vhbNWCQOBufN71; using GMBJaBvKxhNbTXGo6lV7; using GQ2QX7WUxIbEKX3OYWW; using GQDk8Z9ePyNDxlESm9s; using GS5lcew4tv5ky4GWV14; using GUYv5iMcIipER0qo4Dug; using GUvah2r0MAVjboViW21L; using GXFbpiMrRUJ8JRM9D6hY; using GYmUFo5sDkyN4MZ7uePa; using GZeUmZRJhb6uRU3jggY; using GaBYPjjK65cKT01VfRqF; using GaHlprMBt7PlALsoxtvr; using GbfybuML1f2vIZmGFavv; using GdSZ4JX7ob4S225V85TS; using GhFjkXjTTC4x4h6Fmt01; using GjcHRKXjuHQwvPogs6fw; using GjdnyYGfPYL8QW6Nqtv; using Gjmj5ajHORaAMRr0bhyA; using GjxqdC57ida2ho2hF39i; using Gk21yOjnDK0E8jamySVn; using GkO9AH2vv53vpMxnQRy; using GmEY4wjn8fSb0ykL5WGQ; using Go4ivT5uvyAuO7iuvy8G; using GsGMkFSW3qjarZYivlV; using Gu1LNTj4QSZohQ3nVYW8; using GutGwHjweoPFMY71XiFD; using Gwj3f6jY7kfLYFBYLWUp; using GxaT6j5naKwYPQgxPvFw; using GxmWiSXZ4wul8FFboYaY; using Gxu1j8XOxWmYgGpoqliX; using Gydbl1MwboRAPfkfB4oM; using H33yrbrXVdD2TdruQHhk; using H4jwZmMWceSIewNSbo3a; using H8Jgixr7zsnkB5v4g3De; using H8i2K9jnjw5R6JONWxLO; using HB1T9nXSUBNNhRmEYchf; using HBHmAlMiTtaaTNtGoEjP; using HBaFZAvkqNl63EZOgJCS; using HEZW905WG2N3RWO0OYF8; using HFA44qjBAupkHTo5rsX9; using HFpD16XIoWLfi2vHs4CL; using HGq9ycXNnmc9WFmsQ2aa; using HGqSXxjpxAyuGw1vCLoR; using HHLteUMBOVBtgZRmdLsq; using HKIlXerJgqDgU1uSSaFV; using HLIKUOrfCQBEj3iIqZFl; using HMUQY3qxqm0cEiQnSMr; using HMhFnqIEA1OPLumsPGc; using HO2h9bwqH9u7b4ECb3L; using HOMsmAv2PkiqSH8YL9U7; using HPDIo5j3fGO0xafvDG0q; using HPNboKzqPYkyx0Cam30; using HPmITsXEzpGE4BNQ5MLw; using HQLxdrjwdERlHi1TSuno; using HSb2EUvjID0kcDNdT7Xg; using HT3kccj0BrKWfh9lk5k6; using HVpyQaGAiQ2RgrrPXNB; using HW3XnF5XPyhbQ9UaTqyJ; using HXPLTcOhDRsqQvYe6lr; using HXZWcXCo7EfCgQVZSf4; using HXdctAMHMJbR6A22bPV3; using HarmonyLib; using Hc32VOXoXxTMkdLFHL8r; using HcItCDjqd6VlPHgpPlC0; using HdaSUw4gS6VHiGc8wvV; using HhelrN5tpVqxsIUtic9F; using HivtDojWIkSVo7CApWRH; using Hj1VPdGPo2a9yj2IdXe; using HlV9g4jDK3FCtHIkxaC0; using HonGDQvqwDAxAaesTpJx; using HpHJY9Mr7XZDVR322bZX; using HpV1lorYGN9TlAp7mDOC; using HsAfuhv7eyrCGTqRDin; using HsMJwUjS8mfB1u19GQBZ; using HtjIbcjiKRuMym4wh0H9; using Hvolcm7UyRtag3aIxZN; using Hw5EiUMRxPHC53f8R2VX; using HxPCPH5DXL6utjFjeLLH; using HxjBJMv7QQp53FKbnwXa; using HxqXqgviohQwB1BJbVGh; using I2DtEoXDOdSOlvkqv66q; using I7sP865vqZZqbIirNVQZ; using I91YSlcDTmNJmp9yPCC; using IDOASQwSIgeGwitH5BZ; using IDgpFFjO4jbWvmEccaJh; using IEmWRZXteWjjDql29iHw; using IFRPIPjWJFisJcpwoDnv; using IIP2PI5eInwWsv3Val1U; using IKqMyaj9EEqa32N8v6ws; using IL9Z5P5ocnoFfh72Mfh1; using IPLbvCjAJ6wsPtxPnyFn; using IPf8NM5T4NJjdLDQ4Nhr; using IPpB54j4yJTktuNGw4rI; using IUVR6VM5GvG1L944h8qA; using IVG4xJMbNmvv03wJYqVb; using IWHKH0QbA32X1llnvqU; using Ia1trErMjvEni3unibMH; using IaNYlkXDjbSSDetPHy31; using Iaand2MkqGM3F0dw1PJR; using Ian71UjY5Wm9QpU4k6we; using IcJeyQrJUWc06GetZBJV; using IddqbHMNcwaABjd1ifDX; using Ig6iXajSfjD3QOmmkrcR; using IhnZ0P50k9D2Pf94px1Y; using Int2pcMaTZl6nwsUoI0t; using IoROX6XpNbfxsY50848h; using IqajK2X6cgBUgbhSoYqd; using Ir1vv4juBFiW4P3KIqGd; using IsTFiTM18nkl7EHInP3Q; using ItUShdv8IT1yVD1CsC0i; using ItZxqXvwRntwUN7bSCgX; using Iu7n90MtYiZfQHRgf9Cw; using IwQ8NVQuXT3EeMnqaGV; using Iwg22Rvm3E3spacJWgV; using Iyo3LCXCfpGeN4Jg8dTc; using J06NThr8AI55DBGsKysR; using J13yvXrrarKyLgfKurcC; using J1I944jD37R9DdPxoBJc; using J35JXtjnAmMD34XB8b24; using J3hmWHrSwKxYJlYMqQNR; using J3tx1V5s2Ucx0wJnQMiq; using J77rmiXzQOWO8jphgHMM; using J7Mvl3rp4CYWPlNtkyhX; using J8XHEjj40EBbPNKMxlcd; using J8jr2pXceoMNOkRAMTPG; using JAvIJpMQHCEpWOAPNkcl; using JCqh2d5CacxPQB56Bmh4; using JDPvugrAw5rYlShfJASO; using JGSV5prG3CMLEfPE13Fs; using JJBY1p53nQowRben8vN5; using JLB927jtosvCEtq5PrDE; using JLq2VnMDHYkZgwkECBkm; using JMII1pXZnGSLi5MtVDPW; using JNZPMLFG6dcIdYIOEQJ; using JPi4q0XR01nkTipuhlT8; using JS54faPHWEd47B8ykVV; using JX0qku5w8fJLBhIqsrC0; using JXVGVWXsGlB8qZYPCZ4L; using JYpqddjJRT28ATy0nnaA; using JZQiGrMknGevMeUAfsXb; using Ja7aWMrk2NRU1VYpoXCl; using JcYg4J53HbUJVKtskhq2; using JdVN2Arh23wFE36O5XUY; using JeXNpnYF9i6qIk0Kyy3; using Jfi4IrXzu970E9ccOFiq; using Jgiyjp2KN60w9BAS4n4; using JhZhlILwwQf9DUaACFa; using JiQyOKvjc5EULfODusSt; using JkGNd4XbLyufcV9JDdr5; using Jlof9IrcVNZFBL6ug05n; using JnD4YX43sPs8SXKZceq; using JnQKxnvaQg2qERjFJgXQ; using JnrUdoSJb2Xpf1XSRRE; using JoOm2eMU253arP5RZCHO; using Jpk7eKj9pxRrBpofrZGd; using Jq5B6VrdpgCPU45P8otF; using Js6YSSvSiRyPDATjnb9G; using JwII2CMtiaap6Ci2uXSr; using JywekE5jWgebS8QGjEDA; using K3I4Wp98bJw9qjdI7iN; using K4bORTrR9KOy3yxxIfPf; using K51076MQIXCSneXVWmHP; using K52vuEMIk4iLH1Zd0AMA; using K7uWRkvttaHm05jlhMfb; using K8xjKVYheMR6NVbNxFp; using KArEm3rXnhNNh4QoSEeu; using KE4vCqr6HjXGIGMPg5sr; using KE7JeKrX4KmucfSoAfyx; using KFMqfKckaaP3Kbpsnmn; using KIXshgvejJQXStfZZqPh; using KJBBSR5xFJTZ151bGnfO; using KL2wemRyKI89IGxIbAf; using KMvkQ55qpg9kOZ07aPOC; using KNfy07jSn2UM2SQFyxsY; using KPJsUqj0nlmcdb0gjrSO; using KQ4AP2jEfbwungGxrtaf; using KRctmFv5gkok3ay7DCuh; using KTmIEtrkjvd6TyLDIIN7; using KV8TiG5v6dVaycTqv442; using KVGmNCX9qFsZIZSQHKDt; using KVvix7vopZcgcQeUaqqZ; using KVyKoejNhZcnbYpSORiG; using KW5K9FMkfdyyCU7u7N8A; using KWsAE7jvFs4pYeFbPC8Q; using KZyDbRdxAbETxbQ6RC7; using Kayf9qrixrw7kQ2qidGF; using Kb2TR4vIesT7C73odRql; using Kb3HYBMJsZNcctlHpOgi; using KeTjVRUBnwN6BokteYW; using Kf5CJartI5bmFCEPqO1M; using Ki9U3prVUYpuXZQoosTR; using KrJUU4rApF0rKe0ghOi7; using KriyNAMbBFHVH52D55DG; using Ksja6eXvQIdoH4qsQfJQ; using KwjqdloOE547FvXwj8d; using KxVLQsjNqqPOW0xHUagU; using KyLZssrTRPwLYAXbcSPI; using L20xoHXFZQOlcMCLWVjv; using L59KndjmMNEm7X2Wy1xv; using L7TUXnjb72hbZEhrKCrr; using L80x9yjMh23sRVjoUNkV; using L9g5MojFxeZPpkJRPSUJ; using LACiPx0PIYfsmJ5mF18; using LBTrg9rYEZBuiKysMxX0; using LBp2NNju2dNiwB67c4Mm; using LDncUZjYmgrpc5fjRlHC; using LGFG54wVMSuPHxkOvIG; using LHWxt1rE9QRmdxZaFWiZ; using LHbpNB5to06kkcBBOH1f; using LHceb2MMRMHAuKOA5y3D; using LIKIARrY7iCvkKMRfyxZ; using LKcTZm67qdZInuaQVT4; using LNALpIraICraQVYMByDM; using LRdAp3jwJCosKwAYp3OK; using LTClhuMvSF91sg5v4QRs; using LV2qG9Xpr7HYIGtRGvHl; using LXtJSRjVpdumL4BJqOi6; using LYshEX501Kbo1bjCaTkD; using Ld97mcwGPVX8EnRrs6p; using LeCVcDnHmTaRCQMAJJL; using Lfl3fpXM8cu4f1sRlH0o; using LhoYQZj9Cr7sxn2N8hUT; using LmePDDFXVMmawhyHkGj; using Lpg6rFrHQYkUuCfuyRpW; using LtgNa5XKWcGvVlpKLRZQ; using LttF4cJlRrJ4NeN4Xby; using LuFHTKjgCl9wZYee3s0d; using LuP92S5MYRFaVmwknDI9; using LvRVmKrdb3ahlxKj2dgF; using LwraSiqYndc3SjPe1ry; using Lxrbhdj1Z0bI09d1iAN7; using Lyj0grvoKXo2YwRPKjvc; using M0EBCErJFirJ1IrdeE46; using M22QhSvedCAVJAAwGilk; using M6Sa6ArXiuaCOBr2qG0Q; using M7hrnN53x8iqaWaHiEuo; using M9R970rMw30G15nxIgY4; using M9gB02vV2j3our23yLQM; using MLVLeMvMtb7o99Mbj52a; using MLuGFjMkK1n6dJRLPTYf; using MM0bmtXDcQv0Ye1kfn5P; using MM2BN6PWRLlVJFAs17A; using MMPTPej7cQwacrABhV8x; using MNxQnNMizHrttlIK5bcQ; using MOYcJpj4fFJNBFJAwD7V; using MR4IvvowtQgZS3pLKBU; using MRSAb5u89VYBMDESGYy; using MSHhVEX9LP3JlfYUJZWO; using MSvoqxMxxybDJBPwpnPh; using MTopY85zqIhddvpYCgWm; using MToyTO51Rhfhjnb0ohKB; using MVjAIp5vTqZH3RDOAFbF; using MWHju9XBfUasIAFaeEwr; using MaeqNHXNVHJnefyLSe5M; using MbL6SQwcwH5F9AlT1AC; using MbjGWFrcHt28cx0Gkfkt; using MeQADwvw3bLWXwCvVD72; using Microsoft.CodeAnalysis; using Mjtvf0jlzt6KPkf7tjsb; using MlL0a1HFuWWefNQDBmv; using MmptqnPZd8OgVEKAUiI; using MnD87jgiZps7a5jbO1K; using Mnvfk45P20k2d7Ei1tf0; using MnyGG8rIiUhaLdEE1mG5; using MprHFXM8hQSGF3mux7my; using Mt4ChUXbQW707Venq76f; using MuA0gfsFLxuknVrKO5N; using MuOCUfrOPhi1LMD9KE4O; using N1Gsf9MxIHG5ZfeSxRFM; using N5AkBd53QXRVJheP2Xr2; using N5QA6xMZdHW8JBvIcTUW; using N7MeNbrGiifMSYwy0UvA; using N7stUjPmq6bsW8ERNhC; using N9u4K5X5AJ29uSYcb4cF; using NAJFbDvFpYiQ0u42mGnb; using NBmF7JvWhYnPYM232Rcn; using NCOe45Xk66AUwPpEDDVV; using ND6uKNrMhFRXKFN4240U; using NDPvg6jJg3P9GmnMesTu; using NDXQ8mXBBlbq4BdhMix6; using NE0ZhsXpGELU9POQTrpQ; using NE3VqkMi0iKu4Su63qm7; using NERudHXXeHgk2mWW0To; using NEpv565SG20DxyE7vbim; using NFZp7HvSN4EN76gUXPaA; using NGU17Yr6AMFL7eA8QoJg; using NI2jp3QQ76rx5nf2FwM; using NI61FZMcQwNQpkl8IJ6A; using NIypM95BqxuJ241o851v; using NMWWVIXeFW2aJhxLqkte; using NMvM5oXPUr4UH4QAxD3k; using NSIMForWOesMjwqo1rem; using NTV7LJj4C7ydmtxlJbXw; using NWa6fPjL6xj6QE8gJBZq; using NYScFnvSXZBt01HKNEr4; using NZhqMArLUwqIUxdCN2Q; using NZyPKhjtvctdTYZed2KE; using NaJMk2MuYSw32cvDF5qE; using NcLe2krf7LMWBZdyIMyy; using NdAV9KjlIZaUAlZkEKlF; using NebuH65B8AnBXRmcuLsR; using NexJnPMWGPrDcPAEs7Tw; using Nf4CtV59Rl7PO62wRp9V; using NhGrsR2awpef2ae6Hu8; using NiZsRHrAeoa1DiLJZFIK; using NksbsaraNypvudabO6om; using NlIo6tXiP0lUAorPoKJC; using NmFnGlMfo3oDVDVlT6RA; using Nmv4dCMSWD8RWUCJweWN; using Nn6VNRjwFmU8jwI7JFCG; using NqSRKdjtykE9DCY0DT70; using Nqs1PJ256DJ3h05e8NU; using NscpU0XP62xnIQBEPOfG; using Nt4LbovXUIepQVc9Zb9J; using NuxoTtvdnJAXv8imXn5; using NwC8RAvMEcHnZIXDAPyN; using NyPtEH5L1xAP8pGi6Lcu; using O3wmNaHUlvhkTXjgsFG; using O45hf0rXUDrxbuo3v2O3; using O5Mv3N57qadxSWnxUZsO; using O7R5ZGXFHVomfw2Vqbgx; using O7VMMW5qNV8xb9GnQR3k; using O7mP0yrup3D2j2QFDglW; using OB3OLLXZHX1HJpCkYQrg; using OBWRWP55soaV3K6KTa3B; using ODBXSxjnqdrPMjpyrFcy; using OE2nZsMKCYQWh6uHSmpU; using OGFrTmMxJKgMZlCvBuE0; using OGvYmm5vQTpCU3ft4m8Y; using OJ9QD3XDahqIksYkPy0D; using OJnkQ5QAP6iqcXFVp0m; using OPEoAErJ4Gqngqe3LyiI; using OPHUmq58SgK85fquuYiS; using OPbqXWXZJ6NbhPaBa2Cq; using OPg3S5r9yD6mE4rUSCBA; using OQ8GjvjCJpTMe3p0OUvk; using OQwHq8MNf6Dw1g0GLU2R; using OTKfhi0yFU1U7boPZ94; using OUCNAH5X69MFy2QlNRqf; using OV023RrJVSl3A6lPCOwB; using OYTY1BrJnJw0fCiHjyO9; using Ob3BP5MOTUEfx5d98Uwb; using OcXXuknMPug4cmkaZZX; using OdtDJNjS0TPTD3UknqAG; using Oj4DyDrOIB5baiwGa5KU; using OjNFafraakNJM68wrVCf; using Ol3AuEjQDPx0XOZBelyd; using OlRMA2v10JTwv8faRkaY; using OlrIbBXNwgCwKJc7hKIa; using OmA0T3MkiYSe777UMALO; using OmspJRjJfN4HTwtKtQM5; using OqR6oH50nXRSQNVi4wVn; using OvYxYuXZyTte3iQMBPPi; using OvlpRuX2QsnEDmf864iP; using Ow2115XV5eAql1RtrxFx; using OwhiS1CTqZQCQIcSX04; using Ox0b7iMNF84H9TQkVorX; using P14dtDMj0QBsPtt56okt; using PANVl7vyxNefgQ0S6qBf; using PAhW0vFBCj2B2B6ljZF; using PAq9sUX6Mo542uRMkax6; using PCEdXArfATOVD7mI43r4; using PCQIjm5FcMlmwHUGcgof; using PG3IxMvLcYWwM6Vn4nD; using PJIULiC5rO6ikvbb3KK; using PJaWpjJGUmPTmYPO28q; using PKbTFCrjD5SZ1LsnpGbo; using PN8qOC5x55rCIyqEWpmZ; using PNgRWgr5dpmlD7PmVVBh; using PRZF6nrybGWOrkRAMmiK; using PSCn3fjRJ8EUl4XefMFh; using PTbb5cM5RBJAnp9m6uc0; using PTeMcr5rLTr0gFXqFTUp; using PV891djB3ycE8MV1bpi1; using PVS2injNk4pTxM97OL6A; using PYs3YkrW2Fk4CNZnhhHa; using PZdr9iMMzQi8w3oEpQsX; using Pap9t6jS2VcIi53jeSMU; using Pcr38Ajy7eSfk6J3i1l5; using PdWm0h5x8sb90tFvRYs2; using PfOaZuv9MiSceplDtgP; using PhFijwjBlReyg1Cd98H8; using Pjl4oaMm70YW9cvkWKcq; using PjuxssX4yejFXt7forx; using PsHRSNX2LpIJ2RtnCDlv; using PsXRMZrcIhYI7oVsnPyt; using PtpX89jZhPH0Uoiijl9l; using PuPjxsvlbqs0YgQqsqS; using PvW2qcrTCEeKlyDyWqFj; using Pwx3rdjD6fbW3D7I7ERQ; using Q0Ky8uri7LR6L9UOkR63; using Q0vHd4rGwUl3YAqFXvrE; using Q2QMNnrpBukN1OA9aYdF; using Q2k3yQjDjHHiTq60ZF77; using Q2tQEsM6GBTPpA7meiVU; using Q3Ww8aXpbIUj17JHbS1Q; using Q5SxqlrZ4q45Q9VB1T9e; using Q5rnZhjHbpGEUFL5EmQd; using Q5v3lOjtQT3LWbBanWKl; using Q73X8T1oWNmHTRHSPGW; using Q8481FMkM8aJCFdQ0pDE; using Q8npKk2WuhRnibHc8qY; using QA8RgGrnA6DtwMgMowUF; using QBGNQvjm0KHx2L5vGH6Z; using QCKpkyH2AqTxq8ShYha; using QCtvPR59x2rh4vRxLDKg; using QKgIpgj5zkCU7ccZtnI6; using QLLbGRjYPGZGwfAixUt; using QLZ0rgITI3n3tbChaLN; using QLc4CkXhIi2mVRBwYcea; using QQVOIBM5MOZocknmtgNR; using QSyNO7MrujeJptm8ppXR; using QT7kjFrjA7TXik1QYGch; using QTCfOOjSX0kmboUx3tgy; using QTQZVZXmnbH6TZLxkLyN; using QWn3JBM70dpN5Vb71HP8; using QXawmG5AzD4RPah1xV0I; using QY4WXhMAeYpZXMJsr2sA; using QYHvNLXtULgsgQEbYxe9; using QZL0ybMUR12YEIueUkt7; using Qc681nXhNYLRbtqFCtZK; using QcQIIerXwwOBDquZgLGO; using QdgtIkXTo8MNyeUUXSxe; using Qe65oi5oavQwCbhuL9Te; using Qf1WY6zbm8Aw2UKZMGJ; using Qgb7Rrn48LMSQJ6sujT; using QkK4KUXrSi9oiMKuR0u2; using Qkgpeqjd9PwZ7oZhLNHr; using QsgBRKX5j46ANdddxxtJ; using Qtb9ik5ZF5NJCP8ZFDIQ; using Qven2xvSBDk5R2Y8aS4J; using Qx2ogdwk8cRRuxhLHsd; using R1uDFYjdF96UFCPXx8nT; using R9ixI6XVhaESAZu8hB4s; using RBAZLrvbGclh9Oye96iB; using RBe3dRM52rPphIdnflWk; using RBnUAZrdnKVuKRajkwCM; using RCv4y8XiV1IDV6hakdpj; using RDUTYQMXY7eH22V6YbWv; using RE8sGgvtuPkI91ocaet5; using REL7i0XuYH2e8yYA6Hdl; using RExlL6HLiO6N4j51IS5; using RF3xQrXb4pBmtnKMoS1B; using RFo16BrwkHFgbtmKekNJ; using RGOGEZjWrTdFYGFGs9JQ; using RHSvyGjw1Rjyl9kQyVDQ; using RJmwXyAgTSp2Yda6s7C; using RJnLsKj8lHqoQGdc3qBD; using RMCUQ6jc1JU08AY8roNh; using ROi8UjXD1Y257A3dpRRJ; using ROqDDv47HdRZb85JVpx; using RPh5LAXNlkRBSryVLGnR; using RRQ47HjwrcVnWVxW64Aq; using RSkCH15maFUgSZAhyLlf; using RSnJQF5huj24bxKqActh; using RTnWwRMGqqmbHFDDPscG; using RWSr2hvjx8Qg0jr5id69; using RXYSy3jR9o3mNhDumOP7; using RZ72btyUgyPc2cIon5C; using Ra772SnhJxXHmi3EU9y; using Ra97DB5q0eDYuppopmTB; using RbDLS7js3V4HLdbnIx86; using Rd2JhDXfojI3lG3n0gaI; using Re9LdgvwYiYCfdk5X4mO; using RhIP1q2d4fGfhpqLBTF; using RhrbfpjmYrwvQOTYGW7w; using RinlNUtgN4EPEfVQAjM; using Rippleheart; using RjLwRrj2ygR95offNW9F; using RpUXjTXCp9cht2BweUtc; using Rqyntej9v6AGQOugakwm; using RwIt0ZjuLlMBRQMY9Mhb; using RwUGPYvKolawPPQLxvNo; using RyOYPcrhTILEDf9723Ok; using S1IWQDj5jbR7K8q7UVvf; using S1oPl6iJH3qsFDlbpYK; using S6bmBUvbRO9SkTTFC1iG; using S8AtsDXTNPQYLVyBnWtr; using S96qEIMOOqBxUN3sB1SQ; using S9v9o2REcT0TcV315n2; using SACw0EX3lsItRPkXgfme; using SEBaH4MGsIi8CA1emnUU; using SFJWs0MebH521L5OvsXj; using SFJbqNrjFr6NYowxn7WJ; using SGTjYlq39nuBRhEekqn; using SGTuMs0Ms7TIrQBsZqr; using SJ10gGXiIgKq6L6Qj3Fv; using SJkeFkvWBoTArX17IOde; using SOeLJpr5XWNYRhTboqUr; using SVvw0SMEC4i0cA5VLRNW; using SWVcEtXo7W73sg80vgtv; using Sau8Cev1iP8WxMpeP2Ko; using Se8NBvj7HVQcOwvT5HaU; using SfEByd5J4Y5i2kY6bUXW; using SgBmkcXC4rn3vBSMdvKg; using Sglbwc5guQbY0D8Msxwe; using SgoWJBrbCLsLxgj5yISA; using SktnX5rvzggeOsWn8swh; using SlyXe9jSpkpHBAXPAysq; using Sn4onq5VhI1bff9fewtp; using SoVBZH5DrUNPnbTlk0OC; using SqQ6Kk5dnPmBeMNRoRX8; using Ss71tYMvp9esvbZm5EMZ; using Sun1BKwL2PiRYu40CNy; using SvZDUqMcxZVFO2Ney2yg; using SxAOUu5hlDbpiXjoblI7; using T0Y25UrFlFv8dSJNFjNt; using T11hf9XPDIUHuNw1Am5b; using T1pim3XpOta2mn7KhLBD; using T2drNt54H1of2qkS89cf; using T5BaUSMmcKefG6Ve795B; using T7T8yyjWtv9tgIknecuN; using T8bFQlvt8ryxDRpVyiB; using TBvZV6MNRD3h7J2SwFgf; using TDtGJrrDtufHDH1Z6ugo; using TF4jTd5g9f2KURpjl70v; using THTJjoXvVRlokwElYkXh; using TIiELgXUUnOqICVLo0gy; using TM5uoGrIJxuh4f5Rnp6P; using TMbsXf5BRvkq07iB937B; using TPKt3b5uG4DlBk9I78tv; using TPqSH4rwiahvAjwZGbxs; using TQ1yCbayd9cQ4kunOba; using TQbO865gBLgw3xE2yCrt; using TQmTQD278rtC5UX4b56; using TViBTkvJK7mCbs9XaxpS; using TW5ivwXGKYTpUN4bH5DF; using TWcnG8MdYYWY5vO2ZIUg; using TZhK19ruQ4utpOndUG6U; using Tb1pFqj3hVmacEqxqM8u; using Tb3JFYjS1F7ZK8BGMhb6; using Td3gMGMnj2Zjh5FPBoWW; using TeINwajQFANIIijEyxZe; using TgceROXQicwkSE7XumHR; using TiQBT6rSO6XQJgWcTBa7; using Tj457U5BORCjwjndZyWD; using TmW9HvMPzKv7ODYiUZEh; using TqxE8qvJrESp5HgYGdk8; using TsnOpXXYuybeg6tAT94K; using TuXqEjv8MqZDKgAi0WJV; using Tvs4V5AY5d5DaLvl7P5; using TxPYstjHd5F5mh2AGVn; using U0Ybw3rjHZcXcCOJ51fX; using U6KEYfMrWGQKCOf8KgDj; using U77jCfjC2wErVci30kZy; using UAT3Gb5C5yF7y0XpFBbb; using UBPFCRjfGFH5IRKm2GlZ; using UDbBtM55mCIgh39BfEyQ; using UG22bDXtpxrXxfHWRWPv; using UJlGQRMXL7yW1CadwUfT; using UJy8QKr1gVenbBJ2ADdg; using ULRepZ5rBdZL3i9avZpV; using ULd9sSj7hfZSPXD7kPNP; using ULdWVUN301uP4AKJelS; using UM1gsL58sHX16PZGiFwt; using UNNfWB5ZwEnNiLOwWnqR; using UQVdmorzIHT7dgCfAfx6; using UR2aI6rXMpAnJPFlTiJs; using UTvSrkrulYQyYsYtshOm; using UVIB8FrMu8vEoQiWQSXb; using UVjQhP547mPfUuey7SaL; using UavILHPOoj0c1rR8ZYE; using UgfctyiqQx7VjKDXNrG; using Ugvcp8XYC61KSYakAdQC; using UmIHX5XRTk2AFegdgX6X; using UngVPr5LYHxF33BS9enA; using UnityEngine; using Uo01gKvS73YETS1OgdXs; using Uoh8Rej1HrJnoQTj36Z3; using UpauCXXjJotXxYRcdMwW; using UrdZ2KjIzd2tgN3S5InK; using Usqnf2577M5Vmh0wMkPf; using UuLbWbjceMHEgvTEC2I1; using UuOPOtrImvHg23fCqq5d; using UvGvGeM6zHPuQpiCW29J; using UvGwRTjjLhWFbQXn8Ubg; using UvNGsCMY6ajAiNgmhQ9u; using UvplScj0PsmF1DHyW6VV; using UxE9aCu3y9UOOJ06esh; using Uy3SDo2tJLD0mZ5j7GD; using Uy6LbG5kJ09WTPAYx9Mu; using V2bfj6jwjglpcgLiZYKB; using V8BuDTv6jKoyUoAWibm; using V8mgEljSAqLrDOVNjOED; using V94Mbi558DovyXiK4xk5; using V9WfpRvFe84SXvodUjtd; using VAHraBM04a6jff4fmmvp; using VCqZylXpll5HSMIJiFZU; using VFHtqvvPugUQKPDI3TTd; using VHN4aBXp7EuXlZTMBRgM; using VI4Vu2r47P8yiB2popmx; using VIx7ADXwnEOpA30MaAhu; using VLLg8mjig7462aEicQo6; using VMS2F6rXOVEImtBoQJFS; using VOOHTyjZeqHTDJupOeVI; using VQxRHBvqdlUh2Pv6OmTX; using VROLLQjU0Kosmw5JlpMQ; using VSO18qMn9Igc5AXU1CNV; using VScTSsrq2yhToBTyIEQZ; using VT80W2wvV1LMjMjCJOE; using VUNVjtWVRQeAEvD5yqu; using VUgKbAXi1qlortCV5kcK; using VUkStX6uTboFelXNTPK; using VXsCriX9DIvKAfUchvn1; using VekyoXK5ERkbyQQwTKS; using VfInDqrr41o0uhUZj822; using VfUCYZrX85PFhJi1TPl8; using VfuuyNr0udXQXqLYXuY2; using VlTIYBjYNoBsiOIAuTfr; using VohE0OjpP28gBRginiSq; using Vrexs9XGiF96YtXNOLw3; using VsSVVRrWlRLoIyp6mM3d; using VspJPT5g1pWxXf3YFm6a; using Vt45GR5OYgnkvfTbyMJY; using VtdHXXMMiI3AVIbcx038; using Vu6sZqMMaigOFPf0O7AT; using Vy0iy1vdokJxIddensX3; using W0PonyGpjgXQnGppdk7; using W2PwFYXzY9dt00J7li2o; using W5aKMqj5SKuiW7hEDfuk; using W6oyMurVWfCFtbPO1B2J; using W6xxSr780B55rRRHJAs; using W7u8ZhMr6F97nscNI43O; using W8bLNIvVu78EcOZXogUj; using WEJVCJXcW7o1lW9Ofxg0; using WJDfroXlkKV1cPUIJNPj; using WOljKnrQFnrLTBHJcTpm; using WRxT5CrPGKWtsi3v4Ny9; using WTNqJnvqOQltGUBQrlO9; using WUhOJC59P1cMVLevPjwf; using WWhoPXrozxduWul9ji8n; using WZ36XfMfHpP3hSSZ1XNF; using WaiAZFnDRRipvXOtNun; using WbY0sMvVjdKj5K8KwZPq; using Wd5qnj5X0q15s5VA1TBZ; using Wdvs9Sr9N5VaLChREdh8; using WeUnBTjf1mbrab56PLUw; using WflT6OjIvGvm7bW7iH4p; using WhvOVyjjTdXn6DqfXBkS; using Wjtp2YrFQooUfiGwdbpl; using WkexVVjRVq7WoRf0PF1; using WmB3bfGNrHEV822tP6q; using WpHbpojWSGGuLMQoyGQl; using WuaiDPj2YHasNWtQDrYH; using WvdY7XrWZUSGuIc2vlOh; using Wx6f1NXTDuGArjqDQ8G8; using X2IjJkrYALZ5o4eSORp5; using X3D4hRrAiJ5eSvxoTDI7; using X7hhp9XevLn91WgISuTL; using XCSE5Xr8hfGJlpV0ueD4; using XEAhcZrIfpSgioAkZ9FS; using XEhBQJXi3oxiuMam4fcb; using XH9vZLXVAsK53w5DSOPM; using XLrke8XZIU9ondYVO1jk; using XMs6NEvbdqurqRxLWLK7; using XMxQ2TMCP20uoe4lLWst; using XNqoPI5dgQgtPxtB1LrL; using XS9fPcjmRcYkAeBdncfI; using XSEFgRvGACkX6SPegYcl; using XUVrBn5EDWopkyLtKkXr; using XYGZ8YMtDpcquiV45aE4; using XYcwFm5RyqqJhTZkZjH9; using XYsfKU5QqC8CtJasrWXH; using XZYx4yXx7Xi5d7OAbMHr; using XZfRYXMpdul6kQ4u5gbh; using XbgBAQXM6M0RkslXi6j7; using XbjK6Ir7QmqMOEfKvAbf; using XdBLJv66U5u95URltqG; using Xdq3DAX2EiUvLoNDKBhX; using XfmcoOMSTjJpvWJLLntB; using XiS15cpMVRXW6QeQRmy; using Xj366k2FrRVEhm4Vg76; using Xn2Q3WjrHGF17vokI94d; using XnSL9r5vZid2wqy5FBoh; using Xog0IS4MYsbE96Zg0TY; using XspV4HjjzyGI1WTbkRMN; using XuAq5q5XE3b04ixA2KQb; using XuMURJjwXNO9xc33IXS0; using XvwyNQ5LggK8ESNEaSqX; using XwMIoZV1r7mUC1S7LxD; using Xwg9CCM1Y3hJKgExXrVX; using Y10w4JMeR7ElIj106pZI; using Y28MDKrlLAh4il8CwvBJ; using Y75q0SjRIhSEWDwaWmSf; using Y9QEyKrio7dPDQFWoouu; using Y9wa25MLjx10CsvDb31q; using YBZKocjmFP0l2wYkULf6; using YBZwc2jSkZLe1ZhSYNu6; using YCn8cUvKK9Hj8i2HASHc; using YDTNNvrKjXi95KHrXYpc; using YDs2iKr5HV1E4TlHrm95; using YDyAkjYUj724sj34meq; using YGCGE4rV73N2XeiU3egr; using YGnQKfMFFqbf1mfDwscr; using YJNCUlrK6BXXd9WF8JJj; using YLFZvv5pyFAVjVOMM5fp; using YLwR02v1fwIoDZIxFocR; using YMPV5XMH5lL7TknSm9TX; using YMRmj4olK9Zu6akxDwT; using YN9wwiX1aUq9a3ueoB92; using YOJL1J2eCZNSSH9i8gt; using YQvidbjLdP2BAUpSW2a9; using YS2BTqvVmPrhOMjLNVqv; using YSeYDHjjm4VoR0iZ9m5b; using YY5VhOXkFkPR6sVrIHEO; using YZN50PNUPtF7w6doh6Q; using YdDLDyM2CJcfL8sJQwi7; using YfXOEVXQ5PGY1bvc8eSs; using YgcZt8vy9BIL6UW0qA3g; using YhknUfrrxMiLTG3feadQ; using YhyZU6MLgMQO674X1ixm; using Yir3hWrVap2Vckg5tJW2; using YiwRHZM5aXVQScLUxbQ3; using YkN4lYrzrPlZWCGgnmfJ; using YllFWH5zo7RlvY7ypNIQ; using YmQ1Nl52ChD3Fodymh7t; using YnXKpFjpzIG3DZU4wr6v; using Yp187ZjC5MPEyZkm4ck2; using YpAdyRrYz2ttf1vUMeBx; using YrKng5jw4O0ddwSKG0YO; using YwVtkivGMAgMeL9p4DxS; using a1KYqAWDb6xhl2Ya8ZK; using a27Tt0jSj6tSuZaCuVdq; using a39trJjSCr0wTdij61On; using a3CXsJMIgwNsVEQbc2rt; using a3dPe17jtq4KQCt2M7E; using a3xS6c5JIPVNeMLWQ9Fm; using a46mktj9WF7h4Z2BKwJ6; using a4G21OjWN13EnKgBtrVD; using a5IvY5rhsT2LhlaLrcCg; using a5TqA0jSz3W8KfENqC3i; using a7dJcd8y1qGVCJF4OKe; using a7fZhHjRr5pHY5JAcvoj; using a8cVmVm9srv1om2ZhvQ; using a9GvKjrV39tGvmrA35sS; using aBXB1XJ7V7lwnEpeiAn; using aDISsbvd7YJf8qybVQcb; using aFBtMvX52GfyQcYLjkXP; using aJxtH35ruGp0XUfYwTZK; using aMeN5srVgZ9vw7piEtjt; using aNABeZrAb0bIJghvtlKZ; using aSVdM85DGLUT6wqHNwgX; using aSyy4GXoKkI1ei32y0X7; using aVktb1jSDuKs4XxiLAG2; using aW3YHRjU54S2sr9ogAxN; using aY78ulMiGo8JQWvgptdv; using aZNGwKrOrNfcRD1geeCq; using aZaH43rRtXEwm7hdfluM; using acZFkyNu5756urruXIN; using acr3hJXNAmqNnan8uHhm; using aiSd4ujrkuRSGoN3O6Ss; using akG1U8jG5jrsTKi88fyl; using aqgEC6VrpaQYa11AuWO; using arSfu3JHsb3h6YhfhN5; using auJSrqX5w9jmuVOqm7XR; using auQfLb5GgiBndcjWKGAm; using awQcul5IBphr6BtUL0dh; using ay8ZuIX05melDXPFe2Ra; using b67uXSr7lSWiQIF7y77a; using b8TpU9JVHsvxEwSmNuv; using b8cvP8MyNg3ZChuD8tMo; using b8tM6Mlk0gHSjG7HNOb; using b9lr5gvctoFUk9erJl8o; using bB5yAEjwu18FrmUJaeIJ; using bDPilGjazh7fJSR9FA74; using bG7VBu8w7EXKyjL8mWj; using bGtS95MVeBx3J2BfxeRt; using bI8K9fvu2noc6M6iJemw; using bIt9FkLYau3fwgI1Lqk; using bLZ8rWvANps6WuBMyZJ5; using bN3A5ljOITAtkBW6wFDe; using bNHXLEM3e8euwuQldBE; using bOerQFjAF84kUI0PGIR7; using bPk5sgjQQyvKFK2EAvqS; using bQfgfsrwhNqOfPknaUwj; using bQigQAMk59tWKTMRn1aE; using bRo17UrBuDgffnOGQtoD; using bSMmyxvarcxkygOG4h4A; using bW4cXdXNcHZVHtboDQ2x; using bXPDpUvI4VNZ7JuICBic; using bXxVpI5hSb9KHZMkhHrv; using bd3kSMjGdgT6aWIsN4Df; using beOHnC5pHDVKRogpEYPl; using bhOgxZMRDL5pRcpWVy2L; using bjIY5uvA8CRVLthilGpM; using blW3O0va8t0OUVYwIhGN; using bmHjck7CXWS8QkEZjxS; using bmVwsdrKpopTc4hgybRG; using bnP2xZvuC92eif05yQlA; using bqZr8u5y3d1YcyQePBsA; using btqHWqoFf6C13qDfSik; using bu5Eq6XDxC5Lub2MBBlH; using bvHTUcr5twI2x9ZSU7g6; using bw46VvNOrOq7t9aFkmM; using bwwKFa2TM8GE7ZQ1eGm; using bxf3OUr7va1myFwyXatM; using c0mSL9jyIDex4sV5smeJ; using c1WEQMrMvU3bMAmEYBQW; using c3IYdc0f1ZeC3Say8hZ; using c5PQHxPlZxaK87fIjdK; using c8LqJw5Uf05agLJkTm3H; using c8sklBvKJ7kehHqIPXeS; using cAajnMjcgVyA5yURh6Uh; using cBHjIU5Ai4kfvr4O9TeM; using cJcQlEjR4KU77GxYsTQp; using cK8uVv5usdeM3mMribjc; using cKqvM0Xinwix3FxyO4yP; using cLOt8Mr92vl8OMbEWYRB; using cLZ0kiM2sxoTxpTnhvYu; using cLbviGMky79ULeUARZ1E; using cM7kNJrVpXkagPV4pVWm; using cMIeCer4fyQkKr2lZ82k; using cMZtslrcPTj6l6awKn9B; using cNqaCXrc89GJJS55lCBa; using cOBXPLvnOO1Taa1S5sNC; using cOqS6x9UwBFOibSf8W3; using cPPqBaj0GVJhYxLSUiYE; using cPfafrjyeFWgvDKt2ATE; using cPuEbtjr0sN4KjBbvBia; using cS712tXZhpYAbdZW7mwO; using cVM4tQ5QjBTpQAIwOPEQ; using cWbyK8vKLMRKBdvTdil7; using cWxdr8Xd5CJyxG0A0waM; using cYvmnxrDqAu03iGTyo0; using ca1xKA5vjIY4JdTXp1ZH; using cdJweo5nbi2IBSn2567d; using ceMVEfXlopZEP3CTeT2Y; using cf0kdxoi4RwR5NMNxsb; using cg8eIlXzEQryu12utLW6; using cipW4djWVUijJ05ZoOnO; using cleMTTjZy2EmExDo2Ovy; using conblf05wPmBSDCC5j1; using cpxZxK5MybTZpYWGrRp0; using ctYgK5jv2EO5N8MbjwL1; using cv2pLBjP4FGCAVphRhfh; using cvDpMa5LDrxlMlCpIriE; using cvPOx6jPmpuDZv6wPkR3; using cx1bHg5cIHlwLJI1Rf2r; using d1hJMHvzVwDHSJ6IqA0; using d5fSMSjE7IF0sIHJexYR; using d6CDbx6NLMFkacqKsy8; using d7nnlLn7mujGOrrtxct; using dALIKLX2yFEHJ16GqJXw; using dANGkZr9lSYh3X9QloYM; using dAuNZGjHBKtCxtjQ4XCM; using dGM2Wljz2YJWCeR6IxFx; using dH0W7PMVuvlF5tiYsBIk; using dHFRM2rVcAtlarTleUjT; using dHLocI5E8YyqVEJEbPr0; using dI1SlvjVM5wtiiAqcKMe; using dI4mSQ5rR15pg7IfsXmv; using dIgT9S5dGm4AAxqtT6bm; using dJGIPp5UpspjoJSV10TM; using dOXoou5CCxm8OCxHXql3; using dQFQRkMb1IA495M5F4oA; using dRMMNHNqhirMph7nY9w; using dStTvo54cCPVPnsHwMIp; using dTJX1gMketvwDrr9RmoB; using dUjhFVr2wg5H4rI63B1W; using dV22b1XrAMcb3af4wpU0; using dWtKs45zTAWF5W3dPs2p; using dYO6KOMxY3tiOEhHWPdo; using dZZZe6XRnd8c7U4n0MlV; using dZcLyTMnIBPJ7X7XBvnG; using delV8lrAMqqD7CMReYe7; using dj8fQBoJgSXFrXgaMVD; using djFPZkrXbpgoOHYvDsUt; using dkZkoVr9ztYfaFP5O8gN; using dmyWnT50d3Z9bbFsbTp8; using dpPIF4rELbw9e7vO1IHZ; using dvHXVLMXDy0wdYGJrqn2; using dye1KjsqWkZ2UFs8JGR; using e4xlrijxaoWBEv6mMDql; using e6wkBwXIQuYvIrJT3pR3; using e7bF9tjLRaAA7joKR6WE; using eCIRyQXZ0hrjS5LSq7tY; using eCVUwtj5rXk4x05kGsOQ; using eCY3mNOQt3nYIYH68J7; using eDiURsXbESV8YlCcs5Ao; using eFbrvlXPgW3K3weUbeox; using eJGiSirZwaL0RBVdjfeD; using eMHjuBX2YLIxkDwiUUCX; using eMQMl4Xjih69eiak5iyl; using eNQuWqMOKVJ2aoAj9ZKk; using eOWwmn5kKlEJ225QqkKv; using ePtBUPXTwD4A5ih2MMU8; using eQhlpguQwEhLaIdnojS; using eTWRviXFbPakSLNu4Qnd; using eVJuDkrtgjj4MBUtF2t4; using eWyM40rpF8VfiYAmsOSI; using eXyPHBvWpIRR670FdPSd; using eYNlwYwUVZkRNg0BRqD; using eZcMsM6Qb33KKUl03gw; using eaEUZoM9YG3hX6hH3ab1; using eaIN4lXk39u2n7hGdmgs; using efENZg5ee8ohKhryswHj; using efHwLkjSYO7StXl1AU4T; using efMuWKvKjNxrgD0rY82O; using eh5uINjEwmJ7syD0J6Ks; using ejxRn0jyAmVcQV4fAvJO; using epTxwuroABB3mPVAk9Mu; using erklYvM6xwrtiFoHpEBu; using f06J7IOAVJrKn20Vsyd; using f0OeiX572byuaVbuPggs; using f1steL5Hb3PpLnrVnmiS; using f2Vu1P5gDwXRsT8WmfP0; using f3BxCDMK3MU0DXhsFAYR; using f3MmE8MRMbtdLwwAFBax; using f5qb1VAGGiVlgTJ9JFN; using fA8krAj7IM1ho4ovJSAA; using fAf9JUjSGvhP29VEsHub; using fBYcufXDSDvTfwYnaHIo; using fDDm07XhBnFqXShFLh6O; using fEtlXeM9nkc6GtqqMy8Q; using fGlqM65FMcF8GZ7TLQKX; using fIE3M6vW4e6xiDcEbjSK; using fLprgmvuRkAPS7c9mHmT; using fM2vXEjENDi4c48P0RvR; using fO93F9jShnsgjXTusYak; using fOdjYHMhmbp3nWN75kRD; using fOe5a2v3t6BKLr8d5lM; using fPO8LStd50RYaTeZ1Fn; using fPaCmljyl6yYNvhJpaBA; using fTN7q6jlNkgfaRwiyKS5; using fTh2Bn5UJmmKobHBU5Q9; using fUyaxej9yoIqZIsXrVlb; using fVFdwTrBoA3flXPVDV3C; using fVQfEJjvl0CpDwpW6E7G; using faxwr5vJyCHGIl5AxmEE; using fcA6mkARy37mkMDafFx; using fcFF7rMUeR7P815saY88; using fd0vJgjrftc1Y9Sv07hj; using ffvSqQXH1JoNdycWZ24N; using fhSV8a5Ukrlk0YTS5ZaJ; using fhUMjPrFl6YSy0S4n1u; using fhwdwMXpAIuBD3p5Peo1; using fj4GFvjpyc6e7ZsYFvtG; using fk0Oe0jHKnZTJ1xHeJVP; using fkO4P595wTOOoDvH5NM; using flMVgPjiivbnHe4e19mH; using fmt1Eev3SvLM0uEqMng8; using fn3VlDXpMd9KFZoec18n; using fouVsnMlP9SqVCWU7c3B; using fpxmvu5g25Qe7xElXHQ0; using fr2wOg5UvZCaXo5hWfMM; using ftpi00rWqKgRFkdjw7wW; using fyLmAWXEDxEyxSZxS4eo; using g0NksrMhew2H8DJfw7mG; using g1CrTIdifuTIQoxoPVT; using g1bkZ8rHsxKIobeyExAw; using g3GQAYXBb0j0npJCLUkp; using g3S7Sy5bBua9i5JwhFbe; using g5umLirEgR4wwu6ZMBrF; using g8tavU5DAvmLLVT40o8u; using gBafPe5FdiUbGmwgV7Zk; using gCuGicrh94v7NoKdEOnw; using gGDqo6v7emcCqRLRWMdp; using gGk8IHXGHEY9WpRtJnpU; using gJTRZkji7AwlTofkr3kJ; using gMRuXFr5EKwuIYNHM06B; using gMaNlWjNp4HkJEcoKuaL; using gN4q9tjUcTAq0d2yaP2q; using gQ1OXpMATDfBjUZXjlPB; using gR5auhnVqGFmihJoq1G; using gRGFIjWyajbgCsNxxpK; using gUJLWaD4KC4LwAcgwHc; using gUiW94XY5BLZFY2mPjY5; using gVRWAS58fSXNMmM5ZbGQ; using gWjfnl5CeYR7sqbAIuRV; using gWluMhjLoZ87nUOMriCo; using gZawgvrt47aGECWL0ujm; using gZo1p2OFxk7CmGe4Ta7; using gasTpFjQ4JgyCMb2Vwli; using gau75p7AGFyb9mVOjH1; using gcF4dSjwispL1TRZEvDO; using gfhrnaXipWoTUnAcVKgt; using ghi54wMKipv2wR6DHRhv; using gi6SdB50CfiDjATEQK9d; using gifCbijKtjX2XF5jFMHN; using gjMOkBjpbvEU4MGGLeRf; using gk4IM6MQFfNpyappiGWD; using gkHHBXjQKVpJBtcHZEZu; using gmQSiBrOXvMrv8ESeuqq; using gphQRpj7Nlnci777kD0a; using gps44W5WP9s6cOpVske8; using gstOrxjRmROGsMDVhhgD; using gudjxir08oV3uGPetty0; using gvyBV1vO6GbeuXD7ieVL; using h1DrIFvK8PscmlLkVqKB; using h1ErL8jyLseWcu5lgmyq; using h2m3T25Aq87RFLb3T4bX; using h4GnpIjdbA8lH4QWmKQr; using h6X3v9rXFJQmDwPxWAMX; using h72ZVW5gK1CnPncQOBKK; using h7qvmYvXGF1MgxdgvWxL; using h7vtfZjxF2VAhxGlHO2B; using hC8McwreBpo9dfwgJecF; using hD5jHg545IqOBKWONHIu; using hFNEaAruYyKWJ8RimXR8; using hFl1orn3Ek4BCXDXpg6; using hIjdyv5Fq0Zwq3GhnQng; using hKepUDi5HFpRYSKiGfr; using hSD5gLvb7DyRhKBvqIaC; using hTQgHPrhcYYyYBq8tsA3; using hTfbyT5lxQ3IBNmKELj7; using hVbpsWXp3ytXnCc91ZnJ; using hXhX9TjOUnpV6rmn62Fu; using hY9vUOjaaU3utDSTqhjb; using hbrZf3qdrdL0E15efpX; using hc3nAZj7R51npII11Z4J; using hcciRFrS7kF3O6ZUPfaG; using hdLuQpMsJRks0vBlLYXQ; using hfxXm2rU3Leai888Djln; using hhQNNPWMAlVdaxUEpRo; using hkOpJIXpTP6ex2Z5AeB8; using hlCZl4MvQidq0fVpEWyY; using hlnHsbUDALBJws3UVvT; using ho4B0wMDfKaMXFinEVFM; using hoanLRryfegOPDIicyiU; using hpF0xBjNgHWrhxHPvB20; using hr9aCMMG9jhIODWk9Ety; using hs7URbMBJjnXtZE3FRUY; using hsC6GcjSPxEJnPcctk5s; using htn88xMrf689Hi2yuDUJ; using hwPo3a5vxRdiuEgsuXer; using i0m8lJX91aGG4InXwbg2; using i2dqPFr3M2cMpTnHA6Jw; using i2oaPqqtY2OoMpYTCPk; using i2tpyx5U3xrMtweRXegr; using i4CuijM15BEgNMLxupGM; using i6Rjyy5Vi8J65x2V2CLR; using i75HM7rdTZPJQQMnagAE; using i7ZcKK5ZK9cOuy0xdWEd; using i7yRtuv8S7skNYnWRSUQ; using iBGQfirlEJWrtMWPs4kO; using iBgdUTXo8vmVdBH3PCpj; using iCCPHMXvzjVpZmpQbSA5; using iEEggdXb6mebQVThEA8y; using iEyTuFRrAl5C5OtK1w8; using iGpNWcSlCxaeaSBsSNl; using iHCcbpj2BxS6MMgwoLYk; using iHEXB459dv01PMU9q6P0; using iHeHwJvIqZhQnYrC0o4G; using iKc1HUXELCR7Wpv6D6De; using iL9J8vFnGxFJmF0Ihbk; using iMPwm7jGn7918N9kAAlh; using iMw3Ku6riqPokaEsMmf; using iNHEsjvPXyAbrSYb7y0s; using iQTND0rANhAh5rDaoFBV; using iRsA0EMpDiJwyS8txw4m; using iS97uo5ziZhPUKdIibmi; using iTSaYs5BBy83wY1ukCLs; using iTUba6XhZ85gvxuky8Dv; using iULS4bXYU7RBjivcfCpB; using iWLtTi5nPCmydnKoQYrl; using iWfsxfft5l1sgFkFV8w; using iXCO5sMaJe6bQ4wjhj6n; using iXHovmXd2gFYxhGvQ1Ft; using iZ1fEV49xlXQGYySp4y; using iaXXOT8c5vFhBn6HAkR; using iaZKRrrVtbeuErVpslrJ; using idAVtOjkpAQEBDdDWaFB; using idxSyDMelpNkLWbqIo0O; using iejJnkj4FRy4ESHHljL1; using igW1OJrnM3aYAX8K2tMD; using iiPqS7jJJ59tZEP5f4cN; using iiaHrsMrxDfqkmWJoC9L; using ijYnxYMyGDLlEGA0fU9v; using ikW24xX3Ihi6A1265OWR; using ilnh9Ajay2dTQIl67ObC; using inQsJI5WefD5YJ4r2BQo; using io41NCMTZQSMmvC7BcFw; using ipaYtnvJExMak2lw1Mn3; using iqGFfMMiEZw47mUCBFDQ; using ir3BRn5DDd8ib3BHi1cX; using irVHLpH9ALcWBnqKgek; using isbBexvjsl3J5V4apBFf; using isgTl4jXyVMgdqJ8iFsf; using iuDsPo5rYu3PGZL7vaCe; using ivybkkXtCDglXq69vZd7; using iwPWRe5LyswaZYdZOkeA; using iyGVhOM5NNiw3mA8xKRO; using j0opycXt2Sp0IfMrJKq5; using j1FklfMTgx71PmnilS4F; using j1s7j4jRyQS5fjW30ywc; using j1tD0jjjMJxif74ALv7Z; using j4NRZGjqqDZI6oDsiqVe; using j5VdX5ryn4iMQwgLcyci; using j6bwDqra9yjEc3vQfjFe; using j7LX6E5bCyo2KLiaDLAR; using j7oKl6jPT5tsZslnwLs3; using j9AAZ3jVd3bYxB2GERk3; using j9XkDXrcESWEBQm0rQmW; using jAAC40vizkZZHhiwy9Km; using jBq2LNjTMMcRr952BBrL; using jCfaOX2yd8eF05ucr35; using jD1tSOMOUM0ws3rr3grb; using jDSfloMdAnxPAulnAyLg; using jDy3w3FfQaUgjycPVvl; using jFFlcd5nfdIaUesnyPne; using jGujPKM9BOOtfSYhGSFG; using jGvrWxAr1IBblG9Vf82; using jInD4GN6v6AAmk8Y0ug; using jJ3HJJrpZO7JlfM0xGl7; using jKC8egXDCUmM7BCoJaO4; using jLICrmMrUpyH4pD7Ct1w; using jMTuAvPFNtrQUXE0Lck; using jO7amGXl3jft12yJedUO; using jPiRw7iMnxnahkeBmWh; using jQCyORMH3Jvw9ncnMxuy; using jV5pEW5UovAgXmhg0OXu; using jYAVFRjuhA6owAnI6asP; using jYcbCtCJilWGimMiRag; using jYhxM15ZgyZ0eWNJ8HJs; using jc9HF85aLC7AMeZxrskq; using jdcqHtXF7FAlVPKRH155; using jfw5G4rARa7NVf4NJF3R; using jgcvGKpAJgmUe9MUF9X; using jhZ4T5XP4xVj1QlOfLuL; using jjOA3vrRSeEBINxyPZJO; using jjbbMyjAfEIPx2MuZtDy; using jkQfPkMHHOO22xvbBDs5; using jm5EEbXQTYwTRkvkTomu; using jmf5Lfur4GfSCmKQjiV; using jqqLfHXYI7kFG7R4KbJV; using jsbyigrRuRj0ngDxau8S; using juKuYejP9tXq7Yw9udv1; using jutCFQXbiRIIG130RItD; using jwhUb1XjQYlYW9E1CDmQ; using jx3ZcyjN6VrQlevOkEbl; using jyPcv4jf8i5QFMHF1Z1Q; using k1alojMaVD5qKeMpeb9I; using k7Z5cS5g7XhDaZSefQAE; using k7y3uwjOiR177UR8B7DX; using k8BIvWXp8roWb3qEt68J; using k9l0ZR2ilccaZldXQUD; using kCma8AjBh5q1JrMuw7Zr; using kCvwvvFSQUwPqT8skVb; using kEpivdjiQHG0FGmKtr5d; using kEyQNFvGfyIqfrkCySj0; using kFrhIGr6lpNrF8x4cKaJ; using kGnrmXjYL6BbURiZuHXA; using kHp7cqNb01CVwEo1YTp; using kIlkANM5Kg0H638FfDBW; using kKkRZL5gJej6m7Bj6eqQ; using kM8XTmjDu1eluKbD3imC; using kODs4JML6jVt8vENAqAT; using kQPLrm50Rce4CtFjBnp2; using kQS6c7jWXnlvhsfEItxv; using kQSVIEvoirUhQAIm2Y27; using kS4fJxjfH9shYWRmC9b3; using kTJIOJvboABOnilwpqQL; using kTRhBUrOpOXsPu6D7J0W; using kTgvZujc9Vkv8FWJZ9TR; using kVIw0DvqC3miKTg5PC70; using kY2WeLjD79heKI1I0s9q; using ka9wwV54Xqy5Ny9nt3D6; using kbSZW8jBalk1f56K8GjQ; using kcoAUX5CE0RHMrPVwJO9; using kdPyykvcmPx408NIVBty; using kgVslDjFCsJh7TGW8uVX; using khTqvHvdY2i3EAOcYVTJ; using khbLKEMJfaMoOX9C8Gr5; using kisCgZXKQRgZfMklB0nc; using kjBEmJv2wjM6ZJVeCqFv; using kkRmflPXMfg5HLgXinA; using kkuJrEmwuWuJwZT59F0; using knfFRGvGy7LkmPIPW0pd; using koZQhQMylcXWHWNluquP; using krfqi55FBIcwYc0GY9L4; using kruBsE5CvL2dE14Orvmh; using kuoW6h5owAyv3QFdD7Ms; using l17IKwrN6gNy41vVQ2uk; using l1af6crOmUbaKKRmxLw3; using l3hX0GMroaLsClEmlp9U; using l4WL3LNWvNq2tOTG2ZW; using l6IlpB5a9ATJUJiQqrlJ; using l6JoqpjveGnRlxG5iyEQ; using l72fFJjj4RrX5qXJ7aJ1; using l8WsmQjPlw6r4Sllsihd; using lAOmt0jYOM7Grfdvd7gh; using lAi2BYjSxua8jVPF6YKI; using lCeftNXgcVF2mbAj5WFL; using lD3mQRvaFO3fB4mHDbwp; using lDC1pFXTtfRxd6H3ZvVh; using lDQlHMMLJ1REqtkHGjda; using lDvnyvXgSjWjd39xW2ZI; using lEoYqlrAhQP4ZbsnvlYI; using lIYEeIXX1ANuLg3OidM1; using lPn7EF8PkDFRgKnBjwQ; using lSUKf9vXWW5bPTEvhrsg; using lSYePVjcGpq854FpS1Z7; using lUtWUijZmuAbeoD66WB5; using leO20gjtmnj0GEuUuAvj; using legRaNvy3ytlIcuQOOkk; using ljBEJsjOZFDNt8Qewdpt; using ljwl3h5dKWmGRZ9SEBpw; using lm4RtpMnec1I3YwyF5Qn; using lou9wQMnASRi4umWb20v; using lrPUcOvwrQlX2ddXvcH9; using lra8abrckq9uV0r7JkQ6; using lsKH8dj4bfgLZeue5cus; using lsX1RtjKOtahsHrG4ZB0; using ltcfsLUA2ShAiT9Qmf8; using ltpFrRM2I95iMtne6qfl; using luGMoQ54bEdbeXGtcaO5; using luJXuwwoqoajB6AR9Ue; using luUZG1WnjU2yPDIRt2a; using luYSkLXpcfoWEmZ1jfgs; using lunn1AXmjtKKbJSAxZQK; using lvNgtfr2scqcnVdUNvhG; using lxBh7b5UGpdgcP7R2lRW; using m3HlsYVOZaecrRCo2BZ; using m4dgf8j65IGLH9o4tc94; using m5l0BZrVTt0gyOfIpFD2; using m6uLL3XzL5A0he3gAZKL; using m8hk9PAmuTerZDuY52w; using m8n5hO5gL57QfkrOL0O1; using mBNHqsMazdm7juJysg4b; using mBW3n3M9Tto2bEY32m4Z; using mGFVVbXC4AsvtbNcIpb; using mHTEEfrVef8xiPMJYjEw; using mIZhOtXFgggaLuf8G8xH; using mIsW1rjQOsEA0CJ6egM1; using mKVncywpTDwFhQ19j4g; using mM4ie7jO9n17iQ6OYVga; using mMI3ubvInRqpkXf5AQaa; using mMTwiovtTW9xWaApjvRq; using mMagaBvEJMgW6lULhFk; using mMey0P5zvY6jdxAWFWmh; using mNGCXcqTm8WLlbkCiMU; using mNcPa056z0ct3JDxGwrN; using mON72hvTslJ6Fg3pCJns; using mPtoCwXGzEgaXkLHlIfs; using mUGCdMvF3Z4rbW6MpPh3; using mVlOO1Gyl4OTB23uSer; using mdNYnIFj3vIxlvvlSsA; using meFBj17BlnjwpdT23pM; using mfLdmJjhOqKFUJSfcR2s; using mgChNT6a7RTgxk5wmHo; using mhg6LFMBGHfq1sNhlkyn; using mj1PwKjHUFKeLmFWEEFn; using mp6AUJMWlVZl51fldyIn; using mpeqisv8A1raZuhm2HGi; using mre7hTjlsGlX0SG2Ruv; using msFtvyGHqMgtc2WbPoa; using msImR3MVYy3xoeloadjL; using msRo2AXx6QVZaBxUBw9X; using mv1T25MlyuW3ILYyAgxa; using mvKQtcXc5oh4R8JVCpXZ; using mwMk1TXkkCxeaaGbfUIp; using mxZ7j0rkYy968amHCIr1; using mxiCPhjScayNhsLORqAj; using mys6KIM1Ckb5i6ykmWIm; using n0qNPavGmK4UT17mhbwW; using n6Qua4M7TecbNrEFPyv4; using n9me3U7DG10QlAZhlvJ; using nBbhIbvVgebJeQO5q5sX; using nBcsMQPwJm8hr9SS0t7; using nC273vrP15rV67CfyPQ7; using nH6CahjOnSqlaIg86WYh; using nI2p4rvWqHivOdOkJuqx; using nJopkkNJRvmIhQWcbDx; using nKSl2trJBj8iGgWeVkdV; using nKoNwwrkx8ZLPNPJ7ylN; using nLrDy3jqZd2FB73GD0ra; using nMU18BMSr62Ult3sdZEg; using nNwZGTrSVl8rHfK4EqWV; using nOALrcMcjZe0JxFleRju; using nRkeHlvvTHmL4EnGLq1W; using nTdVbRrM7Zc9Ia2dLUAw; using nWSnNCL7iB1TxIJpqZw; using nXICSiMQ9E5tyfH9Eg46; using nbWZxRrtmVMq6XBkJLtm; using nbxcMpjyXonWVOXQDlZp; using nd3ATLjUehsNV5w1Slyf; using ndjWGcXlr7bMd9eaxZLd; using ndtoHfSLU0Hfshcr2t8; using nejUO2XBKM3lVsRobsfj; using nf8N6kX5xlFOPa1XTSV7; using nhr2d92ua8BvqsA3KWG; using nkwiOFjx0KxGM4GFWYY8; using nlHrKavuuvRtiORblb1c; using nnEoYCMQooW5iqYNYHMg; using nnL8bjXNPOpHgBnlubJK; using noE6adHcOhPfI1F5Tls; using npPRZLMaGsMQia951fMc; using nsrMITv8e85OaWCWWICt; using nuvWaqvFIYahcGDRVh0I; using nwrFb3nFg1xmhNyn72Y; using nxyehrKxZK0u0TetQDH; using nyDvwaX2siIQ9dNf7BrH; using o1ON6A5QXdLblYWlnkWX; using o1q1uRjGeuqUscjlShRY; using o217Kcrc7O6i6WAGndGe; using o2UInTrigYuF0F4maLnv; using o3f0YbjdAsH3FVL7fwPQ; using o4pCXjCqnK7DeD8J6Jr; using o58qtQMUzJvN0MUpPJLL; using o7HZjYXkbeW3wxxNOWUb; using o8I7Fg5pTisQ5riCyObv; using o8SUjPvtM2w8bme5rvKx; using o8SX34vw8oRUd5triKbw; using o9JnIGXDnfkckIkb0AcU; using o9jsbqrYCGlfwyS5nn9t; using oBw9HZXZkfiJPlx10Uuq; using oGXWHRjP3KabkuN1PPR3; using oJ9iweMyPNnvSCoSVFLr; using oKB1Ukzp7fbcF1snqKV; using oLFOLM58qj3Z7iH96tWk; using oLO7qWrh6eiGaoOsqjTD; using oMIgJci9H3YoTOIBF8m; using oNQT2K5ZiwGvAtctLUKo; using oOj23xMc9ZbWH76NLf0T; using oQGXGrr5zUExfwIBcHIK; using oT4lntrBZeKtxXOhreax; using oUZ822Mhlf0PV25MSNb5; using oVOGh2vhG513S09Z1lo9; using oVlKhjMVOR70InVwmgbE; using oXSvwb5CHLLeRddKyBGZ; using oYmuVYXetexlx6s52SKI; using oZTtDkM1khF7aTgFa7Mt; using ob80wW56FqdlvleDhhaE; using obCb1iXm1sBDXT5ZcQVb; using oc8RGMrAItYDPXAH7qo5; using ocJL73vZ1XI67vroo1i; using ocwQcPrVVBduFAXVZ26s; using ohh9rdXbdXtJfW8PeLDA; using oipRIFXTvNdT2wLPWOMI; using oknmYwj2G4mRBcOG1qwD; using ol6okCXi00FVjEU6uhkE; using oln3Cl5N3BcA5MrkPqrA; using omHwSDvMgwasEic6Zh0Q; using omfpb4r4y6CVtENR3WNh; using opF1Py44i5MQv45yFke; using osXAJs53FiVmK8n99TSw; using oxHCBwvShHW0Hw8opyxb; using oxRbwLvAi4gwgdPy4ZaW; using oxdeOUXzmOp528LGucFC; using oxwZYavwOBTVJgHrqpdt; using p07i2jXjzmA99yteQ8pU; using p1DwXojw9gKZDQdXXjXQ; using p3kKsJMGbQqhpWTCncYI; using p8bRborXJQ2Bh8snFPUx; using p8jfF3MZcMxFs0GsDfM2; using pAebO0XdhaU12iK5eKH7; using pEkb6LrzPurXvE2NtJ96; using pHwGN1jVRh2J7wu0g1xG; using pI7sTUjrpeaiyggBqQfJ; using pJmdX5r0L0PHC3mGftb3; using pM2PJFMvYYmN8QdOlw5g; using pMq4KjM1NRPlrcTD7bLb; using pPX79ijvyTTcLHRZKQS8; using pSBLl1v4WZTGIo1W1ZA; using pST9kSrRHV2G5K51deVa; using pSv1FyjYMRVx3CsrjUGa; using pVPFnbjyk5xKt2WNK845; using pZJsVw5L3UP6Bs4QsYjc; using pbAj4j5sx2S0kmwhnZdi; using pbKtRAXkf6ayM5qWwbq9; using pcr8mJvKpufReub9dJPU; using peGYIY5pikIUxnVrG4Oc; using pex9bPGnqCSu5a2jaP9; using pfhrfX5b7XHRGUIe7VFp; using pfuYsPXfFltfeX9UQYOb; using pgS2cOXpuqJr0e0XTvIp; using phWYM0Z1Rj3qtBr09by; using phoYyKjadQEuZJe4cRV8; using pi0dUAMkbX7ArlmupHlK; using pi8f7Lr03jleYd14ZseL; using pn1jktXRMMDEI96Sv1Xa; using ppFOYew8vqrDsADC77B; using pqKCwSrPk6tAwkfGcVfZ; using pqh2NsXt8G9rnr7MDhcI; using psIO8KvtQc7I3FCgqh88; using puMo0OvG3awL1A8urqhc; using pvyggv5CDSrSPy6oYERT; using pw08MXkCcN8QvqFsFcR; using pxXLe0jSb1AGLWTYLifq; using q2e9ysXiGVR3bUOxIYqU; using q6jahUrJrsu7doQpGJpt; using q85Z8Y599d3KRco5gma5; using q9DU8crY5VYxBVNEkSjE; using qAOtJb5HDWhQdJunDkYp; using qCrBnwXbJhvNwXtJvYtg; using qCssTnXiYhGnyUNAOttd; using qI8bxnXDUsgYQCQZmnum; using qJckLtj6Odgema9bW2EV; using qOJP85jwOcJF4AX537r1; using qOrPQAWq7JKZ5UJ1WUp; using qRDyY6ATHqRtO7JKA5X; using qUP8QXMsqAHr5LuhSAfp; using qVfdUyXT5fqr20Ahc3Cx; using qX9wGLMbvTQQg0A0kSHI; using qXmjPgMrO0WY2jxgcckA; using qXow4o5eJHCqjkEJnKA0; using qYUqkSrOn5OjpbQBQeHd; using qcnaPyjr1FOgRM9XAkyY; using qfNM3GKAY7e1Vp3gpKt; using qfZZ7VXde2P79am37CWU; using qfk7u45Z93owORBAkZ3n; using qfy2SCuscxbHR37glyt; using qgh9MNr0EMWbib43a9G8; using qhEAv909Uh1lce7R1eC; using qiH7FDXd3XdTLZqw4sOO; using qlLDbgjmoNXJBchQ3efl; using qnnO98XF9RIE7yQKIimD; using qoKUVHjxB4jOIRtXD1pB; using qrOTrhp3YixYiygeOcO; using qrTnpHM8JNdngnFVXwpj; using qsD7oTXQueYmFDEVjQui; using qvPanIjVGXMjBVR4HDhS; using qwQ2PPjDItyoOmRH0ZGj; using qydRSH58bwkcBr1DVcIa; using r0CZxdvVOK1eD1ynFPbw; using r0Rj1djAbBVPl7Q2HXjE; using r5x6G5vkiGqtxejyOsF7; using r8UUOD5j6wbLuc04Y36a; using rB5IosXohbWkvcqVSXvl; using rD3qp2kMIg0aLSgEhOi; using rEYoIT7heDPgZHTayul; using rEykoIMB4vlrRsHjc29o; using rGIryOMU5wg6j4h3AV51; using rGQCmhrOecFWqs5hf36q; using rI3BupRj7SVHqCAOSp6; using rJ6NC6jCtJ02a3gXFY0R; using rK4gop9AZYA3fsgkCM0; using rKYtmHj7esohDoKHR0yf; using rKkmntjbxZFuTtNeba72; using rL0cD2MkpieWIuSsQrq4; using rN8V7VrclGbdKVSExDN2; using rNZXLprJRZqH1aFN1B3Z; using rO7Sc3MhnVkAnLrMxRYr; using rOhOIoMBZZDQxfJ4XCvi; using rOyYAXr3t6tW0srCO3rI; using rPs2adjpE1OSPQLRoCSD; using rQUPMjX62g5jfXlhPMDV; using rQyaLvXFYjpEdS3Qbrki; using rRR7rEMlOlyGi0otddK6; using rRwsXWjp9eNoU5a6SVQu; using rSy7wpjfnwee3iQMJ2O6; using rTetFwrt2OFWpk1lL5Sc; using rUA8esvpMGvld9LelfJy; using rYvmjyjYGXHoOauXfXlB; using rZBuPZSqMeWasQklTJy; using rdTuED5Vj6vJgHiLZAqP; using rdTvEOXgtmTuIf0BUyXV; using reVeO4XTzuCv18dlIeCU; using rfeAddKUpYpQovEB8JB; using rg3atvqMhc1BOk98Rjo; using ri1Od4vPiJfpYYDAkofP; using rj1BDajJFVqRuGgVQxhr; using rjHpKKjKudnGCBdwFqDj; using rjjD0vrA5EZxwNK3Gu0q; using rjqu3mj5on02kFCC811E; using rk6CDcXcVaZ9UcS8pNh8; using rkFF7Bj4Ap43yO5Qpomm; using rkTJRqzRspOB4b68Khc; using rmNnQIKnqMapY1kTyvg; using rmhLPsX0ORBQN0kTy5bS; using rmtSEyXPVToheANTmu0F; using rnLT8w569e9KcICUI7Le; using rngQg1QO1mCtyVeuscL; using rrhiGeMbtm6ODSw8mJF4; using ru2RNVr67I0TU3rTY60a; using rvBIRYjyVTMIFJq5hnUT; using rx65JqjqH88BCJZCSora; using ryFc7tMLi2bxFFhQQkBC; using ryaQ5mM2U0rm1on5OEse; using s1BKPJ5HhMeiDoMWHOH8; using s2cBpl5XSXlUU0H9xV9e; using s3BNJ2rKUCqD1QHLFQVl; using s4vLCkjuPg3CQWKEuKNU; using s5Znvn2OSZjhbbwUKC0; using s8wLb8jYbr1CD5maBvKb; using s9JjoHj4uDX2ciQP4IbH; using sBufImjrvJxPOSJsUsoX; using sCVimFjNf6vmMQk2MNNl; using sD23MqX9gne6mejk1iZp; using sEcljJraJKhGycTkxeGQ; using sEgXYEjifw6KXBUVT2UW; using sFZa6MXt7KRAJQZPYoId; using sHCnfMMLdWFAL1BtVlgg; using sKGC4qvWKsFt6T8golEm; using sO3s9ej4K7GbtMdyTIfX; using sQXyExjbCjJqdIpST3R3; using sQeEKhjSSV1W1YK7x3ha; using sSIIIgryvwMKwwubBlrx; using sTKVpqrBTTZgfIErq8IG; using sTkegOjwKuGq1Ug2F9dD; using sUG5jtjbYjV6Ac8l8Gv3; using sUQHNUju166MEaCwIVBP; using sV7mxQjb5D6nHlAjbw3N; using sVT89jMwyqgBaydJ96bJ; using sWFsWSdA2OSlhBm2488; using sXMZFHXbZK55BTUB2Y2G; using sXgCFB5YoBbDhglOKQX9; using saFsSyXdISiPmoUwKAZA; using scMZ6bvspEAbu7rVhkaA; using sdjmNxGRoTQphXVc5FY; using seBNfkMw7RFVYOWaEl44; using sgQWj1j0S3NoMm78tFXu; using shWnf7j4ZC9AM9v9bMEW; using sibZuL5NUOiSEctgyYZm; using sk7xuAjUYDGYkDmgMYJ1; using skpPLdr5NQEVRdCftelD; using smHIFDCKvGMweMldhua; using sokH7AFR0LpbHja44sW; using ssCHbjOHI35IHCO2mS6; using st8jFVrOYiYXthPsw6mr; using sva0okjkxu5mUv7Tw0Mg; using swaVxiXib62fIOd8gv3B; using sxIOV25KbdaOgpEvs0o3; using syjaDs5h4FMpIMIrsu5R; using t1bfqWXwG7BvDtxaQGcu; using t55Qqt5CwyPc41xJi1tr; using t5HdiBMtXLKDHTyG6ovG; using t69t455jk9llY2UExCwY; using t6KPaKXeYho0HlrtS5QR; using t9QmoeMzbpN7xU7VRZwj; using t9TLZlXKKPuOF3D5XZYc; using tC87HBXGNyFahrGfyCL4; using tCXeDG5xHpKJ4cjAI9Or; using tE9SBP58Gh3V74jSu4vg; using tEwIWbjA9F3DRb25Hy9F; using tH2N7TwbUlHnsxdPCQ0; using tJIOd7r6sXYUHpf7Eqt0; using tJM4tnjlXx4NySHHES65; using tJphh15wrJCYGLLm6x1E; using tLGLhiriRbgp0bQfubB6; using tOqQ9O2XgvPkReRF0us; using tOyYufMSVKeOoBLxq2A1; using tQJbU0jAR5mMvmjrZTKG; using tQnhNDi1HftC1sccWAC; using tSWe5D5IXJbeyc6PqoP0; using tVe9BsjBvoswL1Kma9cM; using tXTmf7rpjCuTZONwpl3Q; using tXemuPXtWOYuyk5N3ZT5; using tZoGO4XWZPX08qAxxQv6; using tb9nZHj4oRVCfhT3Dmak; using tbOv5P5rxDXyIehBdfuy; using tc3qOlrrPDPYaL473n2R; using tcyThurNKDHrdxCDjxKB; using teiIjIvK6EJf3pglVuxI; using tep7QWvVEV7yFMIFl3R1; using teq4hPj4NAR6vHRiB7y5; using tfcsHvXilmkgiaJaDSxH; using tiDBSrXveGLF20A1jXDC; using tjsGlSMBd9bkGLFwZuNL; using tkRM0NrI3COBoJnNEj0F; using tkkAd8MjA87VXqETfnre; using tkrhjx5PdTAyOFjynbLQ; using tnNXBSXfb6vYXvBOr4OD; using tpwk755wCdSdENXG14rL; using tteIPb5T6ktXGC5GxiFW; using ttw1nyCncIfxjpuOrAK; using tuGaScxx4KVrbMtgwSD; using twwTJIM2RFZ6DBwQ4rhC; using tx3oR0jjCXbi0GSxERsr; using txBruRXhutHGWRNkvAZ8; using u0C4Wc5zsjJtNdwc5V7y; using u2QwQ342GWxiQMsibLk; using u4tCtev5Sl530pnQ32Q9; using u5IpZZvJIE9wZXmqJBBE; using u5iHmxjwWVSw08co5XSh; using u6Pydo5LFc2VDbgApJaP; using u82RwfMEXuVMTjHQMQhZ; using u86XExX9hg629LPslXUu; using u9J5SAP92qxXtJMRAsE; using uB32xeMGy388taoEmTCX; using uCQEgqMn46ud6irmem0K; using uCduZJMF4IWOZtFoL7uM; using uHtNAWXhcFodEkBvEbMq; using uLtYcFXtYtl71AMllHEu; using uMLiOXrK7kAxNro1IQbf; using uO4xb75GNS4cmSSvHnoi; using uQwyugjQjdveIZExSn1a; using uR9MnY5KpwO8MnY6g0OQ; using uTAhbBjJbdux1qC91t2w; using uTgSnnrs7I4Aj5H0A3JL; using uWgrMUSdplBPcxEqteL; using uX5ebYjTIJSSoNVYS3ON; using uYY2vPvA7x6Ny7TiW0du; using uaCmjfrXqXCIsaSe4Iay; using uat37SjftV0U0bXUQn0; using ucb15orwRUTwYp3DMsLP; using udFyP1Myj2xZLrM5Vhto; using ueFmNkoEi5HM8v5H2x9; using ugKiUnGeCDqZRuX6vZo; using ugb5IXrWVlhQakNcPj1G; using uh6LlHJ5qOYoyV5hdNe; using ukfLis5GRXLcuwsmGH0N; using unAllajhcqtJ54jYF1Te; using uoVvP9WFDcheDrvWCe6; using uuMNj6vWj2LaS0EvlLyy; using uvHwb65OTk7Echo4AjRZ; using uxPuTLr7IEDj5a5rAHoA; using v0mWUerpJQu3JHJAYUSZ; using v2YO5uXDF5xDfLjhOI9K; using v2ptbOrhx4cv43ewlYPx; using v5CXxv5cGc6PG1LQBlnT; using v5VXnFj69tR5ntcqcL6i; using v5dScLqeMrvFRPaBKKY; using v5iAalMIyCZgpGFE4Kkk; using v8WNl85Te3PXu9iZhSGW; using vALV8tMLmXnZAaw3iL8Y; using vBXYSq2J1nf83S5XTIT; using vDgMLgX9bOFV6Aj8SAn0; using vDgl2mCI4S1nZMOAJiJ; using vIaLBcr4AbgB4QFwyqOb; using vJUKyarmMcmPqbeCYqb0; using vKTUWBjRzE01yj5T5qLt; using vKXYETXMx01bpFuyDhiT; using vLBd56J9uGU3PXwJLgL; using vLWsPFMGiEr980VZCg8o; using vQU9FwM9kcL0cUk6ObdZ; using vUjbRdjtCr5ANPEPKZIj; using vUsiraXz5ic8iXBA9sMG; using vV8puHrlixWvj0xWVKoB; using vWlYHEuTqMUIPY8Jc6Z; using vWxBtqrpnImrbINwda5V; using vcW8yOviPyVYdyw6340l; using vdCrqH515pStVAIrucLr; using vhHmgrjzLhCmFvhrrElF; using vimAMh4KGPmNuJmW1nK; using vjrvhOvVyfubuR1TjR2X; using vo6veuML4HX5sW21BCPH; using vp9nx5MtFZltVTbsKit4; using vpfPVrvuUEp51vm69B2l; using vqdNChXoG89Yo341RlYL; using vvbmU4jjwSxYttjq91ST; using w2y1PEMKqohF4V93T7mw; using w3KwMqjjdyKN6jhBfZJQ; using w4nMt2r3ea0uI6UBEsCZ; using w5KK11Qck0ugv5wPORr; using w5O9BaXbKLdtmRUmbYHv; using w6FPxyXuFKC6PllVcwVo; using w7Z21ErOSsPxFdR8VX3Q; using w9cvjpjvZlFfXgkJyq4w; using w9plBxXZGVVraim8sw6D; using wB5dX5j9YacKyu1lchmo; using wChXrfXf7pJ815OyDqpH; using wEHXH5vaCE4mrg3tb79M; using wHDcL7UxClVH1nTYgdN; using wI0waiZf6q8di5ZGug1; using wJXWKEXp2gH1JbwsPjOs; using wJqKxhjtG3QYoYeHEu33; using wK58C7X5EVxP28VmR42Z; using wKhAxTMEzS8UA3a0URiX; using wOiJwurA2bNjk58X1K2D; using wOpm8v5hF8Ykdn8MyHZT; using wOyTc2MIoZl0GV1L745P; using wPs6FPv0yc6qmcG11HqR; using wRkVUbveDXlnRnMRBKSn; using wTBWQSMNbjtKpT9I13uj; using wTlm6Qr5ZSlGnu5IU0wZ; using wX5TLUgJPYWlPjE8TvS; using wZT7htr0StyNNg1YMUnW; using wa8YDaXtOqLFQahHkGiN; using wb9I1aM872es2ctH89SN; using wbt3K8jw20sMCQHodybE; using wc6wllBzcBEQtrCVS0H; using wd4qA5G0rhOYSL7JguY; using wfCB40rVA58jT4XNDN1m; using wghoTdMBlsIWfZKChJZt; using wid7VXvkrXLunr1kFlTq; using wk7YeHrOd5I9tylKnOoA; using wkAF0UPQZ5eChsUEK76; using wkgJ3NZWM9HkwZ4fTqH; using wkuPv9j86HEiWeFDgnkL; using wlOHVjwOHZnrB3jEODj; using wlafDMXFSktfXK7pykm7; using wmiKEqvj3biPT7k18ry9; using wnWm2yrONc0uWaAUFvqd; using wnoLy0KYQHXiMOFHiAf; using wq27TNjd7KFuKEQ2HcOP; using wqFO0TXdKoNPwONKct4n; using wtWtkerqTjTTLxOo1442; using wtXXgmrRzUnaq3pDnGVr; using wthWgyXwo1KwYk2Vj9sg; using wvCSc7j5XrOmmcuG1IEj; using wvGrxcr7HVyOThSkAm28; using x0eaqtM5zNErafVs27E5; using x1bYPrjkP3FYbrjVxyOw; using x6PM25jrGaStCRab84sL; using x6UqPEKKx2aL1XNyBFl; using x74RaJ6Lk5I5NqBmfxS; using x7NNQnMK7r8p3fQrf2n4; using xBMtaJjYRmrjNTMjBR7o; using xD6ufQXpqZvFcv1GeFHU; using xDeSm14LlAnu2VrW1sk; using xE2otbjkQgjpZFD0yXTL; using xEErRV54P47dTBHdUjm7; using xEjHEkjy8V4VV8ia84Xi; using xFuSshjErMaE3YqlfCTA; using xL8ldpnJVVxdGFepE9r; using xLDnOUrMFKDbAEgdVBLJ; using xLUV8Zjfd544UKc3T2hS; using xPTtaA5DxHbTZCHJD8fO; using xWRgFKrAliV1K9kqsH2c; using xWq7kMrHYnO7BTL412Pv; using xXYC9Br3dUOEBMCWMT8C; using xe9La05YJvoDCav8ZF69; using xgphhYrlzt6nk9WWfO2Z; using xi7UmxM0cDwjEGQ8aESC; using xlArJeXpWRVyTs3Qm9m4; using xmFy9WK1lMxyELZg2rE; using xmjVZmjYs2fiUnVPfTC7; using xqLqcuXFruPh9T9RNu9c; using xyVjDDMHvICA7YjCHPWs; using y1fYjcXD0GKPw6BbeMhL; using y4qaruvc6ASUfPU9iPeF; using y66KdajOFoC5EpUcoE6b; using y6RDQJXZx3Cp8oku6TkK; using y73KUwjwRWpXCQJdfVNS; using yAYAhSjcfwAXVmAutnBB; using yByNqo55dH5cuvdggiA3; using yCetgsMMut4u5lB2PSUO; using yChS4jjjWUBi2vuUpMLF; using yD4Q2GjUwSNrItFkkrBT; using yEA4Uevw2cGpmMftRrqk; using yMG2YSrXEpoo8U1UifwR; using yNfpafMSijaYWP7SgIpm; using yOL8nZv1TRjcZANVtICi; using yPEu8urS2mm2JZiVmptF; using yPLg5r5MBVJcvTB36ObS; using yQ8ZEi5VRSxyAFmYFPFu; using yV2u1wjajDvvTYKiWaqR; using yVbyq2p48BafjMk6M5N; using yZyLI1XFXhfKxn3m1yZF; using ybJJ9k56V4Ws4dinhFjG; using ycBH4KMpGEbih6PvU1Wb; using ycaY2ZwPesUWUbvelHX; using yeZRgUjq9hsBdhik3fYh; using yfvJ9vFx1nDcPUv3igH; using yhZqqLXpsv1TnalMKCCC; using yi94grrD0LbBRXJUdQaJ; using yjAjOp5Kccy1f9YRnrIj; using yk5ktLvMolyIa89pYGtq; using ylUgUVXBZuwprwIWSm0I; using ymERpUJ6Pw21ixJ3p9Z; using you0Jqv8DOpctJXiVTn1; using yqejt9MNeJAA3vvPyktN; using yrL6ngjO0mwjPhGIdUFA; using ysAmIuGXDe6CX9rebog; using ytEUcJrKbYCXqh3WfNO4; using yvRFDW5eT3vmkonFQlZq; using yvht6Qrd6K5qn8OKT0mG; using ywCXr7vAZb9buxooirgq; using ywjm0OvbDQg6PvyPN4uD; using yyXwdh5rMZTYlFVvVH3D; using yyhooxXMEQnOcrTpOWrU; using z8RTwDraQDO9UfXObQ4N; using z9e2DtrPLTa8TlptLdW8; using z9lT1JXFxLORk0yUuiPB; using zAtGrS5nsNnryCqQcnNJ; using zB4H1H5CNm20LlufhqES; using zCtOocpEiEEAVp5HGqk; using zHmCoHjSqHbhVEHb031q; using zKZv18jYkLtC6ytFvRMC; using zKc4ZBr7VpSPJapRSoS; using zLRqI2jlAx816WATG0mw; using zNkCORXzIpWxwWOYV8Qn; using zO56cUjTJkhWin1j8P61; using zRNgCXqaZ3pQiTPyQw0; using zRqjLeXMqaVrdoj0HQ2X; using zSTYQ5X2lN1LIi9ew3cS; using zTkf1S5K08Un78dt3nMI; using zUIeOx6zxitRHtSLgew; using zUOVeZ5K4wQYHmKSDS31; using zXe3DYjNi3pEMFu9MU4y; using zfp4Quv775d47WyMiuWe; using zjItrvrVEX30GC0YDj97; using zkfxu1XcPxVcrjiVWFJ2; using zl60fOMrBTCWBDnxRf3L; using zp2K807rQWmxZNEfGau; using zr5gWKvrzXNliLPAQYJY; using zrCt1MjLZhNvGs9L5I3Y; using zsM5DIi0JAHAmyCYv8Y; using zuQ3Am52Kne3gTsjvskk; using zv3MJkjww16pBUtY60O6; using zyaj16XFNuk65w26qXwG; using zyrgRarZcKWWLNaHyxhg; [assembly: AssemblyProduct("Rippleheart")] [assembly: AssemblyInformationalVersion("0.1.3+88ea12c603308486f32e6ea5f6e4422caf694b7e")] [assembly: AssemblyTitle("Rippleheart")] [assembly: CompilationRelaxations(8)] [assembly: SuppressIldasm] [assembly: TargetFramework(".NETFramework,Version=v4.8.1", FrameworkDisplayName = ".NET Framework 4.8.1")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: AssemblyFileVersion("0.1.3.0")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyCompany("Rippleheart")] [assembly: AssemblyVersion("0.1.3.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; } } [CompilerGenerated] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] [Microsoft.CodeAnalysis.Embedded] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] [CompilerGenerated] [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> H6whRxAQH(string folderPath, StringBuilder logBuilder) { string text = Path.GetDirectoryName(folderPath) ?? string.Empty; string fileName = Path.GetFileName(folderPath); string[] array = fileName.Split(new char[1] { ',' }); List<string> list = new List<string>(); logBuilder.AppendLine(""); string[] array2 = array; foreach (string text2 in array2) { logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x43890927 ^ 0x43890927)) + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x6A358889 ^ 0x6A3588CB) + text + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1957007397 ^ -1957007469) + Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-649324416 ^ -649324338)) + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-119496860 ^ -119496950) + text2.Trim()); list.AddRange(Directory.GetFiles(text, text2.Trim(), SearchOption.AllDirectories)); } ConcurrentDictionary<string, string> jbAugIWbZ = new ConcurrentDictionary<string, string>(); DateTime now = DateTime.Now; int location = 0; int initialCount = Environment.ProcessorCount / 2; SemaphoreSlim caCVtGg64 = new SemaphoreSlim(initialCount); List<Task> list2 = new List<Task>(); foreach (string dKGPuXQDM in list) { caCVtGg64.Wait(); list2.Add(Task.Run(delegate { mag07OiE1(dKGPuXQDM, jbAugIWbZ, caCVtGg64, RippleheartConfig.CustomRelativePoint ?? string.Empty); })); Interlocked.Increment(ref location); } Task.WaitAll(list2.ToArray()); DateTime now2 = DateTime.Now; TimeSpan timeSpan = now2 - now; logBuilder.AppendLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x42EC0D6 ^ 0x42EC0A0)); logBuilder.AppendLine(string.Format(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x75DD9402 ^ 0x75DD94E6), Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-2010335782 ^ -2010335966)), location)); logBuilder.AppendLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-647774366 ^ -647774444)); logBuilder.AppendLine(""); Rippleheart_Log.cGfXW8IAf1(logBuilder.ToString()); return jbAugIWbZ; } internal static ConcurrentDictionary<string, string> c9mOeiZKt(string folderPath, StringBuilder logBuilder) { string text = Path.GetDirectoryName(folderPath) ?? string.Empty; string fileName = Path.GetFileName(folderPath); string[] array = fileName.Split(new char[1] { ',' }); List<string> list = new List<string>(); logBuilder.AppendLine(""); string[] array2 = array; foreach (string text2 in array2) { logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-227684669 ^ -227684395)) + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1641247720 ^ -1641247654) + text + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x57E5BCCF ^ 0x57E5BC87) + Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0xFE9C972 ^ 0xFE9C93C)) + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-22546644 ^ -22546828) + text2.Trim()); list.AddRange(Directory.GetFiles(text, text2.Trim(), SearchOption.AllDirectories)); } ConcurrentDictionary<string, string> JmmcNXwL1 = new ConcurrentDictionary<string, string>(); DateTime now = DateTime.Now; int location = 0; int initialCount = Environment.ProcessorCount / 2; SemaphoreSlim TasJXLjWB = new SemaphoreSlim(initialCount); List<Task> list2 = new List<Task>(); foreach (string M5Adi6fHN in list) { TasJXLjWB.Wait(); list2.Add(Task.Run(delegate { mag07OiE1(M5Adi6fHN, JmmcNXwL1, TasJXLjWB, RippleheartConfig.CustomRelativePoint ?? string.Empty); })); Interlocked.Increment(ref location); } Task.WaitAll(list2.ToArray()); DateTime now2 = DateTime.Now; TimeSpan timeSpan = now2 - now; logBuilder.AppendLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x1983FF40 ^ 0x1983FE20)); logBuilder.AppendLine(string.Format(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1532652243 ^ -1532652317), Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1563489398 ^ -1563489670)), location, Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x51235022 ^ 0x51235202)), timeSpan)); logBuilder.AppendLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x51235022 ^ 0x51235142)); logBuilder.AppendLine(""); return JmmcNXwL1; } internal static ConcurrentDictionary<string, string> f8AI0Lacw() { string path = Path.Combine(Paths.ConfigPath, Rippleheart_YamlConfig.F29XDk1HHr() ?? ""); string[] files = Directory.GetFiles(path, xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x1868805 ^ 0x1868A51), SearchOption.AllDirectories); List<string> list = new List<string>(files.Length); list.AddRange(files); List<string> list2 = list; ConcurrentDictionary<string, string> yL3t3iwFy = new ConcurrentDictionary<string, string>(); DateTime now = DateTime.Now; int location = 0; int initialCount = Environment.ProcessorCount / 2; SemaphoreSlim msxqS43MG = new SemaphoreSlim(initialCount); List<Task> list3 = new List<Task>(); foreach (string m9k887h3W in list2) { msxqS43MG.Wait(); list3.Add(Task.Run(delegate { VYD7NJRrG(m9k887h3W, yL3t3iwFy, msxqS43MG); })); Interlocked.Increment(ref location); } Task.WaitAll(list3.ToArray()); DateTime now2 = DateTime.Now; TimeSpan timeSpan = now2 - now; return yL3t3iwFy; } private static string kM6WLlY3p(string fullPath, string breakpoint) { int num = fullPath.IndexOf(breakpoint); return fullPath.Substring(num + breakpoint.Length); } internal static void mag07OiE1(string filePath, ConcurrentDictionary<string, string> fileHashes, SemaphoreSlim semaphore, string yy) { try { string value = JqBnOp980(filePath); string key = kM6WLlY3p(filePath, yy); fileHashes.TryAdd(key, value); } finally { semaphore.Release(); } } internal static void VYD7NJRrG(string filePath, ConcurrentDictionary<string, string> fileHashes, SemaphoreSlim semaphore) { try { string value = JqBnOp980(filePath); string fileName = Path.GetFileName(filePath); fileHashes.TryAdd(fileName, value); } finally { semaphore.Release(); } } internal static string JqBnOp980(string filePath) { FMK3UX58txWclopHacPd fMK3UX58txWclopHacPd = new FMK3UX58txWclopHacPd(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) { fMK3UX58txWclopHacPd.BLiv401oxpG(array, 0, len); } byte[] array2 = new byte[fMK3UX58txWclopHacPd.IrKv4IAUpLI()]; fMK3UX58txWclopHacPd.HQnvUGkH5AD(array2, 0); StringBuilder stringBuilder = new StringBuilder(); byte[] array3 = array2; foreach (byte b in array3) { stringBuilder.Append(b.ToString(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-668466269 ^ -668466695))); } return stringBuilder.ToString(); } } public class DB { internal static bool sHsSY2u4o(ConcurrentDictionary<string, string> clientHashes, ConcurrentDictionary<string, string> serverHashes, ConcurrentDictionary<string, string> greylistHashes, StringBuilder logBuilder) { if (nAMwkXX6H(clientHashes, greylistHashes).Count != nAMwkXX6H(serverHashes, greylistHashes).Count) { List<KeyValuePair<string, string>> list = nAMwkXX6H(serverHashes, greylistHashes).Except(nAMwkXX6H(clientHashes, greylistHashes)).ToList(); List<KeyValuePair<string, string>> list2 = nAMwkXX6H(clientHashes, greylistHashes).Except(nAMwkXX6H(serverHashes, greylistHashes)).ToList(); if (list.Any()) { int num = 1; logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x3EA1C58C ^ 0x3EA1C7EE))); foreach (KeyValuePair<string, string> item in list) { logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x7F1305AA ^ 0x7F1307C6)) + string.Format(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0xB0EE17E ^ 0xB0EE308), num++, item.Key)); } } if (list2.Any()) { int num = 1; logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x2C81E37 ^ 0x2C81CBF))); foreach (KeyValuePair<string, string> item2 in list2) { logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x51235022 ^ 0x5123524E)) + string.Format(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x6C387DD8 ^ 0x6C387FAE), num++, item2.Key)); } num.ToString(); } return false; } bool result = true; ConcurrentDictionary<string, string> concurrentDictionary = nAMwkXX6H(clientHashes, greylistHashes); ConcurrentDictionary<string, string> concurrentDictionary2 = nAMwkXX6H(serverHashes, greylistHashes); foreach (KeyValuePair<string, string> item3 in concurrentDictionary) { if (!concurrentDictionary2.TryGetValue(item3.Key, out var value) || value != item3.Value) { logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1262959519 ^ -1262958861)) ?? "").Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1649106497 ^ -1649106141), item3.Key).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1189911049 ^ -1189910703), item3.Value) .Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0xFE9C972 ^ 0xFE9CBC2), value); result = false; } } return result; } internal static ConcurrentDictionary<string, string> nAMwkXX6H(ConcurrentDictionary<string, string> Hashes, ConcurrentDictionary<string, string> greylist) { ConcurrentDictionary<string, string> concurrentDictionary = new ConcurrentDictionary<string, string>(); foreach (KeyValuePair<string, string> Hash in Hashes) { if (!LLBGChQsr(Hash.Value, greylist)) { concurrentDictionary.TryAdd(Hash.Key, Hash.Value); } } return concurrentDictionary; } internal static bool LLBGChQsr(string value, ConcurrentDictionary<string, string> greylist) { foreach (KeyValuePair<string, string> item in greylist) { if (item.Value == value) { return true; } } return false; } internal static void IfmFjsiAj(string server, StringBuilder logBuilder) { string fK0l45Ie1 = server; StringBuilder anex0MJGp = logBuilder; Task.Run(delegate { RippleheartConfig.ServerHashes = MTHC.H6whRxAQH(fK0l45Ie1, anex0MJGp); }); Task.Run(delegate { RippleheartConfig.GreylistHashes = MTHC.f8AI0Lacw(); }); } internal static Task<bool> gWGps7V9J(ZPackage pkg, StringBuilder logBuilder) { byte[] serializedData = pkg.ReadByteArray(); ConcurrentDictionary<string, string> clientHashes = Rippleheart_CUtils.LlQXoGXSXH(serializedData); if (RippleheartConfig.ServerHashes != null && RippleheartConfig.GreylistHashes != null) { logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-28390372 ^ -28389722))); bool result = sHsSY2u4o(clientHashes, RippleheartConfig.ServerHashes, RippleheartConfig.GreylistHashes, logBuilder); return Task.FromResult(result); } logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-2010335782 ^ -2010335458))); return Task.FromResult(result: false); } } [BepInPlugin("HsgtLgt.Rippleheart", "Rippleheart", "0.1.3")] public class Rippleheart : BaseUnityPlugin { internal readonly Harmony YZyBqty32 = new Harmony(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x318686D9 ^ 0x318685C5)); public void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-28390372 ^ -28389678)); YZyBqty32.PatchAll(); } public void Update() { zS5mUT1NE(); } private void zS5mUT1NE() { if (RippleheartConfig.TvN && !ZNet.instance.IsServer() && ZRoutedRpc.instance != null) { if (ExELf7X35txkStnbddc.YWvXj82XDY()) { RippleheartConfig.TvN = false; } RippleheartConfig.elapsedTime += Time.deltaTime; if (RippleheartConfig.elapsedTime >= RippleheartConfig.ScheduleCheck) { ExELf7X35txkStnbddc.yK9XMaurtH(); RippleheartConfig.elapsedTime = 0f; } } if (RippleheartConfig.TvN && Input.GetKeyDown((KeyCode)287) && !ZNet.instance.IsServer() && ZRoutedRpc.instance != null) { ExELf7X35txkStnbddc.yK9XMaurtH(); } } } public static class RippleheartConfig { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static string? Al4Qy3jLv; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static string? cP2RIJnGN; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static float Dg0EtpIfW; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static string? C3Xf6N8Ub; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static bool MQLLiBt5U; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] private static bool ymaHo5y9m; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static bool R4rUNUmT2; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static float yhiNZ6Njl; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static bool Um54OdIWH = false; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] private static ConcurrentDictionary<string, string>? C2YYm56qk; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] private static ConcurrentDictionary<string, string>? dPG6vLSBF; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static string O4XCTgGbd = xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1198754830 ^ -1198755660); [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] private static int DZhgvS7QA; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] private static float qhLz6JOTX; public static string? ServerValidationDirectory { [CompilerGenerated] get { return Al4Qy3jLv; } [CompilerGenerated] set { Al4Qy3jLv = value; } } public static string? ClientValidationDirectory { [CompilerGenerated] get { return cP2RIJnGN; } [CompilerGenerated] set { cP2RIJnGN = value; } } public static float ScheduleCheck { [CompilerGenerated] get { return Dg0EtpIfW; } [CompilerGenerated] set { Dg0EtpIfW = value; } } public static string? CustomRelativePoint { [CompilerGenerated] get { return C3Xf6N8Ub; } [CompilerGenerated] set { C3Xf6N8Ub = value; } } public static bool LogSwitch { [CompilerGenerated] get { return MQLLiBt5U; } [CompilerGenerated] set { MQLLiBt5U = value; } } public static bool DebugSwitch { [CompilerGenerated] get { return ymaHo5y9m; } [CompilerGenerated] set { ymaHo5y9m = value; } } public static bool ResetLogSwitch { [CompilerGenerated] get { return R4rUNUmT2; } [CompilerGenerated] set { R4rUNUmT2 = value; } } public static float ResetLog { [CompilerGenerated] get { return yhiNZ6Njl; } [CompilerGenerated] set { yhiNZ6Njl = value; } } public static bool TvN { [CompilerGenerated] get { return Um54OdIWH; } [CompilerGenerated] set { Um54OdIWH = value; } } public static ConcurrentDictionary<string, string>? ServerHashes { [CompilerGenerated] get { return C2YYm56qk; } [CompilerGenerated] set { C2YYm56qk = value; } } public static ConcurrentDictionary<string, string>? GreylistHashes { [CompilerGenerated] get { return dPG6vLSBF; } [CompilerGenerated] set { dPG6vLSBF = value; } } public static string RpcName { [CompilerGenerated] get { return O4XCTgGbd; } [CompilerGenerated] set { O4XCTgGbd = value; } } public static int a { [CompilerGenerated] get { return DZhgvS7QA; } [CompilerGenerated] set { DZhgvS7QA = value; } } public static float elapsedTime { [CompilerGenerated] get { return qhLz6JOTX; } [CompilerGenerated] set { qhLz6JOTX = value; } } } } namespace NERudHXXeHgk2mWW0To { internal class ExELf7X35txkStnbddc { internal static void yK9XMaurtH() { ZNetPeer item = xLCXrH2YTS().Item2; if (item != null) { RippleheartConfig.TvN = false; if (RippleheartConfig.RpcName != null) { PWNX5I0t5G(RippleheartConfig.RpcName, item, 1); } } } internal static bool YWvXj82XDY() { return Rippleheart_Reflection.GetPrivateField<bool>(Game.instance, xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-521990306 ^ -521991134)); } internal static async void PWNX5I0t5G(string rpc, ZNetPeer peer, int tt) { StringBuilder h9lX2Aqv5k = new StringBuilder(); Task<byte[]> task = Task.Run(delegate { Debug.Log((object)xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1625559140 ^ -1625559988)); return Rippleheart_CUtils.uURXeSZdgE(MTHC.c9mOeiZKt(Path.Combine(Paths.GameRootPath) + RippleheartConfig.ClientValidationDirectory, h9lX2Aqv5k)); }); byte[] bytes = await task; Rippleheart_Log.cGfXW8IAf1(h9lX2Aqv5k.ToString()); ZPackage package = new ZPackage(); package.Write(tt); package.Write(bytes); peer.m_rpc.Invoke(rpc, new object[1] { package }); } internal static (long, ZNetPeer?) xLCXrH2YTS() { //IL_00e4: Unknown result type (might be due to invalid IL or missing references) if (ZRoutedRpc.instance == null) { return (0L, null); } object instance = ZRoutedRpc.instance; if ((Object)(object)ZNet.instance == (Object)null) { return (0L, null); } ZNetPeer serverPeer = ZNet.instance.GetServerPeer(); if (serverPeer == null) { return (0L, null); } object[] args = new object[1] { serverPeer.m_uid }; object obj = Rippleheart_Reflection.CHFXyfMHWL(instance, xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-668466269 ^ -668467137)); object obj2 = Rippleheart_Reflection.CHFXyfMHWL(instance, xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1279693 ^ -1279347), args); long item = ((obj != null) ? ((long)obj) : 0); ZNetPeer item2 = ((obj2 == null) ? ((ZNetPeer)null) : ((ZNetPeer)obj2)); return (item, item2); } } } namespace Rippleheart { public class Rippleheart_CUtils { internal static ConcurrentDictionary<string, string> LlQXoGXSXH(byte[] serializedData) { using MemoryStream serializationStream = new MemoryStream(serializedData); BinaryFormatter binaryFormatter = new BinaryFormatter(); return (ConcurrentDictionary<string, string>)binaryFormatter.Deserialize(serializationStream); } internal static byte[] uURXeSZdgE(ConcurrentDictionary<string, string> hashDictionary) { using MemoryStream memoryStream = new MemoryStream(); BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(memoryStream, hashDictionary); return memoryStream.ToArray(); } internal static DictionaryEntry Oq2XsCdi5b(OrderedDictionary dictionary, int index) { return dictionary.Cast<DictionaryEntry>().ElementAtOrDefault(index); } } public class Rippleheart_Log { internal static System.Timers.Timer? TX1X0Cs1f2; internal static string? DTmX7xXmBb; public static void StartLogging() { if (RippleheartConfig.LogSwitch) { bSHX1ceRwo(); if (RippleheartConfig.ResetLogSwitch) { lO7XTudlsH(); } else { nt8XheRboj(); } } } private static void bSHX1ceRwo() { DTmX7xXmBb = Path.Combine(Paths.ConfigPath, xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x63874F0 ^ 0x6387710)); } private static void lO7XTudlsH() { TX1X0Cs1f2 = new System.Timers.Timer(RippleheartConfig.ResetLog); TX1X0Cs1f2.Elapsed += OnLogResetTimerElapsed; TX1X0Cs1f2.Start(); } private static void nt8XheRboj() { WCVXIhVlQi(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-545060685 ^ -545059679))); } internal static void OnLogResetTimerElapsed(object sender, ElapsedEventArgs e) { tHRXO7MYHa(); WCVXIhVlQi(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1024716469 ^ -1024715409))); } private static void tHRXO7MYHa() { File.WriteAllText(DTmX7xXmBb, string.Empty); } internal static void WCVXIhVlQi(string message) { if (string.IsNullOrEmpty(DTmX7xXmBb)) { bSHX1ceRwo(); } string contents = string.Format(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x126192C7 ^ 0x12619693), DateTime.Now, message); File.AppendAllText(DTmX7xXmBb, contents); } internal static void cGfXW8IAf1(string message) { if (RippleheartConfig.DebugSwitch) { WCVXIhVlQi(message); } } } public class Rippleheart_Patch { [HarmonyPatch(typeof(ZNet), "Awake")] public static class EnableOnDedicatedServer { public static void Prefix(ref ZNet __instance) { Rippleheart_YamlConfig.LoadLanguageFile(Rippleheart_YamlConfig.pHrXfFrm1Q()); if (__instance.IsServer() || __instance.IsDedicated()) { ZLog.Log((object)xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-738647824 ^ -738646888)); Rippleheart_YamlConfig.Init(); try { RippleheartConfig.ServerValidationDirectory = Rippleheart_YamlConfig.GetValueByKey<string>(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x43890927 ^ 0x43890D8F))); RippleheartConfig.ClientValidationDirectory = Rippleheart_YamlConfig.GetValueByKey<string>(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1105270302 ^ -1105269452))); RippleheartConfig.ScheduleCheck = Rippleheart_YamlConfig.GetValueByKey<int>(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-394187240 ^ -394188004))); RippleheartConfig.CustomRelativePoint = Rippleheart_YamlConfig.GetValueByKey<string>(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1611425120 ^ -1611423860))); RippleheartConfig.LogSwitch = Rippleheart_YamlConfig.GetValueByKey<bool>(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1641247720 ^ -1641248442))); RippleheartConfig.DebugSwitch = Rippleheart_YamlConfig.GetValueByKey<bool>(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x1DC2B366 ^ 0x1DC2B618))); RippleheartConfig.ResetLogSwitch = Rippleheart_YamlConfig.GetValueByKey<bool>(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-113519131 ^ -113520569))); RippleheartConfig.ResetLog = Rippleheart_YamlConfig.GetValueByKey<float>(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x5E1B85CC ^ 0x5E1B8000))); Rippleheart_Log.StartLogging(); } catch (InvalidCastException ex) { ZLog.Log((object)(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-2067089935 ^ -2067091429) + ex.Message)); } catch (Exception ex2) { ZLog.Log((object)(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-637888478 ^ -637886914) + ex2.Message)); } if (RippleheartConfig.ServerValidationDirectory != null) { StringBuilder stringBuilder = new StringBuilder(); DB.IfmFjsiAj(RippleheartConfig.ServerValidationDirectory, stringBuilder); Rippleheart_Log.WCVXIhVlQi(stringBuilder.ToString()); } } } } [HarmonyPatch(typeof(ZNet), "OnNewConnection")] public static class RegisterAndCheckVersion { public class RPC_channel { internal class R6HUNkXcPl1nvsluTL5 { internal static async Task RR6XJRNIfw(ZRpc rpc, ZPackage pkg) { switch (pkg.ReadInt()) { case 0: { string version = pkg.ReadString(); ZLog.Log((object)Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x5D3FE7B ^ 0x5D3F9C3)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1198754830 ^ -1198755474), xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-2067089935 ^ -2067089683)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1253962526 ^ -1253962172), xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x6C387DD8 ^ 0x6C387B68)) .Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(--1168537783 ^ 0x45A67A07), version)); if (version != xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1455051066 ^ -1455052682)) { ZLog.Log((object)Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-326123057 ^ -326121979)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0xFE9C972 ^ 0xFE9CBEE), xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-571886394 ^ -571885606))); rpc.Invoke(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1378811570 ^ -1378810140), new object[1] { 3 }); } else { jpjXi4uaUC.Add(rpc); ZPackage package = H94XKHKjm8(1); rpc.Invoke(RippleheartConfig.RpcName, new object[1] { package }); } break; } case 1: { ZNetPeer peer = GetPeer(rpc); if (peer == null) { await xYRXAfoXst(rpc, pkg, null); } else if (!ZNet.instance.IsAdmin(peer.m_socket.GetHostName())) { await xYRXAfoXst(rpc, pkg, peer); } else { Rippleheart_Log.WCVXIhVlQi(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1253962526 ^ -1253962946)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x2C4799F8 ^ 0x2C479B64), peer.m_playerName)); } break; } default: ZLog.Log((object)xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x63874F0 ^ 0x6387316)); break; } } internal static ZNetPeer GetPeer(ZRpc rpc) { List<ZNetPeer> connectedPeers = ZNet.instance.GetConnectedPeers(); foreach (ZNetPeer item in connectedPeers) { if (item.m_rpc == rpc) { return item; } } return null; } internal static async Task xYRXAfoXst(ZRpc rpc, ZPackage pkg, ZNetPeer peer, int num = 0) { StringBuilder logBuilder = new StringBuilder(); logBuilder.AppendLine(""); logBuilder.AppendLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1539687965 ^ -1539686615)); if (peer == null) { logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-22546644 ^ -22548426)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-448779850 ^ -448779478), rpc.GetSocket().GetHostName())); } else if (num == 0) { logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-705181714 ^ -705183542)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1455051066 ^ -1455051686), peer.m_playerName.ToString())); } else { logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1147765609 ^ -1147765837)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x3B6D1F8 ^ 0x3B6D364), peer.m_playerName.ToString())); } logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1158868417 ^ -1158867695)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1186171331 ^ -1186171743), RippleheartConfig.a++.ToString()).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(--862294728 ^ 0x3365906E), RippleheartConfig.ScheduleCheck.ToString())); Task<bool> task = DB.gWGps7V9J(pkg, logBuilder); if (await task) { logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-394187240 ^ -394188512))); logBuilder.AppendLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-2067089935 ^ -2067090765)); bool newTvN = true; ZPackage pkg2 = new ZPackage(); pkg2.Write(2); pkg2.Write(newTvN); rpc.Invoke(RippleheartConfig.RpcName, new object[1] { pkg2 }); Rippleheart_Log.cGfXW8IAf1(logBuilder.ToString()); } else { logBuilder.AppendLine(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-458558334 ^ -458558520))); logBuilder.AppendLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x42EC0D6 ^ 0x42EC782)); logBuilder.AppendLine(""); ZLog.LogError((object)logBuilder.ToString()); Rippleheart_Log.WCVXIhVlQi(logBuilder.ToString()); rpc.Invoke(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x43890927 ^ 0x43890E8D), new object[1] { 3 }); } } } internal class I240ZNXdP0lNXdKalNW { internal static async Task FMXXb0Ej5P(ZRpc rpc, ZPackage pkg) { switch (pkg.ReadInt()) { case 0: { string version = pkg.ReadString(); ZLog.Log((object)Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-2067089935 ^ -2067087995)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x1983FF40 ^ 0x1983FDDC), xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1741194240 ^ -1741193444)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x31068D6 ^ 0x3106A70), version) .Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-119496860 ^ -119497260), xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-32899180 ^ -32900828))); if (version != xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-624770007 ^ -624770407)) { ZLog.LogWarning((object)Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x63874F0 ^ 0x6387C76)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-738647824 ^ -738647444), xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-32899180 ^ -32899960))); } else { ZLog.Log((object)Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x3414F58C ^ 0x3414FD14)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1253962526 ^ -1253962114), xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x1364F740 ^ 0x1364F45C))); } break; } case 1: { ZLog.Log((object)xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1455051066 ^ -1455053204)); iCpXtTPJ3h(pkg); ZPackage package = await YVGXqdvrd4(1); rpc.Invoke(RippleheartConfig.RpcName, new object[1] { package }); break; } case 2: { bool tvN = pkg.ReadBool(); RippleheartConfig.TvN = tvN; break; } default: ZLog.Log((object)xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x3E9725D3 ^ 0x3E972D19)); break; } } internal static void iCpXtTPJ3h(ZPackage pkg) { byte[] buffer = pkg.ReadByteArray(); using MemoryStream serializationStream = new MemoryStream(buffer); BinaryFormatter binaryFormatter = new BinaryFormatter(); object obj = binaryFormatter.Deserialize(serializationStream); if (obj is Dictionary<string, object> dictionary) { RippleheartConfig.ClientValidationDirectory = (string)dictionary[Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-326123057 ^ -326122215))]; RippleheartConfig.ScheduleCheck = (float)dictionary[Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x1983FF40 ^ 0x1983FA44))]; RippleheartConfig.CustomRelativePoint = (string)dictionary[Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(--862294728 ^ 0x336597E4))]; } else { ZLog.LogWarning((object)xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x29E32C6A ^ 0x29E32468)); } } internal static async Task<ZPackage> YVGXqdvrd4(int logo) { StringBuilder V35X8OQRqT = new StringBuilder(); Task<byte[]> task = Task.Run(() => Rippleheart_CUtils.uURXeSZdgE(MTHC.c9mOeiZKt(Path.Combine(Paths.GameRootPath) + RippleheartConfig.ClientValidationDirectory, V35X8OQRqT))); byte[] bytes = await task; ZPackage package = new ZPackage(); package.Write(logo); package.Write(bytes); Rippleheart_Log.cGfXW8IAf1(V35X8OQRqT.ToString()); return package; } } internal static List<ZRpc> jpjXi4uaUC = new List<ZRpc>(); internal static ZPackage H94XKHKjm8(int logo) { //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Expected O, but got Unknown Dictionary<string, object> dictionary = new Dictionary<string, object>(); if (RippleheartConfig.ClientValidationDirectory != null && RippleheartConfig.CustomRelativePoint != null && RippleheartConfig.ScheduleCheck != 0f) { dictionary.Add(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-769380368 ^ -769381594)), RippleheartConfig.ClientValidationDirectory); dictionary.Add(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-152441946 ^ -152441182)), RippleheartConfig.ScheduleCheck); dictionary.Add(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-106473237 ^ -106471993)), RippleheartConfig.CustomRelativePoint); } byte[] array; using (MemoryStream memoryStream = new MemoryStream()) { BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(memoryStream, dictionary); array = memoryStream.ToArray(); } ZPackage val = new ZPackage(); val.Write(logo); val.Write(array); return val; } internal static void P8wXPtKa2P(string rpc, ZRpc peer, int logo) { //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Expected O, but got Unknown Dictionary<string, object> dictionary = new Dictionary<string, object>(); if (RippleheartConfig.ClientValidationDirectory != null && RippleheartConfig.CustomRelativePoint != null && RippleheartConfig.ScheduleCheck != 0f) { dictionary.Add(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1024716469 ^ -1024715363)), RippleheartConfig.ClientValidationDirectory); dictionary.Add(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-223609414 ^ -223610690)), RippleheartConfig.ScheduleCheck); dictionary.Add(Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x126192C7 ^ 0x126197EB)), RippleheartConfig.CustomRelativePoint); byte[] array; using (MemoryStream memoryStream = new MemoryStream()) { BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(memoryStream, dictionary); array = memoryStream.ToArray(); } ZPackage val = new ZPackage(); val.Write(logo); val.Write(array); peer.Invoke(rpc, new object[1] { val }); } else { ZLog.LogWarning((object)Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x7059C7E0 ^ 0x7059C15E))); } } } public static void Prefix(ZNetPeer peer, ref ZNet __instance) { peer.m_rpc.Register<ZPackage>(RippleheartConfig.RpcName, (Action<ZRpc, ZPackage>)StUXV1LgeJ); if (RippleheartConfig.RpcName != null) { KPjXuj0yc9(RippleheartConfig.RpcName, peer); } } internal static void KPjXuj0yc9(string rpc, ZNetPeer peer) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown ZLog.Log((object)xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-845198606 ^ -845198156)); ZPackage val = new ZPackage(); val.Write(0); val.Write(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-22546644 ^ -22548068)); peer.m_rpc.Invoke(rpc, new object[1] { val }); } private static async void StUXV1LgeJ(ZRpc rpc, ZPackage package) { if (ZNet.instance.IsServer()) { await RPC_channel.R6HUNkXcPl1nvsluTL5.RR6XJRNIfw(rpc, package); } else { await RPC_channel.I240ZNXdP0lNXdKalNW.FMXXb0Ej5P(rpc, package); } } } [HarmonyPatch(typeof(ZNet), "RPC_PeerInfo")] public static class VerifyClient { public static bool Prefix(ZRpc rpc, ZPackage pkg, ref ZNet __instance) { if (__instance.IsServer() && !RegisterAndCheckVersion.RPC_channel.jpjXi4uaUC.Contains(rpc)) { ZLog.LogWarning((object)Rippleheart_YamlConfig.GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1435716683 ^ -1435714717)).Replace(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-2010335782 ^ -2010335418), xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x77C7029E ^ 0x77C70182))); rpc.Invoke(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x7059C7E0 ^ 0x7059C04A), new object[1] { 3 }); return false; } return true; } } [HarmonyPatch(typeof(ZNet), "Disconnect")] public static class RemoveDisconnectedPeerFromVerified { public static void Prefix(ZNetPeer peer, ref ZNet __instance) { if (__instance.IsServer()) { RegisterAndCheckVersion.RPC_channel.jpjXi4uaUC.Remove(peer.m_rpc); } } } } public class Rippleheart_Reflection { internal static object? CHFXyfMHWL(object instance, string name, object[]? args = null) { MethodInfo method = instance.GetType().GetMethod(name, BindingFlags.Instance | BindingFlags.NonPublic); if (method == null) { Type[] types = ((args == null) ? Type.EmptyTypes : args.Select((object arg) => arg.GetType()).ToArray()); method = instance.GetType().GetMethod(name, types); } if (method == null) { Debug.LogError((object)(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-28390372 ^ -28392216) + instance.GetType()?.ToString() + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-870235216 ^ -870233266) + name)); return null; } return method.Invoke(instance, args); } public static T? GetPrivateField<T>(object instance, string name) { FieldInfo field = instance.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic); if (field == null) { Debug.LogError((object)(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x75F18C4E ^ 0x75F1855C) + name + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1158868417 ^ -1158866141) + instance.GetType()?.ToString() + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-268832191 ^ -268829845))); return default(T); } return (T)field.GetValue(instance); } public static T? GetPrivateField<T>(Type type, string name) { FieldInfo field = type.GetField(name, BindingFlags.Static | BindingFlags.NonPublic); if (field == null) { Debug.LogError((object)(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-649324416 ^ -649326190) + name + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x1364F740 ^ 0x1364FE5C) + type?.ToString() + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-845198606 ^ -845200424))); return default(T); } return (T)field.GetValue(null); } } public class Rippleheart_YamlConfig { internal static Dictionary<string, object> MgUXHlrti3 = new Dictionary<string, object>(); internal static Dictionary<string, string> seNXUY7H37 = new Dictionary<string, string>(); [SpecialName] internal static string hiWXkBoALM() { return xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1279693 ^ -1282037); } [SpecialName] internal static string F29XDk1HHr() { return xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x5E260871 ^ 0x5E260B6D) + GetLocalizedString(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1232303071 ^ -1232304805)); } [SpecialName] internal static string W5mXxxN9uZ() { return xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-2058684143 ^ -2058686323); } [SpecialName] internal static string HWDXBlFqpw() { return Path.Combine(Paths.ConfigPath, hiWXkBoALM()); } [SpecialName] internal static string AXaXRy3FiL() { return Path.Combine(Paths.ConfigPath, F29XDk1HHr()); } [SpecialName] internal static string pHrXfFrm1Q() { return Path.Combine(Paths.ConfigPath, W5mXxxN9uZ()); } public static T GetValueByKey<T>(string key) { if (MgUXHlrti3.ContainsKey(key)) { object obj = MgUXHlrti3[key]; if (!(obj is T result)) { try { return (T)Convert.ChangeType(obj, typeof(T)); } catch (InvalidCastException) { throw new InvalidCastException(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1186171331 ^ -1186168859)); } } return result; } throw new KeyNotFoundException(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x504F062C ^ 0x504F0C10)); } public static void Init() { MgUXHlrti3.Clear(); Directory.CreateDirectory(AXaXRy3FiL()); if (!File.Exists(HWDXBlFqpw())) { VdhXprEV8R(HWDXBlFqpw()); } bXVX9Ia8eR(HWDXBlFqpw()); } public static void LoadLanguageFile(string LanguageFilePath) { if (File.Exists(LanguageFilePath)) { ReadExternalLanguageFile(LanguageFilePath); return; } string selectedLanguage = Localization.instance.GetSelectedLanguage(); IkiXFbLenL(selectedLanguage); } internal static void IkiXFbLenL(string language) { if (language == xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1539687965 ^ -1539689573)) { ReadEmbeddedLanguageFile(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x63874F0 ^ 0x6387E7A)); } else { ReadEmbeddedLanguageFile(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1641247720 ^ -1641249054)); } } internal static void VdhXprEV8R(string configPath) { string text = Path.Combine(Paths.PluginPath, xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x6C58A38B ^ 0x6C58A1DF)); string text2 = xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1641247720 ^ -1641248914); using StreamWriter streamWriter = File.CreateText(configPath); streamWriter.WriteLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x7F1305AA ^ 0x7F130E34) + GetLocalizedString(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1435716683 ^ -1435715483))); streamWriter.WriteLine(); streamWriter.WriteLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1649106497 ^ -1649104309) + GetLocalizedString(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1649106497 ^ -1649104319))); streamWriter.WriteLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1098277800 ^ -1098280838) + GetLocalizedString(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1741194240 ^ -1741197270))); streamWriter.WriteLine(GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x6A358889 ^ 0x6A358C21)) + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1364941080 ^ -1364940880) + text); streamWriter.WriteLine(); streamWriter.WriteLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1364941080 ^ -1364939492) + GetLocalizedString(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0xC7A649E ^ 0xC7A68FA))); streamWriter.WriteLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-705181714 ^ -705180724) + GetLocalizedString(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-442042812 ^ -442041652))); streamWriter.WriteLine(GenerateConfigKey(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(0x318686D9 ^ 0x3186820F)) + xcoEP5vktPe4gsfqaJ9x.qWVvkL5Daf4(-1539687965 ^ -1539688261) + text2); streamWriter.WriteLine(); streamWriter.WriteLine(xcoEP5vktPe4gsfqaJ9x.qWVvkL5Da