diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ee2691c --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +# Rust build directory +target/ +nap.proto + +# Service configs +dispatch.toml +gateserver.toml +gameserver.toml +hallserver.toml +battleserver.toml +muipserver.toml + diff --git a/1321691809.blk b/1321691809.blk new file mode 100644 index 0000000..2078db1 Binary files /dev/null and b/1321691809.blk differ diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..eacb06c --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4504 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "const-random", + "getrandom 0.2.15", + "once_cell", + "version_check", + "zerocopy 0.7.35", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +dependencies = [ + "anstyle", + "once_cell", + "windows-sys 0.59.0", +] + +[[package]] +name = "anyhow" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "async-attributes" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.3.1", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", + "tokio", +] + +[[package]] +name = "async-io" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.4.0", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" +dependencies = [ + "async-attributes", + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "asynchronous-codec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a860072022177f903e59730004fb5dc13db9275b79bb2aef7ba8ce831956c233" +dependencies = [ + "bytes", + "futures-sink", + "futures-util", + "memchr", + "pin-project-lite", +] + +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atomic_enum" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99e1aca718ea7b89985790c94aad72d77533063fe00bc497bb79a7c2dae6a661" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "axum" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" +dependencies = [ + "axum-core", + "bytes", + "form_urlencoded", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bevy_app" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "454a8cfd134864dcdcba6ee56fb958531b981021bba6bb2037c9e3df6046603c" +dependencies = [ + "bevy_derive", + "bevy_ecs", + "bevy_tasks", + "bevy_utils", + "console_error_panic_hook", + "ctrlc", + "derive_more", + "downcast-rs", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "bevy_derive" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b962df2a1bef274ae76ec75279eb6f8ef0ffd85b5e4c43433f5d08ba57b3d071" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "bevy_ecs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b747210d7db09dfacc237707d4fd31c8b43d7744cd5e5829e2c4ca86b9e47baf" +dependencies = [ + "bevy_ecs_macros", + "bevy_ptr", + "bevy_tasks", + "bevy_utils", + "bitflags 2.8.0", + "concurrent-queue", + "derive_more", + "disqualified", + "fixedbitset 0.5.7", + "nonmax", + "petgraph", + "smallvec", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d36ba5874ee278d20f17b8934d2969f8fbab90f3ea3fcf8d3583814b3661ada" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bdb3a681c24abace65bf18ed467ad8befbedb42468b32e459811bfdb01e506c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", + "toml_edit", +] + +[[package]] +name = "bevy_ptr" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa65df6a190b7dfc84d79f09cf02d47ae046fa86a613e202c31559e06d8d3710" + +[[package]] +name = "bevy_tasks" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c28f2db2619203aa82342dbbe77e49aeea4f933212c0b7a1f285e94c4008e5b" +dependencies = [ + "async-executor", + "futures-channel", + "futures-lite", + "pin-project", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_utils" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f01088c048960ea50ee847c3f668942ecf49ed26be12a1585a5e59b6a941d9a" +dependencies = [ + "ahash 0.8.11", + "bevy_utils_proc_macros", + "getrandom 0.2.15", + "hashbrown 0.14.5", + "thread_local", + "tracing", + "web-time", +] + +[[package]] +name = "bevy_utils_proc_macros" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0c3244d543cc964545b7aa074f6fb18a915a7121cf3de5d7ed37a4aae8662d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "bigdecimal" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f31f3af01c5c65a07985c804d3366560e6fa7883d640a122819b14ec327482c" +dependencies = [ + "autocfg", + "libm", + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +dependencies = [ + "serde", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-padding" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blockfile" +version = "0.1.0" +dependencies = [ + "aes", + "byteorder", + "ecb", + "lz4_flex", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel 2.3.1", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "borsh" +version = "1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5430e3be710b68d984d1391c854eb431a9d548640711faa54eecb1df93db91cc" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8b668d39970baad5356d7c83a86fee3a539e6f93bf6764c97368243e17a0487" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" + +[[package]] +name = "cc" +version = "1.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4730490333d58093109dc02c23174c3f4d490998c3fed3cc8e82d57afedb9cf" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets 0.52.6", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clap" +version = "4.5.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "ctrlc" +version = "3.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" +dependencies = [ + "nix", + "windows-sys 0.59.0", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "disqualified" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9c272297e804878a2a4b707cfcfc6d2328b5bb936944613b4fdf2b9269afdfd" + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "ecb" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a8bfa975b1aec2145850fcaa1c6fe269a16578c44705a532ae3edc92b8881c7" +dependencies = [ + "cipher", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +dependencies = [ + "serde", +] + +[[package]] +name = "entity" +version = "0.1.0" +dependencies = [ + "sea-orm", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" +dependencies = [ + "event-listener 5.4.0", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "flatbuffers" +version = "24.12.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f1baf0dbf96932ec9a3038d57900329c015b0bfb7b63d904f3bc27e2b02a096" +dependencies = [ + "bitflags 1.3.2", + "rustc_version", +] + +[[package]] +name = "flatc-rust" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e61227926ef5b237af48bee74394cc4a5a221ebd10c5147a98e612f207851d" +dependencies = [ + "log", +] + +[[package]] +name = "flume" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +dependencies = [ + "futures-core", + "futures-sink", + "spin", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash 0.8.11", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.2", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "http" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", +] + +[[package]] +name = "inherent" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "iter-read" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071ed4cc1afd86650602c7b11aa2e1ce30762a1c27193201cb5cee9c6ebb1294" + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.169" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" + +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + +[[package]] +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +dependencies = [ + "value-bag", +] + +[[package]] +name = "lz4_flex" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" +dependencies = [ + "twox-hash", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "migration" +version = "0.1.0" +dependencies = [ + "async-std", + "entity", + "sea-orm-migration", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + +[[package]] +name = "multimap" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.8.0", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nonmax" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "ordered-float" +version = "3.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ouroboros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59" +dependencies = [ + "aliasable", + "ouroboros_macro", + "static_assertions", +] + +[[package]] +name = "ouroboros_macro" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset 0.4.2", + "indexmap", +] + +[[package]] +name = "pin-project" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "polling" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy 0.7.35", +] + +[[package]] +name = "prettyplease" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" +dependencies = [ + "proc-macro2", + "syn 2.0.96", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "proc-macro2" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", + "version_check", + "yansi", +] + +[[package]] +name = "prost" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f3e5beed80eb580c68e2c600937ac2c4eedabdfd5ef1e5b7ea4f3fba84497b" +dependencies = [ + "heck 0.5.0", + "itertools", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn 2.0.96", + "tempfile", +] + +[[package]] +name = "prost-derive" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "prost-types" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2f1e56baa61e93533aebc21af4d2134b70f66275e0fcdf3cbe43d77ff7e8fc" +dependencies = [ + "prost", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quote" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" +dependencies = [ + "zerocopy 0.8.14", +] + +[[package]] +name = "rand_mt" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9375873db1061df25ed185eb584cd8839196db7a43803daa0612c5ae53be5b5" +dependencies = [ + "rand_core 0.9.0", +] + +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags 2.8.0", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rkyv" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rsa" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47c75d7c5c6b673e58bf54d8544a9f432e3a925b0e80f7cd3602ab5c50c55519" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core 0.6.4", + "sha2", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "rust_decimal" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" +dependencies = [ + "arrayvec", + "borsh", + "bytes", + "num-traits", + "rand", + "rkyv", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.8.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + +[[package]] +name = "ryu" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sea-bae" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f694a6ab48f14bc063cfadff30ab551d3c7e46d8f81836c51989d548f44a2a25" +dependencies = [ + "heck 0.4.1", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "sea-orm" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a93194430b419da0801f404baf3b986399d6a2a4f43bc79bc96dea83f92ca43" +dependencies = [ + "async-stream", + "async-trait", + "bigdecimal", + "chrono", + "futures", + "log", + "ouroboros", + "rust_decimal", + "sea-orm-macros", + "sea-query", + "sea-query-binder", + "serde", + "serde_json", + "sqlx", + "strum", + "thiserror 1.0.69", + "time", + "tracing", + "url", + "uuid", +] + +[[package]] +name = "sea-orm-cli" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e6e0e741bfdf434e6f6aadab156ba4d439e78c9449048698d98fa377871224a" +dependencies = [ + "chrono", + "clap", + "dotenvy", + "glob", + "regex", + "sea-schema", + "tracing", + "tracing-subscriber", + "url", +] + +[[package]] +name = "sea-orm-macros" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d19e8f22fb474a8a622eb516c46885a080535d8d559386188f525977eaad32b3" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "sea-bae", + "syn 2.0.96", + "unicode-ident", +] + +[[package]] +name = "sea-orm-migration" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0bb76ba314552ce15e3a24778cf9c116fc1225fa406e48b0a36e5a3cdbc1e21" +dependencies = [ + "async-trait", + "clap", + "dotenvy", + "futures", + "sea-orm", + "sea-orm-cli", + "sea-schema", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "sea-query" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "085e94f7d7271c0393ac2d164a39994b1dff1b06bc40cd9a0da04f3d672b0fee" +dependencies = [ + "bigdecimal", + "chrono", + "inherent", + "ordered-float", + "rust_decimal", + "sea-query-derive", + "serde_json", + "time", + "uuid", +] + +[[package]] +name = "sea-query-binder" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0019f47430f7995af63deda77e238c17323359af241233ec768aba1faea7608" +dependencies = [ + "bigdecimal", + "chrono", + "rust_decimal", + "sea-query", + "serde_json", + "sqlx", + "time", + "uuid", +] + +[[package]] +name = "sea-query-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9834af2c4bd8c5162f00c89f1701fb6886119a88062cf76fe842ea9e232b9839" +dependencies = [ + "darling", + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.96", + "thiserror 1.0.69", +] + +[[package]] +name = "sea-schema" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef5dd7848c993f3789d09a2616484c72c9330cae2b048df59d8c9b8c0343e95" +dependencies = [ + "futures", + "sea-query", + "sea-schema-derive", +] + +[[package]] +name = "sea-schema-derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "debdc8729c37fdbf88472f97fd470393089f997a909e535ff67c544d18cfccf0" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "semver" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" + +[[package]] +name = "serde" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "serde_json" +version = "1.0.138" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core 0.6.4", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sqlx" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4410e73b3c0d8442c5f99b425d7a435b5ee0ae4167b3196771dd3f7a01be745f" +dependencies = [ + "sqlx-core", + "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", +] + +[[package]] +name = "sqlx-core" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a007b6936676aa9ab40207cde35daab0a04b823be8ae004368c0793b96a61e0" +dependencies = [ + "bigdecimal", + "bytes", + "chrono", + "crc", + "crossbeam-queue", + "either", + "event-listener 5.4.0", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashbrown 0.15.2", + "hashlink", + "indexmap", + "log", + "memchr", + "once_cell", + "percent-encoding", + "rust_decimal", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "sha2", + "smallvec", + "thiserror 2.0.11", + "time", + "tokio", + "tokio-stream", + "tracing", + "url", + "uuid", + "webpki-roots", +] + +[[package]] +name = "sqlx-macros" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3112e2ad78643fef903618d78cf0aec1cb3134b019730edb039b69eaf531f310" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn 2.0.96", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e9f90acc5ab146a99bf5061a7eb4976b573f560bc898ef3bf8435448dd5e7ad" +dependencies = [ + "dotenvy", + "either", + "heck 0.5.0", + "hex", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2", + "sqlx-core", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn 2.0.96", + "tempfile", + "tokio", + "url", +] + +[[package]] +name = "sqlx-mysql" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4560278f0e00ce64938540546f59f590d60beee33fffbd3b9cd47851e5fff233" +dependencies = [ + "atoi", + "base64", + "bigdecimal", + "bitflags 2.8.0", + "byteorder", + "bytes", + "chrono", + "crc", + "digest", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand", + "rsa", + "rust_decimal", + "serde", + "sha1", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror 2.0.11", + "time", + "tracing", + "uuid", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5b98a57f363ed6764d5b3a12bfedf62f07aa16e1856a7ddc2a0bb190a959613" +dependencies = [ + "atoi", + "base64", + "bigdecimal", + "bitflags 2.8.0", + "byteorder", + "chrono", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "itoa", + "log", + "md-5", + "memchr", + "num-bigint", + "once_cell", + "rand", + "rust_decimal", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror 2.0.11", + "time", + "tracing", + "uuid", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f85ca71d3a5b24e64e1d08dd8fe36c6c95c339a896cc33068148906784620540" +dependencies = [ + "atoi", + "chrono", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "serde_urlencoded", + "sqlx-core", + "time", + "tracing", + "url", + "uuid", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +dependencies = [ + "cfg-if", + "fastrand", + "getrandom 0.3.1", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "trigger-battle-server" +version = "0.0.1" +dependencies = [ + "dashmap 6.1.0", + "paste", + "serde", + "serde_json", + "tokio", + "tracing", + "trigger-encoding", + "trigger-fileconfig", + "trigger-logic", + "trigger-protocol", + "trigger-sv", +] + +[[package]] +name = "trigger-codegen" +version = "0.0.1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "trigger-cryptography" +version = "0.0.1" +dependencies = [ + "byteorder", + "rand", + "rand_mt", + "rsa", + "thiserror 2.0.11", +] + +[[package]] +name = "trigger-database" +version = "0.0.1" +dependencies = [ + "entity", + "migration", + "sea-orm", + "serde", + "tracing", +] + +[[package]] +name = "trigger-dispatch-server" +version = "0.0.1" +dependencies = [ + "axum", + "base64", + "serde", + "serde_json", + "thiserror 2.0.11", + "tokio", + "tracing", + "tracing-subscriber", + "trigger-cryptography", + "trigger-sv", +] + +[[package]] +name = "trigger-encoding" +version = "0.0.1" +dependencies = [ + "byteorder", + "paste", +] + +[[package]] +name = "trigger-fileconfig" +version = "0.0.1" +dependencies = [ + "blockfile", + "byteorder", + "const_format", + "flatbuffers", + "flatc-rust", + "paste", + "serde", + "serde_json", + "xxhash-rust", +] + +[[package]] +name = "trigger-game-server" +version = "0.0.1" +dependencies = [ + "dashmap 6.1.0", + "rand", + "serde", + "serde_json", + "thiserror 2.0.11", + "tokio", + "tracing", + "trigger-codegen", + "trigger-database", + "trigger-encoding", + "trigger-fileconfig", + "trigger-logic", + "trigger-protocol", + "trigger-sv", +] + +[[package]] +name = "trigger-gate-server" +version = "0.0.1" +dependencies = [ + "atomic_enum", + "base64", + "byteorder", + "dashmap 6.1.0", + "rand", + "serde", + "serde_json", + "thiserror 2.0.11", + "tokio", + "tokio-util", + "tracing", + "trigger-cryptography", + "trigger-database", + "trigger-encoding", + "trigger-protobuf", + "trigger-sv", +] + +[[package]] +name = "trigger-hall-server" +version = "0.0.1" +dependencies = [ + "bevy_app", + "bevy_derive", + "bevy_ecs", + "dashmap 6.1.0", + "paste", + "serde", + "serde_json", + "tokio", + "tracing", + "trigger-encoding", + "trigger-fileconfig", + "trigger-logic", + "trigger-protocol", + "trigger-sv", +] + +[[package]] +name = "trigger-logic" +version = "0.0.1" +dependencies = [ + "num_enum", + "prost", +] + +[[package]] +name = "trigger-muip-server" +version = "0.0.1" +dependencies = [ + "axum", + "dashmap 6.1.0", + "paste", + "serde", + "serde_json", + "tokio", + "tracing", + "trigger-encoding", + "trigger-fileconfig", + "trigger-logic", + "trigger-protocol", + "trigger-sv", +] + +[[package]] +name = "trigger-protobuf" +version = "0.0.1" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost", + "prost-build", + "prost-types", + "quote", + "syn 2.0.96", + "trigger-encoding", + "trigger-protobuf-derive", + "trigger-protocol", +] + +[[package]] +name = "trigger-protobuf-derive" +version = "0.1.0" +dependencies = [ + "quote", + "syn 2.0.96", +] + +[[package]] +name = "trigger-protocol" +version = "0.0.1" +dependencies = [ + "trigger-codegen", + "trigger-encoding", +] + +[[package]] +name = "trigger-sv" +version = "0.0.1" +dependencies = [ + "base64", + "byteorder", + "futures", + "iter-read", + "num_enum", + "serde", + "serde_json", + "thiserror 2.0.11", + "tokio", + "toml", + "tracing", + "tracing-subscriber", + "trigger-codegen", + "trigger-cryptography", + "trigger-database", + "trigger-encoding", + "trigger-protocol", + "zeromq", +] + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-ident" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" +dependencies = [ + "getrandom 0.2.15", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "value-bag" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.96", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "whoami" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +dependencies = [ + "redox_syscall", + "wasite", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad699df48212c6cc6eb4435f35500ac6fd3b9913324f938aea302022ce19d310" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a367f292d93d4eab890745e75a778da40909cab4d6ff8173693812f79c4a2468" +dependencies = [ + "zerocopy-derive 0.8.14", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3931cb58c62c13adec22e38686b559c86a30565e16ad6e8510a337cedc611e1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zeromq" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a4528179201f6eecf211961a7d3276faa61554c82651ecc66387f68fc3004bd" +dependencies = [ + "async-trait", + "asynchronous-codec", + "bytes", + "crossbeam-queue", + "dashmap 5.5.3", + "futures-channel", + "futures-io", + "futures-task", + "futures-util", + "log", + "num-traits", + "once_cell", + "parking_lot", + "rand", + "regex", + "thiserror 1.0.69", + "tokio", + "tokio-util", + "uuid", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..d337b2d --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,78 @@ +[workspace] +members = ["crates/*", "crates/trigger-protobuf/trigger-protobuf-derive", "crates/trigger-database/migration", "crates/trigger-database/entity", "crates/trigger-fileconfig/blockfile"] +resolver = "2" + +[workspace.package] +version = "0.0.1" + +[workspace.dependencies] +tokio = { version = "1.43.0", features = ["full"] } +tokio-util = "0.7.13" + +axum = "0.8.1" +futures = "0.3.31" +zeromq = { version = "0.4.1", features = ["tokio-runtime", "tcp-transport"] } + +# Database +sea-orm = { version = "1.1.4", features = ["sqlx-postgres", "runtime-tokio-rustls", "macros"] } + +# ECS +bevy_app = { version = "0.15.1", default-features = false } +bevy_ecs = { version = "0.15.1", default-features = false } +bevy_derive = "0.15.1" + +# Serialization +serde = { version = "1.0.217", features = ["derive"] } +serde_json = "1.0.138" +toml = "0.8.19" + +flatbuffers = "24.3.25" +flatc-rust = "0.2.0" + +base64 = "0.22.1" +lz4_flex = "0.11.3" + +# Debug +tracing = "0.1.41" +tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } + +# Cryptography +rsa = { version = "0.9.7", features = ["sha2"] } +rand = { version = "0.8.5" } +rand_mt = "5.0.0" +aes = "0.8.4" +ecb = { version = "0.1.2", features = ["alloc"] } + +# Util +paste = "1.0.15" +thiserror = "2.0.11" +dashmap = "6.1.0" +byteorder = "1.5.0" +num_enum = "0.7.3" +iter-read = "1.1.0" +atomic_enum = "0.3.0" + +const_format = "0.2.34" +xxhash-rust = { version = "0.8.15", features = ["const_xxh64"] } + +# Protobuf +prost = "0.13.4" +prost-types = "0.13.4" +prost-build = "0.13.4" + +# Code generation +proc-macro2 = "1.0.93" +syn = "2.0.96" +quote = "1.0.38" +prettyplease = "0.2.29" + +# Internal +trigger-sv = { path = "crates/trigger-sv" } +trigger-logic = { path = "crates/trigger-logic" } +trigger-cryptography = { path = "crates/trigger-cryptography" } +trigger-encoding = { path = "crates/trigger-encoding" } +trigger-codegen = { path = "crates/trigger-codegen" } +trigger-protobuf = { path = "crates/trigger-protobuf" } +trigger-protocol = { path = "crates/trigger-protocol" } +trigger-database = { path = "crates/trigger-database" } +trigger-fileconfig = { path = "crates/trigger-fileconfig" } diff --git a/ConfigScript/GMGroupDemo.json b/ConfigScript/GMGroupDemo.json new file mode 100644 index 0000000..3007c47 --- /dev/null +++ b/ConfigScript/GMGroupDemo.json @@ -0,0 +1,13 @@ +{ + "GMStringList": [ + "addavatar 0", + "addallweapon", + "addallequip", + "UnlockAllHollow", + "UnlockAllHollowBuff", + "UnlockAllCafeItem", + "finishquest 1 0", + "finishquest 3 0", + "addquest 5 4030136" + ] +} diff --git a/ConfigScript/Gm_Item_Black_List.json b/ConfigScript/Gm_Item_Black_List.json new file mode 100644 index 0000000..0676def --- /dev/null +++ b/ConfigScript/Gm_Item_Black_List.json @@ -0,0 +1,32 @@ +{ + "blackItemList": [ + { + "id": 2011, + "name": "男主" + }, + { + "id": 2021, + "name": "玲" + }, + { + "id": 50012, + "name": "ZYL的邦布" + }, + { + "id": 50013, + "name": "爱心猫猫" + }, + { + "id": 6011, + "name": "男主-推荐信" + }, + { + "id": 6021, + "name": "玲-推荐信" + }, + { + "id": 1011, + "name": "安比" + } + ] +} diff --git a/ConfigScript/MainCity_1.json b/ConfigScript/MainCity_1.json new file mode 100644 index 0000000..2d322ff --- /dev/null +++ b/ConfigScript/MainCity_1.json @@ -0,0 +1,8399 @@ +{ + "ID": 1, + "DefaultSectionID": 2, + "Sections": { + "1": { + "ID": 1, + "UnityScenePath": "MainCity_Street", + "BornTransform": "Street_PlayerPos_Default", + "SectionProgress": { + "ID": 100, + "OnAdd": [ + "Sec1_DefaultTrigger", + "Sec1_DefaultTrigger2" + ], + "OnEnter": [ + "Sec1_EnterTrigger1" + ], + "Events": { + "Sec1_DefaultTrigger": { + "ID": 100, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 101, + "TagID": 1 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 102, + "TagID": 2 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 103, + "TagID": 7 + } + ] + }, + "Sec1_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 1003 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 1006 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 1008 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 1009 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 1011 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 1018 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 2016 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 208, + "TagID": 2017 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 209, + "TagID": 2018 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 210, + "TagID": 2019 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 211, + "TagID": 2099 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 212, + "TagID": 4017 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 213, + "TagID": 4018 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 214, + "TagID": 4023 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 215, + "TagID": 4024 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 216, + "TagID": 4025 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 217, + "TagID": 4026 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 218, + "TagID": 4027 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 219, + "TagID": 4028 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 220, + "TagID": 4031 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 221, + "TagID": 4032 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 222, + "TagID": 4043 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 223, + "TagID": 4044 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 224, + "TagID": 4045 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 225, + "TagID": 4047 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 226, + "TagID": 4073 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 227, + "TagID": 4081 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 228, + "TagID": 4092 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 229, + "TagID": 4096 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 230, + "TagID": 4119 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 231, + "TagID": 4123 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 232, + "TagID": 4128 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 233, + "TagID": 5004 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 234, + "TagID": 5007 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 235, + "TagID": 5009 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 236, + "TagID": 5012 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 237, + "TagID": 5013 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 238, + "TagID": 5014 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 239, + "TagID": 5015 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 240, + "TagID": 7001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 241, + "TagID": 7002 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 242, + "TagID": 7003 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 243, + "TagID": 7005 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 244, + "TagID": 7006 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 245, + "TagID": 7007 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 246, + "TagID": 7008 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 247, + "TagID": 7009 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 248, + "TagID": 7010 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 249, + "TagID": 7011 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 250, + "TagID": 7012 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 251, + "TagID": 7013 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 252, + "TagID": 7014 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 253, + "TagID": 7023 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 254, + "TagID": 7024 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 255, + "TagID": 7102 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 256, + "TagID": 7103 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 257, + "TagID": 7106 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 258, + "TagID": 7107 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 259, + "TagID": 7108 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 260, + "TagID": 7109 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 261, + "TagID": 7110 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 262, + "TagID": 7111 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 263, + "TagID": 7112 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 264, + "TagID": 7113 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 265, + "TagID": 7114 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 266, + "TagID": 10022 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 267, + "TagID": 20281 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 268, + "TagID": 100301 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 269, + "TagID": 100303 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 270, + "TagID": 100503 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 271, + "TagID": 100603 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 272, + "TagID": 104201 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 273, + "TagID": 210201 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 274, + "TagID": 210202 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 275, + "TagID": 409056 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 276, + "TagID": 409057 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 277, + "TagID": 409059 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 278, + "TagID": 410206 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 279, + "TagID": 410403 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 280, + "TagID": 411403 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 281, + "TagID": 500022 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 282, + "TagID": 2030013 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 283, + "TagID": 7009190 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 284, + "TagID": 7010601 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 285, + "TagID": 20200101 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 286, + "TagID": 40101301 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 287, + "TagID": 40101302 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 288, + "TagID": 251011001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 289, + "TagID": 251011002 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 290, + "TagID": 251011004 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 291, + "TagID": 251011007 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 292, + "TagID": 251011008 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 293, + "TagID": 251011009 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 294, + "TagID": 251011011 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 295, + "TagID": 251011013 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 296, + "TagID": 251011018 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 297, + "TagID": 251011020 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 298, + "TagID": 304024101 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 299, + "TagID": 1206503001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 300, + "TagID": 1206503002 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 301, + "TagID": 1206503003 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 302, + "TagID": 1206503004 + } + ] + }, + "Sec1_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 10000001, + "TagIDs": [ + 1 + ], + "Participators": { + "1": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger10000001" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 10000002, + "TagIDs": [ + 2 + ], + "Participators": { + "2": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger10000002" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 10000016, + "TagIDs": [ + 7 + ], + "Participators": { + "7": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger10000016" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 10000007, + "TagIDs": [ + 1003 + ], + "Participators": { + "1003": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger10000007" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 10000023, + "TagIDs": [ + 1008 + ], + "Participators": { + "1008": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.8, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger10000023" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 10000024, + "TagIDs": [ + 1009 + ], + "Participators": { + "1009": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.8, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger10000024" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 307, + "InteractID": 10000028, + "TagIDs": [ + 1011 + ], + "Participators": { + "1011": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger10000028" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 308, + "InteractID": 15001601, + "TagIDs": [ + 1018 + ], + "Participators": { + "1018": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger15001601" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 309, + "InteractID": 10000015, + "TagIDs": [ + 2016 + ], + "Participators": { + "2016": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.8, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger10000015" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 310, + "InteractID": 10000013, + "TagIDs": [ + 2019 + ], + "Participators": { + "2019": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.4, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger10000013" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 311, + "InteractID": 15000301, + "TagIDs": [ + 2099 + ], + "Participators": { + "2099": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.4, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger15000301" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 312, + "InteractID": 40000009, + "TagIDs": [ + 4017 + ], + "Participators": { + "4017": "A", + "4018": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 313, + "InteractID": 40000012, + "TagIDs": [ + 4023 + ], + "Participators": { + "4023": "A", + "4024": "B", + "4025": "C", + "4026": "D" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 314, + "InteractID": 40000013, + "TagIDs": [ + 4027 + ], + "Participators": { + "4027": "A", + "4028": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 315, + "InteractID": 40000015, + "TagIDs": [ + 4031 + ], + "Participators": { + "4031": "A", + "4032": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 316, + "InteractID": 40000021, + "TagIDs": [ + 4043 + ], + "Participators": { + "4043": "A", + "4044": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 317, + "InteractID": 40000022, + "TagIDs": [ + 4045 + ], + "Participators": { + "4045": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 318, + "InteractID": 40000049, + "TagIDs": [ + 4047 + ], + "Participators": { + "4047": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 319, + "InteractID": 40000040, + "TagIDs": [ + 4073 + ], + "Participators": { + "4073": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 320, + "InteractID": 40000024, + "TagIDs": [ + 4081 + ], + "Participators": { + "4081": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 321, + "InteractID": 40000064, + "TagIDs": [ + 4096 + ], + "Participators": { + "4096": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 322, + "InteractID": 40000086, + "TagIDs": [ + 4119 + ], + "Participators": { + "4119": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 323, + "InteractID": 70000002, + "TagIDs": [ + 5004 + ], + "Participators": { + "5004": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 324, + "InteractID": 70000005, + "TagIDs": [ + 5007 + ], + "Participators": { + "5007": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 325, + "InteractID": 70000007, + "TagIDs": [ + 5009 + ], + "Participators": { + "5009": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 326, + "InteractID": 70000010, + "TagIDs": [ + 5012 + ], + "Participators": { + "5012": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 327, + "InteractID": 70000011, + "TagIDs": [ + 5013 + ], + "Participators": { + "5013": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 328, + "InteractID": 70000012, + "TagIDs": [ + 5014 + ], + "Participators": { + "5014": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 329, + "InteractID": 70000013, + "TagIDs": [ + 5015 + ], + "Participators": { + "5015": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 330, + "InteractID": 10000025, + "TagIDs": [ + 10022 + ], + "Participators": { + "10022": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger10000025" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 331, + "InteractID": 19900052, + "TagIDs": [ + 20281 + ], + "Participators": { + "20281": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 9.0, + "Y": 2.0, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 332, + "InteractID": 15000401, + "TagIDs": [ + 100301 + ], + "Participators": { + "100301": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.5, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger15000401" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 333, + "InteractID": 15001801, + "TagIDs": [ + 104201 + ], + "Participators": { + "104201": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec1_InteractTrigger15001801" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 334, + "InteractID": 12011024, + "TagIDs": [ + 210201 + ], + "Participators": { + "210201": "B", + "210202": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 335, + "InteractID": 13009021, + "TagIDs": [ + 409059 + ], + "Participators": { + "409059": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 336, + "InteractID": 13000207, + "TagIDs": [ + 410206 + ], + "Participators": { + "410206": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 337, + "InteractID": 13001403, + "TagIDs": [ + 411403 + ], + "Participators": { + "411403": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 338, + "InteractID": 15511301, + "TagIDs": [ + 500022 + ], + "Participators": { + "500022": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 339, + "InteractID": 12031165, + "TagIDs": [ + 2030013 + ], + "Participators": { + "2030013": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 340, + "InteractID": 7010601, + "TagIDs": [ + 7010601 + ], + "Participators": { + "7010601": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 341, + "InteractID": 12040101, + "TagIDs": [ + 20200101 + ], + "Participators": { + "20200101": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.0, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 342, + "InteractID": 150650011, + "TagIDs": [ + 40101301 + ], + "Participators": { + "40101301": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 343, + "InteractID": 150650012, + "TagIDs": [ + 40101302 + ], + "Participators": { + "40101302": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 344, + "InteractID": 12041031, + "TagIDs": [ + 304024101 + ], + "Participators": { + "304024101": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 345, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2001": 20001, + "2002": 20021, + "2003": 20031, + "2004": 20041, + "2005": 20051, + "2007": 20071, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec1_InteractTrigger10000001": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 2, + "Transform": "Workshop_PlayerPos_FromStreet", + "CameraX": 1, + "CameraY": 6000 + } + ] + }, + "Sec1_InteractTrigger10000002": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 3, + "Transform": "Garage_PlayerPos_FromStreet", + "CameraX": 0, + "CameraY": 6000 + } + ] + }, + "Sec1_InteractTrigger10000007": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIVideoshopPage", + "Args": 0, + "StoreTemplateID": 1101 + } + ] + }, + "Sec1_InteractTrigger10000013": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIRamenStorePageController", + "Args": 0, + "StoreTemplateID": 1011 + } + ] + }, + "Sec1_InteractTrigger10000015": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIGroceryPage", + "Args": 1, + "StoreTemplateID": 1001 + } + ] + }, + "Sec1_InteractTrigger10000016": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 3, + "Transform": "Garage_PlayerPos_FromStreet2", + "CameraX": 0, + "CameraY": 6000 + } + ] + }, + "Sec1_InteractTrigger10000023": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIArcadePageController", + "Args": 0, + "StoreTemplateID": 1091 + } + ] + }, + "Sec1_InteractTrigger10000024": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UICafePageController", + "Args": 0, + "StoreTemplateID": 1021 + } + ] + }, + "Sec1_InteractTrigger10000025": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UITrashbinHermitRecyclePageController", + "Args": 0, + "StoreTemplateID": 1041 + } + ] + }, + "Sec1_InteractTrigger10000028": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIBangbooModGaragePageController", + "Args": 0, + "StoreTemplateID": 1031 + } + ] + }, + "Sec1_InteractTrigger15000201": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 1, + "Transform": "Street_PlayerPos_Trash01", + "CameraX": 1, + "CameraY": 6000 + } + ] + }, + "Sec1_InteractTrigger15000301": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UINewsStandPageController", + "Args": 0, + "StoreTemplateID": 1061 + } + ] + }, + "Sec1_InteractTrigger15000401": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UITrendyStorePageController", + "Args": 0, + "StoreTemplateID": 1071 + } + ] + }, + "Sec1_InteractTrigger15001601": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 153, + "Transform": "Subway_PlayerPos_Default2", + "CameraX": 0, + "CameraY": 0 + } + ] + }, + "Sec1_InteractTrigger15001801": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 1231 + } + ] + } + } + } + }, + "2": { + "ID": 2, + "UnityScenePath": "MainCity_Workshop", + "BornTransform": "Workshop_PlayerPos_Default", + "SectionProgress": { + "ID": 200, + "OnAdd": [ + "Sec2_DefaultTrigger", + "Sec2_DefaultTrigger2" + ], + "OnEnter": [ + "Sec2_EnterTrigger1" + ], + "Events": { + "Sec2_DefaultTrigger": { + "ID": 100, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 101, + "TagID": 3 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 102, + "TagID": 4 + } + ] + }, + "Sec2_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 1001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 1002 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 1004 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 1005 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 1007 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 1012 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 1017 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 208, + "TagID": 2028 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 209, + "TagID": 4135 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 210, + "TagID": 4136 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 211, + "TagID": 4138 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 212, + "TagID": 100901 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 213, + "TagID": 100910 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 214, + "TagID": 100913 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 215, + "TagID": 100914 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 216, + "TagID": 100915 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 217, + "TagID": 100916 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 218, + "TagID": 101016 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 219, + "TagID": 101017 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 220, + "TagID": 101018 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 221, + "TagID": 101020 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 222, + "TagID": 520001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 223, + "TagID": 520002 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 224, + "TagID": 604959 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 225, + "TagID": 20401401 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 226, + "TagID": 20401411 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 227, + "TagID": 40060209 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 228, + "TagID": 40060215 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 229, + "TagID": 50060007 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 230, + "TagID": 50060008 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 231, + "TagID": 50060009 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 232, + "TagID": 50060010 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 233, + "TagID": 50060011 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 234, + "TagID": 50060012 + } + ] + }, + "Sec2_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 10000003, + "TagIDs": [ + 3 + ], + "Participators": { + "3": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec2_InteractTrigger10000003" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 10000004, + "TagIDs": [ + 4 + ], + "Participators": { + "4": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec2_InteractTrigger10000004" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 10000010, + "TagIDs": [ + 1001 + ], + "Participators": { + "1001": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec2_InteractTrigger10000010" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 10000009, + "TagIDs": [ + 1002 + ], + "Participators": { + "1002": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec2_InteractTrigger10000009" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 10000014, + "TagIDs": [ + 1005 + ], + "Participators": { + "1005": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 30.0, + "Y": 1.0, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec2_InteractTrigger10000014" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 10000020, + "TagIDs": [ + 1007 + ], + "Participators": { + "1007": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.0, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 307, + "InteractID": 10000029, + "TagIDs": [ + 1012 + ], + "Participators": { + "1012": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.0, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec2_InteractTrigger10000029" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 308, + "InteractID": 10000035, + "TagIDs": [ + 1017 + ], + "Participators": { + "1017": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.0, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 309, + "InteractID": 100700, + "TagIDs": [ + 2028 + ], + "Participators": { + "2028": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 9.0, + "Y": 2.0, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec2_InteractTrigger100700" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 310, + "InteractID": 10200001, + "TagIDs": [ + 4135 + ], + "Participators": { + "4135": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 311, + "InteractID": 10200006, + "TagIDs": [ + 4136 + ], + "Participators": { + "4136": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 312, + "InteractID": 10200002, + "TagIDs": [ + 4138 + ], + "Participators": { + "4138": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 3.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 313, + "InteractID": 15001401, + "TagIDs": [ + 100901 + ], + "Participators": { + "100901": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec2_InteractTrigger15001401" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 314, + "InteractID": 15001404, + "TagIDs": [ + 100910 + ], + "Participators": { + "100910": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.0, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec2_InteractTrigger15001404" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 315, + "InteractID": 15001405, + "TagIDs": [ + 100913 + ], + "Participators": { + "100913": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.0, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec2_InteractTrigger15001405" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 316, + "InteractID": 13040002, + "TagIDs": [ + 100914 + ], + "Participators": { + "100914": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.0, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 317, + "InteractID": 13040003, + "TagIDs": [ + 100915 + ], + "Participators": { + "100915": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.0, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 318, + "InteractID": 13040001, + "TagIDs": [ + 100916 + ], + "Participators": { + "100916": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.0, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 319, + "InteractID": 10000038, + "TagIDs": [ + 101020 + ], + "Participators": { + "101020": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 3.0, + "Z": 3.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec2_InteractTrigger10000038" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 320, + "InteractID": 15511101, + "TagIDs": [ + 520001 + ], + "Participators": { + "520001": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 321, + "InteractID": 15511201, + "TagIDs": [ + 520002 + ], + "Participators": { + "520002": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 322, + "InteractID": 12001007, + "TagIDs": [ + 604959 + ], + "Participators": { + "604959": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 323, + "InteractID": 12041401, + "TagIDs": [ + 20401401 + ], + "Participators": { + "20401401": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 324, + "InteractID": 12041402, + "TagIDs": [ + 20401411 + ], + "Participators": { + "20401411": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 325, + "InteractID": 13040010, + "TagIDs": [ + 50060007 + ], + "Participators": { + "50060007": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.5, + "Z": 1.5 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 326, + "InteractID": 13040011, + "TagIDs": [ + 50060008 + ], + "Participators": { + "50060008": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.5, + "Z": 1.5 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 327, + "InteractID": 13040012, + "TagIDs": [ + 50060009 + ], + "Participators": { + "50060009": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.0, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 328, + "InteractID": 13040013, + "TagIDs": [ + 50060010 + ], + "Participators": { + "50060010": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.0, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 329, + "InteractID": 13040014, + "TagIDs": [ + 50060011 + ], + "Participators": { + "50060011": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.5, + "Z": 1.5 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 330, + "InteractID": 13040015, + "TagIDs": [ + 50060012 + ], + "Participators": { + "50060012": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.5, + "Z": 1.5 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 331, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec2_InteractTrigger10000003": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 1, + "Transform": "Street_PlayerPos_FromWorkshop", + "CameraX": 0, + "CameraY": 6000 + } + ] + }, + "Sec2_InteractTrigger10000004": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 3, + "Transform": "Garage_PlayerPos_FromWorkshop", + "CameraX": 0, + "CameraY": 6000 + } + ] + }, + "Sec2_InteractTrigger10000009": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIYorozuyaPage", + "Args": 0, + "StoreTemplateID": 1161 + } + ] + }, + "Sec2_InteractTrigger10000010": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIMainStoryPage", + "Args": 0, + "StoreTemplateID": 1191 + } + ] + }, + "Sec2_InteractTrigger10000014": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIWorkbenchPage", + "Args": 1, + "StoreTemplateID": 1171 + } + ] + }, + "Sec2_InteractTrigger10000029": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UITrainingCoursePagePageController", + "Args": 0, + "StoreTemplateID": 1201 + } + ] + }, + "Sec2_InteractTrigger10000038": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 1, + "StoreTemplateID": 4713 + } + ] + }, + "Sec2_InteractTrigger100700": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIVHSStorePage", + "Args": 0, + "StoreTemplateID": 1121 + } + ] + }, + "Sec2_InteractTrigger15001401": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIDailyQuestScheduleDialog", + "Args": 0, + "StoreTemplateID": 1221 + } + ] + }, + "Sec2_InteractTrigger15001404": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIPhotoWallPageController", + "Args": 0, + "StoreTemplateID": 1112 + } + ] + }, + "Sec2_InteractTrigger15001405": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIMusicPlayerPageController", + "Args": 0, + "StoreTemplateID": 1141 + } + ] + } + } + } + }, + "3": { + "ID": 3, + "UnityScenePath": "MainCity_Garage", + "BornTransform": "Garage_PlayerPos_Default", + "SectionProgress": { + "ID": 300, + "OnAdd": [ + "Sec3_DefaultTrigger", + "Sec3_DefaultTrigger2" + ], + "OnEnter": [ + "Sec3_EnterTrigger1" + ], + "Events": { + "Sec3_DefaultTrigger": { + "ID": 100, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 101, + "TagID": 5 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 102, + "TagID": 6 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 103, + "TagID": 8 + } + ] + }, + "Sec3_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 5016 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 5017 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 5018 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 5019 + } + ] + }, + "Sec3_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 10000005, + "TagIDs": [ + 5 + ], + "Participators": { + "5": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec3_InteractTrigger10000005" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 10000006, + "TagIDs": [ + 6 + ], + "Participators": { + "6": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec3_InteractTrigger10000006" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 10000017, + "TagIDs": [ + 8 + ], + "Participators": { + "8": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec3_InteractTrigger10000017" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 10000021, + "TagIDs": [ + 5016 + ], + "Participators": { + "5016": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 3.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 70000015, + "TagIDs": [ + 5017 + ], + "Participators": { + "5017": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 70000016, + "TagIDs": [ + 5018 + ], + "Participators": { + "5018": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 307, + "InteractID": 70000017, + "TagIDs": [ + 5019 + ], + "Participators": { + "5019": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 308, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec3_InteractTrigger10000005": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 1, + "Transform": "Street_PlayerPos_FromGarage", + "CameraX": 0, + "CameraY": 6000 + } + ] + }, + "Sec3_InteractTrigger10000006": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 2, + "Transform": "Workshop_PlayerPos_FromGarage", + "CameraX": 600000, + "CameraY": 6000 + } + ] + }, + "Sec3_InteractTrigger10000017": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 1, + "Transform": "Street_PlayerPos_FromGarage2", + "CameraX": 0, + "CameraY": 6000 + } + ] + } + } + } + }, + "4": { + "ID": 4, + "UnityScenePath": "MainCity_ConstructionSite", + "BornTransform": "ConstructionSite_PlayerPos_Default", + "SectionProgress": { + "ID": 400, + "OnAdd": [ + "Sec4_DefaultTrigger", + "Sec4_DefaultTrigger2" + ], + "OnEnter": [ + "Sec4_EnterTrigger1" + ], + "Events": { + "Sec4_DefaultTrigger": { + "ID": 100, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 101, + "TagID": 9 + } + ] + }, + "Sec4_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 4204 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 4207 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 4211 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 4213 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 104202 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 420304 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 420704 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 208, + "TagID": 420903 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 209, + "TagID": 421603 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 210, + "TagID": 421804 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 211, + "TagID": 504001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 212, + "TagID": 504002 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 213, + "TagID": 504003 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 214, + "TagID": 504004 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 215, + "TagID": 504005 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 216, + "TagID": 504006 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 217, + "TagID": 504007 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 218, + "TagID": 504008 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 219, + "TagID": 504009 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 220, + "TagID": 504010 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 221, + "TagID": 251041001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 222, + "TagID": 251041002 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 223, + "TagID": 251041006 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 224, + "TagID": 251041007 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 225, + "TagID": 251041008 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 226, + "TagID": 251041010 + } + ] + }, + "Sec4_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 10000021, + "TagIDs": [ + 9 + ], + "Participators": { + "9": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 2022303, + "TagIDs": [ + 4204 + ], + "Participators": { + "4204": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 2022306, + "TagIDs": [ + 4207 + ], + "Participators": { + "4207": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 2022309, + "TagIDs": [ + 4211 + ], + "Participators": { + "4211": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 2022312, + "TagIDs": [ + 4213 + ], + "Participators": { + "4213": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 15001802, + "TagIDs": [ + 104202 + ], + "Participators": { + "104202": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec4_InteractTrigger15001802" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 307, + "InteractID": 13025002, + "TagIDs": [ + 420304 + ], + "Participators": { + "420304": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 308, + "InteractID": 13025008, + "TagIDs": [ + 420903 + ], + "Participators": { + "420704": "B", + "420903": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 309, + "InteractID": 13025012, + "TagIDs": [ + 421603 + ], + "Participators": { + "421603": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 310, + "InteractID": 13025014, + "TagIDs": [ + 421804 + ], + "Participators": { + "421804": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 311, + "InteractID": 15541001, + "TagIDs": [ + 504001 + ], + "Participators": { + "504001": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 312, + "InteractID": 15541002, + "TagIDs": [ + 504002 + ], + "Participators": { + "504002": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 313, + "InteractID": 15541003, + "TagIDs": [ + 504003 + ], + "Participators": { + "504003": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 314, + "InteractID": 15541004, + "TagIDs": [ + 504004 + ], + "Participators": { + "504004": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 315, + "InteractID": 15541005, + "TagIDs": [ + 504005 + ], + "Participators": { + "504005": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 316, + "InteractID": 15541006, + "TagIDs": [ + 504006 + ], + "Participators": { + "504006": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 317, + "InteractID": 15541007, + "TagIDs": [ + 504007 + ], + "Participators": { + "504007": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 318, + "InteractID": 15541008, + "TagIDs": [ + 504008 + ], + "Participators": { + "504008": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 319, + "InteractID": 15541009, + "TagIDs": [ + 504009 + ], + "Participators": { + "504009": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 320, + "InteractID": 15541010, + "TagIDs": [ + 504010 + ], + "Participators": { + "504010": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 321, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec4_InteractTrigger15001802": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 1232 + } + ] + } + } + } + }, + "5": { + "ID": 5, + "UnityScenePath": "MainCity_SkyScraper", + "BornTransform": "SkyScraper_PlayerPos_Default", + "SectionProgress": { + "ID": 500, + "OnAdd": [ + "Sec5_DefaultTrigger", + "Sec5_DefaultTrigger2" + ], + "OnEnter": [ + "Sec5_EnterTrigger1" + ], + "Events": { + "Sec5_DefaultTrigger": { + "ID": 100, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 101, + "TagID": 10 + } + ] + }, + "Sec5_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 104205 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 431011 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 431012 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 431013 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 431014 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 431015 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 431016 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 208, + "TagID": 431017 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 209, + "TagID": 431018 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 210, + "TagID": 431019 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 211, + "TagID": 431026 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 212, + "TagID": 2030129 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 213, + "TagID": 90210801 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 214, + "TagID": 90210802 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 215, + "TagID": 251051001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 216, + "TagID": 251051003 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 217, + "TagID": 251051004 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 218, + "TagID": 251051006 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 219, + "TagID": 251051007 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 220, + "TagID": 251051010 + } + ] + }, + "Sec5_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 10000021, + "TagIDs": [ + 10 + ], + "Participators": { + "10": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 15001803, + "TagIDs": [ + 104205 + ], + "Participators": { + "104205": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec5_InteractTrigger15001803" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 13031010, + "TagIDs": [ + 431011 + ], + "Participators": { + "431011": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 13031011, + "TagIDs": [ + 431012 + ], + "Participators": { + "431012": "A", + "431013": "B", + "431014": "C" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 13031012, + "TagIDs": [ + 431015 + ], + "Participators": { + "431015": "A", + "431016": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 13031013, + "TagIDs": [ + 431017 + ], + "Participators": { + "431017": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 307, + "InteractID": 13031014, + "TagIDs": [ + 431018 + ], + "Participators": { + "431018": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 308, + "InteractID": 13031015, + "TagIDs": [ + 431019 + ], + "Participators": { + "431019": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 309, + "InteractID": 12030508, + "TagIDs": [ + 431026 + ], + "Participators": { + "431026": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 310, + "InteractID": 12030511, + "TagIDs": [ + 2030129 + ], + "Participators": { + "2030129": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 311, + "InteractID": 140210802, + "TagIDs": [ + 90210802 + ], + "Participators": { + "90210802": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 312, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec5_InteractTrigger15001803": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 1233 + } + ] + } + } + } + }, + "101": { + "ID": 101, + "UnityScenePath": "MainCity_FortuneSquare", + "BornTransform": "FortuneSquare_PlayerPos_Default", + "SectionProgress": { + "ID": 10100, + "OnAdd": [ + "Sec101_DefaultTrigger", + "Sec101_DefaultTrigger2" + ], + "OnEnter": [ + "Sec101_EnterTrigger1" + ], + "Events": { + "Sec101_DefaultTrigger": { + "ID": 100, + "Actions": [] + }, + "Sec101_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 104101 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 104102 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 104108 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 104121 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 104206 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 202646 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 2025081 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 208, + "TagID": 2025173 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 209, + "TagID": 41100401 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 210, + "TagID": 41100501 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 211, + "TagID": 41100601 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 212, + "TagID": 41100901 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 213, + "TagID": 41101014 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 214, + "TagID": 41101114 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 215, + "TagID": 41101201 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 216, + "TagID": 41101502 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 217, + "TagID": 41101609 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 218, + "TagID": 41101701 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 219, + "TagID": 41101702 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 220, + "TagID": 41101901 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 221, + "TagID": 41102001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 222, + "TagID": 41102402 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 223, + "TagID": 41102611 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 224, + "TagID": 41103210 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 225, + "TagID": 41110017 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 226, + "TagID": 41110018 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 227, + "TagID": 41110019 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 228, + "TagID": 41110063 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 229, + "TagID": 41110064 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 230, + "TagID": 41120101 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 231, + "TagID": 41120201 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 232, + "TagID": 41120202 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 233, + "TagID": 41120203 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 234, + "TagID": 41120301 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 235, + "TagID": 41120302 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 236, + "TagID": 41120401 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 237, + "TagID": 41120501 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 238, + "TagID": 41150001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 239, + "TagID": 41150004 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 240, + "TagID": 41150005 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 241, + "TagID": 41150006 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 242, + "TagID": 41150007 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 243, + "TagID": 41150008 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 244, + "TagID": 41150011 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 245, + "TagID": 41150018 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 246, + "TagID": 41150019 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 247, + "TagID": 41150020 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 248, + "TagID": 41150021 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 249, + "TagID": 41150029 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 250, + "TagID": 41150040 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 251, + "TagID": 41150041 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 252, + "TagID": 41150043 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 253, + "TagID": 41150044 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 254, + "TagID": 41150045 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 255, + "TagID": 41150046 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 256, + "TagID": 41150049 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 257, + "TagID": 41150052 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 258, + "TagID": 41150057 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 259, + "TagID": 41150058 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 260, + "TagID": 41150060 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 261, + "TagID": 41150061 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 262, + "TagID": 41150062 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 263, + "TagID": 41150063 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 264, + "TagID": 41150066 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 265, + "TagID": 41150067 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 266, + "TagID": 41150070 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 267, + "TagID": 41150095 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 268, + "TagID": 41150103 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 269, + "TagID": 41150105 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 270, + "TagID": 41150106 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 271, + "TagID": 41150107 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 272, + "TagID": 41150110 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 273, + "TagID": 41150112 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 274, + "TagID": 41150113 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 275, + "TagID": 41150114 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 276, + "TagID": 41150115 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 277, + "TagID": 41150117 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 278, + "TagID": 41150118 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 279, + "TagID": 41150120 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 280, + "TagID": 41150123 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 281, + "TagID": 41150124 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 282, + "TagID": 41150125 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 283, + "TagID": 41150129 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 284, + "TagID": 41150132 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 285, + "TagID": 41150133 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 286, + "TagID": 41150134 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 287, + "TagID": 41150153 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 288, + "TagID": 41150154 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 289, + "TagID": 41150155 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 290, + "TagID": 41150156 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 291, + "TagID": 41150157 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 292, + "TagID": 41150158 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 293, + "TagID": 41150159 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 294, + "TagID": 41150194 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 295, + "TagID": 41150200 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 296, + "TagID": 41150201 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 297, + "TagID": 41150207 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 298, + "TagID": 41150210 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 299, + "TagID": 41150343 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 300, + "TagID": 41150347 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 301, + "TagID": 41150348 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 302, + "TagID": 41150354 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 303, + "TagID": 41150355 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 304, + "TagID": 41150358 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 305, + "TagID": 41150359 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 306, + "TagID": 41150360 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 307, + "TagID": 41151005 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 308, + "TagID": 41151006 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 309, + "TagID": 41151010 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 310, + "TagID": 41151011 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 311, + "TagID": 41151016 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 312, + "TagID": 41151017 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 313, + "TagID": 41151022 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 314, + "TagID": 41151025 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 315, + "TagID": 41151029 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 316, + "TagID": 41151030 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 317, + "TagID": 41151033 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 318, + "TagID": 41151036 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 319, + "TagID": 41151038 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 320, + "TagID": 41151043 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 321, + "TagID": 41151044 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 322, + "TagID": 41151101 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 323, + "TagID": 41151102 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 324, + "TagID": 90150201 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 325, + "TagID": 90150202 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 326, + "TagID": 90150203 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 327, + "TagID": 90150204 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 328, + "TagID": 90150205 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 329, + "TagID": 90150206 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 330, + "TagID": 90150207 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 331, + "TagID": 90150208 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 332, + "TagID": 90150209 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 333, + "TagID": 90150210 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 334, + "TagID": 90150211 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 335, + "TagID": 90150212 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 336, + "TagID": 90190301 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 337, + "TagID": 90190302 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 338, + "TagID": 90190303 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 339, + "TagID": 90190304 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 340, + "TagID": 90190305 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 341, + "TagID": 241062001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 342, + "TagID": 261210301 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 343, + "TagID": 261210302 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 344, + "TagID": 261210303 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 345, + "TagID": 261210304 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 346, + "TagID": 303026101 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 347, + "TagID": 303026102 + } + ] + }, + "Sec101_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 15001701, + "TagIDs": [ + 104101 + ], + "Participators": { + "104101": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec101_InteractTrigger15001701" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 15001702, + "TagIDs": [ + 104102 + ], + "Participators": { + "104102": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec101_InteractTrigger15001702" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 15001701, + "TagIDs": [ + 104108 + ], + "Participators": { + "104108": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 15001716, + "TagIDs": [ + 104121 + ], + "Participators": { + "104121": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec101_InteractTrigger15001716" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 15001804, + "TagIDs": [ + 104206 + ], + "Participators": { + "104206": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.0, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec101_InteractTrigger15001804" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 10000021, + "TagIDs": [ + 202646 + ], + "Participators": { + "202646": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 307, + "InteractID": 12021981, + "TagIDs": [ + 2025081 + ], + "Participators": { + "2025081": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 308, + "InteractID": 15001713, + "TagIDs": [ + 41100401 + ], + "Participators": { + "41100401": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 309, + "InteractID": 15001714, + "TagIDs": [ + 41100501 + ], + "Participators": { + "41100501": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 310, + "InteractID": 15001715, + "TagIDs": [ + 41100601 + ], + "Participators": { + "41100601": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 311, + "InteractID": 13070002, + "TagIDs": [ + 41100901 + ], + "Participators": { + "41100901": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 312, + "InteractID": 13075008, + "TagIDs": [ + 41101014 + ], + "Participators": { + "41101014": "A", + "41101609": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 313, + "InteractID": 13075015, + "TagIDs": [ + 41101114 + ], + "Participators": { + "41101114": "A", + "41103210": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 314, + "InteractID": 13070004, + "TagIDs": [ + 41101201 + ], + "Participators": { + "41101201": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 315, + "InteractID": 13070011, + "TagIDs": [ + 41101702 + ], + "Participators": { + "41101701": "B", + "41101702": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 316, + "InteractID": 13070014, + "TagIDs": [ + 41101901 + ], + "Participators": { + "41101502": "B", + "41101901": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 317, + "InteractID": 13070015, + "TagIDs": [ + 41102001 + ], + "Participators": { + "41102001": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 318, + "InteractID": 221111008, + "TagIDs": [ + 41110017 + ], + "Participators": { + "41110017": "A", + "41110018": "B", + "41110019": "C" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 319, + "InteractID": 221111039, + "TagIDs": [ + 41110063 + ], + "Participators": { + "41110063": "A", + "41110064": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 320, + "InteractID": 15000808, + "TagIDs": [ + 41120101 + ], + "Participators": { + "41120101": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.4, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec101_InteractTrigger15000808" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 321, + "InteractID": 15001901, + "TagIDs": [ + 41120201 + ], + "Participators": { + "41120201": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.8, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec101_InteractTrigger15001901" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 322, + "InteractID": 15000602, + "TagIDs": [ + 41120301 + ], + "Participators": { + "41120301": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec101_InteractTrigger15000602" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 323, + "InteractID": 15000302, + "TagIDs": [ + 41120401 + ], + "Participators": { + "41120401": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.4, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec101_InteractTrigger15000302" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 324, + "InteractID": 15001712, + "TagIDs": [ + 41120501 + ], + "Participators": { + "41120501": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 325, + "InteractID": 13070247, + "TagIDs": [ + 41151038 + ], + "Participators": { + "41151038": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 2.0, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 326, + "InteractID": 150650005, + "TagIDs": [ + 41151101 + ], + "Participators": { + "41151101": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.5, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 327, + "InteractID": 150650006, + "TagIDs": [ + 41151102 + ], + "Participators": { + "41151102": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.5, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 328, + "InteractID": 140150201, + "TagIDs": [ + 90150201 + ], + "Participators": { + "90150201": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 329, + "InteractID": 140150202, + "TagIDs": [ + 90150202 + ], + "Participators": { + "90150202": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 330, + "InteractID": 140150203, + "TagIDs": [ + 90150204 + ], + "Participators": { + "90150201": "A", + "90150202": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 331, + "InteractID": 140150204, + "TagIDs": [ + 90150211 + ], + "Participators": { + "90150211": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 332, + "InteractID": 140190301, + "TagIDs": [ + 90190301 + ], + "Participators": { + "90190301": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 333, + "InteractID": 140190302, + "TagIDs": [ + 90190302 + ], + "Participators": { + "90190303": "A", + "90190304": "B", + "90190305": "C" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 334, + "InteractID": 140190301, + "TagIDs": [ + 90190305 + ], + "Participators": { + "90190305": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 335, + "InteractID": 241062001, + "TagIDs": [ + 241062001 + ], + "Participators": { + "241062001": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec101_InteractTrigger241062001" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 336, + "InteractID": 261210301, + "TagIDs": [ + 261210301 + ], + "Participators": { + "261210301": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.2, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 337, + "InteractID": 261210302, + "TagIDs": [ + 261210302 + ], + "Participators": { + "261210302": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.2, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 338, + "InteractID": 261210303, + "TagIDs": [ + 261210303 + ], + "Participators": { + "261210303": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.2, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 339, + "InteractID": 261210304, + "TagIDs": [ + 261210304 + ], + "Participators": { + "261210304": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.2, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 340, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3011": 301101, + "3012": 301202, + "3101": 310101, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec101_InteractTrigger15000302": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 1062 + } + ] + }, + "Sec101_InteractTrigger15000602": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 1, + "StoreTemplateID": 1022 + } + ] + }, + "Sec101_InteractTrigger15000808": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 1012 + } + ] + }, + "Sec101_InteractTrigger15001701": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 154, + "Transform": "SubwayFortuneSquare_PlayerPos_Default2", + "CameraX": 0, + "CameraY": 0 + } + ] + }, + "Sec101_InteractTrigger15001702": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 103, + "Transform": "FortuneHIA_PlayerPos_Default", + "CameraX": 0, + "CameraY": 0 + } + ] + }, + "Sec101_InteractTrigger15001716": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 102, + "Transform": "FortuneNEPS_PlayerPos_Default", + "CameraX": 0, + "CameraY": 0 + } + ] + }, + "Sec101_InteractTrigger15001804": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 1234 + } + ] + }, + "Sec101_InteractTrigger15001901": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 1002 + } + ] + }, + "Sec101_InteractTrigger241062001": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 101, + "Transform": "FortuneSquare_PlayerPos_Wastebin_01", + "CameraX": 200000, + "CameraY": 6000 + } + ] + } + } + } + }, + "102": { + "ID": 102, + "UnityScenePath": "MainCity_FortuneNEPS", + "BornTransform": "FortuneNEPS_PlayerPos_Default", + "SectionProgress": { + "ID": 10200, + "OnAdd": [ + "Sec102_DefaultTrigger", + "Sec102_DefaultTrigger2" + ], + "OnEnter": [ + "Sec102_EnterTrigger1" + ], + "Events": { + "Sec102_DefaultTrigger": { + "ID": 100, + "Actions": [] + }, + "Sec102_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 104122 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 41110043 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 41110086 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 41110087 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 41110091 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 41110092 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 41110135 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 208, + "TagID": 41110138 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 209, + "TagID": 41110139 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 210, + "TagID": 41110140 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 211, + "TagID": 41110141 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 212, + "TagID": 41110146 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 213, + "TagID": 41110147 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 214, + "TagID": 41110171 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 215, + "TagID": 41110176 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 216, + "TagID": 41110177 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 217, + "TagID": 41110184 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 218, + "TagID": 41110193 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 219, + "TagID": 41110228 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 220, + "TagID": 41110229 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 221, + "TagID": 41110240 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 222, + "TagID": 41110241 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 223, + "TagID": 41110300 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 224, + "TagID": 41110301 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 225, + "TagID": 41110302 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 226, + "TagID": 41110303 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 227, + "TagID": 41110304 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 228, + "TagID": 41110305 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 229, + "TagID": 41110306 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 230, + "TagID": 41110307 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 231, + "TagID": 41110310 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 232, + "TagID": 41250001 + } + ] + }, + "Sec102_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 15001717, + "TagIDs": [ + 104122 + ], + "Participators": { + "104122": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec102_InteractTrigger15001717" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 221111025, + "TagIDs": [ + 41110043 + ], + "Participators": { + "41110043": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 221111053, + "TagIDs": [ + 41110086 + ], + "Participators": { + "41110086": "A", + "41110087": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 221111057, + "TagIDs": [ + 41110091 + ], + "Participators": { + "41110091": "A", + "41110092": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 221111084, + "TagIDs": [ + 41110135 + ], + "Participators": { + "41110135": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 221111086, + "TagIDs": [ + 41110138 + ], + "Participators": { + "41110138": "A", + "41110139": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 307, + "InteractID": 221111087, + "TagIDs": [ + 41110140 + ], + "Participators": { + "41110140": "A", + "41110141": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 308, + "InteractID": 221111090, + "TagIDs": [ + 41110146 + ], + "Participators": { + "41110146": "A", + "41110147": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 309, + "InteractID": 221111107, + "TagIDs": [ + 41110171 + ], + "Participators": { + "41110171": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 310, + "InteractID": 221111111, + "TagIDs": [ + 41110176 + ], + "Participators": { + "41110176": "A", + "41110177": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 311, + "InteractID": 221111116, + "TagIDs": [ + 41110184 + ], + "Participators": { + "41110184": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 312, + "InteractID": 261110001, + "TagIDs": [ + 41110305 + ], + "Participators": { + "41110305": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 313, + "InteractID": 261110002, + "TagIDs": [ + 41110306 + ], + "Participators": { + "41110306": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 314, + "InteractID": 261110003, + "TagIDs": [ + 41110307 + ], + "Participators": { + "41110307": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 315, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3301": 330102, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec102_InteractTrigger15001717": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 101, + "Transform": "FortuneSquare_PlayerPos_FromNEPS", + "CameraX": 0, + "CameraY": 0 + } + ] + } + } + } + }, + "103": { + "ID": 103, + "UnityScenePath": "MainCity_FortuneHIA", + "BornTransform": "FortuneHIA_PlayerPos_Default", + "SectionProgress": { + "ID": 10300, + "OnAdd": [ + "Sec103_DefaultTrigger", + "Sec103_DefaultTrigger2" + ], + "OnEnter": [ + "Sec103_EnterTrigger1" + ], + "Events": { + "Sec103_DefaultTrigger": { + "ID": 100, + "Actions": [] + }, + "Sec103_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 103101 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 103201 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 103202 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 103203 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 103204 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 103302 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 7022601 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 208, + "TagID": 7022602 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 209, + "TagID": 41300101 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 210, + "TagID": 41300201 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 211, + "TagID": 41300403 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 212, + "TagID": 41300802 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 213, + "TagID": 41300901 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 214, + "TagID": 41301201 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 215, + "TagID": 41350012 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 216, + "TagID": 41350013 + } + ] + }, + "Sec103_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 7022701, + "TagIDs": [ + 103101 + ], + "Participators": { + "103101": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec103_InteractTrigger7022701" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 15001301, + "TagIDs": [ + 103201 + ], + "Participators": { + "103201": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec103_InteractTrigger15001301" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 15001305, + "TagIDs": [ + 103204 + ], + "Participators": { + "103204": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec103_InteractTrigger15001305" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 15001303, + "TagIDs": [ + 103302 + ], + "Participators": { + "103302": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec103_InteractTrigger15001303" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 7022601, + "TagIDs": [ + 7022601 + ], + "Participators": { + "7022601": "Booparazzi", + "7022602": "TalentAgent" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 13060001, + "TagIDs": [ + 41300101 + ], + "Participators": { + "41300101": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 307, + "InteractID": 13060002, + "TagIDs": [ + 41300201 + ], + "Participators": { + "41300201": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 308, + "InteractID": 13060015, + "TagIDs": [ + 41300403 + ], + "Participators": { + "41300403": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 309, + "InteractID": 13060011, + "TagIDs": [ + 41300901 + ], + "Participators": { + "41300802": "B", + "41300901": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 310, + "InteractID": 13060019, + "TagIDs": [ + 41301201 + ], + "Participators": { + "41301201": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 311, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3501": 0, + "3502": 350201, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec103_InteractTrigger15001301": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 2013 + } + ] + }, + "Sec103_InteractTrigger15001303": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 101, + "Transform": "Street_NPCPos_ToSubway_HIAOUTdefault", + "CameraX": 0, + "CameraY": 6000 + } + ] + }, + "Sec103_InteractTrigger15001305": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 4711 + } + ] + }, + "Sec103_InteractTrigger7022701": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 1, + "StoreTemplateID": 2011 + } + ] + } + } + } + }, + "104": { + "ID": 104, + "UnityScenePath": "Maincity_OuterRing", + "BornTransform": "OuterRing_PlayerPos_Default", + "SectionProgress": { + "ID": 10400, + "OnAdd": [ + "Sec104_DefaultTrigger", + "Sec104_DefaultTrigger2" + ], + "OnEnter": [ + "Sec104_EnterTrigger1" + ], + "Events": { + "Sec104_DefaultTrigger": { + "ID": 100, + "Actions": [] + }, + "Sec104_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 7001001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 7001002 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 20400201 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 20400601 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 41450001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 41450002 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 41450003 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 208, + "TagID": 41450004 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 209, + "TagID": 41450006 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 210, + "TagID": 41450203 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 211, + "TagID": 41450309 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 212, + "TagID": 41450408 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 213, + "TagID": 41450505 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 214, + "TagID": 41450610 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 215, + "TagID": 41450709 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 216, + "TagID": 41450907 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 217, + "TagID": 41451001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 218, + "TagID": 41451102 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 219, + "TagID": 41451203 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 220, + "TagID": 41455122 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 221, + "TagID": 41455123 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 222, + "TagID": 41455124 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 223, + "TagID": 41455127 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 224, + "TagID": 41455128 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 225, + "TagID": 41455129 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 226, + "TagID": 41455130 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 227, + "TagID": 41455131 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 228, + "TagID": 41455132 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 229, + "TagID": 41455133 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 230, + "TagID": 41455134 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 231, + "TagID": 41455135 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 232, + "TagID": 41455136 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 233, + "TagID": 41455137 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 234, + "TagID": 70044106 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 235, + "TagID": 221200001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 236, + "TagID": 304003101 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 237, + "TagID": 304003105 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 238, + "TagID": 304025101 + } + ] + }, + "Sec104_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 7001001, + "TagIDs": [ + 7001001 + ], + "Participators": { + "7001001": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 3.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec104_InteractTrigger7001001" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 7001022, + "TagIDs": [ + 7001002 + ], + "Participators": { + "7001002": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 1.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 12040201, + "TagIDs": [ + 20400201 + ], + "Participators": { + "20400201": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 12040601, + "TagIDs": [ + 20400601 + ], + "Participators": { + "20400601": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 10000009, + "TagIDs": [ + 41450003 + ], + "Participators": { + "41450003": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.8, + "Z": 2.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec104_InteractTrigger10000009" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 10000021, + "TagIDs": [ + 41450004 + ], + "Participators": { + "41450004": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 0.0, + "Y": 1.8, + "Z": 2.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 307, + "InteractID": 241202001, + "TagIDs": [ + 41450006 + ], + "Participators": { + "41450006": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec104_InteractTrigger241202001" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 308, + "InteractID": 13081015, + "TagIDs": [ + 41450203 + ], + "Participators": { + "41450203": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 309, + "InteractID": 13081054, + "TagIDs": [ + 41450309 + ], + "Participators": { + "41450309": "A", + "41450610": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 310, + "InteractID": 13081038, + "TagIDs": [ + 41450408 + ], + "Participators": { + "41450408": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 311, + "InteractID": 13081026, + "TagIDs": [ + 41450505 + ], + "Participators": { + "41450505": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 312, + "InteractID": 13081046, + "TagIDs": [ + 41450709 + ], + "Participators": { + "41450709": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 313, + "InteractID": 13081084, + "TagIDs": [ + 41450907 + ], + "Participators": { + "41450907": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 314, + "InteractID": 13085001, + "TagIDs": [ + 41451001 + ], + "Participators": { + "41451001": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 315, + "InteractID": 13081076, + "TagIDs": [ + 41451102 + ], + "Participators": { + "41451102": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 316, + "InteractID": 13081042, + "TagIDs": [ + 41451203 + ], + "Participators": { + "41451203": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 317, + "InteractID": 13081080, + "TagIDs": [ + 41455122 + ], + "Participators": { + "41455122": "A", + "41455123": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 318, + "InteractID": 13081081, + "TagIDs": [ + 41455124 + ], + "Participators": { + "41455124": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 319, + "InteractID": 13081085, + "TagIDs": [ + 41455127 + ], + "Participators": { + "41455127": "A", + "41455128": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 320, + "InteractID": 13081086, + "TagIDs": [ + 41455129 + ], + "Participators": { + "41455129": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 321, + "InteractID": 13081087, + "TagIDs": [ + 41455130 + ], + "Participators": { + "41455130": "A", + "41455131": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 322, + "InteractID": 12041060, + "TagIDs": [ + 70044106 + ], + "Participators": { + "70044106": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 323, + "InteractID": 221200001, + "TagIDs": [ + 221200001 + ], + "Participators": { + "221200001": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 324, + "InteractID": 12041035, + "TagIDs": [ + 304003101 + ], + "Participators": { + "304003101": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 325, + "InteractID": 12041037, + "TagIDs": [ + 304003105 + ], + "Participators": { + "304003105": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 326, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3409": 340901, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec104_InteractTrigger10000009": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIYorozuyaPage", + "Args": 0, + "StoreTemplateID": 1161 + } + ] + }, + "Sec104_InteractTrigger241202001": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 104, + "Transform": "OuterRing_PlayerPos_Trash01", + "CameraX": 2972057, + "CameraY": 7000 + } + ] + }, + "Sec104_InteractTrigger7001001": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIOverlordFeastPrepPage", + "Args": 0, + "StoreTemplateID": 4705 + } + ] + } + } + } + }, + "105": { + "ID": 105, + "UnityScenePath": "Maincity_Hand", + "BornTransform": "Hand_PlayerPos_Default", + "SectionProgress": { + "ID": 10500, + "OnAdd": [ + "Sec105_DefaultTrigger", + "Sec105_DefaultTrigger2" + ], + "OnEnter": [ + "Sec105_EnterTrigger1" + ], + "Events": { + "Sec105_DefaultTrigger": { + "ID": 100, + "Actions": [] + }, + "Sec105_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 41310011 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 41310014 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 41310015 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 41310047 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 41310048 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 41310070 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 41310072 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 208, + "TagID": 41310073 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 209, + "TagID": 41310074 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 210, + "TagID": 41310075 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 211, + "TagID": 41310076 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 212, + "TagID": 41310082 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 213, + "TagID": 41310083 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 214, + "TagID": 41310100 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 215, + "TagID": 41310104 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 216, + "TagID": 41310105 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 217, + "TagID": 41310109 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 218, + "TagID": 41310112 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 219, + "TagID": 41310116 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 220, + "TagID": 41310117 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 221, + "TagID": 41310118 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 222, + "TagID": 41310120 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 223, + "TagID": 41310123 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 224, + "TagID": 41310124 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 225, + "TagID": 41310125 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 226, + "TagID": 41310127 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 227, + "TagID": 41310128 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 228, + "TagID": 41310131 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 229, + "TagID": 41310132 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 230, + "TagID": 41310133 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 231, + "TagID": 41310134 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 232, + "TagID": 41310135 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 233, + "TagID": 41310136 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 234, + "TagID": 41310137 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 235, + "TagID": 41310138 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 236, + "TagID": 41310139 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 237, + "TagID": 41310140 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 238, + "TagID": 41310141 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 239, + "TagID": 41310143 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 240, + "TagID": 41310144 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 241, + "TagID": 41315001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 242, + "TagID": 41315002 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 243, + "TagID": 41315003 + } + ] + }, + "Sec105_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 221311009, + "TagIDs": [ + 41310011 + ], + "Participators": { + "41310011": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 221311011, + "TagIDs": [ + 41310014 + ], + "Participators": { + "41310014": "A", + "41310015": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 221312001, + "TagIDs": [ + 41310143 + ], + "Participators": { + "41310143": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 221312002, + "TagIDs": [ + 41310144 + ], + "Participators": { + "41310144": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 10000021, + "TagIDs": [ + 41315003 + ], + "Participators": { + "41315003": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 306, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3503": 350301, + "3504": 350401, + "3505": 350502 + } + } + ] + } + } + } + }, + "151": { + "ID": 151, + "UnityScenePath": "Maincity_Zero", + "BornTransform": "Zero_PlayerPos_Default", + "SectionProgress": { + "ID": 15100, + "OnAdd": [ + "Sec151_DefaultTrigger", + "Sec151_DefaultTrigger2" + ], + "OnEnter": [ + "Sec151_EnterTrigger1" + ], + "Events": { + "Sec151_DefaultTrigger": { + "ID": 100, + "Actions": [] + }, + "Sec151_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 102101 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 102102 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 102201 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 102202 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 102204 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 102205 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 102206 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 208, + "TagID": 102302 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 209, + "TagID": 102501 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 210, + "TagID": 102502 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 211, + "TagID": 102503 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 212, + "TagID": 102504 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 213, + "TagID": 102601 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 214, + "TagID": 102602 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 215, + "TagID": 7020004 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 216, + "TagID": 20991213 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 217, + "TagID": 20991214 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 218, + "TagID": 41500001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 219, + "TagID": 41500301 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 220, + "TagID": 41500401 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 221, + "TagID": 41501102 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 222, + "TagID": 41501202 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 223, + "TagID": 41501401 + } + ] + }, + "Sec151_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 15001101, + "TagIDs": [ + 102101 + ], + "Participators": { + "102101": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec151_InteractTrigger15001101" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 15001109, + "TagIDs": [ + 102102 + ], + "Participators": { + "102102": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec151_InteractTrigger15001109" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 15001103, + "TagIDs": [ + 102201 + ], + "Participators": { + "102201": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec151_InteractTrigger15001103" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 7020092, + "TagIDs": [ + 102202 + ], + "Participators": { + "102202": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 15001108, + "TagIDs": [ + 102302 + ], + "Participators": { + "102302": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec151_InteractTrigger15001108" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 15001105, + "TagIDs": [ + 102502 + ], + "Participators": { + "102502": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 307, + "InteractID": 15001107, + "TagIDs": [ + 102601 + ], + "Participators": { + "102601": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec151_InteractTrigger15001107" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 308, + "InteractID": 12990216, + "TagIDs": [ + 20991214 + ], + "Participators": { + "20991213": "A", + "20991214": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 309, + "InteractID": 15001106, + "TagIDs": [ + 41500001 + ], + "Participators": { + "41500001": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 310, + "InteractID": 13050003, + "TagIDs": [ + 41500301 + ], + "Participators": { + "41500301": "A", + "41500401": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 311, + "InteractID": 13050009, + "TagIDs": [ + 41501102 + ], + "Participators": { + "41501102": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 312, + "InteractID": 13050010, + "TagIDs": [ + 41501202 + ], + "Participators": { + "41501202": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 313, + "InteractID": 13050014, + "TagIDs": [ + 41501401 + ], + "Participators": { + "41501401": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 314, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec151_InteractTrigger15001101": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 2015 + } + ] + }, + "Sec151_InteractTrigger15001103": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "UIBattlePortal_HadalZonePageController", + "Args": 0, + "StoreTemplateID": 2002 + } + ] + }, + "Sec151_InteractTrigger15001107": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 2006 + } + ] + }, + "Sec151_InteractTrigger15001108": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 2014 + } + ] + }, + "Sec151_InteractTrigger15001109": { + "Actions": [ + { + "$type": "Share.CActionOpenUI", + "UI": "", + "Args": 0, + "StoreTemplateID": 2012 + } + ] + } + } + } + }, + "153": { + "ID": 153, + "UnityScenePath": "Maincity_Subway_Street", + "BornTransform": "Subway_PlayerPos_Default", + "SectionProgress": { + "ID": 15300, + "OnAdd": [ + "Sec153_DefaultTrigger", + "Sec153_DefaultTrigger2" + ], + "OnEnter": [ + "Sec153_EnterTrigger1" + ], + "Events": { + "Sec153_DefaultTrigger": { + "ID": 100, + "Actions": [] + }, + "Sec153_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 104110 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 104112 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 40153001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 40153004 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 40153005 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 40153007 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 40153011 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 208, + "TagID": 40153012 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 209, + "TagID": 40153014 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 210, + "TagID": 40153015 + } + ] + }, + "Sec153_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 15001710, + "TagIDs": [ + 104110 + ], + "Participators": { + "104110": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 3.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec153_InteractTrigger15001710" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 15001709, + "TagIDs": [ + 104112 + ], + "Participators": { + "104112": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 3.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 140153001, + "TagIDs": [ + 40153001 + ], + "Participators": { + "40153001": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 140153003, + "TagIDs": [ + 40153004 + ], + "Participators": { + "40153004": "A", + "40153005": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 140153005, + "TagIDs": [ + 40153007 + ], + "Participators": { + "40153007": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 140153009, + "TagIDs": [ + 40153011 + ], + "Participators": { + "40153011": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 307, + "InteractID": 140153011, + "TagIDs": [ + 40153014 + ], + "Participators": { + "40153014": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 308, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec153_InteractTrigger15001710": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 1, + "Transform": "Street_PlayerPos_FromSubway", + "CameraX": 0, + "CameraY": 0 + } + ] + } + } + } + }, + "154": { + "ID": 154, + "UnityScenePath": "Maincity_Subway_FortuneSquare", + "BornTransform": "SubwayFortuneSquare_PlayerPos_Default", + "SectionProgress": { + "ID": 15400, + "OnAdd": [ + "Sec154_DefaultTrigger", + "Sec154_DefaultTrigger2" + ], + "OnEnter": [ + "Sec154_EnterTrigger1" + ], + "Events": { + "Sec154_DefaultTrigger": { + "ID": 100, + "Actions": [] + }, + "Sec154_DefaultTrigger2": { + "ID": 200, + "Actions": [ + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 201, + "TagID": 104111 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 202, + "TagID": 104113 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 203, + "TagID": 241070001 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 204, + "TagID": 241070004 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 205, + "TagID": 241070005 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 206, + "TagID": 241070006 + }, + { + "$type": "Share.CActionCreateNPCCfg", + "ID": 207, + "TagID": 241070011 + } + ] + }, + "Sec154_EnterTrigger1": { + "ID": 300, + "Actions": [ + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 301, + "InteractID": 15001711, + "TagIDs": [ + 104111 + ], + "Participators": { + "104111": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + }, + "SectionListenEvents": { + "OnInteract": "Sec154_InteractTrigger15001711" + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 302, + "InteractID": 15001709, + "TagIDs": [ + 104113 + ], + "Participators": { + "104113": "" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 303, + "InteractID": 241070001, + "TagIDs": [ + 241070001 + ], + "Participators": { + "241070001": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 304, + "InteractID": 241070004, + "TagIDs": [ + 241070004 + ], + "Participators": { + "241070004": "A", + "241070005": "B" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 305, + "InteractID": 241070005, + "TagIDs": [ + 241070006 + ], + "Participators": { + "241070006": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionChangeInteractCfg", + "ID": 306, + "InteractID": 241070009, + "TagIDs": [ + 241070011 + ], + "Participators": { + "241070011": "A" + }, + "InteractShape": "Sphere", + "InteractScale": { + "X": 2.0, + "Y": 0.0, + "Z": 0.0 + } + }, + { + "$type": "Share.CActionSetMainCityObjectState", + "ID": 307, + "ObjectState": { + "999": 10007, + "1000": 10001, + "1001": 10003, + "1003": 10013, + "1004": 10014, + "1005": 10027, + "1006": 10015, + "1007": 10016, + "1008": 10017, + "1009": 10018, + "1010": 10019, + "1011": 10020, + "1012": 10021, + "1013": 10022, + "1014": 10023, + "1015": 10024, + "1016": 10025, + "1017": 10026, + "1018": 10028, + "1019": 10029, + "1020": 10030, + "1021": 10031, + "1022": 10032, + "1023": 10033, + "1024": 10034, + "1025": 10035, + "1026": 10036, + "1027": 10037, + "1028": 10038, + "1029": 10039, + "1101": 11001, + "1201": 12001, + "1301": 13001, + "1302": 13002, + "1303": 13003, + "1304": 13004, + "1305": 13005, + "1401": 14023, + "2201": 22012, + "2202": 22021, + "2203": 22032, + "2211": 22114, + "2212": 22121, + "2213": 22131, + "3002": 300201, + "3003": 300301, + "3101": 310101, + "3503": 350301, + "3504": 350401 + } + } + ] + }, + "Sec154_InteractTrigger15001711": { + "Actions": [ + { + "$type": "Share.CActionSwitchSection", + "SectionID": 101, + "Transform": "FortuneSquare_PlayerPos_FromSubway", + "CameraX": 0, + "CameraY": 0 + } + ] + } + } + } + } + } +} diff --git a/README.md b/README.md index 88e3d70..fa19885 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,53 @@ -# trigger-rs +# Trigger-RS -A Set of Servers implemented for the game Zenless Zone Zero \ No newline at end of file +## Introduction +Trigger-RS is a set of servers implemented for the game Zenless Zone Zero. + +![Screenshot](screenshot.png) + +## Current status +Currently trigger-rs provides these features: +- **Player item management or the inventory**: characters, equipment and currency. +- **Quest management**. Work-in-progress: currently all the quests are unlocked and finished from the beginning and can be replayed using The Archive and Hollow Deep Dive System. +- **Basic battle support**. The server is able to run the combat commissions (including Rally) and the training room. +- **Overworld scene logic**. The server implements the interactions and their systems for overworld (for example: ramen shop, coffee shop and music player) +- **Version-agnostic protocol library**. The server code is not bound to the specific protocol version. Instead, gate-server maps them to standardized structures and uses custom format for internal communication and processing. +- **Server management through MUIP API**. + +## Getting started +### Requirements +- [Rust 1.85+](https://www.rust-lang.org/tools/install) +- [PostgreSQL](https://www.postgresql.org/download/) +- [SDK server](https://git.xeondev.com/reversedrooms/hoyo-sdk) +##### NOTE: this server doesn't include the sdk server as it's not specific per game. You can use `hoyo-sdk` with this server. + +### Setup +##### a) building from sources +```sh +git clone https://git.xeondev.com/ObolSquad/trigger-rs.git +cd trigger-rs +cargo run --bin trigger-dispatch-server +cargo run --bin trigger-gate-server +cargo run --bin trigger-game-server +cargo run --bin trigger-hall-server +cargo run --bin trigger-battle-server +cargo run --bin trigger-muip-server +``` +##### b) using pre-built binaries +Navigate to the [Releases](https://git.xeondev.com/obolsquad/trigger-rs/releases) page and download the latest release for your platform. +Start each service in order from option `a)`. + +### Configuration +Most of the configuration (database, encryption keys) is stored in a shared environment configuration file (`environment.toml`). Some of server-specific options are stored in their respective configuration files (which are created upon first startup of each server). + +### Logging in +To login to this server, you have to obtain a compatible game client. Currently supported one is `CNBetaWin1.6.0`, you can [get it here](https://git.xeondev.com/xeon/3/raw/branch/3/nap_beta_1.6_reversedrooms.torrent). Next, you have to apply the necessary [client patch](https://git.xeondev.com/ObolSquad/trigger-patch). It allows you to connect to the local server and replaces encryption keys with custom ones. + +### Management +You can use the [trigger-muip-tool](https://git.xeondev.com/ObolSquad/trigger-muip-tool) to communicate with MUIP server and execute GM commands. + +### Community +[Our Discord Server](https://discord.gg/reversedrooms) is open for everyone who's interested in our projects! + +### Support +Your support for this project is greatly appreciated! If you'd like to contribute, feel free to send a tip [via Boosty](https://boosty.to/xeondev/donate)! diff --git a/crates/battle-server/Cargo.toml b/crates/battle-server/Cargo.toml new file mode 100644 index 0000000..e380bec --- /dev/null +++ b/crates/battle-server/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "trigger-battle-server" +edition = "2024" +version.workspace = true + +[dependencies] +tokio.workspace = true + +paste.workspace = true +serde.workspace = true +serde_json.workspace = true +dashmap.workspace = true +tracing.workspace = true + +trigger-sv.workspace = true +trigger-logic.workspace = true + +trigger-encoding.workspace = true +trigger-protocol.workspace = true +trigger-fileconfig.workspace = true diff --git a/crates/battle-server/battleserver.default.toml b/crates/battle-server/battleserver.default.toml new file mode 100644 index 0000000..a534e14 --- /dev/null +++ b/crates/battle-server/battleserver.default.toml @@ -0,0 +1,3 @@ +[node] +server_id = 0 + diff --git a/crates/battle-server/src/config.rs b/crates/battle-server/src/config.rs new file mode 100644 index 0000000..95355ea --- /dev/null +++ b/crates/battle-server/src/config.rs @@ -0,0 +1,11 @@ +use serde::Deserialize; +use trigger_sv::config::{ServerNodeConfiguration, TomlConfig}; + +#[derive(Deserialize)] +pub struct BattleServerConfig { + pub node: ServerNodeConfiguration, +} + +impl TomlConfig for BattleServerConfig { + const DEFAULT_TOML: &str = include_str!("../battleserver.default.toml"); +} diff --git a/crates/battle-server/src/logic/dungeon.rs b/crates/battle-server/src/logic/dungeon.rs new file mode 100644 index 0000000..8cb1bb5 --- /dev/null +++ b/crates/battle-server/src/logic/dungeon.rs @@ -0,0 +1,48 @@ +use trigger_protocol::DungeonEquipInfo; + +pub struct AvatarUnit { + pub avatar_id: u32, +} + +pub struct BuddyUnit { + pub buddy_id: u32, + pub buddy_type: i32, +} + +pub struct Dungeon { + pub quest_id: u32, + pub avatar_list: Vec, + pub buddy_list: Vec, + pub inner_quests: Vec, + pub equip: DungeonEquipInfo, +} + +impl Dungeon { + pub fn get_protocol_dungeon_info(&self) -> trigger_protocol::DungeonInfo { + use trigger_protocol::*; + + DungeonInfo { + quest_id: self.quest_id, + dungeon_equip_info: Some(self.equip.clone()), + avatar_list: self + .avatar_list + .iter() + .map(|unit| AvatarUnitInfo { + avatar_id: unit.avatar_id, + }) + .collect(), + buddy_list: self + .buddy_list + .iter() + .map(|unit| BuddyUnitInfo { + buddy_id: unit.buddy_id, + r#type: unit.buddy_type, + }) + .collect(), + dungeon_quest_info: Some(DungeonQuestInfo { + inner_quest_id_list: self.inner_quests.clone(), + }), + ..Default::default() + } + } +} diff --git a/crates/battle-server/src/logic/mod.rs b/crates/battle-server/src/logic/mod.rs new file mode 100644 index 0000000..6bd41f6 --- /dev/null +++ b/crates/battle-server/src/logic/mod.rs @@ -0,0 +1,148 @@ +mod dungeon; + +pub use dungeon::*; +pub mod scene; +use scene::{FightScene, RallyScene, Scene, ScenePerform}; +use tracing::debug; +use trigger_fileconfig::NapFileCfg; +use trigger_logic::scene::ELocalPlayType; +use trigger_protocol::{EndBattleCsReq, EndBattleScRsp, FightSettle}; +use trigger_sv::message::{GameStateCallback, GameStateData}; + +pub struct GameState { + #[expect(dead_code)] + filecfg: &'static NapFileCfg<'static>, + pub scene: Scene, + pub dungeon: Dungeon, +} + +impl GameState { + pub fn new(filecfg: &'static NapFileCfg<'static>, data: &GameStateData) -> Option { + Some(match data { + GameStateData::Fight { + quest_id, + play_type, + buddy_id: _, + avatar_id_list, + dungeon_equip, + } => Self { + filecfg, + scene: Scene::Fight(FightScene { + event_id: Self::get_scene_event_id(filecfg, *quest_id, (*play_type).into()), + play_type: (*play_type).into(), + perform: ScenePerform { + time: String::from("Morning"), + weather: String::from("SunShine"), + }, + }), + dungeon: Dungeon { + quest_id: *quest_id, + avatar_list: avatar_id_list + .iter() + .map(|&avatar_id| AvatarUnit { avatar_id }) + .collect(), + buddy_list: vec![BuddyUnit { + buddy_type: 0, + buddy_id: 50001, + }], + inner_quests: vec![Self::get_scene_event_id( + filecfg, + *quest_id, + (*play_type).into(), + )], + equip: dungeon_equip.clone(), + }, + }, + GameStateData::Rally { + quest_id, + play_type, + buddy_id: _, + avatar_id_list, + dungeon_equip, + } => Self { + scene: Scene::Rally(RallyScene { + event_id: Self::get_scene_event_id(filecfg, *quest_id, (*play_type).into()), + perform: ScenePerform { + time: String::from("Morning"), + weather: String::from("SunShine"), + }, + }), + dungeon: Dungeon { + quest_id: *quest_id, + avatar_list: avatar_id_list + .iter() + .map(|&avatar_id| AvatarUnit { avatar_id }) + .collect(), + buddy_list: vec![BuddyUnit { + buddy_type: 0, + buddy_id: 50001, + }], + inner_quests: vec![Self::get_scene_event_id( + filecfg, + *quest_id, + (*play_type).into(), + )], + equip: dungeon_equip.clone(), + }, + filecfg, + }, + _ => return None, + }) + } + + fn get_scene_event_id( + filecfg: &NapFileCfg<'static>, + quest_id: u32, + play_type: ELocalPlayType, + ) -> u32 { + match play_type { + ELocalPlayType::TrainingRoom => 19800014, + ELocalPlayType::ArchiveBattle => filecfg + .archive_battle_quest_template_tb + .data() + .unwrap() + .iter() + .find(|tmpl| tmpl.id() == quest_id as i32) + .map(|tmpl| tmpl.first_battle_event_id() as u32) + .unwrap_or(0), + _ => filecfg + .battle_group_config_template_tb + .data() + .unwrap() + .iter() + .find(|tmpl| tmpl.quest_id() == quest_id as i32) + .map(|tmpl| tmpl.battle_event_id() as u32) + .unwrap_or(0), + } + } + + pub fn on_end_battle( + &self, + request_id: u32, + _request: EndBattleCsReq, + ) -> Vec { + debug!( + "the battle is over, quest_id: {}, event_id: {}", + self.dungeon.quest_id, + self.scene.get_event_id() + ); + + vec![ + // TODO: battle rewards + GameStateCallback::PlayerItemsGiven { + changes: Vec::new(), + }, + // TODO: FightSettle + GameStateCallback::ClientCmdProcessed { + ack_request_id: request_id, + response: Some( + EndBattleScRsp { + retcode: 0, + fight_settle: Some(FightSettle::default()), + } + .into(), + ), + }, + ] + } +} diff --git a/crates/battle-server/src/logic/scene/fight.rs b/crates/battle-server/src/logic/scene/fight.rs new file mode 100644 index 0000000..44e8069 --- /dev/null +++ b/crates/battle-server/src/logic/scene/fight.rs @@ -0,0 +1,31 @@ +use trigger_logic::scene::ELocalPlayType; + +use super::ScenePerform; + +pub struct FightScene { + pub event_id: u32, + pub play_type: ELocalPlayType, + pub perform: ScenePerform, +} + +impl FightScene { + pub fn get_protocol_scene_info(&self) -> trigger_protocol::SceneInfo { + use trigger_protocol::*; + + SceneInfo { + scene_type: 3, + local_play_type: self.play_type.into(), + event_id: self.event_id, // or maybe it's actually scene_id ? + fight_scene_info: Some(FightSceneInfo { + level_perform_info: Some(LevelPerformInfo { + time: self.perform.time.clone(), + weather: self.perform.weather.clone(), + }), + level_reward_info: Some(LevelRewardInfo::default()), + perform_type: 0, + end_hollow: true, + }), + ..Default::default() + } + } +} diff --git a/crates/battle-server/src/logic/scene/mod.rs b/crates/battle-server/src/logic/scene/mod.rs new file mode 100644 index 0000000..a2a2486 --- /dev/null +++ b/crates/battle-server/src/logic/scene/mod.rs @@ -0,0 +1,38 @@ +mod fight; +mod rally; +pub use fight::FightScene; +pub use rally::RallyScene; +use trigger_logic::scene::ELocalPlayType; + +pub struct ScenePerform { + pub time: String, + pub weather: String, +} + +pub enum Scene { + Fight(FightScene), + Rally(RallyScene), +} + +impl Scene { + pub fn get_protocol_scene_info(&self) -> trigger_protocol::SceneInfo { + match self { + Self::Fight(scene) => scene.get_protocol_scene_info(), + Self::Rally(scene) => scene.get_protocol_scene_info(), + } + } + + pub fn get_event_id(&self) -> u32 { + match self { + Self::Fight(scene) => scene.event_id, + Self::Rally(scene) => scene.event_id, + } + } + + pub fn get_play_type(&self) -> ELocalPlayType { + match self { + Self::Fight(scene) => scene.play_type, + Self::Rally(_) => ELocalPlayType::RallyLongFight, + } + } +} diff --git a/crates/battle-server/src/logic/scene/rally.rs b/crates/battle-server/src/logic/scene/rally.rs new file mode 100644 index 0000000..b674f2f --- /dev/null +++ b/crates/battle-server/src/logic/scene/rally.rs @@ -0,0 +1,35 @@ +use std::collections::HashMap; + +use trigger_logic::scene::ELocalPlayType; + +use super::ScenePerform; + +pub struct RallyScene { + pub event_id: u32, + pub perform: ScenePerform, +} + +impl RallyScene { + pub fn get_protocol_scene_info(&self) -> trigger_protocol::SceneInfo { + use trigger_protocol::*; + + SceneInfo { + scene_type: 7, + local_play_type: ELocalPlayType::RallyLongFight.into(), + event_id: self.event_id, // or maybe it's actually scene_id ? + rally_scene_info: Some(RallySceneInfo { + level_perform_info: Some(LevelPerformInfo { + time: self.perform.time.clone(), + weather: self.perform.weather.clone(), + }), + level_reward_info: Some(LevelRewardInfo::default()), + cur_check_point: Some(HollowCheckPoint { + quest_cond_progress: Some(QuestCondProgress { + public_variables: HashMap::new(), + }), + }), + }), + ..Default::default() + } + } +} diff --git a/crates/battle-server/src/main.rs b/crates/battle-server/src/main.rs new file mode 100644 index 0000000..98a7e37 --- /dev/null +++ b/crates/battle-server/src/main.rs @@ -0,0 +1,88 @@ +use std::sync::{LazyLock, OnceLock}; + +use config::BattleServerConfig; +use dashmap::DashMap; +use session::BattleSession; +use tokio::sync::Mutex; +use tracing::{error, info}; +use trigger_fileconfig::{ArchiveFile, NapFileCfg}; +use trigger_sv::{ + config::{ServerEnvironmentConfiguration, TomlConfig}, + die, logging, + net::{ServerNetworkManager, ServerType}, + print_banner, +}; + +mod config; +mod logic; +mod server_message_handler; +mod session; + +const BLK_ASSET_FILE: &str = "1321691809.blk"; +const CONFIG_FILE: &str = "battleserver.toml"; +const SERVER_TYPE: ServerType = ServerType::BattleServer; + +struct AppState { + #[expect(unused)] + pub config: &'static BattleServerConfig, + pub filecfg: NapFileCfg<'static>, + pub network_mgr: ServerNetworkManager, + pub sessions: DashMap>, +} + +#[tokio::main] +async fn main() { + static APP_STATE: OnceLock = OnceLock::new(); + static DESIGN_DATA_BLK: OnceLock = OnceLock::new(); + static CONFIG: LazyLock = + LazyLock::new(|| BattleServerConfig::load_or_create(CONFIG_FILE)); + + print_banner(); + logging::init_tracing(tracing::Level::DEBUG); + + let environment = ServerEnvironmentConfiguration::load_from_toml("environment.toml") + .unwrap_or_else(|err| { + error!("{err}"); + die(); + }); + + let design_data_blk = trigger_fileconfig::read_archive_file(&mut ::std::io::Cursor::new( + &std::fs::read(BLK_ASSET_FILE).unwrap_or_else(|err| { + error!("failed to open design data blk file: {err}"); + die(); + }), + )) + .expect("failed to unpack design data blk file"); + + let design_data_blk = DESIGN_DATA_BLK.get_or_init(|| design_data_blk); + + let network_mgr = + ServerNetworkManager::new(SERVER_TYPE, CONFIG.node.server_id, &environment.servers); + + let state = APP_STATE.get_or_init(|| AppState { + config: &CONFIG, + filecfg: NapFileCfg::new(design_data_blk), + network_mgr, + sessions: DashMap::new(), + }); + + state + .network_mgr + .start_listener(state, server_message_handler::handle_message) + .await + .inspect(|_| { + info!( + "successfully started service {:?}:{}", + SERVER_TYPE, CONFIG.node.server_id + ) + }) + .unwrap_or_else(|err| { + error!("failed to start network manager: {err}"); + die(); + }) + .await // this will await for entirety of the ServerNetworkManager work (forever) + .unwrap_or_else(|err| { + error!("{err}"); + die(); + }); +} diff --git a/crates/battle-server/src/server_message_handler.rs b/crates/battle-server/src/server_message_handler.rs new file mode 100644 index 0000000..3db5f28 --- /dev/null +++ b/crates/battle-server/src/server_message_handler.rs @@ -0,0 +1,166 @@ +use tokio::sync::Mutex; +use tracing::{debug, error, warn}; +use trigger_protocol::EnterSceneScNotify; +use trigger_sv::{ + message::{ + BindClientSessionMessage, BindClientSessionOkMessage, ChangeGameStateMessage, + ForwardClientProtocolMessage, GameStateCallback, GameStateCallbackMessage, Header, + UnbindClientSessionMessage, WithOpcode, + }, + net::ServerType, +}; + +use crate::{logic::GameState, session::BattleSession, AppState}; + +pub async fn handle_message(state: &'static AppState, packet: trigger_sv::message::NetworkPacket) { + match packet.opcode { + BindClientSessionMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_bind_client_session(state, packet.header, message).await; + } + } + UnbindClientSessionMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_unbind_client_session(state, packet.header, message).await; + } + } + ChangeGameStateMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_change_game_state(state, packet.header, message).await; + } + } + ForwardClientProtocolMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_forward_client_message(state, packet.header, message).await; + } + } + opcode => warn!("unhandled server message, opcode: {opcode}"), + } +} + +async fn on_change_game_state( + state: &'static AppState, + _header: Header, + message: ChangeGameStateMessage, +) { + let Some(session) = state.sessions.get(&message.session_id) else { + return; + }; + + let mut session = session.lock().await; + + debug!( + "changing game state for player with uid {}, request: {:?}", + session.player_uid, message + ); + + let Some(game_state) = GameState::new(&state.filecfg, &message.data) else { + error!("unsupported game state data received: {:?}", message.data); + return; + }; + + debug!( + "created fight scene for player with uid {}: quest_id: {}, play_type: {:?}", + session.player_uid, + game_state.dungeon.quest_id, + game_state.scene.get_play_type() + ); + + let enter_scene_notify = EnterSceneScNotify { + scene_info: Some(game_state.scene.get_protocol_scene_info()), + dungeon_info: Some(game_state.dungeon.get_protocol_dungeon_info()), + }; + + session.game_state = Some(game_state); + + state + .network_mgr + .send_to( + ServerType::GameServer, + 0, + GameStateCallbackMessage { + session_id: session.id, + protocol_units: vec![enter_scene_notify.into()], + scene_save_data: None, + callback: GameStateCallback::Loaded, + }, + ) + .await; +} + +async fn on_forward_client_message( + state: &'static AppState, + _header: Header, + message: ForwardClientProtocolMessage, +) { + let Some(session) = state.sessions.get(&message.session_id) else { + return; + }; + + let mut session = session.lock().await; + + for callback in crate::session::message::handle_client_message( + &mut session, + message.request_id, + message.message, + ) { + state + .network_mgr + .send_to( + ServerType::GameServer, + 0, + GameStateCallbackMessage { + session_id: session.id, + protocol_units: Vec::new(), + scene_save_data: None, + callback, + }, + ) + .await; + } +} + +async fn on_unbind_client_session( + state: &'static AppState, + _header: Header, + message: UnbindClientSessionMessage, +) { + if let Some((_, session)) = state.sessions.remove(&message.session_id) { + let session = session.lock().await; + debug!( + "unregistered session with id {} (player_uid: {})", + session.id, session.player_uid + ); + } +} + +async fn on_bind_client_session( + state: &'static AppState, + header: Header, + message: BindClientSessionMessage, +) { + state.sessions.insert( + message.session_id, + Mutex::new(BattleSession { + id: message.session_id, + player_uid: message.player_uid, + game_state: None, + }), + ); + + debug!( + "registered new session, id: {}, player_uid: {}", + message.session_id, message.player_uid + ); + + state + .network_mgr + .send_to( + header.sender_type.try_into().unwrap(), + header.sender_id, + BindClientSessionOkMessage { + session_id: message.session_id, + }, + ) + .await; +} diff --git a/crates/battle-server/src/session/message.rs b/crates/battle-server/src/session/message.rs new file mode 100644 index 0000000..e8b6775 --- /dev/null +++ b/crates/battle-server/src/session/message.rs @@ -0,0 +1,30 @@ +use trigger_encoding::Decodeable; +use trigger_protocol::{util::ProtocolUnit, ClientCmdID, EndBattleCsReq}; +use trigger_sv::message::GameStateCallback; + +use super::BattleSession; + +pub fn handle_client_message( + session: &mut BattleSession, + request_id: u32, + message: ProtocolUnit, +) -> Vec { + let mut callbacks = Vec::new(); + + match message.cmd_id { + EndBattleCsReq::CMD_ID if session.game_state.is_some() => { + if let Ok(message) = EndBattleCsReq::decode(&mut std::io::Cursor::new(&message.blob)) { + callbacks.extend( + session + .game_state + .as_ref() + .unwrap() + .on_end_battle(request_id, message), + ); + } + } + _ => (), + } + + callbacks +} diff --git a/crates/battle-server/src/session/mod.rs b/crates/battle-server/src/session/mod.rs new file mode 100644 index 0000000..9c559eb --- /dev/null +++ b/crates/battle-server/src/session/mod.rs @@ -0,0 +1,9 @@ +use crate::logic::GameState; + +pub mod message; + +pub struct BattleSession { + pub id: u64, + pub player_uid: u32, + pub game_state: Option, +} diff --git a/crates/dispatch-server/Cargo.toml b/crates/dispatch-server/Cargo.toml new file mode 100644 index 0000000..7483404 --- /dev/null +++ b/crates/dispatch-server/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "trigger-dispatch-server" +edition = "2024" +version.workspace = true + +[dependencies] +tokio.workspace = true +axum.workspace = true + +serde.workspace = true +serde_json.workspace = true +base64.workspace = true + +tracing.workspace = true +tracing-subscriber.workspace = true +thiserror.workspace = true + +trigger-sv.workspace = true +trigger-cryptography.workspace = true diff --git a/crates/dispatch-server/dispatch.default.toml b/crates/dispatch-server/dispatch.default.toml new file mode 100644 index 0000000..78416b2 --- /dev/null +++ b/crates/dispatch-server/dispatch.default.toml @@ -0,0 +1,20 @@ +[network] +http_addr = "127.0.0.1:10100" + +[[region]] +name = "trigger_rs" +title = "Trigger-RS" +ping_url = "http://127.0.0.1:10100/ping" +dispatch_url = "http://127.0.0.1:10100/query_gateway" +biz = "nap_global" +env = 2 +area = 2 + +[bound_server] +name = "trigger_rs" +title = "Trigger-RS" +seed = "95dedfc7cf06cdc2" +addr = "127.0.0.1" +port = 20501 +is_kcp = false + diff --git a/crates/dispatch-server/src/config.rs b/crates/dispatch-server/src/config.rs new file mode 100644 index 0000000..d281ed1 --- /dev/null +++ b/crates/dispatch-server/src/config.rs @@ -0,0 +1,42 @@ +use std::net::SocketAddr; + +use serde::Deserialize; +use trigger_sv::config::TomlConfig; + +#[derive(Deserialize)] +pub struct NetworkSetting { + pub http_addr: SocketAddr, +} + +#[derive(Deserialize)] +pub struct RegionSetting { + pub name: String, + pub title: String, + pub ping_url: String, + pub dispatch_url: String, + pub biz: String, + pub env: u8, + pub area: u8, +} + +#[derive(Deserialize)] +pub struct BoundRegionSetting { + pub name: String, + pub title: String, + pub addr: String, + pub port: u16, + pub is_kcp: bool, + pub seed: String, +} + +#[derive(Deserialize)] +pub struct DispatchConfig { + pub network: NetworkSetting, + #[serde(rename = "region")] + pub regions: Vec, + pub bound_server: BoundRegionSetting, +} + +impl TomlConfig for DispatchConfig { + const DEFAULT_TOML: &str = include_str!("../dispatch.default.toml"); +} diff --git a/crates/dispatch-server/src/data.rs b/crates/dispatch-server/src/data.rs new file mode 100644 index 0000000..5e1e248 --- /dev/null +++ b/crates/dispatch-server/src/data.rs @@ -0,0 +1,179 @@ +use std::borrow::Cow; + +use serde::Serialize; + +#[derive(Serialize, Default)] +pub struct ServerDispatchData<'ec, 'sv, 'cdn> { + pub retcode: i32, + #[serde(skip_serializing_if = "String::is_empty")] + pub msg: String, + #[serde(skip_serializing_if = "str::is_empty")] + pub title: Cow<'sv, str>, + #[serde(skip_serializing_if = "str::is_empty")] + pub region_name: Cow<'sv, str>, + #[serde(skip_serializing_if = "str::is_empty")] + pub client_secret_key: Cow<'ec, str>, + #[serde(skip_serializing_if = "str::is_empty")] + pub cdn_check_url: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub gateway: Option>, + #[serde(skip_serializing_if = "String::is_empty")] + pub oaserver_url: String, + #[serde(skip_serializing_if = "String::is_empty")] + pub force_update_url: String, + #[serde(skip_serializing_if = "String::is_empty")] + pub stop_jump_url: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub cdn_conf_ext: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + pub region_ext: Option, +} + +#[derive(Serialize)] +pub struct ServerGateway<'ip> { + pub ip: Cow<'ip, str>, + pub port: u16, +} + +#[derive(Serialize)] +pub struct RegionExtension { + pub func_switch: RegionSwitchFunc, + pub feedback_url: String, + pub exchange_url: String, + pub pgc_webview_method: i32, + #[serde(rename = "mtrNap")] + pub mtr_nap: String, + #[serde(rename = "mtrSdk")] + pub mtr_sdk: String, + #[serde(rename = "urlCheckNap")] + pub url_check_nap: String, + #[serde(rename = "urlCheckSdk")] + pub url_check_sdk: String, +} + +#[derive(Serialize, Default)] +pub struct RegionSwitchFunc { + #[serde(rename = "Close_Medium_Package_Download")] + pub close_medium_package_download: i64, + #[serde(rename = "Disable_Audio_Download")] + pub disable_audio_download: i64, + #[serde(rename = "Hide_Download_complete_resources")] + pub hide_download_complete_resources: i64, + #[serde(rename = "Hide_Download_resources_popups")] + pub hide_download_resources_popups: i64, + #[serde(rename = "Hide_download_progress")] + pub hide_download_progress: i64, + #[serde(rename = "Medium_Package_Play")] + pub medium_package_play: i64, + #[serde(rename = "Play_The_Music")] + pub play_the_music: i64, + pub disable_anim_allocator_opt: i64, + #[serde(rename = "disableAsyncSRPSubmit")] + pub disable_async_srpsubmit: i64, + pub disable_execute_async: i64, + #[serde(rename = "disableMetalPSOCreateAsync")] + pub disable_metal_psocreate_async: i64, + pub disable_object_instance_cache: i64, + #[serde(rename = "disableSRPHelper")] + pub disable_srp_helper: i64, + #[serde(rename = "disableSRPInstancing")] + pub disable_srp_instancing: i64, + pub disable_skin_mesh_strip: i64, + pub disable_step_preload_monster: i64, + pub disable_tex_streaming_visbility_opt: i64, + #[serde(rename = "disableiOSGPUBufferOpt")] + pub disable_ios_gpubuffer_opt: i64, + #[serde(rename = "disableiOSShaderHibernation")] + pub disable_ios_shader_hibernation: i64, + #[serde(rename = "enableiOSShaderWarmupOnStartup")] + pub enable_ios_shader_warmup_on_startup: i64, + #[serde(rename = "isKcp")] + pub is_kcp: i32, + #[serde(rename = "mtrConfig")] + pub mtr_config: Option, + #[serde(rename = "perfSwitch1")] + pub perf_switch_1: i32, + #[serde(rename = "perfSwitch2")] + pub perf_switch_2: i32, + #[serde(rename = "enableNoticeMobileConsole")] + pub enable_notice_mobile_console: i32, + #[serde(rename = "enableGachaMobileConsole")] + pub enable_gacha_mobile_console: i32, + #[serde(rename = "Disable_Popup_Notification")] + pub disable_popup_notification: i32, + #[serde(rename = "open_hotfix_popups")] + pub open_hotfix_popups: i32, + pub enable_operation_log: i32, + #[serde(rename = "Turnoff_Push_notifications")] + pub turnoff_push_notifications: i32, + #[serde(rename = "Disable_Frequent_attempts")] + pub disable_frequent_attempts: i32, + pub enable_performance_log: i32, + #[serde(rename = "Turnoff_unsafepreload_cloudgame")] + pub turnoff_unsafepreload_cloudgame: i32, + #[serde(rename = "Hide_Code_Login")] + pub hide_code_login: i32, +} + +#[derive(Serialize)] +pub struct CdnConfExt<'s> { + pub game_res: CdnGameRes<'s>, + pub design_data: CdnDesignData<'s>, + pub silence_data: CdnSilenceData<'s>, + #[serde(skip_serializing_if = "Option::is_none")] + pub pre_download: Option>, +} + +#[derive(Serialize)] +pub struct CdnGameRes<'s> { + pub base_url: Cow<'s, str>, + pub res_revision: Cow<'s, str>, + pub audio_revision: Cow<'s, str>, + pub branch: Cow<'s, str>, + pub md5_files: Cow<'s, str>, // Vec packed as string +} + +#[derive(Serialize)] +pub struct CdnDesignData<'s> { + pub base_url: Cow<'s, str>, + pub data_revision: Cow<'s, str>, + pub md5_files: Cow<'s, str>, // Vec packed as string +} + +#[derive(Serialize)] +pub struct CdnSilenceData<'s> { + pub base_url: Cow<'s, str>, + pub silence_revision: Cow<'s, str>, + pub md5_files: Cow<'s, str>, // Vec packed as string +} + +#[derive(Serialize)] +#[serde(rename_all = "camelCase")] +pub struct VersionFileInfo { + pub file_name: String, + pub file_size: i64, + #[serde(rename = "fileMD5")] + pub file_md5: String, +} + +#[derive(Serialize, Default)] +pub struct ServerListInfo<'s> { + pub area: u8, + pub biz: Cow<'s, str>, + pub dispatch_url: Cow<'s, str>, + pub env: u8, + pub is_recommend: bool, + pub name: Cow<'s, str>, + pub ping_url: Cow<'s, str>, + pub retcode: i32, + pub title: Cow<'s, str>, +} + +#[derive(Serialize, Default)] +pub struct QueryDispatchRsp<'rl> { + #[serde(skip_serializing_if = "Vec::is_empty")] + pub region_list: Vec>, + pub retcode: i32, + #[serde(skip_serializing_if = "String::is_empty")] + pub msg: String, +} diff --git a/crates/dispatch-server/src/main.rs b/crates/dispatch-server/src/main.rs new file mode 100644 index 0000000..3e5e847 --- /dev/null +++ b/crates/dispatch-server/src/main.rs @@ -0,0 +1,67 @@ +use std::{ + process::ExitCode, + sync::{LazyLock, OnceLock}, +}; + +use axum::{routing::get, Router}; +use config::DispatchConfig; +use tokio::net::TcpListener; +use tracing::error; +use trigger_sv::{ + config::{ServerEnvironmentConfiguration, TomlConfig}, + die, logging, print_banner, +}; + +mod config; +mod data; +mod ping; +mod query_dispatch; +mod query_gateway; + +const CONFIG_FILE: &str = "dispatch.toml"; + +#[derive(Clone)] +struct AppState { + pub config: &'static DispatchConfig, + pub environment: &'static ServerEnvironmentConfiguration, +} + +#[tokio::main] +async fn main() -> ExitCode { + static APP_STATE: OnceLock = OnceLock::new(); + static ENVIRONMENT: LazyLock = LazyLock::new(|| { + ServerEnvironmentConfiguration::load_from_toml("environment.toml").unwrap_or_else(|err| { + error!("{err}"); + die(); + }) + }); + static CONFIG: LazyLock = + LazyLock::new(|| DispatchConfig::load_or_create(CONFIG_FILE)); + + print_banner(); + logging::init_tracing(tracing::Level::DEBUG); + + let state = APP_STATE.get_or_init(|| AppState { + config: &CONFIG, + environment: &ENVIRONMENT, + }); + + let app = Router::new() + .route(ping::ROUTE_ENDPOINT, get(ping::process)) + .route(query_dispatch::ROUTE_ENDPOINT, get(query_dispatch::process)) + .route(query_gateway::ROUTE_ENDPOINT, get(query_gateway::process)) + .with_state(state); + + let Ok(listener) = TcpListener::bind(CONFIG.network.http_addr).await.inspect_err(|err| { + error!("TcpListener::bind failed. Is another instance of the server already running? Error: {err}"); + }) else { + die(); + }; + + axum::serve(listener, app).await.unwrap_or_else(|err| { + error!("axum::serve failed: {err}"); + die(); + }); + + ExitCode::SUCCESS +} diff --git a/crates/dispatch-server/src/ping.rs b/crates/dispatch-server/src/ping.rs new file mode 100644 index 0000000..95dbedd --- /dev/null +++ b/crates/dispatch-server/src/ping.rs @@ -0,0 +1,5 @@ +pub const ROUTE_ENDPOINT: &str = "/ping"; + +pub async fn process() -> &'static str { + "success" +} diff --git a/crates/dispatch-server/src/query_dispatch.rs b/crates/dispatch-server/src/query_dispatch.rs new file mode 100644 index 0000000..33f2cb4 --- /dev/null +++ b/crates/dispatch-server/src/query_dispatch.rs @@ -0,0 +1,32 @@ +use axum::{extract::State, Json}; + +use crate::{ + data::{QueryDispatchRsp, ServerListInfo}, + AppState, +}; + +pub const ROUTE_ENDPOINT: &str = "/query_dispatch"; + +pub async fn process(State(state): State<&'static AppState>) -> Json> { + use std::borrow::Cow::Borrowed; + + Json(QueryDispatchRsp { + retcode: 0, + msg: String::with_capacity(0), + region_list: state + .config + .regions + .iter() + .map(|rs| ServerListInfo { + name: Borrowed(&rs.name), + title: Borrowed(&rs.title), + ping_url: Borrowed(&rs.ping_url), + dispatch_url: Borrowed(&rs.dispatch_url), + biz: Borrowed(&rs.biz), + area: rs.area, + env: rs.env, + ..Default::default() + }) + .collect(), + }) +} diff --git a/crates/dispatch-server/src/query_gateway.rs b/crates/dispatch-server/src/query_gateway.rs new file mode 100644 index 0000000..9938312 --- /dev/null +++ b/crates/dispatch-server/src/query_gateway.rs @@ -0,0 +1,186 @@ +use axum::{ + extract::{Query, State}, + response::IntoResponse, + Json, +}; +use base64::{display::Base64Display, engine::general_purpose::STANDARD, Engine}; +use serde::{Deserialize, Serialize, Serializer}; +use tracing::debug; +use trigger_cryptography::rsa; +use trigger_sv::config::RsaSetting; + +use crate::{ + data::{ + CdnConfExt, CdnDesignData, CdnGameRes, CdnSilenceData, RegionExtension, RegionSwitchFunc, + ServerDispatchData, ServerGateway, + }, + AppState, +}; + +pub const ROUTE_ENDPOINT: &str = "/query_gateway"; + +pub struct Response { + pub data: ServerDispatchData<'static, 'static, 'static>, + pub rsa: Option<&'static RsaSetting>, +} + +#[derive(Debug, thiserror::Error)] +pub enum QueryGatewayError { + #[error("invalid rsa version specified: {0}")] + InvalidRsaVer(u32), + #[error("invalid dispatch seed, expected: {0}, got: {1}")] + InvalidDispatchSeed(&'static str, String), +} + +impl QueryGatewayError { + pub fn retcode(&self) -> i32 { + match self { + Self::InvalidRsaVer(_) => 74, + Self::InvalidDispatchSeed(_, _) => 75, + } + } + + pub fn message(&self) -> String { + String::with_capacity(0) + } +} + +#[derive(Serialize)] +struct EncryptedAndSignedData { + #[serde(serialize_with = "to_base64")] + pub content: Vec, + #[serde(serialize_with = "to_base64")] + pub sign: Vec, +} + +impl IntoResponse for Response { + fn into_response(self) -> axum::response::Response { + let Some(rsa) = self.rsa else { + return Json(self.data).into_response(); + }; + + let json = serde_json::to_string(&self.data).unwrap(); + + Json(EncryptedAndSignedData { + content: rsa::encrypt(&rsa.client_public_key, json.as_bytes()), + sign: rsa::sign(&rsa.server_private_key, json.as_bytes()).into(), + }) + .into_response() + } +} + +#[derive(Deserialize)] +pub struct QueryGatewayParam { + pub rsa_ver: u32, + pub seed: String, +} + +pub async fn process( + State(state): State<&'static AppState>, + Query(param): Query, +) -> Response { + match internal_process(&state, param) { + Ok(response) => response, + Err((rsa, err)) => { + debug!("query_gateway failed: {err}"); + + Response { + rsa, + data: ServerDispatchData { + retcode: err.retcode(), + msg: err.message(), + ..Default::default() + }, + } + } + } +} + +fn internal_process( + state: &'static AppState, + param: QueryGatewayParam, +) -> Result, QueryGatewayError)> { + use std::borrow::Cow::{Borrowed, Owned}; + + let rsa = state + .environment + .security + .get_rsa_setting_by_version(param.rsa_ver); + + if rsa.is_none() { + return Err((None, QueryGatewayError::InvalidRsaVer(param.rsa_ver))); + }; + + (param.seed == state.config.bound_server.seed) + .then_some(()) + .ok_or(( + rsa, + QueryGatewayError::InvalidDispatchSeed(&state.config.bound_server.seed, param.seed), + ))?; + + let server = &state.config.bound_server; + + Ok(Response { + rsa, + data: ServerDispatchData { + retcode: 0, + msg: String::with_capacity(0), + region_name: Borrowed(&server.name), + title: Borrowed(&server.title), + client_secret_key: Owned(base64::engine::general_purpose::STANDARD.encode(&state.environment.security.static_key.seed_buf)), + cdn_check_url: String::with_capacity(0), + gateway: Some(ServerGateway { + ip: Borrowed(&server.addr), + port: server.port, + }), + oaserver_url: String::new(), + force_update_url: String::new(), + stop_jump_url: String::new(), + cdn_conf_ext: Some(CdnConfExt { + // TODO: unhardcode this + design_data: CdnDesignData { + base_url: Borrowed("https://autopatchcn.juequling.com/design_data/beta_live/output_6567607_45953cc7be/client/"), + data_revision: Borrowed("6564324"), + md5_files: Borrowed(r#"[{"fileName": "data_version", "fileSize": 4312, "fileMD5": "7566724726121829372"}]"#), + }, + game_res: CdnGameRes { + audio_revision: Borrowed("6549139"), + base_url: Borrowed("https://autopatchcn.juequling.com/game_res/beta_live/output_6567607_45953cc7be/client/"), + branch: Borrowed("beta_live"), + md5_files: Borrowed(r#"[{"fileName": "res_version", "fileSize": 2348948, "fileMD5": "3373372231805782958"}, {"fileName": "audio_version", "fileSize": 30433, "fileMD5": "9430105181932353351"}, {"fileName": "base_revision", "fileSize": 18, "fileMD5": "14955177794877370186"}]"#), + res_revision: Borrowed("6567607"), + }, + silence_data: CdnSilenceData { + base_url: Borrowed("https://autopatchcn.juequling.com/design_data/beta_live/output_6567607_45953cc7be/client_silence/"), + md5_files: Borrowed(r#"[{"fileName": "silence_version", "fileSize": 467, "fileMD5": "10455524392801028815"}]"#), + silence_revision: Borrowed("6567607"), + }, + pre_download: None, + }), + region_ext: Some(RegionExtension { + exchange_url: String::new(), + feedback_url: String::new(), + func_switch: RegionSwitchFunc { + disable_frequent_attempts: 1, + enable_gacha_mobile_console: 1, + enable_notice_mobile_console: 1, + enable_performance_log: 1, + is_kcp: server.is_kcp as i32, + ..Default::default() + }, + mtr_nap: String::new(), + mtr_sdk: String::new(), + pgc_webview_method: 1, + url_check_nap: String::new(), + url_check_sdk: String::new(), + }), + } + }) +} + +pub fn to_base64(bytes: &[u8], serializer: S) -> Result +where + S: Serializer, +{ + serializer.collect_str(&Base64Display::new(bytes, &STANDARD)) +} diff --git a/crates/game-server/Cargo.toml b/crates/game-server/Cargo.toml new file mode 100644 index 0000000..72a5b70 --- /dev/null +++ b/crates/game-server/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "trigger-game-server" +edition = "2024" +version.workspace = true + +[dependencies] +tokio.workspace = true + +rand.workspace = true +serde.workspace = true +serde_json.workspace = true +tracing.workspace = true +dashmap.workspace = true +thiserror.workspace = true + +trigger-sv.workspace = true +trigger-logic.workspace = true +trigger-codegen.workspace = true +trigger-encoding.workspace = true +trigger-protocol.workspace = true +trigger-database.workspace = true +trigger-fileconfig.workspace = true diff --git a/crates/game-server/gameserver.default.toml b/crates/game-server/gameserver.default.toml new file mode 100644 index 0000000..a534e14 --- /dev/null +++ b/crates/game-server/gameserver.default.toml @@ -0,0 +1,3 @@ +[node] +server_id = 0 + diff --git a/crates/game-server/src/config.rs b/crates/game-server/src/config.rs new file mode 100644 index 0000000..db12f7e --- /dev/null +++ b/crates/game-server/src/config.rs @@ -0,0 +1,33 @@ +use serde::Deserialize; +use trigger_sv::{ + config::{ServerNodeConfiguration, TomlConfig}, + gm_command::GMCommand, +}; + +#[derive(Deserialize)] +pub struct GameServerConfig { + pub node: ServerNodeConfiguration, +} + +impl TomlConfig for GameServerConfig { + const DEFAULT_TOML: &str = include_str!("../gameserver.default.toml"); +} + +#[derive(Debug, Deserialize)] +pub struct GMScript { + #[serde(rename = "GMStringList")] + pub commands: Vec, +} + +#[derive(Debug, Deserialize)] +pub struct BlackListItem { + pub id: i32, + #[expect(dead_code)] + pub name: String, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct GMBlackList { + pub black_item_list: Vec, +} diff --git a/crates/game-server/src/logic/avatar_util.rs b/crates/game-server/src/logic/avatar_util.rs new file mode 100644 index 0000000..df59a77 --- /dev/null +++ b/crates/game-server/src/logic/avatar_util.rs @@ -0,0 +1,14 @@ +pub const MALE_AVATAR_ID: u32 = 2011; +pub const FEMALE_AVATAR_ID: u32 = 2021; + +pub fn is_player_avatar(id: u32) -> bool { + id == MALE_AVATAR_ID || id == FEMALE_AVATAR_ID +} + +pub fn is_valid_talent_switch(v: &[bool]) -> bool { + v.len() == 6 + && v[0..3] + .iter() + .zip(v[3..6].iter()) + .fold(true, |v, (&a, &b)| v && !(a && b)) +} diff --git a/crates/game-server/src/logic/bit_util.rs b/crates/game-server/src/logic/bit_util.rs new file mode 100644 index 0000000..10c4ebf --- /dev/null +++ b/crates/game-server/src/logic/bit_util.rs @@ -0,0 +1,24 @@ +pub trait BitSetExt { + fn is_bit_set(self, idx: usize) -> bool; + fn from_vec(v: Vec) -> Self; + fn to_vec(self, n: usize) -> Vec; +} + +impl BitSetExt for i16 { + fn is_bit_set(self, idx: usize) -> bool { + (self as u16) & (1 << (idx as u16)) != 0 + } + + fn from_vec(v: Vec) -> Self { + v.into_iter() + .take(15) + .enumerate() + .fold(0i16, |v, (i, b)| v | (i16::from(b) << (i as i16))) + } + + fn to_vec(self, n: usize) -> Vec { + (0..std::cmp::min(15, n)) + .map(|idx| self.is_bit_set(idx)) + .collect() + } +} diff --git a/crates/game-server/src/logic/dungeon_util.rs b/crates/game-server/src/logic/dungeon_util.rs new file mode 100644 index 0000000..9cadd5d --- /dev/null +++ b/crates/game-server/src/logic/dungeon_util.rs @@ -0,0 +1,42 @@ +use trigger_protocol::*; + +use super::NapPlayer; + +pub fn build_dungeon_equip_info(player: &NapPlayer, avatar_id_list: &[u32]) -> DungeonEquipInfo { + let avatar_list = player.role_model.get_protocol_avatar_list(avatar_id_list); + + let weapon_uid_list = avatar_list + .iter() + .map(|avatar| avatar.cur_weapon_uid as i32) + .filter(|uid| *uid != 0) + .collect::>(); + + let equip_uid_list = avatar_list + .iter() + .flat_map(|avatar| { + avatar + .dressed_equip_list + .iter() + .map(|equip| equip.equip_uid as i32) + }) + .collect::>(); + + let weapon_list = (!weapon_uid_list.is_empty()) + .then(|| { + player + .equip_model + .get_protocol_weapon_list(&weapon_uid_list) + }) + .unwrap_or_default(); + + let equip_list = (!equip_uid_list.is_empty()) + .then(|| player.equip_model.get_protocol_equip_list(&equip_uid_list)) + .unwrap_or_default(); + + DungeonEquipInfo { + avatar_list, + weapon_list, + equip_list, + ..Default::default() + } +} diff --git a/crates/game-server/src/logic/equip_util.rs b/crates/game-server/src/logic/equip_util.rs new file mode 100644 index 0000000..3af318c --- /dev/null +++ b/crates/game-server/src/logic/equip_util.rs @@ -0,0 +1,27 @@ +use std::{collections::HashMap, sync::LazyLock}; + +use rand::RngCore; + +static EQUIP_SLOT_PROPERTIES: LazyLock>> = LazyLock::new(|| { + HashMap::from([ + (1, vec![11103]), + (2, vec![12103]), + (3, vec![13103]), + (4, vec![11102, 12102, 13102, 20103, 21103, 31203, 23103]), + ( + 5, + vec![11102, 12102, 13102, 31803, 31903, 31703, 31603, 31503], + ), + (6, vec![11102, 12102, 13102, 31402, 12202, 30502]), + ]) +}); + +pub fn random_main_property(equip_type: i32) -> i64 { + let mut rng = rand::thread_rng(); + + let prop_types = EQUIP_SLOT_PROPERTIES.get(&equip_type).unwrap(); + let key = prop_types[(rng.next_u32() as usize) % prop_types.len()] as i64; + let val = 400 + ((rng.next_u32() as i64) % 300); + + (key << 32) | (val & 0xFFFF) +} diff --git a/crates/game-server/src/logic/gm_util.rs b/crates/game-server/src/logic/gm_util.rs new file mode 100644 index 0000000..fecf1f3 --- /dev/null +++ b/crates/game-server/src/logic/gm_util.rs @@ -0,0 +1,405 @@ +use tracing::{debug, warn}; +use trigger_logic::quest::EQuestType; +use trigger_protocol::{util::ProtocolUnit, AvatarSync, CafeSync, ItemSync, PlayerSyncScNotify}; +use trigger_sv::gm_command::GMCommand; + +use crate::AppState; + +use super::{player::AvatarPropertyChanges, NapPlayer}; + +pub struct CommandContext<'player> { + pub player: &'player mut NapPlayer, + pub state: &'static AppState, + notifies: Vec, +} + +impl<'player> CommandContext<'player> { + pub fn new(player: &'player mut NapPlayer, state: &'static AppState) -> Self { + Self { + player, + state, + notifies: Vec::new(), + } + } + + pub fn add_notify>(&mut self, notify: Notify) { + self.notifies.push(notify.into()); + } + + pub fn remove_notifies(&mut self) -> Vec { + std::mem::take(&mut self.notifies) + } +} + +pub async fn execute_command(context: &mut CommandContext<'_>, command: &GMCommand) { + debug!( + "executing {command:?} for player with uid {}", + context.player.player_uid() + ); + + match command { + GMCommand::AddAvatar { id } => gm_add_avatar(context, *id).await, + GMCommand::SetAvatarLevel { id, level } => { + gm_modify_avatar_properties(context, *id, Some(*level), None, None).await + } + GMCommand::SetAvatarRank { id, rank } => { + gm_modify_avatar_properties(context, *id, None, Some(*rank), None).await + } + GMCommand::SetAvatarTalent { id, talent } => { + gm_modify_avatar_properties(context, *id, None, None, Some(*talent)).await + } + GMCommand::AddAllWeapon => gm_add_all_weapon(context).await, + GMCommand::AddAllEquip => gm_add_all_equip(context).await, + GMCommand::AddEquip { + equip_id, + level, + star, + property_params, + } => gm_add_equip(context, *equip_id, *level, *star, property_params).await, + GMCommand::AddQuest { + quest_type, + quest_id, + } => gm_add_quest(context, *quest_type, *quest_id).await, + GMCommand::FinishQuest { + quest_type, + quest_id, + } => { + gm_finish_quest(context, *quest_type, *quest_id).await; + } + GMCommand::AddItemByType { .. } => { + warn!("AddItemByType is not implemented yet"); + } + GMCommand::UnlockAllHollow => gm_unlock_all_hollow(context).await, + GMCommand::UnlockAllHollowBuff => gm_unlock_all_hollow_buff(context).await, + GMCommand::UnlockAllCafeItem => gm_unlock_all_cafe_item(context).await, + } +} + +async fn gm_unlock_all_hollow(context: &mut CommandContext<'_>) { + context + .player + .yorozuya_model + .unlock_hollow( + &context + .state + .filecfg + .hollow_config_template_tb + .data() + .unwrap() + .iter() + .map(|tmpl| tmpl.id()) + .collect::>(), + ) + .await; + + context.add_notify(PlayerSyncScNotify { + // TODO: HollowData sync! + ..Default::default() + }); +} + +async fn gm_unlock_all_cafe_item(context: &mut CommandContext<'_>) { + context + .player + .cafe_model + .unlock_cafe_item( + &context + .state + .filecfg + .cafe_config_template_tb + .data() + .unwrap() + .iter() + .map(|tmpl| tmpl.id()) + .collect::>(), + ) + .await; + + context.add_notify(PlayerSyncScNotify { + cafe_sync: Some(CafeSync { + cafe_data: Some(context.player.cafe_model.get_protocol_cafe_data()), + }), + ..Default::default() + }); +} + +async fn gm_unlock_all_hollow_buff(context: &mut CommandContext<'_>) { + context + .player + .ramen_model + .unlock_ramen( + &context + .state + .filecfg + .hollow_buff_template_tb + .data() + .unwrap() + .iter() + .map(|tmpl| tmpl.id()) + .collect::>(), + ) + .await; + + context.add_notify(PlayerSyncScNotify { + ramen_sync: Some(context.player.ramen_model.get_protocol_ramen_sync(false)), + ..Default::default() + }); +} + +async fn gm_add_quest(context: &mut CommandContext<'_>, quest_type: i32, quest_id: i32) { + if let Ok(ty) = EQuestType::try_from(quest_type) { + match ty { + EQuestType::ArchiveFile => { + context + .player + .main_story_model + .add_archive_files(&[quest_id]) + .await; + } + EQuestType::Hollow => { + context + .player + .yorozuya_model + .add_hollow_quest(&[quest_id]) + .await; + } + EQuestType::MainCity => {} + _ => { + warn!("quest type {quest_type:?} is not implemented yet"); + return; + } + }; + + context.player.quest_model.add_quest(ty, quest_id).await; + } else { + warn!("gm_add_quest: invalid quest type: {quest_type}"); + } +} + +async fn gm_finish_quest(context: &mut CommandContext<'_>, quest_type: i32, quest_id: i32) { + if let Ok(quest_type) = EQuestType::try_from(quest_type) { + let quest_id_list = match quest_type { + EQuestType::ArchiveFile => { + let quest_id_list = if quest_id != 0 { + vec![quest_id] + } else { + context + .state + .filecfg + .archive_file_quest_template_tb + .data() + .unwrap() + .iter() + .map(|tmpl| tmpl.id()) + .collect::>() + }; + + context + .player + .main_story_model + .add_archive_files(&quest_id_list) + .await; + + quest_id_list + } + EQuestType::Hollow => { + let quest_id_list = if quest_id != 0 { + vec![quest_id] + } else { + context + .state + .filecfg + .hollow_quest_template_tb + .data() + .unwrap() + .iter() + .map(|tmpl| tmpl.id()) + .collect::>() + }; + + context + .player + .yorozuya_model + .add_hollow_quest(&quest_id_list) + .await; + + quest_id_list + } + _ => { + warn!("quest type {quest_type:?} is not implemented yet"); + return; + } + }; + + context + .player + .quest_model + .finish_quests(quest_type, &quest_id_list) + .await; + } else { + warn!("gm_add_quest: invalid quest type: {quest_type}"); + } +} + +async fn gm_add_equip( + context: &mut CommandContext<'_>, + equip_id: i32, + level: i16, + star: i16, + params: &[i32], +) { + let equip_uid = context + .player + .equip_model + .add_custom_equip(equip_id, level, star, params) + .await; + + context.add_notify(PlayerSyncScNotify { + item_sync: Some(ItemSync { + equip_list: context + .player + .equip_model + .get_protocol_equip_list(&[equip_uid]), + ..Default::default() + }), + ..Default::default() + }); +} + +async fn gm_add_all_equip(context: &mut CommandContext<'_>) { + let added_equip_uid_list = context + .player + .equip_model + .add_equip( + &context + .state + .filecfg + .equipment_template_tb + .data() + .unwrap() + .iter() + .map(|tmpl| tmpl.item_id()) + .collect::>(), + ) + .await; + + context.add_notify(PlayerSyncScNotify { + item_sync: Some(ItemSync { + equip_list: context + .player + .equip_model + .get_protocol_equip_list(&added_equip_uid_list), + ..Default::default() + }), + ..Default::default() + }); +} + +async fn gm_add_all_weapon(context: &mut CommandContext<'_>) { + let added_weapon_uid_list = context + .player + .equip_model + .add_weapon( + &context + .state + .filecfg + .weapon_template_tb + .data() + .unwrap() + .iter() + .map(|tmpl| tmpl.item_id()) + .collect::>(), + ) + .await; + + context.add_notify(PlayerSyncScNotify { + item_sync: Some(ItemSync { + weapon_list: context + .player + .equip_model + .get_protocol_weapon_list(&added_weapon_uid_list), + ..Default::default() + }), + ..Default::default() + }); +} + +async fn gm_modify_avatar_properties( + context: &mut CommandContext<'_>, + id: i32, + level: Option, + rank: Option, + talent_num: Option, +) { + if let Some(updated_avatars) = context + .player + .role_model + .change_avatar_properties(AvatarPropertyChanges { + avatar_id: id as u32, + level, + rank, + talent_num, + }) + .await + { + context.add_notify(PlayerSyncScNotify { + avatar_sync: Some(AvatarSync { + avatar_list: context + .player + .role_model + .get_protocol_avatar_list(&updated_avatars), + }), + ..Default::default() + }); + } +} + +async fn gm_add_avatar(context: &mut CommandContext<'_>, id: i32) { + if id == 0 { + let added_avatars = context + .player + .role_model + .unlock_avatars( + &context + .state + .filecfg + .avatar_base_template_tb + .data() + .unwrap() + .iter() + .map(|tmpl| tmpl.id()) + .filter(|id| { + !context + .state + .gm_blacklist + .black_item_list + .iter() + .any(|item| item.id == *id) + }) + .collect::>(), + ) + .await; + + context.add_notify(PlayerSyncScNotify { + avatar_sync: Some(AvatarSync { + avatar_list: context + .player + .role_model + .get_protocol_avatar_list(&added_avatars), + }), + ..Default::default() + }); + } else { + context.player.role_model.unlock_avatars(&[id]).await; + + context.add_notify(PlayerSyncScNotify { + avatar_sync: Some(AvatarSync { + avatar_list: context + .player + .role_model + .get_protocol_avatar_list(&[id as u32]), + }), + ..Default::default() + }); + } +} diff --git a/crates/game-server/src/logic/mod.rs b/crates/game-server/src/logic/mod.rs new file mode 100644 index 0000000..bd37e43 --- /dev/null +++ b/crates/game-server/src/logic/mod.rs @@ -0,0 +1,9 @@ +pub mod avatar_util; +pub mod bit_util; +pub mod dungeon_util; +pub mod equip_util; +pub mod gm_util; +mod player; +pub mod scene_util; + +pub use player::NapPlayer; diff --git a/crates/game-server/src/logic/player/cafe.rs b/crates/game-server/src/logic/player/cafe.rs new file mode 100644 index 0000000..663e1bd --- /dev/null +++ b/crates/game-server/src/logic/player/cafe.rs @@ -0,0 +1,120 @@ +use super::NapContext; +use trigger_database::{entity::cafe_data, prelude::*}; +use trigger_fileconfig::CafeConfigTemplate; +use trigger_sv::time_util; + +pub struct CafeModel { + context: NapContext, + cafe_data: cafe_data::Model, +} + +impl CafeModel { + pub async fn init(context: NapContext) -> Self { + let cafe_data = Self::load_or_create_cafe_data(&context).await; + + Self { context, cafe_data } + } + + pub async fn try_drink_cafe( + &mut self, + cafe_item_id: i32, + ) -> Option<(i32, trigger_protocol::CafeSync)> { + if !self.cafe_data.cafe_item_list.contains(&cafe_item_id) { + return None; + } + + let Some(config) = self.get_cafe_config(cafe_item_id) else { + return None; + }; + + // TODO: time check and limits? + + let model = cafe_data::ActiveModel { + cur_cafe_item: Set(cafe_item_id), + last_drink_timestamp: Set(time_util::cur_timestamp_seconds()), + ..self.cafe_data.clone().into() + }; + + self.cafe_data = model + .update(self.context.database) + .await + .expect("cafe_data::update failed"); + + Some(( + config.energy_amount(), + trigger_protocol::CafeSync { + cafe_data: Some(self.get_protocol_cafe_data()), + }, + )) + } + + pub async fn unlock_cafe_item(&mut self, cafe_item_id_list: &[i32]) { + let mut cafe_item_list = std::mem::take(&mut self.cafe_data.cafe_item_list); + + cafe_item_id_list.iter().for_each(|id| { + if !cafe_item_list.contains(id) { + cafe_item_list.push(*id); + } + }); + + let model = cafe_data::ActiveModel { + cafe_item_list: Set(cafe_item_list), + ..self.cafe_data.clone().into() + }; + + self.cafe_data = model + .update(self.context.database) + .await + .expect("cafe_data::update failed"); + } + + pub fn get_cafe_item_price(&self, cafe_item_id: i32) -> i32 { + self.get_cafe_config(cafe_item_id) + .map(|tmpl| tmpl.price()) + .unwrap_or(0) + } + + pub fn get_protocol_cafe_data(&self) -> trigger_protocol::CafeData { + trigger_protocol::CafeData { + cafe_item_list: self.cafe_data.cafe_item_list.clone(), + cur_cafe_item: self.cafe_data.cur_cafe_item, + today_drink_times: 0, + } + } + + async fn load_or_create_cafe_data(context: &NapContext) -> cafe_data::Model { + let player_uid = context.player_uid as i32; + + match cafe_data::Entity::find_by_id(player_uid) + .one(context.database) + .await + .expect("cafe_data::find_by_id failed") + { + Some(info) => info, + None => Self::create_default_cafe_data(context) + .insert(context.database) + .await + .expect("cafe_data::insert failed"), + } + } + + fn get_cafe_config(&self, cafe_item_id: i32) -> Option> { + self.context + .filecfg + .cafe_config_template_tb + .data() + .unwrap() + .iter() + .find(|tmpl| tmpl.id() == cafe_item_id) + } + + fn create_default_cafe_data(context: &NapContext) -> cafe_data::ActiveModel { + cafe_data::Model { + player_uid: context.player_uid as i32, + cafe_item_list: Vec::new(), + cur_cafe_item: 0, + last_drink_timestamp: 0, + } + .into() + } +} diff --git a/crates/game-server/src/logic/player/equip.rs b/crates/game-server/src/logic/player/equip.rs new file mode 100644 index 0000000..5808f5e --- /dev/null +++ b/crates/game-server/src/logic/player/equip.rs @@ -0,0 +1,278 @@ +use std::collections::HashMap; + +use trigger_database::{ + entity::{equipment, player_item_uid, weapon}, + prelude::*, +}; + +use crate::logic::equip_util; + +use super::NapContext; + +pub struct EquipModel { + context: NapContext, + weapons: HashMap, + equipment: HashMap, +} + +impl EquipModel { + pub async fn init(context: NapContext) -> Self { + let weapons = Self::load_weapon_map(&context).await; + let equipment = Self::load_equipment(&context).await; + + Self { + context, + weapons, + equipment, + } + } + + pub fn weapon_exists(&self, uid: i32) -> bool { + self.weapons.contains_key(&uid) + } + + pub fn equipment_exists(&self, uid: i32) -> bool { + self.equipment.contains_key(&uid) + } + + pub fn get_protocol_weapon_list(&self, filter: &[i32]) -> Vec { + self.weapons + .values() + .filter(|weapon| filter.is_empty() || filter.contains(&weapon.weapon_uid)) + .map(|weapon| trigger_protocol::Weapon { + id: weapon.weapon_id as u32, + uid: weapon.weapon_uid as u32, + level: weapon.level as u32, + exp: weapon.exp as u32, + star: weapon.star as u32, + refine_level: weapon.refine_level as u32, + lock: weapon.lock, + }) + .collect() + } + + pub fn get_protocol_equip_list(&self, filter: &[i32]) -> Vec { + use trigger_protocol::*; + + self.equipment + .values() + .filter(|equip| filter.is_empty() || filter.contains(&equip.equip_uid)) + .map(|equip| Equip { + id: equip.equip_id as u32, + uid: equip.equip_uid as u32, + level: equip.level as u32, + exp: equip.exp as u32, + star: equip.star as u32, + lock: equip.lock, + propertys: equip + .properties + .iter() + .map(|&prop| EquipProperty { + key: (prop >> 32) as u32, + add_value: ((prop >> 16) & 0xFFFF) as u32, + base_value: (prop & 0xFFFF) as u32, + }) + .collect(), + sub_propertys: equip + .sub_properties + .iter() + .map(|&prop| EquipProperty { + key: (prop >> 32) as u32, + add_value: ((prop >> 16) & 0xFFFF) as u32, + base_value: (prop & 0xFFFF) as u32, + }) + .collect(), + }) + .collect() + } + + pub async fn add_custom_equip( + &mut self, + equip_id: i32, + level: i16, + star: i16, + property_params: &[i32], + ) -> i32 { + let equip_uid = Self::next_item_uid(&self.context).await; + let mut params = property_params.into_iter(); + + let mut properties = Vec::new(); + let mut sub_properties = Vec::new(); + + if let (Some(&key), Some(&add_value), Some(&base_value)) = + (params.next(), params.next(), params.next()) + { + properties + .push(((key as i64) << 32) | ((add_value as i64) << 16) | (base_value as i64)); + } + + while let (Some(&key), Some(&add_value), Some(&base_value)) = + (params.next(), params.next(), params.next()) + { + sub_properties + .push(((key as i64) << 32) | ((add_value as i64) << 16) | (base_value as i64)); + } + + let model = equipment::Model { + owner_player_uid: self.context.player_uid as i32, + equip_id, + equip_uid, + level, + exp: 0, + star, + lock: false, + properties, + sub_properties, + }; + + self.equipment.insert( + equip_uid, + equipment::ActiveModel::from(model) + .insert(self.context.database) + .await + .expect("equipment::insert failed"), + ); + + equip_uid + } + + pub async fn add_equip(&mut self, equip_id_list: &[i32]) -> Vec { + let equipment_template_tb = self.context.filecfg.equipment_template_tb.data().unwrap(); + let uids = Self::next_item_uids(&self.context, equip_id_list.len() as u32).await; + + let (uids, models): (Vec<_>, Vec<_>) = equip_id_list + .iter() + .map(|id| { + equipment_template_tb + .iter() + .find(|tmpl| tmpl.item_id() == *id) + }) + .flatten() + .zip(uids) + .map(|(tmpl, item_uid)| { + ( + item_uid, + equipment::Model { + owner_player_uid: self.context.player_uid as i32, + equip_id: tmpl.item_id(), + equip_uid: item_uid, + level: 1, + exp: 0, + star: 1, + lock: false, + properties: vec![equip_util::random_main_property(tmpl.equipment_type())], + sub_properties: Vec::new(), + }, + ) + }) + .unzip(); + + equipment::Entity::insert_many(models.iter().cloned().map(equipment::ActiveModel::from)) + .exec(self.context.database) + .await + .expect("equipment::insert_many failed"); + + models.into_iter().for_each(|model| { + self.equipment.insert(model.equip_uid, model); + }); + + uids + } + + pub async fn add_weapon(&mut self, weapon_id_list: &[i32]) -> Vec { + let weapon_template_tb = self.context.filecfg.weapon_template_tb.data().unwrap(); + let uids = Self::next_item_uids(&self.context, weapon_id_list.len() as u32).await; + + let (uids, models): (Vec<_>, Vec<_>) = weapon_id_list + .iter() + .map(|id| weapon_template_tb.iter().find(|tmpl| tmpl.item_id() == *id)) + .flatten() + .zip(uids) + .map(|(tmpl, item_uid)| { + ( + item_uid, + weapon::Model { + owner_player_uid: self.context.player_uid as i32, + weapon_uid: item_uid, + weapon_id: tmpl.item_id(), + level: 60, + exp: 0, + star: 1 + tmpl.star_limit() as i16, + refine_level: tmpl.refine_limit() as i16, + lock: false, + }, + ) + }) + .unzip(); + + weapon::Entity::insert_many(models.iter().cloned().map(weapon::ActiveModel::from)) + .exec(self.context.database) + .await + .expect("equipment::insert_many failed"); + + models.into_iter().for_each(|model| { + self.weapons.insert(model.weapon_uid, model); + }); + + uids + } + + async fn load_equipment(context: &NapContext) -> HashMap { + equipment::Entity::find() + .filter(equipment::Column::OwnerPlayerUid.eq(context.player_uid as i32)) + .all(context.database) + .await + .expect("equipment::find(all) failed") + .into_iter() + .map(|equip| (equip.equip_uid, equip)) + .collect() + } + + async fn load_weapon_map(context: &NapContext) -> HashMap { + weapon::Entity::find() + .filter(weapon::Column::OwnerPlayerUid.eq(context.player_uid as i32)) + .all(context.database) + .await + .expect("weapon::find(all) failed") + .into_iter() + .map(|weapon| (weapon.weapon_uid, weapon)) + .collect() + } + + async fn next_item_uid(context: &NapContext) -> i32 { + Self::next_item_uids(context, 1).await.nth(0).unwrap() + } + + async fn next_item_uids(context: &NapContext, count: u32) -> impl Iterator { + let count = count as i32; + match player_item_uid::Entity::find_by_id(context.player_uid as i32) + .one(context.database) + .await + .expect("player_item_uid::find_by_id failed") + { + Some(model) => { + let last_item_uid = model.last_item_uid; + player_item_uid::ActiveModel { + last_item_uid: Set(last_item_uid + count), + ..model.into() + } + .update(context.database) + .await + .expect("player_item_uid::update failed"); + + last_item_uid + 1..=last_item_uid + count + } + None => { + player_item_uid::ActiveModel { + player_uid: Set(context.player_uid as i32), + last_item_uid: Set(count), + } + .insert(context.database) + .await + .expect("player_item_uid::insert failed"); + + 1..=count + } + } + } +} diff --git a/crates/game-server/src/logic/player/item.rs b/crates/game-server/src/logic/player/item.rs new file mode 100644 index 0000000..591da43 --- /dev/null +++ b/crates/game-server/src/logic/player/item.rs @@ -0,0 +1,187 @@ +use std::collections::HashMap; + +use trigger_database::entity::{auto_recovery_data, material}; +use trigger_database::prelude::*; +use trigger_logic::item::ItemStatic; + +use super::NapContext; + +pub struct ItemModel { + context: NapContext, + material_map: HashMap, + auto_recovery_map: HashMap, +} + +pub struct MaterialDelta { + pub id: u32, + pub num: i32, +} + +impl ItemModel { + const MAX_ENERGY: i32 = 1000; + const MAX_AUTO_RECOVERY_ENERGY: i32 = 240; + + const DEFAULT_MATERIALS: &[(ItemStatic, i32)] = &[ + (ItemStatic::FrontendGold, 10_000_000), + (ItemStatic::GameDiamond, 10_000_000), + (ItemStatic::Energy, Self::MAX_AUTO_RECOVERY_ENERGY), + ]; + + pub async fn init(context: NapContext) -> Self { + let material_map = match Self::load_material_map(&context).await { + map if map.len() == 0 => Self::create_default_material_map(&context).await, + map => map, + }; + + let auto_recovery_map = Self::load_auto_recovery_map(&context).await; + + Self { + context, + material_map, + auto_recovery_map, + } + } + + pub async fn add_energy(&mut self, amount: i32) { + let cur_energy = self + .material_map + .get(&ItemStatic::Energy.into()) + .copied() + .unwrap_or(0); + + let new_energy = std::cmp::min(cur_energy + amount, Self::MAX_ENERGY); + + self.add_or_use_materials(&[MaterialDelta { + id: ItemStatic::Energy.into(), + num: new_energy - cur_energy, + }]) + .await; + } + + pub fn has_enough_material(&self, id: u32, amount: i32) -> bool { + self.material_map.get(&id).copied().unwrap_or(0) >= amount + } + + pub fn has_enough_materials(&self, use_materials: &[MaterialDelta]) -> bool { + use_materials.iter().fold(true, |is_enough, delta| { + is_enough && self.has_enough_material(delta.id, -delta.num) + }) + } + + pub async fn use_material(&mut self, id: u32, amount: i32) -> bool { + self.add_or_use_materials(&[MaterialDelta { id, num: -amount }]) + .await + } + + pub async fn add_or_use_materials(&mut self, use_materials: &[MaterialDelta]) -> bool { + if !self.has_enough_materials(&use_materials) { + return false; + } + + let updated_models = use_materials + .iter() + .filter(|delta| delta.num != 0) + .map(|delta| { + let num = *self + .material_map + .entry(delta.id) + .and_modify(|num| *num += delta.num) + .or_insert(delta.num); + + material::ActiveModel { + owner_player_uid: Set(self.context.player_uid as i32), + id: Set(delta.id as i32), + num: Set(num), + } + }) + .collect::>(); + + self.context + .database + .transaction::<_, (), DbErr>(|txn| { + Box::pin(async move { + for model in updated_models { + model.update(txn).await?; + } + + Ok(()) + }) + }) + .await + .expect("use_materials: update transaction failed"); + + true + } + + pub fn get_protocol_material_list(&self) -> Vec { + self.material_map + .iter() + .map(|(&id, &num)| trigger_protocol::Material { id, num }) + .collect() + } + + pub fn get_protocol_auto_recovery_info( + &self, + ) -> HashMap { + self.auto_recovery_map + .iter() + .map(|(&id, data)| { + ( + id, + trigger_protocol::AutoRecoveryInfo { + last_recovery_timestamp: data.last_recovery_timestamp, + buy_times: data.buy_times as u32, + }, + ) + }) + .collect() + } + + async fn load_material_map(context: &NapContext) -> HashMap { + material::Entity::find() + .filter(material::Column::OwnerPlayerUid.eq(context.player_uid as i32)) + .all(context.database) + .await + .expect("material::find(all) failed") + .into_iter() + .map(|material| (material.id as u32, material.num)) + .collect() + } + + async fn load_auto_recovery_map( + context: &NapContext, + ) -> HashMap { + auto_recovery_data::Entity::find() + .filter(auto_recovery_data::Column::OwnerPlayerUid.eq(context.player_uid as i32)) + .all(context.database) + .await + .expect("auto_recovery_data::find(all) failed") + .into_iter() + .map(|auto_recovery_data| (auto_recovery_data.id as u32, auto_recovery_data)) + .collect() + } + + async fn create_default_material_map(context: &NapContext) -> HashMap { + let materials = Self::DEFAULT_MATERIALS + .into_iter() + .map(|(id, num)| { + material::Model { + owner_player_uid: context.player_uid as i32, + id: (*id).into(), + num: *num, + } + .into() + }) + .collect::>(); + + material::Entity::insert_many(materials) + .exec(context.database) + .await + .expect("material::insert_many(default) failed"); + + Self::DEFAULT_MATERIALS + .into_iter() + .map(|(id, num)| ((*id).into(), *num)) + .collect() + } +} diff --git a/crates/game-server/src/logic/player/main_story.rs b/crates/game-server/src/logic/player/main_story.rs new file mode 100644 index 0000000..78d311c --- /dev/null +++ b/crates/game-server/src/logic/player/main_story.rs @@ -0,0 +1,129 @@ +use std::collections::HashMap; + +use trigger_database::{ + entity::{archive_data, archive_videotape_data}, + prelude::*, +}; + +use super::NapContext; + +pub struct MainStoryModel { + context: NapContext, + archive_data: archive_data::Model, + vhs: HashMap, +} + +impl MainStoryModel { + pub async fn init(context: NapContext) -> Self { + let archive_data = Self::load_archive_data(&context).await; + let vhs = Self::load_vhs(&context).await; + + Self { + context, + archive_data, + vhs, + } + } + + pub async fn add_archive_files(&mut self, archive_file_id_list: &[i32]) { + let mut hollow_archive_id_list = + std::mem::take(&mut self.archive_data.hollow_archive_id_list); + + let models = archive_file_id_list + .iter() + .filter(|id| !self.vhs.contains_key(&(**id as u32))) + .map(|id| { + self.context + .filecfg + .archive_file_quest_template_tb + .data() + .unwrap() + .iter() + .find(|tmpl| tmpl.id() == *id) + }) + .flatten() + .inspect(|tmpl| { + if !hollow_archive_id_list.contains(&tmpl.archive_id()) { + hollow_archive_id_list.push(tmpl.archive_id()); + } + }) + .map(|tmpl| archive_videotape_data::Model { + owner_player_uid: self.context.player_uid as i32, + archive_file_id: tmpl.id(), + }) + .collect::>(); + + models.iter().for_each(|videotape| { + self.vhs + .insert(videotape.archive_file_id as u32, videotape.clone()); + }); + + archive_videotape_data::Entity::insert_many( + models + .into_iter() + .map(archive_videotape_data::ActiveModel::from) + .collect::>(), + ) + .exec(self.context.database) + .await + .expect("archive_videotape_data::insert_many failed"); + + self.archive_data = archive_data::ActiveModel { + owner_player_uid: Set(self.context.player_uid as i32), + hollow_archive_id_list: Set(hollow_archive_id_list), + } + .update(self.context.database) + .await + .expect("archive_data::update failed"); + } + + pub fn get_protocol_archive_data(&self) -> trigger_protocol::ArchiveData { + use trigger_protocol::*; + + ArchiveData { + hollow_archive_id_list: self + .archive_data + .hollow_archive_id_list + .iter() + .map(|id| *id as u32) + .collect(), + videotaps_info: self + .vhs + .iter() + .map(|(_, videotape)| VideotapeInfo { + archive_file_id: videotape.archive_file_id as u32, + finished: true, + }) + .collect(), + } + } + + async fn load_archive_data(context: &NapContext) -> archive_data::Model { + if let Some(data) = archive_data::Entity::find_by_id(context.player_uid as i32) + .one(context.database) + .await + .expect("archive_data::find_by_id failed") + { + return data; + } + + archive_data::Entity::insert(archive_data::ActiveModel { + owner_player_uid: Set(context.player_uid as i32), + hollow_archive_id_list: Set(Vec::new()), + }) + .exec_with_returning(context.database) + .await + .expect("archive_data::insert failed") + } + + async fn load_vhs(context: &NapContext) -> HashMap { + archive_videotape_data::Entity::find() + .filter(archive_videotape_data::Column::OwnerPlayerUid.eq(context.player_uid as i32)) + .all(context.database) + .await + .expect("archive_videotape_data::find failed") + .into_iter() + .map(|videotape| (videotape.archive_file_id as u32, videotape)) + .collect() + } +} diff --git a/crates/game-server/src/logic/player/mod.rs b/crates/game-server/src/logic/player/mod.rs new file mode 100644 index 0000000..7e89d17 --- /dev/null +++ b/crates/game-server/src/logic/player/mod.rs @@ -0,0 +1,144 @@ +use cafe::CafeModel; +use equip::EquipModel; +use item::ItemModel; +use main_story::MainStoryModel; +use quest::QuestModel; +use ramen::RamenModel; +use role::RoleModel; +use scene::SceneModel; +use trigger_database::{entity::*, prelude::*, DatabaseConnection}; +use trigger_fileconfig::NapFileCfg; +use trigger_logic::scene::ESceneType; +use trigger_protocol::PlayerBasicInfo; +use trigger_sv::message::GameStateData; +use yorozuya::YorozuyaModel; + +mod cafe; +mod equip; +mod item; +mod main_story; +pub mod player_util; +mod quest; +mod ramen; +mod role; +mod scene; +mod yorozuya; + +pub use role::AvatarPropertyChanges; + +#[derive(Clone)] +pub struct NapContext { + pub database: &'static DatabaseConnection, + pub filecfg: &'static NapFileCfg<'static>, + pub player_uid: u32, +} + +pub struct NapPlayer { + context: NapContext, + player_basic_info: player_basic_info::Model, + pub is_new_player: bool, + pub active_session_id: Option, + pub role_model: RoleModel, + pub item_model: ItemModel, + pub equip_model: EquipModel, + pub scene_model: SceneModel, + pub quest_model: QuestModel, + pub yorozuya_model: YorozuyaModel, + pub main_story_model: MainStoryModel, + pub ramen_model: RamenModel, + pub cafe_model: CafeModel, +} + +impl NapPlayer { + pub async fn load( + player_uid: u32, + create_if_not_exists: bool, + database: &'static DatabaseConnection, + filecfg: &'static NapFileCfg<'static>, + ) -> Option { + let context = NapContext { + database, + filecfg, + player_uid, + }; + + let Some((player_basic_info, is_new_player)) = + player_util::load_player_basic_info(database, player_uid, create_if_not_exists).await + else { + return None; + }; + + let role_model = RoleModel::init(context.clone()).await; + let item_model = ItemModel::init(context.clone()).await; + let equip_model = EquipModel::init(context.clone()).await; + let scene_model = SceneModel::init(context.clone()).await; + let quest_model = QuestModel::init(context.clone()).await; + let yorozuya_model = YorozuyaModel::init(context.clone()).await; + let main_story_model = MainStoryModel::init(context.clone()).await; + let ramen_model = RamenModel::init(context.clone()).await; + let cafe_model = CafeModel::init(context.clone()).await; + + Some(Self { + active_session_id: None, + context, + player_basic_info, + is_new_player, + role_model, + item_model, + equip_model, + scene_model, + quest_model, + yorozuya_model, + main_story_model, + ramen_model, + cafe_model, + }) + } + + pub fn build_state_reentrant_data(&self, scene: &scene_info::Model) -> Option { + match ESceneType::try_from(scene.scene_type).unwrap() { + ESceneType::Hall => Some(GameStateData::Hall { + player_avatar_id: self.player_basic_info.player_avatar_id as u32, + control_avatar_id: self.player_basic_info.control_avatar_id as u32, + ext: (!scene.ext.is_empty()).then(|| scene.ext.clone()), + }), + _ => None, // only hall reentrance is supported for now + } + } + + pub async fn set_control_avatars(&mut self, player_avatar_id: u32, control_avatar_id: u32) { + let mut active_model: player_basic_info::ActiveModel = + self.player_basic_info.clone().into(); + + active_model.set( + player_basic_info::Column::PlayerAvatarId, + (player_avatar_id as i32).into(), + ); + + active_model.set( + player_basic_info::Column::ControlAvatarId, + (control_avatar_id as i32).into(), + ); + + self.player_basic_info = active_model + .update(self.context.database) + .await + .expect("player_basic_info::update failed"); + } + + pub fn get_protocol_player_basic_info(&self) -> PlayerBasicInfo { + PlayerBasicInfo { + nick_name: self.player_basic_info.nick_name.clone(), + level: self.player_basic_info.level as u32, + exp: self.player_basic_info.exp as u32, + avatar_id: self.player_basic_info.avatar_id as u32, + player_avatar_id: self.player_basic_info.player_avatar_id as u32, + control_avatar_id: self.player_basic_info.control_avatar_id as u32, + last_enter_world_timestamp: self.scene_model.last_enter_world_timestamp(), + } + } + + pub fn player_uid(&self) -> u32 { + self.context.player_uid + } +} diff --git a/crates/game-server/src/logic/player/player_util.rs b/crates/game-server/src/logic/player/player_util.rs new file mode 100644 index 0000000..13e85ab --- /dev/null +++ b/crates/game-server/src/logic/player/player_util.rs @@ -0,0 +1,40 @@ +use trigger_database::entity::*; +use trigger_database::prelude::*; +use trigger_database::DatabaseConnection; + +pub async fn load_player_basic_info( + db: &DatabaseConnection, + player_uid: u32, + create_if_not_exists: bool, +) -> Option<(player_basic_info::Model, bool)> { + let player_uid = player_uid as i32; + + match player_basic_info::Entity::find_by_id(player_uid) + .one(db) + .await + .expect("player_basic_info::find_by_id failed") + { + Some(info) => Some((info, false)), + None if create_if_not_exists => Some(( + create_default_player_basic_info(player_uid) + .insert(db) + .await + .expect("player_basic_info::insert failed"), + true, + )), + None => None, + } +} + +fn create_default_player_basic_info(player_uid: i32) -> player_basic_info::ActiveModel { + player_basic_info::Model { + player_uid, + nick_name: String::from("ReversedRooms"), + level: 60, + exp: 0, + avatar_id: 2021, + player_avatar_id: 2021, + control_avatar_id: 1361, + } + .into() +} diff --git a/crates/game-server/src/logic/player/quest.rs b/crates/game-server/src/logic/player/quest.rs new file mode 100644 index 0000000..4b46c79 --- /dev/null +++ b/crates/game-server/src/logic/player/quest.rs @@ -0,0 +1,208 @@ +use std::collections::HashMap; + +use trigger_database::{ + entity::{quest_collection, quest_info}, + prelude::*, +}; +use trigger_logic::quest::EQuestType; +use trigger_sv::time_util; + +use super::NapContext; + +pub struct QuestModel { + context: NapContext, + quest_collections: HashMap, + quest_map: HashMap>, +} + +impl QuestModel { + pub async fn init(context: NapContext) -> Self { + let quest_collections = Self::load_quest_collections(&context).await; + let quest_map = Self::load_quests(&context).await; + + Self { + context, + quest_collections, + quest_map, + } + } + + #[expect(dead_code)] + pub async fn finish_quest(&mut self, quest_type: EQuestType, quest_id: i32) { + self.finish_quests(quest_type, &[quest_id]).await + } + + pub async fn add_quest(&mut self, quest_type: EQuestType, quest_id: i32) { + if !self.quest_collections.contains_key(&quest_type) { + self.quest_collections.insert( + quest_type, + quest_collection::ActiveModel { + owner_player_uid: Set(self.context.player_uid as i32), + quest_type: Set(quest_type.into()), + finished_quest_id_list: Set(Vec::new()), + } + .insert(self.context.database) + .await + .expect("quest_collection::insert failed"), + ); + } + + if !self + .quest_map + .get(&quest_type) + .map(|list| list.iter().any(|quest| quest.quest_id == quest_id)) + .unwrap_or(false) + { + self.quest_map.entry(quest_type).or_default().push( + quest_info::ActiveModel { + owner_player_uid: Set(self.context.player_uid as i32), + quest_type: Set(quest_type.into()), + quest_id: Set(quest_id), + unlock_time: Set(time_util::cur_timestamp_seconds()), + } + .insert(self.context.database) + .await + .expect("quest_info::insert failed"), + ); + } + } + + pub async fn finish_quests(&mut self, quest_type: EQuestType, quest_id_list: &[i32]) { + let (existed, mut collection) = self + .quest_collections + .remove(&quest_type) + .map(|qc| (true, qc)) + .unwrap_or_else(|| { + ( + false, + quest_collection::Model { + owner_player_uid: self.context.player_uid as i32, + quest_type: quest_type.into(), + finished_quest_id_list: Vec::with_capacity(quest_id_list.len()), + }, + ) + }); + + if let Some(list) = self.quest_map.get_mut(&quest_type) { + list.retain(|q| !quest_id_list.contains(&q.quest_id)); + + quest_info::Entity::delete_many() + .filter(quest_info::Column::QuestId.is_not_in(quest_id_list.iter().copied())) + .exec(self.context.database) + .await + .expect("quest_info::delete_many failed"); + } + + let mut finished_quest_id_list = std::mem::take(&mut collection.finished_quest_id_list); + + for quest_id in quest_id_list { + if !finished_quest_id_list.contains(quest_id) { + finished_quest_id_list.push(*quest_id); + } + } + + let model = quest_collection::ActiveModel { + finished_quest_id_list: Set(finished_quest_id_list), + ..collection.into() + }; + + if existed { + self.quest_collections.insert( + quest_type, + model + .update(self.context.database) + .await + .expect("quest_collection::update failed"), + ); + } else { + self.quest_collections.insert( + quest_type, + model + .insert(self.context.database) + .await + .expect("quest_collection::insert failed"), + ); + } + } + + pub fn get_protocol_quest_data(&self, query_quest_type: u32) -> trigger_protocol::QuestData { + use trigger_protocol::*; + + match EQuestType::try_from(query_quest_type as i32) { + Ok(quest_type) => QuestData { + quest_collection_list: vec![self.get_protocol_quest_collection(quest_type)], + }, + _ => QuestData { + quest_collection_list: { + let mut list = self + .quest_collections + .keys() + .map(|&ty| self.get_protocol_quest_collection(ty)) + .collect::>(); + + list.sort_by_key(|qc| qc.quest_type); + list + }, + }, + } + } + + fn get_protocol_quest_collection(&self, ty: EQuestType) -> trigger_protocol::QuestCollection { + use trigger_protocol::*; + + self.quest_collections + .get(&ty) + .map(|qc| QuestCollection { + quest_type: qc.quest_type as u32, + finished_quest_id_list: qc + .finished_quest_id_list + .iter() + .map(|id| *id as u32) + .collect(), + quest_list: self + .quest_map + .get(&ty) + .map(|list| { + list.iter() + .map(|quest| QuestInfo { + id: quest.quest_id as u32, + unlock_time: quest.unlock_time, + }) + .collect() + }) + .unwrap_or_default(), + }) + .unwrap_or_default() + } + + async fn load_quests(context: &NapContext) -> HashMap> { + let mut map: HashMap> = HashMap::new(); + + quest_info::Entity::find() + .filter(quest_info::Column::OwnerPlayerUid.eq(context.player_uid as i32)) + .all(context.database) + .await + .expect("quest_info::find failed") + .into_iter() + .for_each(|quest| { + map.entry(EQuestType::try_from(quest.quest_type).unwrap()) + .or_default() + .push(quest); + }); + + map + } + + async fn load_quest_collections( + context: &NapContext, + ) -> HashMap { + quest_collection::Entity::find() + .filter(quest_collection::Column::OwnerPlayerUid.eq(context.player_uid as i32)) + .all(context.database) + .await + .expect("quest_collection::find failed") + .into_iter() + .map(|qc| (qc.quest_type.try_into().expect("invalid quest_type"), qc)) + .collect() + } +} diff --git a/crates/game-server/src/logic/player/ramen.rs b/crates/game-server/src/logic/player/ramen.rs new file mode 100644 index 0000000..0d401e0 --- /dev/null +++ b/crates/game-server/src/logic/player/ramen.rs @@ -0,0 +1,117 @@ +use super::NapContext; +use trigger_database::entity::ramen_data; +use trigger_database::prelude::*; + +pub struct RamenModel { + context: NapContext, + ramen_data: ramen_data::Model, +} + +impl RamenModel { + pub async fn init(context: NapContext) -> Self { + let ramen_data = Self::load_or_create_ramen_data(&context).await; + + Self { + context, + ramen_data, + } + } + + pub async fn try_eat_ramen(&mut self, ramen: i32) -> Option { + if !self.ramen_data.unlock_ramen_list.contains(&ramen) { + return None; + } + + let model = ramen_data::ActiveModel { + cur_ramen: Set(ramen), + eat_ramen_times: Set(self.ramen_data.eat_ramen_times + 1), + ..self.ramen_data.clone().into() + }; + + self.ramen_data = model + .update(self.context.database) + .await + .expect("ramen_data::update failed"); + + Some(self.get_protocol_ramen_sync(false)) + } + + pub async fn unlock_ramen(&mut self, unlock_id_list: &[i32]) { + let mut unlock_ramen_list = std::mem::take(&mut self.ramen_data.unlock_ramen_list); + + unlock_id_list.iter().for_each(|id| { + if !unlock_ramen_list.contains(id) { + unlock_ramen_list.push(*id); + } + }); + + let model = ramen_data::ActiveModel { + unlock_ramen_list: Set(unlock_ramen_list), + ..self.ramen_data.clone().into() + }; + + self.ramen_data = model + .update(self.context.database) + .await + .expect("ramen_data::update failed"); + } + + pub fn get_ramen_price(&self, ramen: i32) -> i32 { + self.context + .filecfg + .hollow_buff_template_tb + .data() + .unwrap() + .iter() + .find(|tmpl| tmpl.id() == ramen) + .map(|tmpl| tmpl.price()) + .unwrap_or(0) + } + + pub fn get_protocol_ramen_data(&self) -> trigger_protocol::RamenData { + trigger_protocol::RamenData { + cur_ramen: self.ramen_data.cur_ramen as u32, + eat_ramen_times: self.ramen_data.eat_ramen_times as u32, + unlock_ramen_list: self + .ramen_data + .unlock_ramen_list + .iter() + .map(|&id| id as u32) + .collect(), + } + } + + pub fn get_protocol_ramen_sync(&self, full_update: bool) -> trigger_protocol::RamenSync { + trigger_protocol::RamenSync { + is_full_update: full_update, + cur_ramen: self.ramen_data.cur_ramen as u32, + eat_ramen_times: self.ramen_data.eat_ramen_times as u32, + } + } + + async fn load_or_create_ramen_data(context: &NapContext) -> ramen_data::Model { + let player_uid = context.player_uid as i32; + + match ramen_data::Entity::find_by_id(player_uid) + .one(context.database) + .await + .expect("ramen_data::find_by_id failed") + { + Some(info) => info, + None => Self::create_default_ramen_data(context) + .insert(context.database) + .await + .expect("ramen_data::insert failed"), + } + } + + fn create_default_ramen_data(context: &NapContext) -> ramen_data::ActiveModel { + ramen_data::Model { + player_uid: context.player_uid as i32, + unlock_ramen_list: Vec::new(), + cur_ramen: 0, + eat_ramen_times: 0, + } + .into() + } +} diff --git a/crates/game-server/src/logic/player/role.rs b/crates/game-server/src/logic/player/role.rs new file mode 100644 index 0000000..443d29a --- /dev/null +++ b/crates/game-server/src/logic/player/role.rs @@ -0,0 +1,444 @@ +use std::collections::{HashMap, HashSet}; + +use trigger_database::entity::avatar; +use trigger_database::prelude::*; +use trigger_protocol::{Avatar, AvatarSkillLevel, DressedEquip}; +use trigger_sv::time_util; + +use crate::logic::{avatar_util, bit_util::BitSetExt}; + +use super::NapContext; + +pub struct RoleModel { + context: NapContext, + avatar_map: HashMap, +} + +pub struct AvatarPropertyChanges { + pub avatar_id: u32, + pub level: Option, + pub rank: Option, + pub talent_num: Option, +} + +impl RoleModel { + pub async fn init(context: NapContext) -> Self { + let avatar_map = Self::load_or_create_avatar_map(&context).await; + + Self { + context, + avatar_map, + } + } + + pub async fn weapon_dress(&mut self, avatar_id: u32, weapon_uid: i32) -> Option<[u32; 2]> { + if !self.avatar_map.contains_key(&avatar_id) { + return None; + } + + let mut updated_avatars = [0xFFFFFFFF_u32; 2]; + + let prev_avatar = if let Some(prev_avatar) = (weapon_uid != 0) + .then(|| { + self.avatar_map + .values_mut() + .find(|avatar| avatar.cur_weapon_uid == weapon_uid) + }) + .flatten() + { + prev_avatar.cur_weapon_uid = 0; + prev_avatar.avatar_id as u32 + } else { + 0 + }; + + let avatar = self.avatar_map.remove(&avatar_id).unwrap(); + let prev_weapon = avatar.cur_weapon_uid; + updated_avatars[0] = avatar.avatar_id as u32; + + self.avatar_map.insert( + avatar.avatar_id as u32, + avatar::ActiveModel { + cur_weapon_uid: Set(weapon_uid), + ..avatar.into() + } + .update(self.context.database) + .await + .expect("avatar::update failed"), + ); + + if prev_avatar != 0 && prev_weapon != 0 { + if let Some(avatar) = self.avatar_map.remove(&prev_avatar) { + updated_avatars[1] = avatar.avatar_id as u32; + self.avatar_map.insert( + avatar.avatar_id as u32, + avatar::ActiveModel { + cur_weapon_uid: Set(prev_weapon), + ..avatar.into() + } + .update(self.context.database) + .await + .expect("avatar::update failed"), + ); + } + } + + Some(updated_avatars) + } + + pub async fn dress_equipment( + &mut self, + avatar_id: u32, + params: &[(u32, u32)], + ) -> Option> { + if !self.avatar_map.contains_key(&avatar_id) { + return None; + } + + let mut updated_avatars = HashSet::new(); + + for &(equip_uid, _) in params.iter() { + if let Some(avatar_id) = (equip_uid != 0) + .then(|| { + self.avatar_map.values_mut().find(|avatar| { + avatar + .equip_slot_list + .iter() + .any(|slot| ((slot & 0xFFFFFFFF) as u32) == equip_uid) + }) + }) + .flatten() + .map(|avatar| avatar.avatar_id) + { + if let Some(mut avatar) = self.avatar_map.remove(&(avatar_id as u32)) { + updated_avatars.insert(avatar_id as u32); + avatar + .equip_slot_list + .retain(|slot| ((slot & 0xFFFFFFFF) as u32) != equip_uid); + + self.avatar_map.insert( + avatar_id as u32, + avatar::ActiveModel { + equip_slot_list: Set(avatar.equip_slot_list.clone()), + ..avatar.into() + } + .update(self.context.database) + .await + .expect("avatar::update failed"), + ); + } + } + } + + let mut avatar = self.avatar_map.remove(&avatar_id).unwrap(); + updated_avatars.insert(avatar.avatar_id as u32); + + for &(equip_uid, dress_index) in params.iter() { + let slot = ((dress_index as i64) << 32) | (equip_uid as i64); + if let Some(old_slot) = avatar + .equip_slot_list + .iter_mut() + .find(|slot| ((**slot >> 32) as u32) == dress_index) + { + *old_slot = slot; + } else { + avatar.equip_slot_list.push(slot); + } + } + + self.avatar_map.insert( + avatar.avatar_id as u32, + avatar::ActiveModel { + equip_slot_list: Set(avatar.equip_slot_list.clone()), + ..avatar.into() + } + .update(self.context.database) + .await + .expect("avatar::update failed"), + ); + + Some(updated_avatars.into_iter().collect()) + } + + pub async fn undress_equipment(&mut self, avatar_id: u32, undress_indexes: &[u32]) -> bool { + let Some(mut avatar) = self.avatar_map.remove(&avatar_id) else { + return false; + }; + + avatar + .equip_slot_list + .retain(|slot| !undress_indexes.contains(&((*slot >> 32) as u32))); + + self.avatar_map.insert( + avatar_id, + avatar::ActiveModel { + equip_slot_list: Set(avatar.equip_slot_list.clone()), + ..avatar.into() + } + .update(self.context.database) + .await + .expect("avatar::update failed"), + ); + + true + } + + pub async fn talent_switch(&mut self, avatar_id: u32, talent_switch: Vec) -> bool { + if avatar_util::is_valid_talent_switch(&talent_switch) { + let required_talent_num = talent_switch + .iter() + .enumerate() + .filter(|(_, b)| **b) + .max_by_key(|(i, _)| *i) + .map(|(i, _)| (i + 1) as i16) + .unwrap_or(0); + + if self + .avatar_map + .get(&avatar_id) + .map(|avatar| avatar.unlocked_talent_num >= required_talent_num) + .unwrap_or(false) + { + if let Some(avatar) = self.avatar_map.remove(&avatar_id) { + self.avatar_map.insert( + avatar.avatar_id as u32, + avatar::ActiveModel { + talent_switch: Set(BitSetExt::from_vec(talent_switch)), + ..avatar.into() + } + .update(self.context.database) + .await + .expect("avatar::update failed"), + ); + + return true; + } + } + } + + false + } + + pub async fn change_avatar_properties( + &mut self, + changes: AvatarPropertyChanges, + ) -> Option> { + if changes.avatar_id == 0 { + // applies to all + let (updated_models, updated_avatar_ids): (Vec, Vec) = self + .avatar_map + .iter_mut() + .map(|(id, avatar)| { + let mut model = avatar::ActiveModel::from(avatar.clone()); + + changes.level.inspect(|&level| { + avatar.level = level; + model.level = Set(level); + }); + + changes.rank.inspect(|&rank| { + avatar.rank = rank; + model.rank = Set(rank); + }); + + changes.talent_num.inspect(|&num| { + avatar.unlocked_talent_num = num; + model.unlocked_talent_num = Set(num) + }); + + (model, *id) + }) + .unzip(); + + self.context + .database + .transaction::<_, (), DbErr>(|txn| { + Box::pin(async move { + for model in updated_models { + model.update(txn).await?; + } + + Ok(()) + }) + }) + .await + .expect("change_avatar_properties: update transaction failed"); + + Some(updated_avatar_ids) + } else { + if let Some(avatar) = self.avatar_map.remove(&changes.avatar_id) { + let model = avatar::ActiveModel { + level: changes.level.map(|level| Set(level)).unwrap_or_default(), + rank: changes.rank.map(|rank| Set(rank)).unwrap_or_default(), + unlocked_talent_num: changes.talent_num.map(|num| Set(num)).unwrap_or_default(), + ..avatar.into() + }; + + self.avatar_map.insert( + changes.avatar_id, + model + .update(self.context.database) + .await + .expect("avatar::update failed"), + ); + + Some(vec![changes.avatar_id]) + } else { + None + } + } + } + + pub fn is_avatar_unlocked(&self, avatar_id: u32) -> bool { + self.avatar_map.contains_key(&avatar_id) + } + + pub async fn unlock_avatars(&mut self, avatar_id_list: &[i32]) -> Vec { + let models = avatar_id_list + .iter() + .filter(|id| !self.is_avatar_unlocked(**id as u32)) + .map(|id| { + self.context + .filecfg + .avatar_base_template_tb + .data() + .unwrap() + .iter() + .find(|tmpl| tmpl.id() == *id) + }) + .flatten() + .map(|tmpl| avatar::Model { + owner_player_uid: self.context.player_uid as i32, + avatar_id: tmpl.id(), + level: 60, + exp: 0, + rank: 6, + passive_skill_level: 6, + skill_type_level: (0..=6).map(|_| 12).collect(), + unlocked_talent_num: 6, + talent_switch: 0b111000, + cur_weapon_uid: 0, + taken_rank_up_reward_list: Vec::with_capacity(0), + first_get_time: time_util::cur_timestamp_seconds(), + show_weapon_type: 0, + avatar_skin_id: 0, + equip_slot_list: Vec::with_capacity(0), + }) + .collect::>(); + + avatar::Entity::insert_many( + models + .iter() + .map(|model| model.clone().into()) + .collect::>(), + ) + .exec(self.context.database) + .await + .expect("avatar::insert_many failed"); + + let mut added_avatars = Vec::with_capacity(models.len()); + for model in models { + added_avatars.push(model.avatar_id as u32); + self.avatar_map.insert(model.avatar_id as u32, model); + } + + added_avatars + } + + pub fn get_protocol_avatar_list(&self, filter: &[u32]) -> Vec { + self.avatar_map + .values() + .filter(|avatar| filter.is_empty() || filter.contains(&(avatar.avatar_id as u32))) + .map(|avatar| Avatar { + id: avatar.avatar_id as u32, + level: avatar.level as u32, + exp: avatar.exp as u32, + rank: avatar.rank as u32, + passive_skill_level: avatar.passive_skill_level as u32, + unlocked_talent_num: avatar.unlocked_talent_num as u32, + cur_weapon_uid: avatar.cur_weapon_uid as u32, + first_get_time: avatar.first_get_time, + show_weapon_type: avatar.show_weapon_type as i32, + avatar_skin_id: avatar.avatar_skin_id as u32, + talent_switch_list: avatar.talent_switch.to_vec(6), + taken_rank_up_reward_list: avatar + .taken_rank_up_reward_list + .iter() + .map(|&i| i as u32) + .collect(), + dressed_equip_list: avatar + .equip_slot_list + .iter() + .map(|&slot| DressedEquip { + index: (slot >> 32) as u32, + equip_uid: (slot & 0xFFFFFFFF) as u32, + }) + .collect(), + skill_type_level: avatar + .skill_type_level + .iter() + .enumerate() + .map(|(st, level)| AvatarSkillLevel { + skill_type: st as u32, + level: *level as u32, + }) + .collect(), + }) + .collect() + } + + async fn load_or_create_avatar_map(context: &NapContext) -> HashMap { + let player_uid = context.player_uid as i32; + + match avatar::Entity::find() + .filter(avatar::Column::OwnerPlayerUid.eq(player_uid)) + .all(context.database) + .await + .expect("avatar::find(all) failed") + { + list if list.is_empty() => { + let initial_map = Self::create_initial_avatar_map(context); + + avatar::Entity::insert_many( + initial_map + .values() + .cloned() + .map(avatar::ActiveModel::from) + .collect::>(), + ) + .exec(context.database) + .await + .expect("avatar::insert_many(initial_list) failed"); + + initial_map + } + list => list + .into_iter() + .map(|avatar| (avatar.avatar_id as u32, avatar)) + .collect(), + } + } + + fn create_initial_avatar_map(context: &NapContext) -> HashMap { + HashMap::from([( + 1011, + avatar::Model { + owner_player_uid: context.player_uid as i32, + avatar_id: 1011, + level: 60, + exp: 0, + rank: 6, + passive_skill_level: 6, + skill_type_level: (0..=6).map(|_| 12).collect(), + unlocked_talent_num: 6, + talent_switch: 0b111000, + cur_weapon_uid: 0, + taken_rank_up_reward_list: Vec::with_capacity(0), + first_get_time: time_util::cur_timestamp_seconds(), + show_weapon_type: 0, + avatar_skin_id: 0, + equip_slot_list: Vec::with_capacity(0), + }, + )]) + } +} diff --git a/crates/game-server/src/logic/player/scene.rs b/crates/game-server/src/logic/player/scene.rs new file mode 100644 index 0000000..49bfea5 --- /dev/null +++ b/crates/game-server/src/logic/player/scene.rs @@ -0,0 +1,171 @@ +use trigger_database::{ + entity::{player_world_info, scene_info}, + prelude::*, +}; +use trigger_logic::scene::ESceneType; + +use super::NapContext; + +pub struct SceneModel { + context: NapContext, + player_world_info: player_world_info::Model, +} + +impl SceneModel { + pub async fn init(context: NapContext) -> Self { + let player_world_info = Self::load_or_create_player_world_info(&context).await; + + Self { + context, + player_world_info, + } + } + + pub async fn on_leave_scene(&mut self, scene_uid: i64) { + if self + .get_scene_by_uid(scene_uid) + .await + .map_or(false, |sc| sc.to_be_destroyed) + { + scene_info::Entity::delete_by_id(scene_uid) + .exec(self.context.database) + .await + .expect("scene_info::delete_by_id failed"); + } + } + + pub async fn clear_abandoned_scenes(&self) { + use scene_info::Column; + + let world = &self.player_world_info; + + scene_info::Entity::delete_many() + .filter( + Condition::all() + .add(Column::ToBeDestroyed.eq(true)) + .add(Column::OwnerPlayerUid.eq(self.context.player_uid as i32)) + .add(Column::SceneUid.is_not_in([ + world.current_scene_uid, + world.back_scene_uid, + world.default_scene_uid, + ])), + ) + .exec(self.context.database) + .await + .expect("scene_info::delete_many failed"); + } + + pub async fn update_scene_ext(&mut self, scene_uid: i64, ext: String) { + scene_info::ActiveModel { + scene_uid: Set(scene_uid), + ext: Set(ext), + ..Default::default() + } + .update(self.context.database) + .await + .expect("scene_info::update failed"); + } + + pub async fn set_default_scene(&mut self, scene: &scene_info::Model) { + let mut info: player_world_info::ActiveModel = self.player_world_info.clone().into(); + + info.default_scene_uid = Set(scene.scene_uid); + self.player_world_info = info + .update(self.context.database) + .await + .expect("player_world_info::update failed"); + } + + pub async fn set_current_scene(&mut self, scene: &scene_info::Model) { + let mut info: player_world_info::ActiveModel = self.player_world_info.clone().into(); + + info.current_scene_uid = Set(scene.scene_uid); + self.player_world_info = info + .update(self.context.database) + .await + .expect("player_world_info::update failed"); + } + + pub async fn push_current_scene(&mut self, scene: &scene_info::Model) { + let mut info: player_world_info::ActiveModel = self.player_world_info.clone().into(); + + info.back_scene_uid = Set(self.player_world_info.current_scene_uid); + info.current_scene_uid = Set(scene.scene_uid); + + self.player_world_info = info + .update(self.context.database) + .await + .expect("player_world_info::update failed"); + } + + pub async fn create_scene_info(&mut self, scene_type: ESceneType) -> scene_info::Model { + scene_info::Entity::insert(scene_info::ActiveModel { + scene_uid: NotSet, + owner_player_uid: Set(self.context.player_uid as i32), + scene_type: Set(scene_type.into()), + to_be_destroyed: Set(scene_type != ESceneType::Hall), + ext: Set(String::with_capacity(0)), + }) + .exec_with_returning(self.context.database) + .await + .expect("scene_basic_info::insert failed") + } + + #[expect(dead_code)] + pub async fn get_back_scene(&self) -> Option { + self.get_scene_by_uid(self.player_world_info.back_scene_uid) + .await + } + + pub async fn get_current_scene(&self) -> Option { + self.get_scene_by_uid(self.player_world_info.current_scene_uid) + .await + } + + pub async fn get_default_scene(&self) -> Option { + self.get_scene_by_uid(self.player_world_info.default_scene_uid) + .await + } + + pub async fn get_scene_by_uid(&self, scene_uid: i64) -> Option { + if scene_uid == 0 { + return None; + } + + scene_info::Entity::find_by_id(scene_uid) + .one(self.context.database) + .await + .expect("scene_basic_info::find_by_id failed") + } + + pub fn last_enter_world_timestamp(&self) -> i64 { + self.player_world_info.last_enter_world_timestamp + } + + async fn load_or_create_player_world_info(context: &NapContext) -> player_world_info::Model { + let player_uid = context.player_uid as i32; + + match player_world_info::Entity::find_by_id(player_uid) + .one(context.database) + .await + .expect("player_world_info::find_by_id failed") + { + Some(info) => info, + None => Self::create_default_player_world_info(player_uid) + .insert(context.database) + .await + .expect("player_world_info::insert failed"), + } + } + + fn create_default_player_world_info(player_uid: i32) -> player_world_info::ActiveModel { + player_world_info::Model { + player_uid, + last_enter_world_timestamp: 0, + default_scene_uid: 0, + current_scene_uid: 0, + back_scene_uid: 0, + } + .into() + } +} diff --git a/crates/game-server/src/logic/player/yorozuya.rs b/crates/game-server/src/logic/player/yorozuya.rs new file mode 100644 index 0000000..4111e7a --- /dev/null +++ b/crates/game-server/src/logic/player/yorozuya.rs @@ -0,0 +1,160 @@ +use std::collections::{HashMap, HashSet}; + +use trigger_database::{ + entity::{hollow_data, hollow_info}, + prelude::*, +}; + +use super::NapContext; + +pub struct YorozuyaModel { + context: NapContext, + hollow_data: hollow_data::Model, + hollow_map: HashMap, +} + +impl YorozuyaModel { + pub async fn init(context: NapContext) -> Self { + let hollow_data = Self::load_hollow_data(&context).await; + let hollow_map = Self::load_hollows(&context).await; + + Self { + context, + hollow_data, + hollow_map, + } + } + + pub async fn unlock_hollow(&mut self, hollow_list: &[i32]) { + let mut hollow_group_list = std::mem::take(&mut self.hollow_data.unlock_hollow_group_list); + let mut hollow_id_list = std::mem::take(&mut self.hollow_data.unlock_hollow_id_list); + + hollow_list.iter().for_each(|id| { + if !hollow_id_list.contains(id) { + hollow_id_list.push(*id); + + if let Some(hollow_template) = self + .context + .filecfg + .hollow_config_template_tb + .data() + .unwrap() + .iter() + .find(|tmpl| tmpl.id() == *id) + { + if !hollow_group_list.contains(&hollow_template.hollow_group()) { + hollow_group_list.push(hollow_template.hollow_group()); + } + } + } + }); + + self.hollow_data = hollow_data::ActiveModel { + unlock_hollow_group_list: Set(hollow_group_list), + unlock_hollow_id_list: Set(hollow_id_list), + ..self.hollow_data.clone().into() + } + .update(self.context.database) + .await + .expect("hollow_data::update failed"); + } + + pub async fn add_hollow_quest(&mut self, hollow_quest_list: &[i32]) { + let models = hollow_quest_list + .iter() + .filter(|id| !self.hollow_map.contains_key(&(**id as u32))) + .collect::>() + .into_iter() + .map(|id| { + self.context + .filecfg + .hollow_quest_template_tb + .data() + .unwrap() + .iter() + .find(|tmpl| tmpl.id() == *id) + }) + .flatten() + .map(|tmpl| hollow_info::Model { + owner_player_uid: self.context.player_uid as i32, + hollow_id: tmpl.id(), + }) + .collect::>(); + + models.iter().for_each(|hollow| { + self.hollow_map + .insert(hollow.hollow_id as u32, hollow.clone()); + }); + + hollow_info::Entity::insert_many( + models + .into_iter() + .map(|hollow| hollow_info::ActiveModel { + owner_player_uid: Set(self.context.player_uid as i32), + hollow_id: Set(hollow.hollow_id), + }) + .collect::>(), + ) + .exec(self.context.database) + .await + .expect("hollow_info::insert_many failed"); + } + + pub fn get_protocol_hollow_data(&self) -> trigger_protocol::HollowData { + use trigger_protocol::*; + + HollowData { + unlock_hollow_group_list: self + .hollow_data + .unlock_hollow_group_list + .iter() + .map(|&group| group as u32) + .collect(), + unlock_hollow_id_list: self + .hollow_data + .unlock_hollow_id_list + .iter() + .map(|&id| id as u32) + .collect(), + hollow_info_list: self + .hollow_map + .values() + .map(|hollow| HollowInfo { + hollow_quest_id: hollow.hollow_id as u32, + hollow_statistics: Some(HollowStatistics::default()), + }) + .collect(), + ..Default::default() + } + } + + async fn load_hollow_data(context: &NapContext) -> hollow_data::Model { + if let Some(data) = hollow_data::Entity::find_by_id(context.player_uid as i32) + .one(context.database) + .await + .expect("hollow_data::find_by_id failed") + { + return data; + } + + hollow_data::Entity::insert(hollow_data::ActiveModel { + owner_player_uid: Set(context.player_uid as i32), + unlock_hollow_group_list: Set(Vec::new()), + unlock_hollow_id_list: Set(Vec::new()), + }) + .exec_with_returning(context.database) + .await + .expect("hollow_data::insert failed") + } + + async fn load_hollows(context: &NapContext) -> HashMap { + hollow_info::Entity::find() + .filter(hollow_info::Column::OwnerPlayerUid.eq(context.player_uid as i32)) + .all(context.database) + .await + .expect("hollow_info::find failed") + .into_iter() + .map(|hollow| (hollow.hollow_id as u32, hollow)) + .collect() + } +} diff --git a/crates/game-server/src/logic/scene_util.rs b/crates/game-server/src/logic/scene_util.rs new file mode 100644 index 0000000..7ba93a4 --- /dev/null +++ b/crates/game-server/src/logic/scene_util.rs @@ -0,0 +1,14 @@ +use trigger_logic::scene::ESceneType; +use trigger_sv::net::ServerType; + +pub fn get_scene_logic_simulation_server_type(scene_type: ESceneType) -> Option { + Some(match scene_type { + ESceneType::Hall => ServerType::HallServer, + ESceneType::Fight => ServerType::BattleServer, + _ => return None, + }) +} + +pub fn persists_on_relogin(scene_type: ESceneType) -> bool { + matches!(scene_type, ESceneType::Hall | ESceneType::Fresh) +} diff --git a/crates/game-server/src/main.rs b/crates/game-server/src/main.rs new file mode 100644 index 0000000..c2a6c7d --- /dev/null +++ b/crates/game-server/src/main.rs @@ -0,0 +1,112 @@ +use std::{ + process::ExitCode, + sync::{Arc, LazyLock, OnceLock}, +}; + +use config::{GMBlackList, GMScript, GameServerConfig}; +use dashmap::DashMap; +use logic::NapPlayer; +use session::GameSession; +use tokio::sync::Mutex; +use tracing::{error, info}; +use trigger_database::DatabaseConnection; +use trigger_fileconfig::{ArchiveFile, NapFileCfg}; +use trigger_sv::{ + config::{load_json_config, ServerEnvironmentConfiguration, TomlConfig}, + die, logging, + net::{ServerNetworkManager, ServerType}, + print_banner, +}; + +mod config; +mod logic; +mod server_message_handler; +mod session; + +const GM_DEMO_SCRIPT_PATH: &str = "ConfigScript/GMGroupDemo.json"; +const GM_BLACKLIST_PATH: &str = "ConfigScript/Gm_Item_Black_List.json"; +const BLK_ASSET_FILE: &str = "1321691809.blk"; +const CONFIG_FILE: &str = "gameserver.toml"; +const SERVER_TYPE: ServerType = ServerType::GameServer; + +struct AppState { + #[expect(unused)] + pub config: &'static GameServerConfig, + pub filecfg: NapFileCfg<'static>, + pub gm_autoexec: GMScript, + pub gm_blacklist: GMBlackList, + pub network_mgr: ServerNetworkManager, + pub sessions: DashMap>, + pub players: DashMap>>, + pub database: DatabaseConnection, +} + +#[tokio::main] +async fn main() -> ExitCode { + static APP_STATE: OnceLock = OnceLock::new(); + static DESIGN_DATA_BLK: OnceLock = OnceLock::new(); + static CONFIG: LazyLock = + LazyLock::new(|| GameServerConfig::load_or_create(CONFIG_FILE)); + + print_banner(); + logging::init_tracing(tracing::Level::DEBUG); + + let environment = ServerEnvironmentConfiguration::load_from_toml("environment.toml") + .unwrap_or_else(|err| { + error!("{err}"); + die(); + }); + + let design_data_blk = trigger_fileconfig::read_archive_file(&mut ::std::io::Cursor::new( + &std::fs::read(BLK_ASSET_FILE).unwrap_or_else(|err| { + error!("failed to open design data blk file: {err}"); + die(); + }), + )) + .expect("failed to unpack design data blk file"); + + let design_data_blk = DESIGN_DATA_BLK.get_or_init(|| design_data_blk); + + let gm_autoexec = load_json_config(GM_DEMO_SCRIPT_PATH, "GMDemo"); + let gm_blacklist = load_json_config(GM_BLACKLIST_PATH, "GMBlackList"); + + let Ok(database) = trigger_database::connect(&environment.database).await else { + die(); + }; + + let network_mgr = + ServerNetworkManager::new(SERVER_TYPE, CONFIG.node.server_id, &environment.servers); + + let state = APP_STATE.get_or_init(|| AppState { + config: &CONFIG, + filecfg: NapFileCfg::new(design_data_blk), + gm_autoexec, + gm_blacklist, + network_mgr, + sessions: DashMap::new(), + players: DashMap::new(), + database, + }); + + state + .network_mgr + .start_listener(state, server_message_handler::handle_message) + .await + .inspect(|_| { + info!( + "successfully started service {:?}:{}", + SERVER_TYPE, CONFIG.node.server_id + ) + }) + .unwrap_or_else(|err| { + error!("failed to start network manager: {err}"); + die(); + }) + .await // this will await for entirety of the ServerNetworkManager work (forever) + .unwrap_or_else(|err| { + error!("{err}"); + die(); + }); + + ExitCode::SUCCESS +} diff --git a/crates/game-server/src/server_message_handler.rs b/crates/game-server/src/server_message_handler.rs new file mode 100644 index 0000000..8642297 --- /dev/null +++ b/crates/game-server/src/server_message_handler.rs @@ -0,0 +1,294 @@ +use std::sync::Arc; + +use crate::{ + logic::{gm_util, NapPlayer}, + session::GameSession, + AppState, +}; +use tokio::sync::Mutex; +use tracing::{debug, info, warn}; +use trigger_sv::{message::*, net::ServerType}; + +pub async fn handle_message(state: &'static AppState, packet: trigger_sv::message::NetworkPacket) { + match packet.opcode { + BindClientSessionMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_bind_client_session(state, packet.header, message).await; + } + } + UnbindClientSessionMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_unbind_client_session(state, packet.header, message).await; + } + } + BindClientSessionOkMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_bind_client_session_ok(state, packet.header, message).await; + } + } + ForwardClientProtocolMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_forward_client_protocol_message(state, packet.header, message).await; + } + } + GameStateCallbackMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_game_state_callback(state, packet.header, message).await; + } + } + PlayerGmCommandMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_player_gm_command(state, packet.header, message).await; + } + } + opcode => warn!("unhandled server message, opcode: {opcode}"), + } +} + +#[tracing::instrument(skip_all)] +async fn on_player_gm_command( + state: &'static AppState, + _header: Header, + message: PlayerGmCommandMessage, +) { + if let Some(player) = state + .players + .get(&message.player_uid) + .map(|pl| Arc::clone(&pl)) + { + debug!( + "player with uid {} is online, emitted notifies will be sent to client after execution", + message.player_uid + ); + + let mut player = player.lock().await; + let mut context = gm_util::CommandContext::new(&mut *player, state); + + gm_util::execute_command(&mut context, &message.command).await; + let notifies = context.remove_notifies(); + + if let Some(session_id) = player.active_session_id { + state + .network_mgr + .send_to( + ServerType::GateServer, + 0, + AvailableServerProtocolMessage { + session_id, + ack_request_id: 0, + notifies, + response: None, + }, + ) + .await; + } + } else if let Some(mut player) = + NapPlayer::load(message.player_uid, false, &state.database, &state.filecfg).await + { + debug!( + "player with uid {} is offline, changes will be committed to the database", + message.player_uid + ); + + let mut context = gm_util::CommandContext::new(&mut player, state); + gm_util::execute_command(&mut context, &message.command).await; + } else { + debug!("player with uid {} doesn't exist", message.player_uid); + } +} + +#[tracing::instrument(skip_all)] +async fn on_game_state_callback( + state: &'static AppState, + _header: Header, + message: GameStateCallbackMessage, +) { + let Some(session) = state + .sessions + .get(&message.session_id) + .map(|s| Arc::clone(&s)) + else { + return; + }; + + let Some(player) = state + .players + .get(&session.player_uid) + .map(|p| Arc::clone(&p)) + else { + return; + }; + + let mut player = player.lock().await; + + info!( + "emitted notifies: {}, callback: {:?}", + message.protocol_units.len(), + message.callback + ); + + if let Some(ext) = message.scene_save_data { + let cur_scene = player.scene_model.get_current_scene().await.unwrap(); + + player + .scene_model + .update_scene_ext(cur_scene.scene_uid, ext) + .await; + } + + match message.callback { + GameStateCallback::Loaded => { + session.on_game_state_loaded(message.protocol_units).await; + } + GameStateCallback::ClientCmdProcessed { + ack_request_id, + response, + } => { + if ack_request_id != 0 && response.is_some() { + state + .network_mgr + .send_to( + ServerType::GateServer, + 0, + AvailableServerProtocolMessage { + session_id: session.id, + ack_request_id, + notifies: message.protocol_units, + response, + }, + ) + .await; + } + } + GameStateCallback::PlayerItemsGiven { changes: _ } => (), // TODO + } +} + +async fn on_bind_client_session_ok( + state: &'static AppState, + header: Header, + message: BindClientSessionOkMessage, +) { + if let Some(session) = state + .sessions + .get(&message.session_id) + .map(|s| Arc::clone(&s)) + { + session + .on_server_bound(header.sender_type.try_into().unwrap(), header.sender_id) + .await; + } +} + +async fn on_forward_client_protocol_message( + state: &'static AppState, + header: Header, + message: ForwardClientProtocolMessage, +) { + if header.sender_type != u8::from(ServerType::GateServer) { + // Client messages should be forwarded only from the gateway. + return; + } + + let Some(session) = state + .sessions + .get(&message.session_id) + .map(|s| Arc::clone(&s)) + else { + debug!( + "ForwardClientProtocolMessage: received message for unregistered session with id: {}", + message.session_id + ); + return; + }; + + let Some(player) = state + .players + .get(&session.player_uid) + .map(|p| Arc::clone(&p)) + else { + return; + }; + + let mut player = player.lock().await; + if let Some(available_server_protocol) = + { crate::session::message::handle_message(state, &session, &mut *player, message).await } + { + state + .network_mgr + .send_to( + ServerType::GateServer, + header.sender_id, + available_server_protocol, + ) + .await; + } +} + +async fn on_unbind_client_session( + state: &'static AppState, + header: Header, + message: UnbindClientSessionMessage, +) { + if ServerType::GateServer == ServerType::try_from(header.sender_type).unwrap() { + if let Some((id, session)) = state.sessions.remove(&message.session_id) { + session.unbind_all_servers(false).await; + debug!("session with id {id} unregistered"); + } + } +} + +async fn on_bind_client_session( + state: &'static AppState, + header: Header, + message: BindClientSessionMessage, +) { + if header.sender_type != u8::from(ServerType::GateServer) { + // Only gate server is allowed to request session creation on game server. + return; + } + + let mut player = NapPlayer::load(message.player_uid, true, &state.database, &state.filecfg) + .await + .unwrap(); + + if player.is_new_player { + // Run GM auto-exec commands on first login to unlock items + let mut command_context = gm_util::CommandContext::new(&mut player, state); + for command in state.gm_autoexec.commands.iter() { + gm_util::execute_command(&mut command_context, command).await; + } + } + + player.active_session_id = Some(message.session_id); + + state.sessions.insert( + message.session_id, + Arc::new(GameSession::new( + &state.network_mgr, + message.session_id, + message.player_uid, + header.sender_id, + )), + ); + + state + .players + .insert(message.player_uid, Arc::new(Mutex::new(player))); + + debug!( + "registered new session, id: {}, player uid: {}", + message.session_id, message.player_uid + ); + + state + .network_mgr + .send_to( + ServerType::GateServer, + header.sender_id, + BindClientSessionOkMessage { + session_id: message.session_id, + }, + ) + .await; +} diff --git a/crates/game-server/src/session/message/abyss.rs b/crates/game-server/src/session/message/abyss.rs new file mode 100644 index 0000000..6774598 --- /dev/null +++ b/crates/game-server/src/session/message/abyss.rs @@ -0,0 +1,24 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod abyss_module { + pub async fn on_abyss_get_data( + _context: &mut MessageContext<'_, '_>, + _request: AbyssGetDataCsReq, + ) -> AbyssGetDataScRsp { + AbyssGetDataScRsp { + retcode: 0, + abyss_data: Some(AbyssData::default()), + abyss_group_list: Vec::new(), + abyss_dungeon_list: Vec::new(), + } + } + + pub async fn on_abyss_arpeggio_get_data( + _context: &mut MessageContext<'_, '_>, + _request: AbyssArpeggioGetDataCsReq, + ) -> AbyssArpeggioGetDataScRsp { + AbyssArpeggioGetDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/activity.rs b/crates/game-server/src/session/message/activity.rs new file mode 100644 index 0000000..388982c --- /dev/null +++ b/crates/game-server/src/session/message/activity.rs @@ -0,0 +1,19 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod activity_module { + pub async fn on_get_activity_data( + _context: &mut MessageContext<'_, '_>, + _request: GetActivityDataCsReq, + ) -> GetActivityDataScRsp { + GetActivityDataScRsp { retcode: 0 } + } + + pub async fn on_get_web_activity_data( + _context: &mut MessageContext<'_, '_>, + _request: GetWebActivityDataCsReq, + ) -> GetWebActivityDataScRsp { + GetWebActivityDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/arcade.rs b/crates/game-server/src/session/message/arcade.rs new file mode 100644 index 0000000..08f5740 --- /dev/null +++ b/crates/game-server/src/session/message/arcade.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod arcade_module { + pub async fn on_get_arcade_data( + _context: &mut MessageContext<'_, '_>, + _request: GetArcadeDataCsReq, + ) -> GetArcadeDataScRsp { + GetArcadeDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/avatar.rs b/crates/game-server/src/session/message/avatar.rs new file mode 100644 index 0000000..4b872a3 --- /dev/null +++ b/crates/game-server/src/session/message/avatar.rs @@ -0,0 +1,171 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod avatar_module { + pub async fn on_get_avatar_data( + context: &mut MessageContext<'_, '_>, + _request: GetAvatarDataCsReq, + ) -> GetAvatarDataScRsp { + GetAvatarDataScRsp { + retcode: 0, + avatar_list: context.player.role_model.get_protocol_avatar_list(&[]), + } + } + + pub async fn on_get_avatar_recommend_equip( + _context: &mut MessageContext<'_, '_>, + _request: GetAvatarRecommendEquipCsReq, + ) -> GetAvatarRecommendEquipScRsp { + GetAvatarRecommendEquipScRsp { retcode: 0 } + } + + pub async fn on_weapon_dress( + context: &mut MessageContext<'_, '_>, + request: WeaponDressCsReq, + ) -> WeaponDressScRsp { + let equip_model = &context.player.equip_model; + let role_model = &mut context.player.role_model; + + if equip_model.weapon_exists(request.weapon_uid as i32) { + if let Some(updated_avatars) = role_model + .weapon_dress(request.avatar_id, request.weapon_uid as i32) + .await + { + let avatar_list = role_model.get_protocol_avatar_list(&updated_avatars); + context.add_notify(PlayerSyncScNotify { + avatar_sync: Some(AvatarSync { avatar_list }), + ..Default::default() + }); + + return WeaponDressScRsp { retcode: 0 }; + } + } + + WeaponDressScRsp { retcode: 1 } + } + + pub async fn on_un_weapon_dress( + context: &mut MessageContext<'_, '_>, + request: WeaponUnDressCsReq, + ) -> WeaponUnDressScRsp { + let role_model = &mut context.player.role_model; + + if let Some(updated_avatars) = role_model.weapon_dress(request.avatar_id, 0).await { + let avatar_list = role_model.get_protocol_avatar_list(&updated_avatars); + context.add_notify(PlayerSyncScNotify { + avatar_sync: Some(AvatarSync { avatar_list }), + ..Default::default() + }); + + return WeaponUnDressScRsp { retcode: 0 }; + } + + WeaponUnDressScRsp { retcode: 1 } + } + + pub async fn on_dress_equipment( + context: &mut MessageContext<'_, '_>, + request: DressEquipmentCsReq, + ) -> DressEquipmentScRsp { + let equip_model = &context.player.equip_model; + let role_model = &mut context.player.role_model; + + if equip_model.equipment_exists(request.equip_uid as i32) { + if let Some(updated_avatars) = role_model + .dress_equipment( + request.avatar_id, + &[(request.equip_uid, request.dress_index)], + ) + .await + { + let avatar_list = role_model.get_protocol_avatar_list(&updated_avatars); + context.add_notify(PlayerSyncScNotify { + avatar_sync: Some(AvatarSync { avatar_list }), + ..Default::default() + }); + + return DressEquipmentScRsp { retcode: 0 }; + } + } + + DressEquipmentScRsp { retcode: 1 } + } + + pub async fn on_undress_equipment( + context: &mut MessageContext<'_, '_>, + request: UndressEquipmentCsReq, + ) -> UndressEquipmentScRsp { + let role_model = &mut context.player.role_model; + + if role_model + .undress_equipment(request.avatar_id, &request.undress_index_list) + .await + { + let avatar_list = role_model.get_protocol_avatar_list(&[request.avatar_id]); + context.add_notify(PlayerSyncScNotify { + avatar_sync: Some(AvatarSync { avatar_list }), + ..Default::default() + }); + + return UndressEquipmentScRsp { retcode: 0 }; + } + + UndressEquipmentScRsp { retcode: 1 } + } + + pub async fn on_dress_equipment_suit( + context: &mut MessageContext<'_, '_>, + request: DressEquipmentSuitCsReq, + ) -> DressEquipmentSuitScRsp { + let equip_model = &context.player.equip_model; + let role_model = &mut context.player.role_model; + + if request.param_list.iter().fold(true, |v, param| { + v && equip_model.equipment_exists(param.equip_uid as i32) + }) { + if let Some(updated_avatars) = role_model + .dress_equipment( + request.avatar_id, + &request + .param_list + .into_iter() + .map(|param| (param.equip_uid, param.dress_index)) + .collect::>(), + ) + .await + { + let avatar_list = role_model.get_protocol_avatar_list(&updated_avatars); + context.add_notify(PlayerSyncScNotify { + avatar_sync: Some(AvatarSync { avatar_list }), + ..Default::default() + }); + + return DressEquipmentSuitScRsp { retcode: 0 }; + } + } + + DressEquipmentSuitScRsp { retcode: 1 } + } + + pub async fn on_talent_switch( + context: &mut MessageContext<'_, '_>, + request: TalentSwitchCsReq, + ) -> TalentSwitchScRsp { + let role_model = &mut context.player.role_model; + if role_model + .talent_switch(request.avatar_id, request.talent_switch_list) + .await + { + let avatar_list = role_model.get_protocol_avatar_list(&[request.avatar_id]); + context.add_notify(PlayerSyncScNotify { + avatar_sync: Some(AvatarSync { avatar_list }), + ..Default::default() + }); + + return TalentSwitchScRsp { retcode: 0 }; + } + + TalentSwitchScRsp { retcode: 1 } + } +} diff --git a/crates/game-server/src/session/message/babel_tower.rs b/crates/game-server/src/session/message/babel_tower.rs new file mode 100644 index 0000000..2693b33 --- /dev/null +++ b/crates/game-server/src/session/message/babel_tower.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod babel_tower_module { + pub async fn on_get_babel_tower_data( + _context: &mut MessageContext<'_, '_>, + _request: GetBabelTowerDataCsReq, + ) -> GetBabelTowerDataScRsp { + GetBabelTowerDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/bangboo.rs b/crates/game-server/src/session/message/bangboo.rs new file mode 100644 index 0000000..750b355 --- /dev/null +++ b/crates/game-server/src/session/message/bangboo.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod bangboo_module { + pub async fn on_get_buddy_data( + _context: &mut MessageContext<'_, '_>, + _request: GetBuddyDataCsReq, + ) -> GetBuddyDataScRsp { + GetBuddyDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/battle_event.rs b/crates/game-server/src/session/message/battle_event.rs new file mode 100644 index 0000000..483dde5 --- /dev/null +++ b/crates/game-server/src/session/message/battle_event.rs @@ -0,0 +1,22 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod battle_event_module { + pub async fn on_get_battle_event_info( + _context: &mut MessageContext<'_, '_>, + _request: GetBattleEventInfoCsReq, + ) -> GetBattleEventInfoScRsp { + GetBattleEventInfoScRsp { + retcode: 0, + event_info: Some(BattleEventInfo::default()), + } + } + + pub async fn on_report_battle_team( + _context: &mut MessageContext<'_, '_>, + _request: ReportBattleTeamCsReq, + ) -> ReportBattleTeamScRsp { + ReportBattleTeamScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/battle_pass.rs b/crates/game-server/src/session/message/battle_pass.rs new file mode 100644 index 0000000..d4a4c06 --- /dev/null +++ b/crates/game-server/src/session/message/battle_pass.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod battle_pass_module { + pub async fn on_get_battle_pass_data( + _context: &mut MessageContext<'_, '_>, + _request: GetBattlePassDataCsReq, + ) -> GetBattlePassDataScRsp { + GetBattlePassDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/cafe.rs b/crates/game-server/src/session/message/cafe.rs new file mode 100644 index 0000000..1d6851c --- /dev/null +++ b/crates/game-server/src/session/message/cafe.rs @@ -0,0 +1,58 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod cafe_module { + use tracing::debug; + use trigger_logic::item::ItemStatic; + + pub async fn on_get_cafe_data( + context: &mut MessageContext<'_, '_>, + _request: GetCafeDataCsReq, + ) -> GetCafeDataScRsp { + GetCafeDataScRsp { + retcode: 0, + cafe_data: Some(context.player.cafe_model.get_protocol_cafe_data()), + } + } + + pub async fn on_drink_cafe( + context: &mut MessageContext<'_, '_>, + request: DrinkCafeCsReq, + ) -> DrinkCafeScRsp { + debug!("{request:?}"); + + let item_model = &mut context.player.item_model; + let cafe_model = &mut context.player.cafe_model; + + let price = cafe_model.get_cafe_item_price(request.cafe_item_id); + + if item_model.has_enough_material(ItemStatic::FrontendGold.into(), price) { + if let Some((add_energy, cafe_sync)) = + cafe_model.try_drink_cafe(request.cafe_item_id).await + { + item_model.add_energy(add_energy).await; + item_model + .use_material(ItemStatic::FrontendGold.into(), price) + .await; + + // TODO: RewardBuff + + let material_list = item_model.get_protocol_material_list(); + + context.add_notify(PlayerSyncScNotify { + cafe_sync: Some(cafe_sync), + item_sync: Some(ItemSync { + material_list, + ..Default::default() + }), + ..Default::default() + }); + + return DrinkCafeScRsp { retcode: 0 }; + } + } + + DrinkCafeScRsp { retcode: 1 } + } +} diff --git a/crates/game-server/src/session/message/camp_idle.rs b/crates/game-server/src/session/message/camp_idle.rs new file mode 100644 index 0000000..483f5b0 --- /dev/null +++ b/crates/game-server/src/session/message/camp_idle.rs @@ -0,0 +1,15 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod camp_idle_module { + pub async fn on_get_camp_idle_data( + _context: &mut MessageContext<'_, '_>, + _request: GetCampIdleDataCsReq, + ) -> GetCampIdleDataScRsp { + GetCampIdleDataScRsp { + retcode: 0, + camp_idle_data: Some(CampIdleData::default()), + } + } +} diff --git a/crates/game-server/src/session/message/character_quest.rs b/crates/game-server/src/session/message/character_quest.rs new file mode 100644 index 0000000..00508a7 --- /dev/null +++ b/crates/game-server/src/session/message/character_quest.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod character_quest_module { + pub async fn on_get_character_quest_list( + _context: &mut MessageContext<'_, '_>, + _request: GetCharacterQuestListCsReq, + ) -> GetCharacterQuestListScRsp { + GetCharacterQuestListScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/client_systems.rs b/crates/game-server/src/session/message/client_systems.rs new file mode 100644 index 0000000..624c3ea --- /dev/null +++ b/crates/game-server/src/session/message/client_systems.rs @@ -0,0 +1,185 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod client_systems_module { + use std::collections::HashMap; + + use tracing::debug; + + pub async fn on_video_get_info( + _context: &mut MessageContext<'_, '_>, + _request: VideoGetInfoCsReq, + ) -> VideoGetInfoScRsp { + VideoGetInfoScRsp { + retcode: 0, + video_key_map: HashMap::default(), + } + } + + pub async fn on_save_player_system_setting( + _context: &mut MessageContext<'_, '_>, + _request: SavePlayerSystemSettingCsReq, + ) -> SavePlayerSystemSettingScRsp { + SavePlayerSystemSettingScRsp { retcode: 0 } + } + + pub async fn on_player_operation( + _context: &mut MessageContext<'_, '_>, + _request: PlayerOperationCsReq, + ) -> PlayerOperationScRsp { + PlayerOperationScRsp { retcode: 0 } + } + + pub async fn on_get_tips_info( + _context: &mut MessageContext<'_, '_>, + _request: GetTipsInfoCsReq, + ) -> GetTipsInfoScRsp { + GetTipsInfoScRsp { + retcode: 0, + tips_info: Some(TipsInfo::default()), + } + } + + pub async fn on_get_client_systems_data( + context: &mut MessageContext<'_, '_>, + _request: GetClientSystemsDataCsReq, + ) -> GetClientSystemsDataScRsp { + GetClientSystemsDataScRsp { + retcode: 0, + data: Some(ClientSystemsData { + unlock_data: Some(UnlockData { + unlocked_list: context + .state + .filecfg + .unlock_config_template_tb + .data() + .unwrap() + .iter() + .map(|tmpl| tmpl.id()) + .collect(), + ..Default::default() + }), + post_girl_data: Some(PostGirlData { + post_girl_item_list: context + .state + .filecfg + .post_girl_config_template_tb + .data() + .unwrap() + .iter() + .map(|tmpl| PostGirlItem { + id: tmpl.id() as u32, + unlock_time: 0, + }) + .collect(), + selected_post_girl_id_list: vec![3510027], + show_random_selected: false, + }), + music_player_data: Some(MusicPlayerData { + music_list: context + .state + .filecfg + .music_player_config_template_tb + .data() + .unwrap() + .iter() + .map(|tmpl| MusicPlayerItem { + id: tmpl.id() as u32, + unlock_time: 1, + seen_time: 2, + }) + .collect(), + }), + ..Default::default() + }), + } + } + + pub async fn on_get_news_stand_data( + _context: &mut MessageContext<'_, '_>, + _request: GetNewsStandDataCsReq, + ) -> GetNewsStandDataScRsp { + GetNewsStandDataScRsp { + retcode: 0, + news_stand_data: Some(NewsStandData::default()), + } + } + + pub async fn on_get_trashbin_hermit_data( + _context: &mut MessageContext<'_, '_>, + _request: GetTrashbinHermitDataCsReq, + ) -> GetTrashbinHermitDataScRsp { + GetTrashbinHermitDataScRsp { + retcode: 0, + trashbin_hermit_data: Some(TrashbinHermitData::default()), + } + } + + pub async fn on_get_exploration_data( + _context: &mut MessageContext<'_, '_>, + _request: GetExplorationDataCsReq, + ) -> GetExplorationDataScRsp { + GetExplorationDataScRsp { retcode: 0 } + } + + pub async fn on_get_journey_data( + _context: &mut MessageContext<'_, '_>, + _request: GetJourneyDataCsReq, + ) -> GetJourneyDataScRsp { + GetJourneyDataScRsp { + retcode: 0, + journey_data: Some(JourneyData::default()), + } + } + + pub async fn on_get_red_dot_list( + _context: &mut MessageContext<'_, '_>, + _request: GetRedDotListCsReq, + ) -> GetRedDotListScRsp { + GetRedDotListScRsp { retcode: 0 } + } + + pub async fn on_report_ui_layout_platform( + _context: &mut MessageContext<'_, '_>, + _request: ReportUiLayoutPlatformCsReq, + ) -> ReportUiLayoutPlatformScRsp { + ReportUiLayoutPlatformScRsp { retcode: 0 } + } + + pub async fn on_game_log_report( + _context: &mut MessageContext<'_, '_>, + request: GameLogReportCsReq, + ) -> GameLogReportScRsp { + debug!("{request:?}"); + GameLogReportScRsp { retcode: 0 } + } + + pub async fn on_trigger_interact( + _context: &mut MessageContext<'_, '_>, + _request: TriggerInteractCsReq, + ) -> TriggerInteractScRsp { + TriggerInteractScRsp { retcode: 0 } + } + + pub async fn on_battle_report( + _context: &mut MessageContext<'_, '_>, + _request: BattleReportCsReq, + ) -> BattleReportScRsp { + BattleReportScRsp { retcode: 0 } + } + + pub async fn on_play_song( + _context: &mut MessageContext<'_, '_>, + _request: PlaySongCsReq, + ) -> PlaySongScRsp { + PlaySongScRsp { retcode: 0 } + } + + pub async fn on_set_music_player_mode( + _context: &mut MessageContext<'_, '_>, + _request: SetMusicPlayerModeCsReq, + ) -> SetMusicPlayerModeScRsp { + SetMusicPlayerModeScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/collections.rs b/crates/game-server/src/session/message/collections.rs new file mode 100644 index 0000000..2b186d1 --- /dev/null +++ b/crates/game-server/src/session/message/collections.rs @@ -0,0 +1,35 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod collections_module { + pub async fn on_get_collect_map( + _context: &mut MessageContext<'_, '_>, + _request: GetCollectMapCsReq, + ) -> GetCollectMapScRsp { + GetCollectMapScRsp { + retcode: 0, + collect_map: Some(CollectMap::default()), + } + } + + pub async fn on_workbench_get_data( + _context: &mut MessageContext<'_, '_>, + _request: WorkbenchGetDataCsReq, + ) -> WorkbenchGetDataScRsp { + WorkbenchGetDataScRsp { + retcode: 0, + workbench_data: Some(WorkbenchData::default()), + } + } + + pub async fn on_get_abyss_reward_data( + _context: &mut MessageContext<'_, '_>, + _request: GetAbyssRewardDataCsReq, + ) -> GetAbyssRewardDataScRsp { + GetAbyssRewardDataScRsp { + retcode: 0, + abyss_reward_data: Some(AbyssRewardData::default()), + } + } +} diff --git a/crates/game-server/src/session/message/daily_challenge.rs b/crates/game-server/src/session/message/daily_challenge.rs new file mode 100644 index 0000000..12f193e --- /dev/null +++ b/crates/game-server/src/session/message/daily_challenge.rs @@ -0,0 +1,15 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod daily_challenge_module { + pub async fn on_get_daily_challenge_data( + _context: &mut MessageContext<'_, '_>, + _request: GetDailyChallengeDataCsReq, + ) -> GetDailyChallengeDataScRsp { + GetDailyChallengeDataScRsp { + retcode: 0, + data: Some(DailyChallengeData::default()), + } + } +} diff --git a/crates/game-server/src/session/message/fairy.rs b/crates/game-server/src/session/message/fairy.rs new file mode 100644 index 0000000..faae65e --- /dev/null +++ b/crates/game-server/src/session/message/fairy.rs @@ -0,0 +1,15 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod fairy_module { + pub async fn on_get_fairy_data( + _context: &mut MessageContext<'_, '_>, + _request: GetFairyDataCsReq, + ) -> GetFairyDataScRsp { + GetFairyDataScRsp { + retcode: 0, + data: Some(FairyData::default()), + } + } +} diff --git a/crates/game-server/src/session/message/fishing_contest.rs b/crates/game-server/src/session/message/fishing_contest.rs new file mode 100644 index 0000000..c54e3a7 --- /dev/null +++ b/crates/game-server/src/session/message/fishing_contest.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod fishing_contest_module { + pub async fn on_get_fishing_contest_data( + _context: &mut MessageContext<'_, '_>, + _request: GetFishingContestDataCsReq, + ) -> GetFishingContestDataScRsp { + GetFishingContestDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/gacha.rs b/crates/game-server/src/session/message/gacha.rs new file mode 100644 index 0000000..521ea3f --- /dev/null +++ b/crates/game-server/src/session/message/gacha.rs @@ -0,0 +1,15 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod gacha_module { + pub async fn on_get_gacha_data( + _context: &mut MessageContext<'_, '_>, + request: GetGachaDataCsReq, + ) -> GetGachaDataScRsp { + GetGachaDataScRsp { + retcode: 0, + gacha_type: request.gacha_type, + } + } +} diff --git a/crates/game-server/src/session/message/hadal_zone.rs b/crates/game-server/src/session/message/hadal_zone.rs new file mode 100644 index 0000000..ce7a55d --- /dev/null +++ b/crates/game-server/src/session/message/hadal_zone.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod hadal_zone_module { + pub async fn on_get_hadal_zone_data( + _context: &mut MessageContext<'_, '_>, + _request: GetHadalZoneDataCsReq, + ) -> GetHadalZoneDataScRsp { + GetHadalZoneDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/inventory.rs b/crates/game-server/src/session/message/inventory.rs new file mode 100644 index 0000000..ab65410 --- /dev/null +++ b/crates/game-server/src/session/message/inventory.rs @@ -0,0 +1,45 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod inventory_module { + pub async fn on_get_weapon_data( + context: &mut MessageContext<'_, '_>, + _request: GetWeaponDataCsReq, + ) -> GetWeaponDataScRsp { + GetWeaponDataScRsp { + retcode: 0, + weapon_list: context.player.equip_model.get_protocol_weapon_list(&[]), + } + } + + pub async fn on_get_equip_data( + context: &mut MessageContext<'_, '_>, + _request: GetEquipDataCsReq, + ) -> GetEquipDataScRsp { + GetEquipDataScRsp { + retcode: 0, + equip_list: context.player.equip_model.get_protocol_equip_list(&[]), + } + } + + pub async fn on_get_resource_data( + context: &mut MessageContext<'_, '_>, + _request: GetResourceDataCsReq, + ) -> GetResourceDataScRsp { + let item_model = &context.player.item_model; + + GetResourceDataScRsp { + retcode: 0, + material_list: item_model.get_protocol_material_list(), + auto_recovery_info: item_model.get_protocol_auto_recovery_info(), + } + } + + pub async fn on_get_wishlist_data( + _context: &mut MessageContext<'_, '_>, + _request: GetWishlistDataCsReq, + ) -> GetWishlistDataScRsp { + GetWishlistDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/land_revive.rs b/crates/game-server/src/session/message/land_revive.rs new file mode 100644 index 0000000..ae5f590 --- /dev/null +++ b/crates/game-server/src/session/message/land_revive.rs @@ -0,0 +1,15 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod land_revive_module { + pub async fn on_get_main_city_revival_data( + _context: &mut MessageContext<'_, '_>, + _request: GetMainCityRevivalDataCsReq, + ) -> GetMainCityRevivalDataScRsp { + GetMainCityRevivalDataScRsp { + retcode: 0, + main_city_revival_data: Some(MainCityRevivalData::default()), + } + } +} diff --git a/crates/game-server/src/session/message/mail.rs b/crates/game-server/src/session/message/mail.rs new file mode 100644 index 0000000..efa6c67 --- /dev/null +++ b/crates/game-server/src/session/message/mail.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod mail_module { + pub async fn on_get_player_mails( + _context: &mut MessageContext<'_, '_>, + _request: GetPlayerMailsCsReq, + ) -> GetPlayerMailsScRsp { + GetPlayerMailsScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/miniscape_entrust.rs b/crates/game-server/src/session/message/miniscape_entrust.rs new file mode 100644 index 0000000..7dbb1ba --- /dev/null +++ b/crates/game-server/src/session/message/miniscape_entrust.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod miniscape_entrust_module { + pub async fn on_get_miniscape_entrust_data( + _context: &mut MessageContext<'_, '_>, + _request: GetMiniscapeEntrustDataCsReq, + ) -> GetMiniscapeEntrustDataScRsp { + GetMiniscapeEntrustDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/mod.rs b/crates/game-server/src/session/message/mod.rs new file mode 100644 index 0000000..83024f8 --- /dev/null +++ b/crates/game-server/src/session/message/mod.rs @@ -0,0 +1,128 @@ +use trigger_encoding::Encodeable; +use trigger_protocol::{util::ProtocolUnit, ClientCmdID}; + +use super::GameSession; +use crate::AppState; +use crate::NapPlayer; + +modules! { + player, + scene, + avatar, + inventory, + quest, + abyss, + bangboo, + client_systems, + gacha, + mail, + ramen, + social, + cafe, + reward_buff, + arcade, + daily_challenge, + fairy, + activity, + land_revive, + collections, + perform, + battle_event, + vhs_store, + month_card, + battle_pass, + hadal_zone, + photo_wall, + character_quest, + shop, + babel_tower, + camp_idle, + miniscape_entrust, + fishing_contest, + ridus_got_boo, + qa_game +} + +client_message_forwarding! { + HallServer <- [SavePosInMainCityCsReq, InteractWithUnitCsReq, RunEventGraphCsReq, EnterSectionCsReq] + BattleServer <- [EndBattleCsReq] +} + +struct MessageContext<'s, 'pl> { + pub state: &'static AppState, + pub session: &'s GameSession, + pub player: &'pl mut NapPlayer, + pub request_id: u32, + notify_list: Vec, +} + +impl<'s, 'pl> MessageContext<'s, 'pl> { + pub fn new( + state: &'static AppState, + session: &'s GameSession, + player: &'pl mut NapPlayer, + request_id: u32, + ) -> Self { + Self { + state, + session, + player, + request_id, + notify_list: Vec::with_capacity(0), + } + } + + pub fn add_notify(&mut self, message: Message) { + self.notify_list.push(message.into()); + } + + pub fn remove_notifies(&mut self) -> Vec { + std::mem::take(&mut self.notify_list) + } +} + +macro_rules! modules { + ($($name:ident),*) => { + $(mod $name;)* + + pub async fn handle_message(state: &'static AppState, session: &GameSession, player: &mut NapPlayer, message: ::trigger_sv::message::ForwardClientProtocolMessage) -> Option<::trigger_sv::message::AvailableServerProtocolMessage> { + let Some(message) = forward_client_message(session, message).await else { + return None; + }; + + let cmd_id = message.message.cmd_id; + + $( + if $name::supports_message(cmd_id) { + return $name::handle_message(state, session, player, message).await; + } + )* + + ::tracing::warn!("couldn't find handler module for message with id {cmd_id}"); + None + } + }; +} + +macro_rules! client_message_forwarding { + ($($server_type:ident <- [$($cmd_type:ident),*])*) => { + pub async fn forward_client_message(session: &GameSession, message: ::trigger_sv::message::ForwardClientProtocolMessage) -> Option<::trigger_sv::message::ForwardClientProtocolMessage> { + use std::sync::LazyLock; + use std::collections::HashMap; + use trigger_sv::net::ServerType; + + static FORWARD_SERVER_MAP: LazyLock> = LazyLock::new(|| HashMap::from([$($((::trigger_protocol::$cmd_type::CMD_ID, ServerType::$server_type),)*)*])); + + if let Some(server_type) = FORWARD_SERVER_MAP.get(&message.message.cmd_id) { + session.forward_client_message(message.message, *server_type, message.request_id).await; + None + } + else { + Some(message) + } + } + }; +} + +use client_message_forwarding; +use modules; diff --git a/crates/game-server/src/session/message/month_card.rs b/crates/game-server/src/session/message/month_card.rs new file mode 100644 index 0000000..2f65614 --- /dev/null +++ b/crates/game-server/src/session/message/month_card.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod month_card_module { + pub async fn on_get_month_card_reward_list( + _context: &mut MessageContext<'_, '_>, + _request: GetMonthCardRewardListCsReq, + ) -> GetMonthCardRewardListScRsp { + GetMonthCardRewardListScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/perform.rs b/crates/game-server/src/session/message/perform.rs new file mode 100644 index 0000000..c64b54f --- /dev/null +++ b/crates/game-server/src/session/message/perform.rs @@ -0,0 +1,41 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod perform_module { + use rand::RngCore; + use tracing::debug; + + // TODO: actual perform trigger/jump/end tracking + + pub async fn on_perform_trigger( + _context: &mut MessageContext<'_, '_>, + request: PerformTriggerCsReq, + ) -> PerformTriggerScRsp { + debug!("{request:?}"); + + PerformTriggerScRsp { + retcode: 0, + perform_uid: ((request.perform_id as i64) << 32) + | (rand::thread_rng().next_u32() as i64), + } + } + + pub async fn on_perform_jump( + _context: &mut MessageContext<'_, '_>, + request: PerformJumpCsReq, + ) -> PerformJumpScRsp { + debug!("{request:?}"); + + PerformJumpScRsp { retcode: 0 } + } + + pub async fn on_perform_end( + _context: &mut MessageContext<'_, '_>, + request: PerformEndCsReq, + ) -> PerformEndScRsp { + debug!("{request:?}"); + + PerformEndScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/photo_wall.rs b/crates/game-server/src/session/message/photo_wall.rs new file mode 100644 index 0000000..95609a7 --- /dev/null +++ b/crates/game-server/src/session/message/photo_wall.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod photo_wall_module { + pub async fn on_get_photo_wall_data( + _context: &mut MessageContext<'_, '_>, + _request: GetPhotoWallDataCsReq, + ) -> GetPhotoWallDataScRsp { + GetPhotoWallDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/player.rs b/crates/game-server/src/session/message/player.rs new file mode 100644 index 0000000..21e180e --- /dev/null +++ b/crates/game-server/src/session/message/player.rs @@ -0,0 +1,111 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod player_module { + use tracing::debug; + use trigger_sv::{net::ServerType, time_util}; + + use crate::logic::avatar_util; + + pub async fn on_get_player_basic_info( + context: &mut MessageContext<'_, '_>, + _request: GetPlayerBasicInfoCsReq, + ) -> GetPlayerBasicInfoScRsp { + GetPlayerBasicInfoScRsp { + retcode: 0, + basic_info: Some(context.player.get_protocol_player_basic_info()), + } + } + + pub async fn on_get_server_timestamp( + _context: &mut MessageContext<'_, '_>, + _request: GetServerTimestampCsReq, + ) -> GetServerTimestampScRsp { + GetServerTimestampScRsp { + retcode: 0, + utc_offset: 3, // TODO + timestamp: time_util::cur_timestamp_seconds() as u64, + } + } + + pub async fn on_get_player_transaction( + context: &mut MessageContext<'_, '_>, + _request: GetPlayerTransactionCsReq, + ) -> GetPlayerTransactionScRsp { + GetPlayerTransactionScRsp { + retcode: 0, + transaction: format!("{}-{}", context.session.player_uid, 100), + } + } + + pub async fn on_get_authkey( + context: &mut MessageContext<'_, '_>, + request: GetAuthkeyCsReq, + ) -> GetAuthkeyScRsp { + debug!("{request:?}"); + + let offline_verify_value = context.session.calc_offline_verify_value(0); + if request.offline_verify_value != offline_verify_value { + debug!( + "offline verify value mismatch! Expected: {}, got: {}", + offline_verify_value, request.offline_verify_value + ); + return GetAuthkeyScRsp { + retcode: 1, + ..Default::default() + }; + } + + GetAuthkeyScRsp { + retcode: 0, + auth_appid: request.auth_appid, + authkey_ver: request.authkey_ver, + authkey: String::from("TODO_Authkey"), + } + } + + pub async fn on_switch_role( + context: &mut MessageContext<'_, '_>, + request: SwitchRoleCsReq, + ) -> SwitchRoleScRsp { + if avatar_util::is_player_avatar(request.player_avatar_id) + && (avatar_util::is_player_avatar(request.control_avatar_id) + || context + .player + .role_model + .is_avatar_unlocked(request.control_avatar_id)) + { + context + .player + .set_control_avatars(request.player_avatar_id, request.control_avatar_id) + .await; + + // hall-server also should know controlled avatar + // (for predicates in EventGraph such as 'Share.CConfigEventByMainCharacter') + context + .session + .forward_client_message(request, ServerType::HallServer, 0) + .await; + + context.add_notify(PlayerSyncScNotify { + basic_info: Some(context.player.get_protocol_player_basic_info()), + ..Default::default() + }); + + SwitchRoleScRsp { retcode: 0 } + } else { + debug!("invalid avatars specified: {request:?}"); + SwitchRoleScRsp { retcode: 1 } + } + } + + pub async fn on_player_logout( + context: &mut MessageContext<'_, '_>, + _request: PlayerLogoutCsReq, + ) -> PlayerLogoutScRsp { + context.session.unbind_all_servers(true).await; + + PlayerLogoutScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/qa_game.rs b/crates/game-server/src/session/message/qa_game.rs new file mode 100644 index 0000000..9da4129 --- /dev/null +++ b/crates/game-server/src/session/message/qa_game.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod qa_game_module { + pub async fn on_get_questions_answer_game_data( + _context: &mut MessageContext<'_, '_>, + _request: GetQuestionsAnswerGameDataCsReq, + ) -> GetQuestionsAnswerGameDataScRsp { + GetQuestionsAnswerGameDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/quest.rs b/crates/game-server/src/session/message/quest.rs new file mode 100644 index 0000000..641ce01 --- /dev/null +++ b/crates/game-server/src/session/message/quest.rs @@ -0,0 +1,199 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod quest_module { + use trigger_logic::{ + quest::EHollowQuestType, + scene::{ELocalPlayType, ESceneType}, + }; + use trigger_sv::message::GameStateData; + + use crate::logic::dungeon_util; + + pub async fn on_get_quest_data( + context: &mut MessageContext<'_, '_>, + request: GetQuestDataCsReq, + ) -> GetQuestDataScRsp { + GetQuestDataScRsp { + retcode: 0, + quest_type: request.quest_type, + quest_data: Some( + context + .player + .quest_model + .get_protocol_quest_data(request.quest_type), + ), + } + } + + pub async fn on_get_archive_data( + context: &mut MessageContext<'_, '_>, + _request: GetArchiveDataCsReq, + ) -> GetArchiveDataScRsp { + GetArchiveDataScRsp { + retcode: 0, + archive_data: Some(context.player.main_story_model.get_protocol_archive_data()), + } + } + + pub async fn on_get_hollow_data( + context: &mut MessageContext<'_, '_>, + _request: GetHollowDataCsReq, + ) -> GetHollowDataScRsp { + GetHollowDataScRsp { + retcode: 0, + hollow_data: Some(context.player.yorozuya_model.get_protocol_hollow_data()), + } + } + + pub async fn on_get_private_message_data( + _context: &mut MessageContext<'_, '_>, + _request: GetPrivateMessageDataCsReq, + ) -> GetPrivateMessageDataScRsp { + GetPrivateMessageDataScRsp { + retcode: 0, + private_message_data: Some(PrivateMessageData::default()), + } + } + + pub async fn on_hollow_data_refresh( + _context: &mut MessageContext<'_, '_>, + _request: HollowDataRefreshCsReq, + ) -> HollowDataRefreshScRsp { + HollowDataRefreshScRsp { retcode: 0 } + } + + pub async fn on_finish_archive_perform( + _context: &mut MessageContext<'_, '_>, + request: FinishArchivePerformCsReq, + ) -> FinishArchivePerformScRsp { + FinishArchivePerformScRsp { + retcode: 0, + quest_id: request.quest_id, + sub_id: request.sub_id, + } + } + + pub async fn on_begin_training_course_battle( + context: &mut MessageContext<'_, '_>, + request: BeginTrainingCourseBattleCsReq, + ) { + let scene_model = &mut context.player.scene_model; + let scene_info = scene_model.create_scene_info(ESceneType::Fight).await; + + let dungeon_equip = + dungeon_util::build_dungeon_equip_info(&context.player, &request.avatar_id_list); + + context + .session + .change_game_state( + context.request_id, + BeginTrainingCourseBattleScRsp { retcode: 0 }, + GameStateData::Fight { + play_type: ELocalPlayType::TrainingRoom.into(), + quest_id: request.quest_id, + buddy_id: request.buddy_id, + avatar_id_list: request.avatar_id_list, + dungeon_equip, + }, + &scene_info, + context.player, + true, + ) + .await; + } + + pub async fn on_begin_archive_battle_quest( + context: &mut MessageContext<'_, '_>, + request: BeginArchiveBattleQuestCsReq, + ) { + let scene_model = &mut context.player.scene_model; + let scene_info = scene_model.create_scene_info(ESceneType::Fight).await; + + let dungeon_equip = + dungeon_util::build_dungeon_equip_info(&context.player, &request.avatar_id_list); + + context + .session + .change_game_state( + context.request_id, + BeginArchiveBattleQuestScRsp { + retcode: 0, + quest_id: request.quest_id, + }, + GameStateData::Fight { + play_type: ELocalPlayType::ArchiveBattle.into(), + quest_id: request.quest_id, + buddy_id: request.buddy_id, + avatar_id_list: request.avatar_id_list, + dungeon_equip, + }, + &scene_info, + context.player, + true, + ) + .await; + } + + pub async fn on_start_hollow_quest( + context: &mut MessageContext<'_, '_>, + request: StartHollowQuestCsReq, + ) { + let scene_model = &mut context.player.scene_model; + let scene_info = scene_model.create_scene_info(ESceneType::Fight).await; + + let dungeon_equip = + dungeon_util::build_dungeon_equip_info(&context.player, &request.avatar_id_list); + + let quest_template = context + .state + .filecfg + .hollow_quest_template_tb + .data() + .unwrap() + .iter() + .find(|quest| quest.id() == request.quest_id as i32) + .unwrap(); + + let game_state_data = + match EHollowQuestType::try_from(quest_template.hollow_quest_type()).unwrap() { + EHollowQuestType::RallyBattle => GameStateData::Rally { + play_type: ELocalPlayType::RallyLongFight.into(), + quest_id: request.quest_id, + buddy_id: 0, + avatar_id_list: request.avatar_id_list, + dungeon_equip, + }, + _ => GameStateData::Fight { + play_type: ELocalPlayType::PureHollowBattle.into(), + quest_id: request.quest_id, + buddy_id: 0, + avatar_id_list: request.avatar_id_list, + dungeon_equip, + }, + }; + + context + .session + .change_game_state( + context.request_id, + StartHollowQuestScRsp { + retcode: 0, + quest_id: request.quest_id, + }, + game_state_data, + &scene_info, + context.player, + true, + ) + .await; + } + + pub async fn on_click_hollow_system( + _context: &mut MessageContext<'_, '_>, + _request: ClickHollowSystemCsReq, + ) -> ClickHollowSystemScRsp { + ClickHollowSystemScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/ramen.rs b/crates/game-server/src/session/message/ramen.rs new file mode 100644 index 0000000..be4d10a --- /dev/null +++ b/crates/game-server/src/session/message/ramen.rs @@ -0,0 +1,62 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod ramen_module { + use tracing::debug; + use trigger_logic::item::ItemStatic; + + pub async fn on_get_ramen_data( + context: &mut MessageContext<'_, '_>, + _request: GetRamenDataCsReq, + ) -> GetRamenDataScRsp { + GetRamenDataScRsp { + retcode: 0, + ramen_data: Some(context.player.ramen_model.get_protocol_ramen_data()), + } + } + + pub async fn on_eat_ramen( + context: &mut MessageContext<'_, '_>, + request: EatRamenCsReq, + ) -> EatRamenScRsp { + debug!("{request:?}"); + + let item_model = &mut context.player.item_model; + let ramen_model = &mut context.player.ramen_model; + + let price = ramen_model.get_ramen_price(request.ramen); + + if item_model.has_enough_material(ItemStatic::FrontendGold.into(), price) { + if let Some(ramen_sync) = ramen_model.try_eat_ramen(request.ramen).await { + item_model + .use_material(ItemStatic::FrontendGold.into(), price) + .await; + + let material_list = item_model.get_protocol_material_list(); + + context.add_notify(PlayerSyncScNotify { + ramen_sync: Some(ramen_sync), + item_sync: Some(ItemSync { + material_list, + ..Default::default() + }), + ..Default::default() + }); + + return EatRamenScRsp { retcode: 0 }; + } + } + + EatRamenScRsp { retcode: 1 } + } + + pub async fn on_del_new_ramen( + _context: &mut MessageContext<'_, '_>, + request: DelNewRamenCsReq, + ) -> DelNewRamenScRsp { + debug!("{request:?}"); + + DelNewRamenScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/reward_buff.rs b/crates/game-server/src/session/message/reward_buff.rs new file mode 100644 index 0000000..583cc56 --- /dev/null +++ b/crates/game-server/src/session/message/reward_buff.rs @@ -0,0 +1,15 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod reward_buff_module { + pub async fn on_get_reward_buff_data( + _context: &mut MessageContext<'_, '_>, + _request: GetRewardBuffDataCsReq, + ) -> GetRewardBuffDataScRsp { + GetRewardBuffDataScRsp { + retcode: 0, + data: Some(RewardBuffData::default()), + } + } +} diff --git a/crates/game-server/src/session/message/ridus_got_boo.rs b/crates/game-server/src/session/message/ridus_got_boo.rs new file mode 100644 index 0000000..12a9643 --- /dev/null +++ b/crates/game-server/src/session/message/ridus_got_boo.rs @@ -0,0 +1,12 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod ridus_got_module { + pub async fn on_get_ridus_got_boo_data( + _context: &mut MessageContext<'_, '_>, + _request: GetRidusGotBooDataCsReq, + ) -> GetRidusGotBooDataScRsp { + GetRidusGotBooDataScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/scene.rs b/crates/game-server/src/session/message/scene.rs new file mode 100644 index 0000000..d0f8fba --- /dev/null +++ b/crates/game-server/src/session/message/scene.rs @@ -0,0 +1,131 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod scene_module { + use tracing::debug; + use trigger_logic::scene::ESceneType; + + use crate::logic::scene_util; + + pub async fn on_enter_world(context: &mut MessageContext<'_, '_>, _request: EnterWorldCsReq) { + let scene_model = &mut context.player.scene_model; + + let scene_to_enter = match scene_model.get_current_scene().await { + Some(current_scene) + if scene_util::persists_on_relogin( + ESceneType::try_from(current_scene.scene_type).unwrap(), + ) => + { + Some(current_scene) + } + _ => scene_model.get_default_scene().await, + }; + + let scene_to_enter = if scene_to_enter.is_none() { + // TODO: first scene to be created should be the 'Fresh' scene (beginner procedure) + debug!( + "player with uid {} has no scene to enter, default hall scene will be created", + context.session.player_uid + ); + + let scene = scene_model.create_scene_info(ESceneType::Hall).await; + scene_model.set_default_scene(&scene).await; + + scene + } else { + scene_to_enter.unwrap() + }; + + context + .session + .change_game_state( + context.request_id, + EnterWorldScRsp { retcode: 0 }, + context + .player + .build_state_reentrant_data(&scene_to_enter) + .unwrap(), + &scene_to_enter, + context.player, + false, + ) + .await; + + context.player.scene_model.clear_abandoned_scenes().await; + } + + pub async fn on_post_enter_world( + _context: &mut MessageContext<'_, '_>, + _request: PostEnterWorldCsReq, + ) -> PostEnterWorldScRsp { + PostEnterWorldScRsp { retcode: 0 } + } + + pub async fn on_scene_transition( + _context: &mut MessageContext<'_, '_>, + request: SceneTransitionCsReq, + ) -> SceneTransitionScRsp { + debug!("{request:?}"); + + SceneTransitionScRsp { retcode: 0 } + } + + pub async fn on_enter_section_complete( + _context: &mut MessageContext<'_, '_>, + _request: EnterSectionCompleteCsReq, + ) -> EnterSectionCompleteScRsp { + EnterSectionCompleteScRsp { retcode: 0 } + } + + pub async fn on_refresh_section( + _context: &mut MessageContext<'_, '_>, + _request: RefreshSectionCsReq, + ) -> RefreshSectionScRsp { + RefreshSectionScRsp { + retcode: 0, + refresh_status: 0, + } + } + + pub async fn on_leave_cur_scene( + context: &mut MessageContext<'_, '_>, + _request: LeaveCurSceneCsReq, + ) { + if let Some(scene_uid) = context.session.get_cur_scene_uid() { + context.player.scene_model.on_leave_scene(scene_uid).await; + } + + let default_scene = context + .player + .scene_model + .get_default_scene() + .await + .unwrap(); + + context + .session + .change_game_state( + context.request_id, + LeaveCurSceneScRsp { retcode: 0 }, + context + .player + .build_state_reentrant_data(&default_scene) + .unwrap(), + &default_scene, + context.player, + false, + ) + .await; + } + + pub async fn on_active_hollow_check_point( + _context: &mut MessageContext<'_, '_>, + request: ActiveHollowCheckPointCsReq, + ) -> ActiveHollowCheckPointScRsp { + // TODO: forward it to battle-server and actually handle + + debug!("{:?}", request.check_point); + ActiveHollowCheckPointScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/shop.rs b/crates/game-server/src/session/message/shop.rs new file mode 100644 index 0000000..b694509 --- /dev/null +++ b/crates/game-server/src/session/message/shop.rs @@ -0,0 +1,32 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod shop_module { + pub async fn on_get_fashion_store_data( + _context: &mut MessageContext<'_, '_>, + _request: GetFashionStoreDataCsReq, + ) -> GetFashionStoreDataScRsp { + GetFashionStoreDataScRsp { + retcode: 0, + data: Some(FashionStoreData::default()), + } + } + + pub async fn on_get_shopping_mall_info( + _context: &mut MessageContext<'_, '_>, + _request: GetShoppingMallInfoCsReq, + ) -> GetShoppingMallInfoScRsp { + GetShoppingMallInfoScRsp { + retcode: 0, + shopping_mall_info: Some(ShoppingMallInfo::default()), + } + } + + pub async fn on_recharge_get_item_list( + _context: &mut MessageContext<'_, '_>, + _request: RechargeGetItemListCsReq, + ) -> RechargeGetItemListScRsp { + RechargeGetItemListScRsp { retcode: 0 } + } +} diff --git a/crates/game-server/src/session/message/social.rs b/crates/game-server/src/session/message/social.rs new file mode 100644 index 0000000..f85f596 --- /dev/null +++ b/crates/game-server/src/session/message/social.rs @@ -0,0 +1,60 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod social_module { + pub async fn on_get_friend_list( + _context: &mut MessageContext<'_, '_>, + _request: GetFriendListCsReq, + ) -> GetFriendListScRsp { + GetFriendListScRsp { retcode: 0 } + } + + pub async fn on_get_online_friends_list( + _context: &mut MessageContext<'_, '_>, + _request: GetOnlineFriendsListCsReq, + ) -> GetOnlineFriendsListScRsp { + GetOnlineFriendsListScRsp { retcode: 0 } + } + + pub async fn on_get_role_card_data( + _context: &mut MessageContext<'_, '_>, + _request: GetRoleCardDataCsReq, + ) -> GetRoleCardDataScRsp { + GetRoleCardDataScRsp { + retcode: 0, + role_card_data: Some(RoleCardData { + signature: String::from("discord.gg/reversedrooms"), + }), + } + } + + pub async fn on_get_chat_emoji_list( + _context: &mut MessageContext<'_, '_>, + _request: GetChatEmojiListCsReq, + ) -> GetChatEmojiListScRsp { + GetChatEmojiListScRsp { retcode: 0 } + } + + pub async fn on_get_display_case_data( + _context: &mut MessageContext<'_, '_>, + _request: GetDisplayCaseDataCsReq, + ) -> GetDisplayCaseDataScRsp { + GetDisplayCaseDataScRsp { retcode: 0 } + } + + pub async fn on_get_player_display_data( + _context: &mut MessageContext<'_, '_>, + _request: GetPlayerDisplayDataCsReq, + ) -> GetPlayerDisplayDataScRsp { + GetPlayerDisplayDataScRsp { + retcode: 0, + player_display_data: Some(PlayerDisplayData { + signature: String::from("discord.gg/reversedrooms"), + display_item_group: Some(DisplayItemGroup::default()), + avatar_data_package: Some(AvatarDataPackage::default()), + photo_wall_network_data: Some(PhotoWallNetworkData::default()), + }), + } + } +} diff --git a/crates/game-server/src/session/message/vhs_store.rs b/crates/game-server/src/session/message/vhs_store.rs new file mode 100644 index 0000000..7444584 --- /dev/null +++ b/crates/game-server/src/session/message/vhs_store.rs @@ -0,0 +1,15 @@ +use super::MessageContext; +use trigger_codegen::handlers; + +#[handlers] +mod vhs_store_module { + pub async fn on_get_vhs_store_data( + _context: &mut MessageContext<'_, '_>, + _request: GetVhsStoreDataCsReq, + ) -> GetVhsStoreDataScRsp { + GetVhsStoreDataScRsp { + retcode: 0, + data: Some(VhsStoreData::default()), + } + } +} diff --git a/crates/game-server/src/session/mod.rs b/crates/game-server/src/session/mod.rs new file mode 100644 index 0000000..d1bdc59 --- /dev/null +++ b/crates/game-server/src/session/mod.rs @@ -0,0 +1,280 @@ +use std::{ + collections::HashMap, + sync::{Mutex, RwLock}, +}; + +use tracing::warn; +use trigger_database::entity::scene_info; +use trigger_logic::scene::ESceneType; +use trigger_protocol::util::ProtocolUnit; +use trigger_sv::{ + message::{ + AvailableServerProtocolMessage, BindClientSessionMessage, ChangeGameStateMessage, + ForwardClientProtocolMessage, GameStateData, UnbindClientSessionMessage, + }, + net::{ServerNetworkManager, ServerType}, +}; + +use crate::logic::{scene_util, NapPlayer}; + +pub mod message; + +pub struct GameSession { + network_mgr: &'static ServerNetworkManager, + bound_server_map: RwLock>, + pub id: u64, + pub player_uid: u32, + pub current_state: Mutex>, +} + +pub struct SessionGameStateInfo { + pub scene_uid: i64, + pub state_server: ServerType, + pub prepared_game_state_data: Option, + pub state_confirm_response: Option, +} + +impl GameSession { + pub fn new( + network_mgr: &'static ServerNetworkManager, + id: u64, + player_uid: u32, + gate_id: u32, + ) -> Self { + Self { + network_mgr, + bound_server_map: RwLock::new(HashMap::from([(ServerType::GateServer, gate_id)])), + id, + player_uid, + current_state: Mutex::new(None), + } + } + + pub async fn change_game_state( + &self, + ack_request_id: u32, + response: impl Into, + game_state_data: GameStateData, + scene: &scene_info::Model, + player: &mut NapPlayer, + set_back_scene: bool, + ) { + self.unload_current_game_state().await; + + let scene_type = ESceneType::try_from(scene.scene_type).expect("invalid scene type"); + let state_server = scene_util::get_scene_logic_simulation_server_type(scene_type) + .unwrap_or_else(|| todo!("scene type {scene_type:?}")); + + let response = AvailableServerProtocolMessage { + session_id: self.id, + ack_request_id, + notifies: Vec::new(), + response: Some(response.into()), + }; + + *self.current_state.lock().unwrap() = Some(SessionGameStateInfo { + scene_uid: scene.scene_uid, + state_server, + prepared_game_state_data: Some(game_state_data), + state_confirm_response: Some(response), + }); + + if set_back_scene { + player.scene_model.push_current_scene(&scene).await; + } else { + player.scene_model.set_current_scene(&scene).await; + } + + self.bind_server(state_server, 0).await; + } + + pub async fn on_game_state_loaded(&self, notifies: Vec) { + if let Some(mut response) = self.get_awaiting_state_response() { + response.notifies = notifies; + self.network_mgr + .send_to(ServerType::GateServer, 0, response) + .await; + } + } + + fn get_awaiting_state_response(&self) -> Option { + self.current_state + .lock() + .unwrap() + .as_mut() + .map(|state| state.state_confirm_response.take()) + .flatten() + } + + pub fn get_cur_scene_uid(&self) -> Option { + self.current_state + .lock() + .unwrap() + .as_ref() + .map(|state| state.scene_uid) + } + + pub fn get_cur_state_server(&self) -> Option { + self.current_state + .lock() + .unwrap() + .as_ref() + .map(|state| state.state_server) + } + + async fn unload_current_game_state(&self) { + if let Some(server_type) = self.get_cur_state_server() { + self.unbind_server(server_type).await; + } + } + + async fn on_game_state_server_bound(&self) { + if let Some(state_server) = self.get_cur_state_server() { + if let Some(message) = self.build_change_game_state_message() { + self.network_mgr + .send_to( + state_server, + self.get_bound_server_of_type(state_server).unwrap(), + message, + ) + .await; + } + } + } + + fn build_change_game_state_message(&self) -> Option { + let mut current_state = self.current_state.lock().unwrap(); + let Some(state) = current_state.as_mut() else { + return None; + }; + + let data = match state.prepared_game_state_data.take() { + Some(data) => data, + None => { + panic!( + "simulation server {:?} is bound, but game state data is not set!", + state.state_server + ) + } + }; + + Some(ChangeGameStateMessage { + session_id: self.id, + scene_uid: state.scene_uid, + data, + }) + } + + pub async fn bind_server(&self, server_type: ServerType, server_id: u32) { + self.network_mgr + .send_to( + server_type, + server_id, + BindClientSessionMessage { + session_id: self.id, + player_uid: self.player_uid, + }, + ) + .await; + } + + pub async fn unbind_server(&self, server_type: ServerType) { + if let Some(server_id) = self.get_bound_server_of_type(server_type) { + self.bound_server_map.write().unwrap().remove(&server_type); + self.network_mgr + .send_to( + server_type, + server_id, + UnbindClientSessionMessage { + session_id: self.id, + }, + ) + .await; + } + } + + pub async fn unbind_all_servers(&self, unbind_gateway: bool) { + let server_map = std::mem::take(&mut *self.bound_server_map.write().unwrap()); + for (server_type, server_id) in server_map.into_iter() { + if server_type != ServerType::GateServer || unbind_gateway { + self.network_mgr + .send_to( + server_type, + server_id, + UnbindClientSessionMessage { + session_id: self.id, + }, + ) + .await; + } + } + } + + pub async fn on_server_bound(&self, server_type: ServerType, server_id: u32) { + self.bound_server_map + .write() + .unwrap() + .insert(server_type, server_id); + + if let Some(state_server) = self.get_cur_state_server() { + if state_server == server_type { + self.on_game_state_server_bound().await; + } + } + } + + pub async fn forward_client_message>( + &self, + message: Message, + destination: ServerType, + request_id: u32, + ) { + let server_id = self + .bound_server_map + .read() + .unwrap() + .get(&destination) + .copied(); + + if let Some(server_id) = server_id { + self.network_mgr + .send_to( + destination, + server_id, + ForwardClientProtocolMessage { + session_id: self.id, + request_id, + message: message.into(), + }, + ) + .await; + } else { + warn!( + "forward_client_message: server {:?} is not bound! session_id: {}, request_id: {}", + destination, self.id, request_id + ); + } + } + + pub fn calc_offline_verify_value(&self, login_random: u32) -> u32 { + 5_u32 + .wrapping_mul(rotate_right( + self.player_uid ^ login_random, + 2 * (self.player_uid & 1) + 17, + )) + .wrapping_sub(430675100) + } + + pub fn get_bound_server_of_type(&self, server_type: ServerType) -> Option { + self.bound_server_map + .read() + .unwrap() + .get(&server_type) + .copied() + } +} + +#[inline(always)] +const fn rotate_right(value: u32, count: u32) -> u32 { + (value >> count) | (value << (32 - count)) +} diff --git a/crates/gate-server/Cargo.toml b/crates/gate-server/Cargo.toml new file mode 100644 index 0000000..6550123 --- /dev/null +++ b/crates/gate-server/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "trigger-gate-server" +edition = "2024" +version.workspace = true + +[dependencies] +tokio.workspace = true +tokio-util.workspace = true + +serde.workspace = true +serde_json.workspace = true +dashmap.workspace = true +atomic_enum.workspace = true + +rand.workspace = true +base64.workspace = true +byteorder.workspace = true + +tracing.workspace = true +thiserror.workspace = true + +trigger-sv.workspace = true +trigger-encoding.workspace = true +trigger-cryptography.workspace = true + +trigger-database.workspace = true +trigger-protobuf.workspace = true diff --git a/crates/gate-server/gateserver.default.toml b/crates/gate-server/gateserver.default.toml new file mode 100644 index 0000000..134a63c --- /dev/null +++ b/crates/gate-server/gateserver.default.toml @@ -0,0 +1,6 @@ +[node] +server_id = 0 + +[network] +tcp_addr = "127.0.0.1:20501" + diff --git a/crates/gate-server/src/config.rs b/crates/gate-server/src/config.rs new file mode 100644 index 0000000..8fb0106 --- /dev/null +++ b/crates/gate-server/src/config.rs @@ -0,0 +1,19 @@ +use std::net::SocketAddr; + +use serde::Deserialize; +use trigger_sv::config::{ServerNodeConfiguration, TomlConfig}; + +#[derive(Deserialize)] +pub struct NetworkSetting { + pub tcp_addr: SocketAddr, +} + +#[derive(Deserialize)] +pub struct GateServerConfig { + pub node: ServerNodeConfiguration, + pub network: NetworkSetting, +} + +impl TomlConfig for GateServerConfig { + const DEFAULT_TOML: &str = include_str!("../gateserver.default.toml"); +} diff --git a/crates/gate-server/src/handlers/client.rs b/crates/gate-server/src/handlers/client.rs new file mode 100644 index 0000000..65f7d59 --- /dev/null +++ b/crates/gate-server/src/handlers/client.rs @@ -0,0 +1,230 @@ +use base64::Engine; +use rand::RngCore; +use tracing::{debug, error, info, warn}; +use trigger_protobuf::{ + CmdID, KeepAliveNotify, PacketHead, PlayerGetTokenCsReq, PlayerGetTokenScRsp, PlayerLoginCsReq, + ProtobufMessage, XorFields, +}; +use trigger_sv::{ + config::RsaSetting, + message::{BindClientSessionMessage, ForwardClientProtocolMessage}, + net::ServerType, +}; + +use crate::{ + net::{Connection, NetPacket}, + session::SessionState, + util::BinExt, + AppState, +}; + +pub async fn handle_message(connection: &Connection, state: &'static AppState, packet: NetPacket) { + let head = packet.decode_head(); + match packet.cmd_id { + PlayerGetTokenCsReq::CMD_ID => { + on_player_get_token( + connection, + state, + PlayerGetTokenCsReq::decode(&*packet.body).unwrap_or_default(), + ) + .await + } + PlayerLoginCsReq::CMD_ID => { + on_player_login( + connection, + state, + PlayerLoginCsReq::decode(&*packet.body).unwrap_or_default(), + ) + .await + } + KeepAliveNotify::CMD_ID => { + on_keep_alive( + connection, + state, + KeepAliveNotify::decode(&*packet.body).unwrap_or_default() + ).await + } + cmd_id if connection.session.is_logged_in() => { + match trigger_protobuf::pb_to_common_protocol_unit(cmd_id, &packet.body) { + Ok(Some(unit)) => state.network_mgr.send_to(ServerType::GameServer, 0, ForwardClientProtocolMessage { + session_id: connection.session.id, + request_id: head.packet_id, + message: unit, + }).await, + Ok(None) => warn!("ignoring message with unknown cmd_id: {cmd_id}"), + Err(err) => error!( + "failed to decode a message with cmd_id: {} from {} (player_uid: {}), error: {}", + cmd_id, connection.addr(), connection.session.player_uid(), err + ), + } + } + unknown => warn!("received unknown cmd_id and not yet logged in: {unknown}"), + } +} + +async fn on_keep_alive( + connection: &Connection, + _state: &'static AppState, + _notify: KeepAliveNotify, +) { + connection.session.refresh_keep_alive_time(); +} + +async fn on_player_login( + connection: &Connection, + state: &'static AppState, + mut req: PlayerLoginCsReq, +) { + if connection.session.state() != SessionState::Login { + return; + } + + req.xor_fields(); + + // TODO: check client capabilities. Asset version and etc. + info!("PlayerLogin: {req:?}"); + + state + .network_mgr + .send_to( + ServerType::GameServer, + 0, + BindClientSessionMessage { + session_id: connection.session.id, + player_uid: connection.session.player_uid(), + }, + ) + .await; +} + +async fn on_player_get_token( + connection: &Connection, + state: &'static AppState, + mut req: PlayerGetTokenCsReq, +) { + if connection.session.state() != SessionState::GetToken { + return; + } + + req.xor_fields(); + info!( + "PlayerGetToken: account_uid: {}, rsa_ver: {}, client_rand_key: {}", + req.account_uid, req.rsa_ver, req.client_rand_key + ); + + let Some(rsa) = state + .environment + .security + .get_rsa_setting_by_version(req.rsa_ver) + else { + debug!( + "client from {} (account_uid: {}) tries to login with unsupported rsa version ({})", + connection.addr(), + req.account_uid, + req.rsa_ver + ); + login_failed!(connection, PlayerGetTokenScRsp, 1); + return; + }; + + let Some(client_rand_key) = decrypt_client_rand_key(&req.client_rand_key, rsa) else { + debug!( + "failed to decrypt client_rand_key given by peer at {} (account_uid: {})", + connection.addr(), + req.account_uid + ); + login_failed!(connection, PlayerGetTokenScRsp, 1); + return; + }; + + let server_rand_key = rand::thread_rng().next_u64(); + connection.set_secret_key(client_rand_key ^ server_rand_key); + + let server_rand_key = server_rand_key.to_le_bytes(); + + // TODO: account_uid-token pair verification via http request to sdk. + + let Some(player_uid) = fetch_player_uid(state, &req.account_uid).await else { + login_failed!(connection, PlayerGetTokenScRsp, 1); + return; + }; + + connection.session.on_player_get_token_ok(player_uid); + connection + .send_pb( + PacketHead::default(), + PlayerGetTokenScRsp { + uid: player_uid, + server_rand_key: trigger_cryptography::rsa::encrypt( + &rsa.client_public_key, + &server_rand_key, + ) + .to_base64(), + sign: trigger_cryptography::rsa::sign(&rsa.server_private_key, &server_rand_key) + .to_base64(), + ..Default::default() + }, + ) + .await; +} + +async fn fetch_player_uid(state: &'static AppState, account_uid: &str) -> Option { + use trigger_database::entity::*; + use trigger_database::prelude::*; + + match account_uid::Entity::find() + .filter(account_uid::Column::AccountUid.eq(account_uid)) + .one(&state.database) + .await + { + Ok(Some(uid)) => return Some(uid.player_uid as u32), + Err(err) => { + error!("account_uid::find() failed: {err}"); + return None; + } + Ok(None) => (), + } + + match account_uid::Entity::insert(account_uid::ActiveModel { + account_uid: Set(account_uid.to_string()), + ..Default::default() + }) + .exec(&state.database) + .await + { + Ok(result) => Some(result.last_insert_id as u32), + Err(err) => { + error!("account_uid::insert() failed: {err}"); + None + } + } +} + +fn decrypt_client_rand_key(client_rand_key: &str, rsa_setting: &RsaSetting) -> Option { + let cipher = base64::engine::general_purpose::STANDARD + .decode(client_rand_key) + .ok()?; + + Some(u64::from_le_bytes( + trigger_cryptography::rsa::decrypt(&rsa_setting.server_private_key, &cipher)? + .try_into() + .ok()?, + )) +} + +macro_rules! login_failed { + ($conn:expr, $rsp:ident, $retcode:expr) => { + $conn.session.set_login_failed(); + $conn + .send_pb( + PacketHead::default(), + $rsp { + retcode: $retcode, + ..Default::default() + }, + ) + .await; + }; +} + +use login_failed; diff --git a/crates/gate-server/src/handlers/mod.rs b/crates/gate-server/src/handlers/mod.rs new file mode 100644 index 0000000..c07f47e --- /dev/null +++ b/crates/gate-server/src/handlers/mod.rs @@ -0,0 +1,2 @@ +pub mod client; +pub mod server; diff --git a/crates/gate-server/src/handlers/server.rs b/crates/gate-server/src/handlers/server.rs new file mode 100644 index 0000000..1d1120f --- /dev/null +++ b/crates/gate-server/src/handlers/server.rs @@ -0,0 +1,122 @@ +use tracing::{debug, info, warn}; +use trigger_protobuf::{CmdID, PacketHead}; +use trigger_sv::{ + message::{ + AvailableServerProtocolMessage, BindClientSessionOkMessage, Header, + UnbindClientSessionMessage, WithOpcode, + }, + net::ServerType, +}; + +use crate::AppState; + +pub async fn handle_message(state: &'static AppState, packet: trigger_sv::message::NetworkPacket) { + match packet.opcode { + BindClientSessionOkMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_bind_client_session_ok(state, packet.header, message).await; + } + } + AvailableServerProtocolMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_available_server_protocol(state, packet.header, message).await; + } + } + UnbindClientSessionMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_unbind_client_session(state, packet.header, message).await; + } + } + opcode => warn!("unhandled server message, opcode: {opcode}"), + } +} + +async fn on_unbind_client_session( + state: &'static AppState, + header: Header, + message: UnbindClientSessionMessage, +) { + if ServerType::GameServer == ServerType::try_from(header.sender_type).unwrap() { + if let Some(connection) = state.connection_mgr.get(message.session_id) { + connection.shutdown(); + } + } +} + +async fn on_available_server_protocol( + state: &'static AppState, + _header: Header, + message: AvailableServerProtocolMessage, +) { + if let Some(connection) = state.connection_mgr.get(message.session_id) { + for notify in message.notifies { + if let Ok(Some((cmd_id, body))) = trigger_protobuf::common_protocol_unit_to_pb(¬ify) + { + let head = PacketHead { + packet_id: connection.next_packet_id(), + ..Default::default() + }; + + debug!("sending notify (cmd_id: {cmd_id})"); + connection.send(head, cmd_id, body).await; + } + } + + if let Some(response) = message.response { + if let Ok(Some((cmd_id, body))) = + trigger_protobuf::common_protocol_unit_to_pb(&response) + { + let head = PacketHead { + packet_id: connection.next_packet_id(), + request_id: message.ack_request_id, + ..Default::default() + }; + + debug!( + "sending response (ack_request_id: {}, rsp_cmd_id: {})", + message.ack_request_id, cmd_id + ); + + connection.send(head, cmd_id, body).await; + } else { + let head = PacketHead { + packet_id: connection.next_packet_id(), + request_id: message.ack_request_id, + ..Default::default() + }; + + debug!( + "sending response (using fallback, ack_request_id: {}, common_protocol_cmd_id: {})", + message.ack_request_id, response.cmd_id + ); + + connection + .send( + head, + trigger_protobuf::FallbackRsp::CMD_ID, + Vec::with_capacity(0), + ) + .await; + } + } + } +} + +async fn on_bind_client_session_ok( + state: &'static AppState, + header: Header, + message: BindClientSessionOkMessage, +) { + if header.sender_type != u8::from(ServerType::GameServer) { + return; + } + + if let Some(connection) = state.connection_mgr.get(message.session_id) { + info!( + "successfully bound Game Server to client with session id {}", + message.session_id + ); + + connection.session.on_game_server_bound(&connection).await; + } +} diff --git a/crates/gate-server/src/main.rs b/crates/gate-server/src/main.rs new file mode 100644 index 0000000..6106826 --- /dev/null +++ b/crates/gate-server/src/main.rs @@ -0,0 +1,90 @@ +use std::{ + process::ExitCode, + sync::{LazyLock, OnceLock}, +}; + +use config::GateServerConfig; +use message_handler::MessageHandler; +use net::ConnectionManager; +use tracing::{error, info}; +use trigger_database::DatabaseConnection; +use trigger_sv::{ + config::{ServerEnvironmentConfiguration, TomlConfig}, + die, logging, + net::{ServerNetworkManager, ServerType}, + print_banner, +}; + +mod config; +mod handlers; +mod message_handler; +mod net; +mod session; +mod util; + +const CONFIG_FILE: &str = "gateserver.toml"; +const SERVER_TYPE: ServerType = ServerType::GateServer; + +struct AppState { + pub environment: ServerEnvironmentConfiguration, + pub connection_mgr: ConnectionManager, + pub network_mgr: ServerNetworkManager, + pub database: DatabaseConnection, +} + +#[tokio::main] +async fn main() -> ExitCode { + static APP_STATE: OnceLock = OnceLock::new(); + static CONFIG: LazyLock = + LazyLock::new(|| GateServerConfig::load_or_create(CONFIG_FILE)); + + print_banner(); + logging::init_tracing(tracing::Level::DEBUG); + + let environment = ServerEnvironmentConfiguration::load_from_toml("environment.toml") + .unwrap_or_else(|err| { + error!("{err}"); + die(); + }); + + let Ok(database) = trigger_database::connect(&environment.database).await else { + die(); + }; + + let network_mgr = + ServerNetworkManager::new(SERVER_TYPE, CONFIG.node.server_id, &environment.servers); + + let connection_mgr = ConnectionManager::new(CONFIG.node.server_id); + let state = APP_STATE.get_or_init(|| AppState { + environment, + connection_mgr, + network_mgr, + database, + }); + + state + .network_mgr + .start_listener(state, handlers::server::handle_message) + .await + .inspect(|_| { + info!( + "successfully started service {:?}:{}", + SERVER_TYPE, CONFIG.node.server_id + ) + }) + .unwrap_or_else(|err| { + error!("failed to start network manager: {err}"); + die(); + }); + + let message_handler = MessageHandler::new(state); + if let Err(err) = net::serve(CONFIG.network.tcp_addr, state, message_handler).await { + error!( + "failed to serve at tcp://{}. Is another instance of server already running? Error: {}", + CONFIG.network.tcp_addr, err + ); + die(); + } + + ExitCode::SUCCESS +} diff --git a/crates/gate-server/src/message_handler.rs b/crates/gate-server/src/message_handler.rs new file mode 100644 index 0000000..ab38c2f --- /dev/null +++ b/crates/gate-server/src/message_handler.rs @@ -0,0 +1,33 @@ +use tokio::sync::mpsc; +use tracing::warn; + +use crate::{net::NetPacket, AppState}; + +#[derive(Clone)] +pub struct MessageHandler(mpsc::UnboundedSender<(u64, NetPacket)>); + +impl MessageHandler { + pub fn new(state: &'static AppState) -> Self { + let (tx, rx) = mpsc::unbounded_channel(); + + tokio::spawn(Self::handler_loop(state, rx)); + Self(tx) + } + + pub fn enqueue(&self, session_id: u64, packet: NetPacket) { + let _ = self.0.send((session_id, packet)); + } + + async fn handler_loop( + state: &'static AppState, + mut rx: mpsc::UnboundedReceiver<(u64, NetPacket)>, + ) { + while let Some((session_id, packet)) = rx.recv().await { + if let Some(connection) = state.connection_mgr.get(session_id) { + crate::handlers::client::handle_message(connection.as_ref(), state, packet).await; + } else { + warn!("connection with session_id {session_id} doesn't exist"); + } + } + } +} diff --git a/crates/gate-server/src/net/connection.rs b/crates/gate-server/src/net/connection.rs new file mode 100644 index 0000000..b0567a8 --- /dev/null +++ b/crates/gate-server/src/net/connection.rs @@ -0,0 +1,276 @@ +use std::{ + io, + net::SocketAddr, + sync::{ + atomic::{AtomicU32, Ordering::SeqCst}, + Arc, OnceLock, + }, + time::Duration, +}; + +use dashmap::DashMap; +use tokio::{io::AsyncReadExt, net::TcpStream, select, sync::mpsc}; +use tokio::{ + io::{AsyncRead, AsyncWriteExt}, + net::tcp::{OwnedReadHalf, OwnedWriteHalf}, +}; +use tokio_util::sync::CancellationToken; +use tracing::debug; +use trigger_protobuf::{CmdID, NapMessage, PacketHead, PlayerGetTokenScRsp}; +use trigger_sv::net::ServerNetworkManager; + +use crate::{message_handler::MessageHandler, session::ClientSession}; + +use super::packet::NetPacket; + +pub struct Connection { + pub session: ClientSession, + send_packet_tx: OnceLock>, + net_variables: Arc, + io_cancellation: OnceLock, +} + +#[derive(Debug, thiserror::Error)] +enum RecvError { + #[error("{0}")] + Io(#[from] io::Error), + #[error("packet magic const mismatch, stream is corrupted")] + MagicMismatch, +} + +struct NetVariables { + pub addr: SocketAddr, + pub session_id: u64, + pub incremental_packet_id: AtomicU32, + pub initial_key: &'static [u8], + pub secret_key: OnceLock<[u8; 4096]>, + pub recv_loop_exited: OnceLock<()>, +} + +impl NetVariables { + pub fn key(&self) -> &[u8] { + self.secret_key.get().map_or(self.initial_key, |v| v) + } +} + +impl Connection { + pub fn new( + network_mgr: &'static ServerNetworkManager, + session_id: u64, + initial_key: &'static [u8], + addr: SocketAddr, + ) -> Self { + Self { + session: ClientSession::new(network_mgr, session_id), + send_packet_tx: OnceLock::new(), + io_cancellation: OnceLock::new(), + net_variables: Arc::new(NetVariables { + addr, + session_id, + initial_key, + secret_key: OnceLock::new(), + incremental_packet_id: AtomicU32::new(0), + recv_loop_exited: OnceLock::new(), + }), + } + } + + pub fn is_connected(&self) -> bool { + self.net_variables.recv_loop_exited.get().is_none() && self.session.is_alive() + } + + pub fn addr(&self) -> SocketAddr { + self.net_variables.addr + } + + pub fn start(&self, stream: TcpStream, message_handler: MessageHandler) { + let (r, w) = stream.into_split(); + let (tx, rx) = mpsc::channel(32); + + let _ = self.send_packet_tx.set(tx); + let io_cancellation = CancellationToken::new(); + + tokio::spawn(Self::send_loop(w, rx, io_cancellation.clone())); + tokio::spawn(Self::recv_loop( + r, + Arc::clone(&self.net_variables), + message_handler, + io_cancellation.clone(), + )); + + let _ = self.io_cancellation.set(io_cancellation); + } + + pub fn next_packet_id(&self) -> u32 { + self.net_variables + .incremental_packet_id + .fetch_add(1, SeqCst) + + 1 + } + + pub fn set_secret_key(&self, seed: u64) { + let _ = self + .net_variables + .secret_key + .set(trigger_cryptography::gen_xorpad(seed)); + } + + pub async fn send_pb(&self, head: PacketHead, mut message: impl NapMessage) { + use trigger_protobuf::ProtobufMessage; + + message.xor_fields(); + self.internal_send(NetPacket { + cmd_id: message.get_cmd_id(), + head: head.encode_to_vec(), + body: message.encode_to_vec(), + }) + .await; + } + + pub async fn send(&self, head: PacketHead, cmd_id: u16, body: Vec) { + use trigger_protobuf::ProtobufMessage; + + self.internal_send(NetPacket { + cmd_id, + head: head.encode_to_vec(), + body, + }) + .await; + } + + async fn internal_send(&self, mut packet: NetPacket) { + if packet.cmd_id == PlayerGetTokenScRsp::CMD_ID { + packet.xor(&self.net_variables.initial_key); + } else { + packet.xor(self.net_variables.key()); + } + + let _ = self.send_packet_tx.get().unwrap().send(packet).await; + } + + async fn send_loop( + mut w: OwnedWriteHalf, + mut rx: mpsc::Receiver, + io_cancellation: CancellationToken, + ) { + loop { + select! { + packet = rx.recv() => { + match packet { + Some(packet) => w.write_all(&Vec::from(packet)).await.unwrap(), + None => break, + } + }, + _ = io_cancellation.cancelled() => break, + } + } + } + + async fn recv_loop( + mut r: OwnedReadHalf, + variables: Arc, + message_handler: MessageHandler, + io_cancellation: CancellationToken, + ) { + while let Ok(mut packet) = Self::recv(&mut r).await { + packet.xor(variables.key()); + message_handler.enqueue(variables.session_id, packet); + } + + let _ = variables.recv_loop_exited.set(()); + io_cancellation.cancel(); + + debug!("client from {} disconnected", variables.addr); + } + + async fn recv(r: &mut R) -> Result { + let mut buf = [0u8; 12]; + r.read_exact(&mut buf).await?; + + (buf[0..4] == NetPacket::HEAD_MAGIC) + .then_some(()) + .ok_or(RecvError::MagicMismatch)?; + + let cmd_id = u16::from_be_bytes(buf[4..6].try_into().unwrap()); + let head_len = u16::from_be_bytes(buf[6..8].try_into().unwrap()) as usize; + let body_len = u32::from_be_bytes(buf[8..12].try_into().unwrap()) as usize; + + let mut payload = vec![0u8; head_len + body_len + 4]; + r.read_exact(&mut payload).await?; + + (payload[payload.len() - 4..payload.len()] == NetPacket::TAIL_MAGIC) + .then_some(()) + .ok_or(RecvError::MagicMismatch)?; + + Ok(NetPacket { + cmd_id, + head: payload[..head_len].to_vec(), + body: payload[head_len..head_len + body_len].to_vec(), + }) + } + + pub fn shutdown(&self) { + if let Some(io_cancellation) = self.io_cancellation.get() { + io_cancellation.cancel(); + } + } +} + +pub struct ConnectionManager { + connections: Arc>>, + counter: AtomicU32, + server_id: u32, +} + +impl ConnectionManager { + pub fn new(server_id: u32) -> Self { + let connections = Arc::new(DashMap::new()); + tokio::spawn(Self::alive_check_loop(Arc::clone(&connections))); + + Self { + connections, + counter: AtomicU32::default(), + server_id, + } + } + + pub fn create( + &self, + network_mgr: &'static ServerNetworkManager, + addr: SocketAddr, + initial_key: &'static [u8], + ) -> Arc { + let session_id = + ((self.server_id as u64) << 32) | ((self.counter.fetch_add(1, SeqCst) + 1) as u64); + + let connection = Arc::new(Connection::new(network_mgr, session_id, initial_key, addr)); + self.connections.insert(session_id, Arc::clone(&connection)); + + connection + } + + pub fn get(&self, session_id: u64) -> Option> { + self.connections + .get(&session_id) + .map(|kv| Arc::clone(&kv.value())) + } + + async fn alive_check_loop(connections: Arc>>) { + loop { + let to_remove = connections + .iter() + .filter(|pair| !pair.value().is_connected()) + .map(|pair| *pair.key()) + .collect::>(); + + for id in to_remove { + if let Some((_, connection)) = connections.remove(&id) { + connection.session.stop().await; + connection.shutdown(); + } + } + + tokio::time::sleep(Duration::from_secs(5)).await; + } + } +} diff --git a/crates/gate-server/src/net/mod.rs b/crates/gate-server/src/net/mod.rs new file mode 100644 index 0000000..08853c8 --- /dev/null +++ b/crates/gate-server/src/net/mod.rs @@ -0,0 +1,7 @@ +mod connection; +mod packet; +mod tcp_gateway; + +pub use connection::{Connection, ConnectionManager}; +pub use packet::NetPacket; +pub use tcp_gateway::serve; diff --git a/crates/gate-server/src/net/packet.rs b/crates/gate-server/src/net/packet.rs new file mode 100644 index 0000000..bd63a61 --- /dev/null +++ b/crates/gate-server/src/net/packet.rs @@ -0,0 +1,45 @@ +use std::io::{Cursor, Write}; + +use byteorder::{WriteBytesExt, BE}; +use trigger_protobuf::PacketHead; + +pub struct NetPacket { + pub cmd_id: u16, + pub head: Vec, + pub body: Vec, +} + +impl NetPacket { + pub const HEAD_MAGIC: [u8; 4] = 0x01234567_u32.to_be_bytes(); + pub const TAIL_MAGIC: [u8; 4] = 0x89ABCDEF_u32.to_be_bytes(); + + pub fn xor(&mut self, xorpad: &[u8]) { + self.body + .iter_mut() + .enumerate() + .for_each(|(i, b)| *b ^= xorpad[i % xorpad.len()]); + } + + pub fn decode_head(&self) -> PacketHead { + use ::trigger_protobuf::ProtobufMessage; + + PacketHead::decode(&*self.head).unwrap_or_default() + } +} + +impl From for Vec { + fn from(value: NetPacket) -> Self { + let mut buf = Vec::with_capacity(16 + value.head.len() + value.body.len()); + let mut w = Cursor::new(&mut buf); + + w.write_all(&NetPacket::HEAD_MAGIC).unwrap(); + w.write_u16::(value.cmd_id).unwrap(); + w.write_u16::(value.head.len() as u16).unwrap(); + w.write_u32::(value.body.len() as u32).unwrap(); + w.write_all(&value.head).unwrap(); + w.write_all(&value.body).unwrap(); + w.write_all(&NetPacket::TAIL_MAGIC).unwrap(); + + buf + } +} diff --git a/crates/gate-server/src/net/tcp_gateway.rs b/crates/gate-server/src/net/tcp_gateway.rs new file mode 100644 index 0000000..13a6562 --- /dev/null +++ b/crates/gate-server/src/net/tcp_gateway.rs @@ -0,0 +1,30 @@ +use std::{io, net::SocketAddr}; + +use tokio::net::TcpListener; +use tracing::info; + +use crate::{message_handler::MessageHandler, AppState}; + +pub async fn serve( + addr: SocketAddr, + state: &'static AppState, + message_handler: MessageHandler, +) -> io::Result<()> { + let listener = TcpListener::bind(addr).await?; + info!("listening at tcp://{addr}"); + + loop { + let Ok((stream, addr)) = listener.accept().await else { + continue; + }; + + let connection = state.connection_mgr.create( + &state.network_mgr, + addr, + &state.environment.security.static_key.xorpad, + ); + + connection.start(stream, message_handler.clone()); + info!("new connection from {addr}"); + } +} diff --git a/crates/gate-server/src/session/mod.rs b/crates/gate-server/src/session/mod.rs new file mode 100644 index 0000000..dfe9f88 --- /dev/null +++ b/crates/gate-server/src/session/mod.rs @@ -0,0 +1,120 @@ +use std::sync::{ + atomic::{AtomicI64, Ordering::SeqCst}, + OnceLock, +}; + +use atomic_enum::atomic_enum; +use trigger_protobuf::{PacketHead, PlayerLoginScRsp}; +use trigger_sv::{ + message::UnbindClientSessionMessage, + net::{ServerNetworkManager, ServerType}, + time_util, +}; + +use crate::net::Connection; + +#[atomic_enum] +#[derive(PartialEq, Eq)] +pub enum SessionState { + LoginFailed, + GetToken, + Login, + LoggedIn, +} + +pub struct ClientSession { + pub id: u64, + network_mgr: &'static ServerNetworkManager, + player_uid: OnceLock, + state: AtomicSessionState, + logged_in: OnceLock<()>, + last_keep_alive: AtomicI64, +} + +impl ClientSession { + const ALIVE_TIMEOUT_SECONDS: i64 = 30; + + pub fn new(network_mgr: &'static ServerNetworkManager, id: u64) -> Self { + Self { + id, + network_mgr, + player_uid: OnceLock::new(), + state: AtomicSessionState::new(SessionState::GetToken), + logged_in: OnceLock::new(), + last_keep_alive: AtomicI64::new(time_util::cur_timestamp_seconds()), + } + } + + pub fn refresh_keep_alive_time(&self) { + self.last_keep_alive + .store(time_util::cur_timestamp_seconds(), SeqCst); + } + + pub fn is_alive(&self) -> bool { + (time_util::cur_timestamp_seconds() - self.last_keep_alive.load(SeqCst)) + < Self::ALIVE_TIMEOUT_SECONDS + } + + pub fn state(&self) -> SessionState { + self.state.load(SeqCst) + } + + pub fn is_logged_in(&self) -> bool { + self.logged_in.get().is_some() + } + + pub fn player_uid(&self) -> u32 { + self.player_uid.get().copied().unwrap_or_default() + } + + pub fn set_login_failed(&self) { + self.state.store(SessionState::LoginFailed, SeqCst); + } + + pub fn on_player_get_token_ok(&self, player_uid: u32) { + let _ = self + .player_uid + .set(player_uid) + .inspect_err(|_| panic!("on_player_get_token_ok: player_uid already set!")); + + assert_eq!( + self.state.swap(SessionState::Login, SeqCst), + SessionState::GetToken + ); + + let _ = self.logged_in.set(()); + } + + pub async fn on_game_server_bound(&self, active_connection: &Connection) { + assert_eq!( + self.state.swap(SessionState::LoggedIn, SeqCst), + SessionState::Login + ); + + // Login finished, client will now start BasicDataSync procedure + active_connection + .send_pb( + PacketHead { + packet_id: active_connection.next_packet_id(), + request_id: 1, // always '1' for PlayerLoginCsReq/ScRsp request pair + ..Default::default() + }, + PlayerLoginScRsp::default(), + ) + .await; + } + + pub async fn stop(&self) { + if self.state() == SessionState::LoggedIn { + self.network_mgr + .send_to( + ServerType::GameServer, + 0, + UnbindClientSessionMessage { + session_id: self.id, + }, + ) + .await; + } + } +} diff --git a/crates/gate-server/src/util.rs b/crates/gate-server/src/util.rs new file mode 100644 index 0000000..625bbef --- /dev/null +++ b/crates/gate-server/src/util.rs @@ -0,0 +1,14 @@ +use base64::Engine; + +pub trait BinExt { + fn to_base64(&self) -> String; +} + +impl BinExt for T +where + T: AsRef<[u8]>, +{ + fn to_base64(&self) -> String { + base64::engine::general_purpose::STANDARD.encode(self) + } +} diff --git a/crates/hall-server/Cargo.toml b/crates/hall-server/Cargo.toml new file mode 100644 index 0000000..62e247f --- /dev/null +++ b/crates/hall-server/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "trigger-hall-server" +edition = "2024" +version.workspace = true + +[dependencies] +tokio.workspace = true + +bevy_app.workspace = true +bevy_ecs.workspace = true +bevy_derive.workspace = true + +paste.workspace = true +serde.workspace = true +serde_json.workspace = true +dashmap.workspace = true +tracing.workspace = true + +trigger-sv.workspace = true +trigger-logic.workspace = true + +trigger-encoding.workspace = true +trigger-protocol.workspace = true +trigger-fileconfig.workspace = true diff --git a/crates/hall-server/hallserver.default.toml b/crates/hall-server/hallserver.default.toml new file mode 100644 index 0000000..a534e14 --- /dev/null +++ b/crates/hall-server/hallserver.default.toml @@ -0,0 +1,3 @@ +[node] +server_id = 0 + diff --git a/crates/hall-server/src/config.rs b/crates/hall-server/src/config.rs new file mode 100644 index 0000000..0b07765 --- /dev/null +++ b/crates/hall-server/src/config.rs @@ -0,0 +1,11 @@ +use serde::Deserialize; +use trigger_sv::config::{ServerNodeConfiguration, TomlConfig}; + +#[derive(Deserialize)] +pub struct HallServerConfig { + pub node: ServerNodeConfiguration, +} + +impl TomlConfig for HallServerConfig { + const DEFAULT_TOML: &str = include_str!("../hallserver.default.toml"); +} diff --git a/crates/hall-server/src/logic/ecs/event_graph.rs b/crates/hall-server/src/logic/ecs/event_graph.rs new file mode 100644 index 0000000..691d917 --- /dev/null +++ b/crates/hall-server/src/logic/ecs/event_graph.rs @@ -0,0 +1,112 @@ +use bevy_derive::Deref; +use bevy_ecs::prelude::*; +use tracing::debug; +use trigger_fileconfig::main_city_script::*; + +define_actions! { + ActionCreateNpcCfg, + ActionChangeInteractCfg, + ActionSetMainCityObjectState, + ActionOpenUI, + ActionSwitchSection +} + +#[derive(Component)] +pub struct EventGraph { + pub interaction: String, // ENPCInteraction + pub actions: Vec, +} + +pub fn sync_event_info( + interacting_units: Query<(&SceneUnitTag, &InteractContainer, &EventGraph), Changed>, + mut listener: ResMut, +) { + for (unit_tag, interact_container, event_graph) in interacting_units.iter() { + listener.add(SyncEventInfoScNotify { + owner_id: interact_container.cur_interaction() as u32, + tag: **unit_tag as u32, + owner_type: EEventGraphOwnerType::SceneUnit.into(), + event_graph_uid: interact_container.cur_interaction() as u32, + npc_interaction: event_graph.interaction.clone(), + action_list: event_graph.actions.clone(), + }); + } +} + +pub fn advance_through_event_graph( + mut commands: Commands, + mut run_events: EventReader, + mut listener: ResMut, + mut interacting_units: Query<(Entity, &mut InteractContainer, &EventGraph)>, +) { + for event in run_events.read() { + debug!("{event:?}"); + + if let Some((entity_id, mut interact_container, event_graph)) = interacting_units + .iter_mut() + .find(|(_, interact_container, _)| { + interact_container.cur_interaction() == event.event_graph_uid as i32 + }) + { + listener.add(UpdateEventGraphScNotify { + tag: event.tag, + event_graph_owner_uid: event.owner_id, + owner_type: event.owner_type, + npc_interaction: event_graph.interaction.clone(), + is_event_success: true, + }); + + interact_container.finish_interaction(); + commands.entity(entity_id).remove::(); + + listener.emit_callback(GameStateCallback::ClientCmdProcessed { + ack_request_id: event.request_id, + response: Some(RunEventGraphScRsp { retcode: 0 }.into()), + }); + } + } +} + +macro_rules! define_actions { + ($($name:ident),*) => { + paste::paste!($( + #[derive(Event, Deref)] + pub struct [<$name Event>](&'static $name); + )*); + + #[derive(Event, Deref)] + pub struct GraphEvent(pub &'static ConfigEvent); + + pub struct MainCityScriptPlugin; + + impl bevy_app::Plugin for MainCityScriptPlugin { + fn build(&self, app: &mut bevy_app::App) { + $(paste::paste!(app.add_event::<[<$name Event>]>());)* + app.add_event::(); + app.add_systems(bevy_app::PreUpdate, tick_emit_event_actions); + } + } + + paste::paste! { + pub fn tick_emit_event_actions(mut events: EventReader, $(mut [<$name:snake>]: EventWriter<[<$name Event>]>),*) { + for event in events.read() { + for action in event.actions.iter() { + match action { + $(ConfigEventAction::$name(data) => { [<$name:snake>].send([<$name Event>](data)); })* + } + } + } + }} + }; +} + +use define_actions; +use trigger_logic::scene::EEventGraphOwnerType; +use trigger_protocol::{ + ActionInfo, RunEventGraphScRsp, SyncEventInfoScNotify, UpdateEventGraphScNotify, +}; +use trigger_sv::message::GameStateCallback; + +use crate::logic::{message::RunEventGraphEvent, GameStateListener}; + +use super::scene_unit::{InteractContainer, SceneUnitTag}; diff --git a/crates/hall-server/src/logic/ecs/hall.rs b/crates/hall-server/src/logic/ecs/hall.rs new file mode 100644 index 0000000..1ef7052 --- /dev/null +++ b/crates/hall-server/src/logic/ecs/hall.rs @@ -0,0 +1,98 @@ +use bevy_ecs::{prelude::*, query::QueryData}; +use tracing::warn; +use trigger_fileconfig::{main_city_script::MainCityConfig, NapFileCfg}; + +use crate::logic::save::HallSceneSaveData; + +use super::player::MainCityPosition; + +#[derive(Component)] +pub struct MainCitySection(pub u32); + +#[derive(Component)] +pub struct Clock { + pub time_of_day: u16, + pub day_of_week: u8, +} + +#[derive(Component)] +pub struct BGMusic(pub u32); + +#[derive(Bundle)] +pub struct HallBundle { + pub section: MainCitySection, + pub clock: Clock, + pub bgm: BGMusic, +} + +#[derive(QueryData)] +pub struct HallQuery { + pub section: &'static MainCitySection, + pub clock: &'static Clock, + pub bgm: &'static BGMusic, +} + +#[derive(Resource)] +pub struct HallInitData { + pub section_id: u32, + pub player_avatar_id: u32, + pub control_avatar_id: u32, + pub initial_position: MainCityPosition, + pub day_of_week: u32, + pub time_of_day: u32, + pub bgm_id: u32, +} + +impl HallInitData { + pub fn load_from_save( + player_avatar_id: u32, + control_avatar_id: u32, + ext: Option, + ) -> Option { + ext.map(|data| { + serde_json::from_str::(&data) + .inspect_err(|err| { + warn!("failed to deserialize HallSceneSaveData: {err}, data: {data}") + }) + .ok() + }) + .flatten() + .map(|data| HallInitData { + section_id: data.section_id, + player_avatar_id, + control_avatar_id, + initial_position: data.player_position.into(), + day_of_week: data.day_of_week, + time_of_day: data.time_of_day, + bgm_id: data.bgm_id, + }) + } + + pub fn create_default_init_data( + filecfg: &NapFileCfg<'static>, + main_city_config: &MainCityConfig, + player_avatar_id: u32, + control_avatar_id: u32, + ) -> Self { + let section_id = main_city_config.default_section_id; + let section_config = filecfg + .section_config_template_tb + .data() + .unwrap() + .iter() + .find(|cfg| cfg.section_id() == section_id as i32) + .unwrap(); + + HallInitData { + section_id, + player_avatar_id, + control_avatar_id, + bgm_id: 1005, + day_of_week: 5, + time_of_day: 360, + initial_position: MainCityPosition::Predefined( + section_config.born_transform().unwrap().to_string(), + ), + } + } +} diff --git a/crates/hall-server/src/logic/ecs/interaction.rs b/crates/hall-server/src/logic/ecs/interaction.rs new file mode 100644 index 0000000..ce06f58 --- /dev/null +++ b/crates/hall-server/src/logic/ecs/interaction.rs @@ -0,0 +1,99 @@ +use bevy_ecs::prelude::*; +use tracing::{debug, warn}; +use trigger_protocol::InteractWithUnitScRsp; +use trigger_sv::message::GameStateCallback; + +use crate::logic::{message::InteractWithUnitEvent, GameStateListener}; + +use super::{ + event_graph::{ActionChangeInteractCfgEvent, EventGraph, GraphEvent}, + hall::MainCitySection, + scene_unit::{InteractContainer, SceneUnitTag}, + NapResources, +}; + +pub fn tick_change_interact( + mut events: EventReader, + mut npcs: Query<(&SceneUnitTag, &mut InteractContainer)>, +) { + for event in events.read() { + npcs.iter_mut() + .filter(|(tag, _)| event.tag_ids.contains(&*tag)) + .for_each(|(_, mut container)| container.attach_by_action(&event)) + } +} + +#[derive(Event)] +pub struct UpdateInteractionStatusEvent { + pub request_id: u32, + pub retcode: i32, +} + +pub fn process_interact_requests( + mut commands: Commands, + mut req_events: EventReader, + mut status_update_events: EventWriter, + mut graph_events: EventWriter, + resources: Res, + section: Query<&MainCitySection>, + mut interactables: Query<(Entity, &SceneUnitTag, &mut InteractContainer)>, +) { + let section_id = section.single().0 as i32; + + for event in req_events.read() { + debug!("{event:?}"); + + if let Some((entity_id, _, mut interact_container)) = interactables + .iter_mut() + .find(|(_, tag, _)| ***tag == event.npc_tag_id) + { + if interact_container.is_interaction_allowed_in_current_state(event.interact_id) { + if let Some(execute_event) = interact_container.try_interact(event.interact_id) { + if let Some(section_cfg) = resources.main_city_config.sections.get(§ion_id) + { + if let Some(event) = section_cfg.section_progress.events.get(execute_event) + { + commands.entity(entity_id).insert(EventGraph { + interaction: String::from("OnInteract"), + actions: Vec::new(), + }); + + graph_events.send(GraphEvent(event)); + } + } + } + + status_update_events.send(UpdateInteractionStatusEvent { + request_id: event.request_id, + retcode: 0, + }); + } else { + warn!( + "interaction is not allowed: {}::{} (type: {})", + event.npc_tag_id, event.interact_id, event.trigger_type + ); + status_update_events.send(UpdateInteractionStatusEvent { + request_id: event.request_id, + retcode: 1, + }); + } + } + } +} + +pub fn announce_finished_interactions( + mut status_update_events: EventReader, + mut listener: ResMut, +) { + for event in status_update_events.read() { + listener.emit_callback(GameStateCallback::ClientCmdProcessed { + ack_request_id: event.request_id, + response: Some( + InteractWithUnitScRsp { + retcode: event.retcode, + } + .into(), + ), + }); + } +} diff --git a/crates/hall-server/src/logic/ecs/mod.rs b/crates/hall-server/src/logic/ecs/mod.rs new file mode 100644 index 0000000..5489963 --- /dev/null +++ b/crates/hall-server/src/logic/ecs/mod.rs @@ -0,0 +1,100 @@ +use bevy_app::prelude::*; +use bevy_ecs::prelude::*; + +use event_graph::MainCityScriptPlugin; +use hall::HallInitData; +use interaction::UpdateInteractionStatusEvent; +use scene::PlayerEnterScene; +use trigger_fileconfig::main_city_script::MainCityConfig; + +use super::{ + message::{ + EnterSectionEvent, InteractWithUnitEvent, PlayerMoveEvent, RunEventGraphEvent, + SwitchRoleEvent, + }, + GameStateListener, +}; + +pub mod event_graph; +pub mod hall; +pub mod interaction; +pub mod npc_management; +pub mod player; +pub mod scene; +pub mod scene_save; +pub mod scene_unit; + +#[derive(Resource, Clone)] +pub struct NapResources { + pub main_city_config: &'static MainCityConfig, +} + +pub struct NapEcs(pub App); + +impl NapEcs { + pub fn new(app: App) -> Self { + Self(app) + } + + pub fn listener(&mut self) -> Mut { + self.0.world_mut().get_resource_mut().unwrap() + } +} + +pub fn create_hall_ecs( + resources: NapResources, + data: HallInitData, + listener: GameStateListener, +) -> NapEcs { + let mut app = App::new(); + app.insert_resource(data) + .insert_resource(listener) + .insert_resource(resources) + .add_plugins(MainCityScriptPlugin) + .add_event::() + .add_event::() + .add_event::() + .add_event::() + .add_event::() + .add_event::() + .add_event::() + .add_systems(Startup, scene::hall_init) + .add_systems(First, scene::process_enter_section) + .add_systems(PreUpdate, player::process_switch_role) + .add_systems( + PreUpdate, + ( + scene::fire_events_on_section_switch, + interaction::process_interact_requests, + event_graph::advance_through_event_graph, + ) + .chain() + .before(event_graph::tick_emit_event_actions), + ) + .add_systems( + Update, + ( + npc_management::tick_create_npc, + interaction::tick_change_interact, + npc_management::tick_open_ui, + scene::tick_switch_section, + ) + .chain(), + ) + .add_systems(Update, scene::tick_player_movement) + .add_systems( + PostUpdate, + (scene::notify_enter_scene, scene::finish_enter_section).chain(), + ) + .add_systems(PostUpdate, event_graph::sync_event_info) + .add_systems(Last, interaction::announce_finished_interactions) + .add_systems( + Last, + scene_save::refresh_save_data.run_if(scene_save::should_save_data), + ); + + app.finish(); + app.cleanup(); + + NapEcs::new(app) +} diff --git a/crates/hall-server/src/logic/ecs/npc_management.rs b/crates/hall-server/src/logic/ecs/npc_management.rs new file mode 100644 index 0000000..dea28b8 --- /dev/null +++ b/crates/hall-server/src/logic/ecs/npc_management.rs @@ -0,0 +1,32 @@ +use bevy_ecs::prelude::*; +use trigger_logic::action_pb; +use trigger_protocol::ActionInfo; + +use super::{ + event_graph::{ActionCreateNpcCfgEvent, ActionOpenUIEvent, EventGraph}, + scene_unit::SceneUnitBundle, +}; + +pub fn tick_create_npc(mut events: EventReader, mut commands: Commands) { + for event in events.read() { + commands.spawn(SceneUnitBundle::build_by_action(&event)); + } +} + +pub fn tick_open_ui(mut events: EventReader, mut graph: Query<&mut EventGraph>) { + use action_pb::PbMessage; + + for event in events.read() { + let mut graph = graph.single_mut(); + graph.actions.push(ActionInfo { + action_type: 5, + body: action_pb::ActionOpenUI { + npc_id: 0, + ui: event.ui.clone(), + args: event.args, + store_template_id: event.store_template_id, + } + .encode_to_vec(), + }); + } +} diff --git a/crates/hall-server/src/logic/ecs/player.rs b/crates/hall-server/src/logic/ecs/player.rs new file mode 100644 index 0000000..5642a05 --- /dev/null +++ b/crates/hall-server/src/logic/ecs/player.rs @@ -0,0 +1,68 @@ +use bevy_ecs::{prelude::*, query::QueryData}; +use tracing::debug; +use trigger_logic::scene::{Transform, Vector3f}; + +use crate::logic::{message::SwitchRoleEvent, save::MainCityPositionSave}; + +#[derive(Component, Clone)] +pub enum MainCityPosition { + Predefined(String), + Transform(Transform), +} + +#[derive(Component)] +pub struct ControlledAvatar { + pub player_avatar_id: u32, + pub control_avatar_id: u32, +} + +#[derive(Bundle)] +pub struct PlayerBundle { + pub position: MainCityPosition, + pub avatar: ControlledAvatar, +} + +#[derive(QueryData)] +pub struct PlayerQuery { + pub position: &'static MainCityPosition, + pub avatar: &'static ControlledAvatar, +} + +pub fn process_switch_role( + mut events: EventReader, + mut avatar: Query<&mut ControlledAvatar>, +) { + for event in events.read() { + debug!("{event:?}"); + let mut avatar = avatar.single_mut(); + + avatar.player_avatar_id = event.player_avatar_id; + avatar.control_avatar_id = event.control_avatar_id; + } +} + +impl From for MainCityPosition { + fn from(value: MainCityPositionSave) -> Self { + match value { + MainCityPositionSave::Predefined { transform_id } => { + MainCityPosition::Predefined(transform_id) + } + MainCityPositionSave::Transform { + pos_x, + pos_y, + pos_z, + rot_y, + } => MainCityPosition::Transform(Transform { + position: Vector3f { + x: pos_x, + y: pos_y, + z: pos_z, + }, + rotation: Vector3f { + y: rot_y, + ..Default::default() + }, + }), + } + } +} diff --git a/crates/hall-server/src/logic/ecs/scene.rs b/crates/hall-server/src/logic/ecs/scene.rs new file mode 100644 index 0000000..bee47a7 --- /dev/null +++ b/crates/hall-server/src/logic/ecs/scene.rs @@ -0,0 +1,192 @@ +use bevy_ecs::prelude::*; +use tracing::debug; +use trigger_logic::{action_pb, scene::ESceneType}; +use trigger_protocol::{ActionInfo, EnterSectionScRsp, SavePosInMainCityScRsp}; +use trigger_sv::message::GameStateCallback; + +use crate::logic::message::{EnterSectionEvent, PlayerMoveEvent}; + +use super::event_graph::*; +use super::hall::*; +use super::player::*; +use super::scene_unit::*; + +use super::{GameStateListener, HallInitData, NapResources}; + +#[derive(Event)] +pub struct PlayerEnterScene; + +pub fn hall_init(mut commands: Commands, init_data: Res) { + commands.spawn(HallBundle { + section: MainCitySection(init_data.section_id), + bgm: BGMusic(init_data.bgm_id), + clock: Clock { + time_of_day: init_data.time_of_day as u16, + day_of_week: init_data.day_of_week as u8, + }, + }); + + commands.spawn(PlayerBundle { + avatar: ControlledAvatar { + player_avatar_id: init_data.player_avatar_id, + control_avatar_id: init_data.control_avatar_id, + }, + position: init_data.initial_position.clone(), + }); +} + +pub fn process_enter_section( + mut enter_section_events: EventReader, + mut player_enter_events: EventWriter, + mut section: Query<&mut MainCitySection>, + mut position: Query<&mut MainCityPosition>, +) { + for event in enter_section_events.read() { + debug!("{event:?}"); + + section.single_mut().0 = event.section_id; + *position.single_mut() = MainCityPosition::Predefined(event.transform_id.clone()); + + player_enter_events.send(PlayerEnterScene); + } +} + +pub fn finish_enter_section( + mut enter_section_events: EventReader, + mut listener: ResMut, +) { + for event in enter_section_events.read() { + listener.emit_callback(GameStateCallback::ClientCmdProcessed { + ack_request_id: event.request_id, + response: Some(EnterSectionScRsp { retcode: 0 }.into()), + }); + } +} + +pub fn fire_events_on_section_switch( + mut commands: Commands, + mut events: EventWriter, + resources: Res, + changed_section: Query<&MainCitySection, Changed>, + scene_units: Query>, +) { + if let Some(section) = changed_section.iter().take(1).next() { + // Remove all scene units that belong to previous section + scene_units + .iter() + .for_each(|entity_id| commands.entity(entity_id).despawn()); + + // Emit on_create and on_enter for new section + if let Some(section_cfg) = resources.main_city_config.sections.get(&(section.0 as i32)) { + section_cfg + .section_progress + .on_add + .iter() + .chain(section_cfg.section_progress.on_enter.iter()) + .map(|name| section_cfg.section_progress.events.get(name)) + .flatten() + .for_each(|event| { + events.send(GraphEvent(event)); + }); + } + } +} + +pub fn notify_enter_scene( + mut events: EventReader, + mut listener: ResMut, + hall: Query, + player: Query, + scene_units: Query, +) { + use trigger_protocol::*; + + for _ in events.read() { + let hall = hall.single(); + let player = player.single(); + + let mut hall_scene_info = HallSceneInfo { + section_id: hall.section.0, + bgm_id: hall.bgm.0, + day_of_week: hall.clock.day_of_week as u32, + time_of_day: hall.clock.time_of_day as u32, + player_avatar_id: player.avatar.player_avatar_id, + control_avatar_id: player.avatar.control_avatar_id, + scene_unit_list: scene_units.iter().map(|unit| unit.to_protocol()).collect(), + ..Default::default() + }; + + match player.position { + MainCityPosition::Predefined(id) => { + hall_scene_info.transform_id = id.clone(); + } + MainCityPosition::Transform(transform) => { + hall_scene_info.position = Some(trigger_protocol::Transform { + position: vec![ + transform.position.x, + transform.position.y, + transform.position.z, + ], + rotation: vec![ + transform.rotation.x, + transform.rotation.y, + transform.rotation.z, + ], + }); + } + } + + listener.add(EnterSceneScNotify { + scene_info: Some(SceneInfo { + scene_type: ESceneType::Hall as u32, + hall_scene_info: Some(hall_scene_info), + ..Default::default() + }), + dungeon_info: None, + }); + } +} + +pub fn tick_player_movement( + mut events: EventReader, + mut position: Query<&mut MainCityPosition>, + mut listener: ResMut, + section: Query<&MainCitySection>, +) { + for event in events.read() { + debug!("{event:?}"); + + if event.section_id == section.single().0 { + *position.single_mut() = MainCityPosition::Transform(event.position.clone()); + } + + listener.emit_callback(trigger_sv::message::GameStateCallback::ClientCmdProcessed { + ack_request_id: event.request_id, + response: Some(SavePosInMainCityScRsp { retcode: 0 }.into()), + }); + } +} + +pub fn tick_switch_section( + mut events: EventReader, + mut graph: Query<&mut EventGraph>, +) { + use action_pb::PbMessage; + + for event in events.read() { + let mut graph = graph.single_mut(); + + // Only add action to the graph + // We will do actual section switch on EnterSectionEvent + graph.actions.push(ActionInfo { + action_type: 6, + body: action_pb::ActionSwitchSection { + section: event.section_id, + transform_id: event.transform.clone(), + camera_x: event.camera_x, + camera_y: event.camera_y, + } + .encode_to_vec(), + }); + } +} diff --git a/crates/hall-server/src/logic/ecs/scene_save.rs b/crates/hall-server/src/logic/ecs/scene_save.rs new file mode 100644 index 0000000..0472316 --- /dev/null +++ b/crates/hall-server/src/logic/ecs/scene_save.rs @@ -0,0 +1,58 @@ +use bevy_ecs::prelude::*; + +use crate::logic::{ + save::{HallSceneSaveData, MainCityPositionSave}, + GameStateListener, +}; + +use super::{ + hall::{BGMusic, Clock, HallQuery, MainCitySection}, + player::{MainCityPosition, PlayerQuery}, +}; + +pub fn should_save_data( + detected_changes: Query< + Entity, + ( + Or<( + Changed, + Changed, + Changed, + Changed, + )>, + ), + >, +) -> bool { + !detected_changes.is_empty() +} + +pub fn refresh_save_data( + mut listener: ResMut, + hall: Query, + player: Query, +) { + // TODO: at some point, we'll have to save SceneUnits for each section + // For example when actual NPC interaction/quests will be implemented + // and units will be spawned dynamically + + let hall = hall.single(); + let player = player.single(); + + listener.set_save_data(HallSceneSaveData { + section_id: hall.section.0, + bgm_id: hall.bgm.0, + day_of_week: hall.clock.day_of_week as u32, + time_of_day: hall.clock.time_of_day as u32, + player_position: match &*player.position { + MainCityPosition::Transform(t) => MainCityPositionSave::Transform { + pos_x: t.position.x, + pos_y: t.position.y, + pos_z: t.position.z, + rot_y: t.rotation.y, + }, + MainCityPosition::Predefined(id) => MainCityPositionSave::Predefined { + transform_id: id.clone(), + }, + }, + }); +} diff --git a/crates/hall-server/src/logic/ecs/scene_unit.rs b/crates/hall-server/src/logic/ecs/scene_unit.rs new file mode 100644 index 0000000..26e6736 --- /dev/null +++ b/crates/hall-server/src/logic/ecs/scene_unit.rs @@ -0,0 +1,133 @@ +use std::collections::HashMap; + +use bevy_derive::{Deref, DerefMut}; +use bevy_ecs::{prelude::*, query::QueryData}; +use trigger_fileconfig::main_city_script::{ + ActionChangeInteractCfg, ActionCreateNpcCfg, ConfigInteractScale, +}; +use trigger_logic::scene::EInteractTarget; +use trigger_protocol::{InteractInfo, SceneUnitProtocolInfo}; + +#[derive(Bundle)] +pub struct SceneUnitBundle { + pub npc_id: NpcConfigId, + pub tag_id: SceneUnitTag, + pub interact_container: InteractContainer, +} + +#[derive(QueryData)] +pub struct SceneUnitQuery { + pub npc_id: &'static NpcConfigId, + pub tag_id: &'static SceneUnitTag, + pub interact_container: &'static InteractContainer, +} + +#[derive(Component, Deref)] +pub struct NpcConfigId(u32); + +#[derive(Component, Deref, DerefMut)] +pub struct SceneUnitTag(i32); + +pub struct InteractScale(f64, f64, f64, f64, f64); + +pub struct AttachedInteract { + pub name: String, + pub participators: HashMap, + pub scale: InteractScale, + pub target_list: Vec, + pub listen_events: &'static HashMap, +} + +#[derive(Component, Default)] +pub struct InteractContainer { + interacts: HashMap, + ongoing_interaction_id: i32, +} + +impl SceneUnitBundle { + pub fn build_by_action(action: &ActionCreateNpcCfg) -> Self { + Self { + npc_id: NpcConfigId(action.tag_id as u32), + tag_id: SceneUnitTag(action.tag_id), + interact_container: InteractContainer::default(), + } + } +} + +impl InteractContainer { + pub fn attach_by_action(&mut self, action: &'static ActionChangeInteractCfg) { + self.interacts.insert( + action.interact_id as u32, + AttachedInteract { + name: String::from("A"), // TODO + scale: InteractScale::from_config(&action.interact_scale), + participators: action.participators.clone(), + target_list: vec![EInteractTarget::TriggerBox], + listen_events: &action.section_listen_events, + }, + ); + } + + pub fn try_interact(&mut self, interact_id: i32) -> Option<&'static str> { + if let Some(interact) = self.interacts.get(&(interact_id as u32)) { + self.ongoing_interaction_id = interact_id; + return interact.listen_events.get("OnInteract").map(|s| s.as_str()); + } + + None + } + + pub fn is_interaction_allowed_in_current_state(&self, interact_id: i32) -> bool { + // TODO: check if interaction is already in progress + self.interacts.contains_key(&(interact_id as u32)) + } + + pub fn cur_interaction(&self) -> i32 { + self.ongoing_interaction_id + } + + pub fn finish_interaction(&mut self) { + self.ongoing_interaction_id = 0; + } +} + +impl InteractScale { + pub fn from_config(config: &ConfigInteractScale) -> Self { + Self(config.x, config.y, config.z, 0.0, 0.0) + } +} + +impl<'lt> SceneUnitQueryItem<'lt> { + pub fn to_protocol(&self) -> SceneUnitProtocolInfo { + SceneUnitProtocolInfo { + npc_id: self.npc_id.0, + is_interactable: true, + interacts_info: self + .interact_container + .interacts + .iter() + .map(|(k, v)| { + ( + *k, + InteractInfo { + name: v.name.clone(), + tag_id: *k as i32, + scale_x: v.scale.0, + scale_y: v.scale.1, + scale_z: v.scale.2, + scale_w: v.scale.3, + scale_r: v.scale.4, + participators: v.participators.clone(), + interact_target_list: v + .target_list + .iter() + .copied() + .map(i32::from) + .collect(), + }, + ) + }) + .collect(), + } + } +} diff --git a/crates/hall-server/src/logic/listener.rs b/crates/hall-server/src/logic/listener.rs new file mode 100644 index 0000000..e9bc224 --- /dev/null +++ b/crates/hall-server/src/logic/listener.rs @@ -0,0 +1,56 @@ +use bevy_ecs::system::Resource; +use trigger_encoding::Encodeable; +use trigger_protocol::{util::ProtocolUnit, ClientCmdID}; +use trigger_sv::{ + message::{GameStateCallback, GameStateCallbackMessage}, + net::{ServerNetworkManager, ServerType}, +}; + +use super::save::HallSceneSaveData; + +// *listens* for events (such as notifies and callbacks) emitted by ECS. +#[derive(Resource)] +pub struct GameStateListener { + session_id: u64, + game_server_id: u32, + network_mgr: &'static ServerNetworkManager, + scene_save_data: Option, + units: Vec, +} + +impl GameStateListener { + pub fn new( + session_id: u64, + game_server_id: u32, + network_mgr: &'static ServerNetworkManager, + ) -> Self { + Self { + session_id, + game_server_id, + network_mgr, + scene_save_data: None, + units: Vec::new(), + } + } + + pub fn add(&mut self, message: Message) { + self.units.push(message.into()); + } + + pub fn set_save_data(&mut self, hall_save_data: HallSceneSaveData) { + self.scene_save_data = Some(serde_json::to_string(&hall_save_data).unwrap()); + } + + pub fn emit_callback(&mut self, callback: GameStateCallback) { + self.network_mgr.blocking_send_to( + ServerType::GameServer, + self.game_server_id, + GameStateCallbackMessage { + session_id: self.session_id, + protocol_units: std::mem::take(&mut self.units), + scene_save_data: self.scene_save_data.take(), + callback, + }, + ); + } +} diff --git a/crates/hall-server/src/logic/message.rs b/crates/hall-server/src/logic/message.rs new file mode 100644 index 0000000..8efdb13 --- /dev/null +++ b/crates/hall-server/src/logic/message.rs @@ -0,0 +1,124 @@ +use bevy_ecs::event::Event; +use trigger_encoding::Decodeable; +use trigger_logic::scene::Transform; +use trigger_protocol::{ + util::ProtocolUnit, ClientCmdID, EnterSectionCsReq, InteractWithUnitCsReq, RunEventGraphCsReq, + SavePosInMainCityCsReq, SwitchRoleCsReq, +}; + +use super::ecs::NapEcs; + +pub trait ProtocolEventHandler { + fn push_protocol_event(&mut self, request_id: u32, protocol_unit: ProtocolUnit); +} + +#[derive(Event, Debug)] +pub struct PlayerMoveEvent { + pub request_id: u32, + pub position: Transform, + pub section_id: u32, +} + +#[derive(Event, Debug)] +pub struct InteractWithUnitEvent { + pub request_id: u32, + pub interact_id: i32, + pub trigger_type: i32, + pub npc_tag_id: i32, +} + +#[derive(Event, Debug)] +pub struct RunEventGraphEvent { + pub request_id: u32, + pub event_graph_uid: u32, + #[expect(dead_code)] + pub section_id: u32, + pub owner_id: u32, + pub owner_type: i32, + pub tag: u32, +} + +#[derive(Event, Debug)] +pub struct EnterSectionEvent { + pub request_id: u32, + pub section_id: u32, + pub transform_id: String, +} + +#[derive(Event, Debug)] +pub struct SwitchRoleEvent { + pub player_avatar_id: u32, + pub control_avatar_id: u32, +} + +impl ProtocolEventHandler for NapEcs { + fn push_protocol_event(&mut self, request_id: u32, protocol_unit: ProtocolUnit) { + match protocol_unit.cmd_id { + SavePosInMainCityCsReq::CMD_ID => { + if let Ok(cmd) = + SavePosInMainCityCsReq::decode(&mut ::std::io::Cursor::new(&protocol_unit.blob)) + { + self.0.world_mut().send_event(PlayerMoveEvent { + request_id, + section_id: cmd.section_id, + position: cmd + .position + .map(|t| Transform { + position: t.position.into(), + rotation: t.rotation.into(), + }) + .unwrap_or_default(), + }); + } + } + InteractWithUnitCsReq::CMD_ID => { + if let Ok(cmd) = + InteractWithUnitCsReq::decode(&mut ::std::io::Cursor::new(&protocol_unit.blob)) + { + self.0.world_mut().send_event(InteractWithUnitEvent { + request_id, + interact_id: cmd.interact_id, + npc_tag_id: cmd.npc_tag_id, + trigger_type: cmd.r#type, + }); + } + } + RunEventGraphCsReq::CMD_ID => { + if let Ok(cmd) = + RunEventGraphCsReq::decode(&mut ::std::io::Cursor::new(&protocol_unit.blob)) + { + self.0.world_mut().send_event(RunEventGraphEvent { + request_id, + event_graph_uid: cmd.event_graph_uid, + owner_type: cmd.owner_type, + owner_id: cmd.owner_id, + section_id: cmd.section_id, + tag: cmd.tag, + }); + } + } + EnterSectionCsReq::CMD_ID => { + if let Ok(cmd) = + EnterSectionCsReq::decode(&mut ::std::io::Cursor::new(&protocol_unit.blob)) + { + self.0.world_mut().send_event(EnterSectionEvent { + request_id, + section_id: cmd.section_id, + transform_id: cmd.transform_id, + }); + } + } + SwitchRoleCsReq::CMD_ID => { + if let Ok(cmd) = + SwitchRoleCsReq::decode(&mut ::std::io::Cursor::new(&protocol_unit.blob)) + { + self.0.world_mut().send_event(SwitchRoleEvent { + player_avatar_id: cmd.player_avatar_id, + control_avatar_id: cmd.control_avatar_id, + }); + } + } + _ => (), + } + } +} diff --git a/crates/hall-server/src/logic/mod.rs b/crates/hall-server/src/logic/mod.rs new file mode 100644 index 0000000..546121c --- /dev/null +++ b/crates/hall-server/src/logic/mod.rs @@ -0,0 +1,119 @@ +use std::{collections::HashMap, sync::mpsc, thread}; + +use ecs::{scene::PlayerEnterScene, NapEcs}; +use message::ProtocolEventHandler; +use tracing::debug; +use trigger_protocol::util::ProtocolUnit; +use trigger_sv::message::GameStateCallback; + +mod ecs; +mod listener; +mod message; + +pub mod save; +pub use ecs::hall::HallInitData; +pub use ecs::NapResources; +pub use listener::GameStateListener; + +#[derive(Clone)] +pub struct GameRunner(mpsc::Sender); + +enum RunnerCommand { + CreateScene { + player_uid: u32, + init_data: HallInitData, + listener: GameStateListener, + }, + DestroyScene { + player_uid: u32, + }, + ClientInput { + player_uid: u32, + request_id: u32, + protocol_unit: ProtocolUnit, + }, +} + +#[derive(Default)] +struct GameRunnerLocalState { + ecs_map: HashMap, +} + +impl GameRunner { + pub fn spawn(resources: NapResources) -> Self { + let (tx, rx) = mpsc::channel(); + + thread::spawn(|| Self::runner_loop(rx, resources)); + Self(tx) + } + + pub fn create_scene( + &self, + player_uid: u32, + init_data: HallInitData, + listener: GameStateListener, + ) { + self.0 + .send(RunnerCommand::CreateScene { + player_uid, + init_data, + listener, + }) + .unwrap(); + } + + pub fn destroy_scene(&self, player_uid: u32) { + self.0 + .send(RunnerCommand::DestroyScene { player_uid }) + .unwrap(); + } + + pub fn client_input(&self, player_uid: u32, request_id: u32, protocol_unit: ProtocolUnit) { + self.0 + .send(RunnerCommand::ClientInput { + player_uid, + request_id, + protocol_unit, + }) + .unwrap(); + } + + fn runner_loop(rx: mpsc::Receiver, resources: NapResources) { + use RunnerCommand::*; + + let mut state = GameRunnerLocalState::default(); + + while let Ok(cmd) = rx.recv() { + match cmd { + CreateScene { + player_uid, + init_data, + listener, + } => { + let mut ecs = ecs::create_hall_ecs(resources.clone(), init_data, listener); + ecs.0.world_mut().send_event(PlayerEnterScene).unwrap(); + ecs.0.update(); + + ecs.listener().emit_callback(GameStateCallback::Loaded); + state.ecs_map.insert(player_uid, ecs); + + debug!("created scene for player with uid {player_uid}"); + } + DestroyScene { player_uid } => { + state.ecs_map.remove(&player_uid); + debug!("destroyed scene of player with uid {player_uid}"); + } + ClientInput { + player_uid, + request_id, + protocol_unit, + } => { + if let Some(ecs) = state.ecs_map.get_mut(&player_uid) { + ecs.push_protocol_event(request_id, protocol_unit); + ecs.0.update(); + } + } + } + } + } +} diff --git a/crates/hall-server/src/logic/save/mod.rs b/crates/hall-server/src/logic/save/mod.rs new file mode 100644 index 0000000..ee88020 --- /dev/null +++ b/crates/hall-server/src/logic/save/mod.rs @@ -0,0 +1,24 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Serialize, Deserialize)] +pub struct HallSceneSaveData { + pub section_id: u32, + pub day_of_week: u32, + pub time_of_day: u32, + pub bgm_id: u32, + pub player_position: MainCityPositionSave, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(tag = "$type")] +pub enum MainCityPositionSave { + Predefined { + transform_id: String, + }, + Transform { + pos_x: f64, + pos_y: f64, + pos_z: f64, + rot_y: f64, + }, +} diff --git a/crates/hall-server/src/main.rs b/crates/hall-server/src/main.rs new file mode 100644 index 0000000..7204bed --- /dev/null +++ b/crates/hall-server/src/main.rs @@ -0,0 +1,102 @@ +use std::{ + process::ExitCode, + sync::{LazyLock, OnceLock}, +}; + +use config::HallServerConfig; +use dashmap::DashMap; +use logic::{GameRunner, NapResources}; +use session::HallSession; +use tracing::{error, info}; +use trigger_fileconfig::{main_city_script::MainCityConfig, ArchiveFile, NapFileCfg}; +use trigger_sv::{ + config::{load_json_config, ServerEnvironmentConfiguration, TomlConfig}, + die, logging, + net::{ServerNetworkManager, ServerType}, + print_banner, +}; + +mod config; +mod logic; +mod server_message_handler; +mod session; + +const BLK_ASSET_FILE: &str = "1321691809.blk"; +const MAIN_CITY_SCRIPT_PATH: &str = "ConfigScript/MainCity_1.json"; +const CONFIG_FILE: &str = "hallserver.toml"; +const SERVER_TYPE: ServerType = ServerType::HallServer; + +struct AppState { + #[expect(unused)] + pub config: &'static HallServerConfig, + pub filecfg: NapFileCfg<'static>, + pub main_city_config: &'static MainCityConfig, + pub network_mgr: ServerNetworkManager, + pub sessions: DashMap, + pub game_runner: GameRunner, +} + +#[tokio::main] +async fn main() -> ExitCode { + static APP_STATE: OnceLock = OnceLock::new(); + static DESIGN_DATA_BLK: OnceLock = OnceLock::new(); + static MAIN_CITY_CONFIG: OnceLock = OnceLock::new(); + static CONFIG: LazyLock = + LazyLock::new(|| HallServerConfig::load_or_create(CONFIG_FILE)); + + print_banner(); + logging::init_tracing(tracing::Level::DEBUG); + + let environment = ServerEnvironmentConfiguration::load_from_toml("environment.toml") + .unwrap_or_else(|err| { + error!("{err}"); + die(); + }); + + let design_data_blk = trigger_fileconfig::read_archive_file(&mut ::std::io::Cursor::new( + &std::fs::read(BLK_ASSET_FILE).unwrap_or_else(|err| { + error!("failed to open design data blk file: {err}"); + die(); + }), + )) + .expect("failed to unpack design data blk file"); + + let design_data_blk = DESIGN_DATA_BLK.get_or_init(|| design_data_blk); + + let main_city_config = load_json_config(MAIN_CITY_SCRIPT_PATH, "MainCityConfig"); + let main_city_config = MAIN_CITY_CONFIG.get_or_init(|| main_city_config); + + let network_mgr = + ServerNetworkManager::new(SERVER_TYPE, CONFIG.node.server_id, &environment.servers); + + let state = APP_STATE.get_or_init(|| AppState { + config: &CONFIG, + filecfg: NapFileCfg::new(design_data_blk), + main_city_config, + network_mgr, + sessions: DashMap::new(), + game_runner: GameRunner::spawn(NapResources { main_city_config }), + }); + + state + .network_mgr + .start_listener(state, server_message_handler::handle_message) + .await + .inspect(|_| { + info!( + "successfully started service {:?}:{}", + SERVER_TYPE, CONFIG.node.server_id + ) + }) + .unwrap_or_else(|err| { + error!("failed to start network manager: {err}"); + die(); + }) + .await // this will await for entirety of the ServerNetworkManager work (forever) + .unwrap_or_else(|err| { + error!("{err}"); + die(); + }); + + ExitCode::SUCCESS +} diff --git a/crates/hall-server/src/server_message_handler.rs b/crates/hall-server/src/server_message_handler.rs new file mode 100644 index 0000000..721f8b6 --- /dev/null +++ b/crates/hall-server/src/server_message_handler.rs @@ -0,0 +1,124 @@ +use tracing::{debug, error, warn}; +use trigger_sv::message::{ + BindClientSessionMessage, BindClientSessionOkMessage, ChangeGameStateMessage, + ForwardClientProtocolMessage, GameStateData, Header, UnbindClientSessionMessage, WithOpcode, +}; + +use crate::{ + logic::{GameStateListener, HallInitData}, + session::HallSession, + AppState, +}; + +pub async fn handle_message(state: &'static AppState, packet: trigger_sv::message::NetworkPacket) { + match packet.opcode { + BindClientSessionMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_bind_client_session(state, packet.header, message).await; + } + } + UnbindClientSessionMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_unbind_client_session(state, packet.header, message).await; + } + } + ChangeGameStateMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_change_game_state(state, packet.header, message).await; + } + } + ForwardClientProtocolMessage::OPCODE => { + if let Some(message) = packet.get_message() { + on_forward_client_protocol_message(state, packet.header, message).await; + } + } + opcode => warn!("unhandled server message, opcode: {opcode}"), + } +} + +async fn on_forward_client_protocol_message( + state: &'static AppState, + _header: Header, + message: ForwardClientProtocolMessage, +) { + if let Some(session) = state.sessions.get(&message.session_id) { + state + .game_runner + .client_input(session.player_uid, message.request_id, message.message); + } +} + +async fn on_change_game_state( + state: &'static AppState, + header: Header, + message: ChangeGameStateMessage, +) { + let Some(session) = state.sessions.get(&message.session_id) else { + return; + }; + + debug!( + "changing game state for player with uid {}, request: {:?}", + session.player_uid, message + ); + + if let GameStateData::Hall { + player_avatar_id, + control_avatar_id, + ext, + } = message.data + { + let hall_init_data = HallInitData::load_from_save(player_avatar_id, control_avatar_id, ext) + .unwrap_or_else(|| { + HallInitData::create_default_init_data( + &state.filecfg, + &state.main_city_config, + player_avatar_id, + control_avatar_id, + ) + }); + + state.game_runner.create_scene( + session.player_uid, + hall_init_data, + GameStateListener::new(session.id, header.sender_id, &state.network_mgr), + ); + } else { + error!("unsupported game state data received: {:?}", message.data); + } +} + +async fn on_unbind_client_session( + state: &'static AppState, + _header: Header, + message: UnbindClientSessionMessage, +) { + if let Some((_, session)) = state.sessions.remove(&message.session_id) { + state.game_runner.destroy_scene(session.player_uid); + } +} + +async fn on_bind_client_session( + state: &'static AppState, + header: Header, + message: BindClientSessionMessage, +) { + state.sessions.insert( + message.session_id, + HallSession { + id: message.session_id, + player_uid: message.player_uid, + }, + ); + + state + .network_mgr + .send_to( + header.sender_type.try_into().unwrap(), + header.sender_id, + BindClientSessionOkMessage { + session_id: message.session_id, + }, + ) + .await; +} diff --git a/crates/hall-server/src/session/mod.rs b/crates/hall-server/src/session/mod.rs new file mode 100644 index 0000000..fbbe0ec --- /dev/null +++ b/crates/hall-server/src/session/mod.rs @@ -0,0 +1,4 @@ +pub struct HallSession { + pub id: u64, + pub player_uid: u32, +} diff --git a/crates/muip-server/Cargo.toml b/crates/muip-server/Cargo.toml new file mode 100644 index 0000000..c160ab3 --- /dev/null +++ b/crates/muip-server/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "trigger-muip-server" +edition = "2024" +version.workspace = true + +[dependencies] +tokio.workspace = true +axum.workspace = true + +paste.workspace = true +serde.workspace = true +serde_json.workspace = true +dashmap.workspace = true +tracing.workspace = true + +trigger-sv.workspace = true +trigger-logic.workspace = true + +trigger-encoding.workspace = true +trigger-protocol.workspace = true +trigger-fileconfig.workspace = true diff --git a/crates/muip-server/muipserver.default.toml b/crates/muip-server/muipserver.default.toml new file mode 100644 index 0000000..b9c11a3 --- /dev/null +++ b/crates/muip-server/muipserver.default.toml @@ -0,0 +1,6 @@ +http_addr = "127.0.0.1:1361" +tokens = ["fhsd6f86f67rt8fw78fw789we78r9789wer6re"] + +[node] +server_id = 0 + diff --git a/crates/muip-server/src/config.rs b/crates/muip-server/src/config.rs new file mode 100644 index 0000000..3d42065 --- /dev/null +++ b/crates/muip-server/src/config.rs @@ -0,0 +1,15 @@ +use std::{collections::HashSet, net::SocketAddr}; + +use serde::Deserialize; +use trigger_sv::config::{ServerNodeConfiguration, TomlConfig}; + +#[derive(Deserialize)] +pub struct MuipServerConfig { + pub node: ServerNodeConfiguration, + pub http_addr: SocketAddr, + pub tokens: HashSet, +} + +impl TomlConfig for MuipServerConfig { + const DEFAULT_TOML: &str = include_str!("../muipserver.default.toml"); +} diff --git a/crates/muip-server/src/http_server.rs b/crates/muip-server/src/http_server.rs new file mode 100644 index 0000000..5e4f664 --- /dev/null +++ b/crates/muip-server/src/http_server.rs @@ -0,0 +1,87 @@ +use std::borrow::Cow; + +use axum::{ + extract::{Query, State}, + routing::get, + Json, Router, +}; +use serde::{Deserialize, Serialize}; +use tokio::net::TcpListener; +use tracing::info; +use trigger_sv::{ + gm_command::{GMCommand, GMInput}, + message::PlayerGmCommandMessage, + net::ServerType, +}; + +use crate::AppState; + +pub async fn serve(state: &'static AppState) -> std::io::Result<()> { + let listener = TcpListener::bind(state.config.http_addr).await?; + let router = Router::new() + .route("/api/gm", get(gm_api)) + .with_state(state); + + info!("HTTP API is listening at http://{}", state.config.http_addr); + + tokio::spawn(async move { + axum::serve(listener, router.into_make_service()) + .await + .expect("axum::serve failed"); + }); + + Ok(()) +} + +#[derive(Serialize)] +struct Response { + pub retcode: i32, + #[serde(skip_serializing_if = "Option::is_none")] + pub message: Option>, +} + +#[derive(Deserialize, Debug)] +struct GmQuery { + pub player_uid: u32, + pub command: String, + pub token: String, +} + +async fn gm_api( + Query(query): Query, + State(state): State<&'static AppState>, +) -> Json { + if !state.config.tokens.contains(&query.token) { + return Json(Response { + retcode: 1, + message: Some(Cow::Borrowed("invalid GM token")), + }); + } + + let command = match GMCommand::from_str(&query.command) { + Ok(command) => command, + Err(err) => { + return Json(Response { + retcode: 2, + message: Some(Cow::Owned(format!("invalid command format: {err}"))), + }) + } + }; + + state + .network_mgr + .send_to( + ServerType::GameServer, + 0, + PlayerGmCommandMessage { + player_uid: query.player_uid, + command, + }, + ) + .await; + + Json(Response { + retcode: 0, + message: None, + }) +} diff --git a/crates/muip-server/src/main.rs b/crates/muip-server/src/main.rs new file mode 100644 index 0000000..93832b0 --- /dev/null +++ b/crates/muip-server/src/main.rs @@ -0,0 +1,71 @@ +use std::sync::{LazyLock, OnceLock}; + +use config::MuipServerConfig; +use tracing::{error, info}; +use trigger_sv::{ + config::{ServerEnvironmentConfiguration, TomlConfig}, + die, logging, + net::{ServerNetworkManager, ServerType}, + print_banner, +}; + +mod config; +mod http_server; +mod server_message_handler; + +const CONFIG_FILE: &str = "muipserver.toml"; +const SERVER_TYPE: ServerType = ServerType::MuipServer; + +struct AppState { + pub config: &'static MuipServerConfig, + pub network_mgr: ServerNetworkManager, +} + +#[tokio::main] +async fn main() { + static APP_STATE: OnceLock = OnceLock::new(); + static CONFIG: LazyLock = + LazyLock::new(|| MuipServerConfig::load_or_create(CONFIG_FILE)); + + print_banner(); + logging::init_tracing(tracing::Level::DEBUG); + + let environment = ServerEnvironmentConfiguration::load_from_toml("environment.toml") + .unwrap_or_else(|err| { + error!("{err}"); + die(); + }); + + let network_mgr = + ServerNetworkManager::new(SERVER_TYPE, CONFIG.node.server_id, &environment.servers); + + let state = APP_STATE.get_or_init(|| AppState { + config: &CONFIG, + network_mgr, + }); + + http_server::serve(state).await.unwrap_or_else(|err| { + error!("http_server::serve failed: {err}"); + die(); + }); + + state + .network_mgr + .start_listener(state, server_message_handler::handle_message) + .await + .inspect(|_| { + info!( + "successfully started service {:?}:{}", + SERVER_TYPE, CONFIG.node.server_id + ) + }) + .unwrap_or_else(|err| { + error!("failed to start network manager: {err}"); + die(); + }) + .await // this will await for entirety of the ServerNetworkManager work (forever) + .unwrap_or_else(|err| { + error!("{err}"); + die(); + }); +} diff --git a/crates/muip-server/src/server_message_handler.rs b/crates/muip-server/src/server_message_handler.rs new file mode 100644 index 0000000..83203d5 --- /dev/null +++ b/crates/muip-server/src/server_message_handler.rs @@ -0,0 +1,9 @@ +use tracing::warn; + +use crate::AppState; + +pub async fn handle_message(_state: &'static AppState, packet: trigger_sv::message::NetworkPacket) { + match packet.opcode { + opcode => warn!("unhandled server message, opcode: {opcode}"), + } +} diff --git a/crates/trigger-codegen/Cargo.toml b/crates/trigger-codegen/Cargo.toml new file mode 100644 index 0000000..85c77d5 --- /dev/null +++ b/crates/trigger-codegen/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "trigger-codegen" +edition = "2024" +version.workspace = true + +[dependencies] +proc-macro2.workspace = true +syn.workspace = true +quote.workspace = true + +[lib] +proc-macro = true diff --git a/crates/trigger-codegen/src/commands.rs b/crates/trigger-codegen/src/commands.rs new file mode 100644 index 0000000..491ae90 --- /dev/null +++ b/crates/trigger-codegen/src/commands.rs @@ -0,0 +1,168 @@ +use proc_macro2::TokenStream; +use quote::quote; +use syn::{ + parse_macro_input, Data, DeriveInput, Field, Fields, GenericArgument, PathArguments, Type, + TypePath, +}; + +pub fn impl_gm_input(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let item = parse_macro_input!(input as DeriveInput); + let item_name = &item.ident; + + let Data::Enum(data) = &item.data else { + panic!("#[derive(GMInput)] only supports enums") + }; + + let internal_enum_name = quote::format_ident!("{item_name}Type"); + let mut internal_enum_variants = TokenStream::new(); + let mut internal_enum_mapping = TokenStream::new(); + let mut parser_match_arms = TokenStream::new(); + + for var in data.variants.iter() { + let name = &var.ident; + let name_lowercase_str = name.to_string().to_lowercase(); + + internal_enum_variants.extend(quote! { + #name, + }); + + internal_enum_mapping.extend(quote! { + (#name_lowercase_str, #internal_enum_name::#name), + }); + + let mut assignments = TokenStream::new(); + + if let Fields::Named(fields) = &var.fields { + for field in fields.named.iter() { + let field_name = field.ident.as_ref().unwrap(); + let field_name_str = field_name.to_string(); + + let field_type = get_field_type(field); + let field_sub_type = get_field_sub_type(field); + let assignment = match field_type.as_str() { + "String" => { + quote! { #field_name: data.next().ok_or(MissingArgument(#field_name_str))?.to_string(), } + } + "u32" | "i32" | "u16" | "i16" | "bool" => { + quote! { #field_name: data.next().ok_or(MissingArgument(#field_name_str))?.parse().map_err(|_| InvalidArgumentFormat(#field_name_str, #field_type))?, } + } + "Vec" + if matches!( + field_sub_type.as_str(), + "u32" | "i32" | "u16" | "i16" | "bool" + ) => + { + quote! { #field_name: { + let mut list = Vec::new(); + while let Some(value) = data.next() { + if list.is_empty() { + if value == "[]" { + break; + } + else if let Some(value) = value.strip_prefix('[') { + list.push(value.parse().map_err(|_| InvalidArgumentFormat(#field_name_str, #field_type))?); + } + else { + return Err(InvalidArgumentFormat(#field_name_str, #field_type)); + } + } + else { + if let Some(value) = value.strip_suffix(']') { + list.push(value.parse().map_err(|_| InvalidArgumentFormat(#field_name_str, #field_type))?); + break; + } + else { + list.push(value.parse().map_err(|_| InvalidArgumentFormat(#field_name_str, #field_type))?); + } + } + } + + list + } + } + } + unsupported => { + todo!("#[derive(GMInput)] doesn't support field type: {unsupported}") + } + }; + + assignments.extend(assignment); + } + + parser_match_arms.extend(quote! { + #internal_enum_name::#name => Ok(Self::#name { + #assignments + }), + }); + } else if var.fields.is_empty() { + parser_match_arms.extend(quote! { #internal_enum_name::#name => Ok(Self::#name), }); + } else { + panic!("#[derive(GMInput)] doesn't support unnamed fields"); + } + } + + let internal_enum = quote! { + enum #internal_enum_name { + #internal_enum_variants + } + }; + + quote! { + #internal_enum + + impl GMInput for #item_name { + fn from_str(input: &str) -> Result { + use GMInputParseError::*; + + static CMD_TYPE_MAP: ::std::sync::LazyLock<::std::collections::HashMap<&'static str, #internal_enum_name>> = + ::std::sync::LazyLock::new(|| ::std::collections::HashMap::from([#internal_enum_mapping])); + + let mut data = input.split(' '); + + let cmd_name = data.next().unwrap().to_string(); + let cmd_type = CMD_TYPE_MAP.get(cmd_name.to_lowercase().as_str()).ok_or(UnknownCommand(cmd_name))?; + + match cmd_type { + #parser_match_arms + } + } + } + } + .into() +} + +#[must_use] +fn get_type_name(path: &syn::Path) -> String { + path.segments.last().unwrap().ident.to_string() +} + +#[must_use] +fn get_field_type(field: &Field) -> String { + match &field.ty { + Type::Path(TypePath { path, .. }) => get_type_name(path), + _ => panic!("Unsupported field type"), + } +} + +#[must_use] +fn get_field_sub_type(field: &Field) -> String { + match &field.ty { + Type::Path(TypePath { path, .. }) => { + let last_segment = path.segments.last().unwrap(); + match &last_segment.arguments { + PathArguments::AngleBracketed(args) => { + if let Some(GenericArgument::Type(Type::Path(TypePath { path, .. }))) = + args.args.last() + { + get_type_name(path) + } else { + get_type_name(path) + } + } + _ => get_type_name(path), + } + } + _ => panic!("Unsupported field type"), + } +} + diff --git a/crates/trigger-codegen/src/decodeable.rs b/crates/trigger-codegen/src/decodeable.rs new file mode 100644 index 0000000..ef4e455 --- /dev/null +++ b/crates/trigger-codegen/src/decodeable.rs @@ -0,0 +1,76 @@ +use proc_macro2::TokenStream; +use quote::quote; +use syn::{parse_macro_input, Data, DeriveInput, Fields, Ident}; + +pub fn impl_decodeable(item: proc_macro::TokenStream) -> proc_macro::TokenStream { + let input = parse_macro_input!(item as DeriveInput); + let input_name = &input.ident; + + match &input.data { + Data::Struct(st) => { + let decode_calls = impl_decode_calls_for_fields(&st.fields); + + quote! { + impl ::trigger_encoding::Decodeable for #input_name { + fn decode(r: &mut R) -> ::std::io::Result { + Ok(Self { + #decode_calls + }) + } + } + } + .into() + } + Data::Enum(enumeration) => { + let repr = input + .attrs + .iter() + .find(|attr| attr.path().is_ident("repr")) + .expect("#[derive(Decodeable)] requires #[repr(ty)] attribute for enums") + .parse_args::() + .unwrap(); + + let mut decode_match_arms = TokenStream::new(); + + for variant in enumeration.variants.iter() { + let variant_name = &variant.ident; + let (_, discriminant) = variant.discriminant.as_ref().expect( + "#[derive(Decodeable)] requires explicit enum discriminant declaration", + ); + + let decode_calls = impl_decode_calls_for_fields(&variant.fields); + + decode_match_arms.extend(quote! { + #discriminant => Self::#variant_name { + #decode_calls + }, + }); + } + + quote! { + impl ::trigger_encoding::Decodeable for #input_name { + fn decode(r: &mut R) -> ::std::io::Result { + Ok(match #repr::decode(r)? { + #decode_match_arms + unk => panic!("{}::decode: unknown discriminant encountered: {}", stringify!(#input_name), unk), + }) + } + } + }.into() + } + Data::Union(_) => panic!("#[derive(Decodeable)] doesn't support unions"), + } +} + +fn impl_decode_calls_for_fields(fields: &Fields) -> TokenStream { + let mut decode_calls = TokenStream::new(); + + fields.iter().for_each(|field| { + let name = field.ident.as_ref().unwrap(); + decode_calls.extend(quote! { + #name: ::trigger_encoding::Decodeable::decode(r)?, + }); + }); + + decode_calls +} diff --git a/crates/trigger-codegen/src/encodeable.rs b/crates/trigger-codegen/src/encodeable.rs new file mode 100644 index 0000000..3acf515 --- /dev/null +++ b/crates/trigger-codegen/src/encodeable.rs @@ -0,0 +1,145 @@ +use proc_macro2::TokenStream; +use quote::quote; +use syn::{parse_macro_input, Data, DeriveInput, Fields, Ident}; + +pub fn impl_encodeable(item: proc_macro::TokenStream) -> proc_macro::TokenStream { + let input = parse_macro_input!(item as DeriveInput); + let input_name = &input.ident; + + match &input.data { + Data::Struct(st) => { + let encode_calls = impl_encode_calls_for_fields(&st.fields, true); + let encoding_length_calls = impl_encoding_length_calls_for_fields(&st.fields, true); + + quote! { + impl ::trigger_encoding::Encodeable for #input_name { + fn encode(&self, w: &mut W) -> ::std::io::Result<()> { + #encode_calls + Ok(()) + } + + fn encoding_length(&self) -> usize { + let mut length = 0; + #encoding_length_calls + length + } + } + } + .into() + } + Data::Enum(enumeration) => { + let repr = input + .attrs + .iter() + .find(|attr| attr.path().is_ident("repr")) + .expect("#[derive(Encodeable)] requires #[repr(ty)] attribute for enums") + .parse_args::() + .unwrap(); + + let mut encode_match_arms = TokenStream::new(); + let mut encoding_length_match_arms = TokenStream::new(); + + for variant in enumeration.variants.iter() { + let variant_name = &variant.ident; + let (_, discriminant) = variant.discriminant.as_ref().expect( + "#[derive(Encodeable)] requires explicit enum discriminant declaration", + ); + + let fields_pat = pat_fields(&variant.fields); + let encode_calls = impl_encode_calls_for_fields(&variant.fields, false); + let encoding_length_calls = + impl_encoding_length_calls_for_fields(&variant.fields, false); + + encode_match_arms.extend(quote! { + Self::#variant_name #fields_pat => { + #repr::encode(&#discriminant, w)?; + #encode_calls + }, + }); + + encoding_length_match_arms.extend(quote! { + Self::#variant_name #fields_pat => { + let mut length = #repr::encoding_length(&#discriminant); + #encoding_length_calls + length + }, + }); + } + + quote! { + impl ::trigger_encoding::Encodeable for #input_name { + fn encode(&self, w: &mut W) -> ::std::io::Result<()> { + match self { + #encode_match_arms + } + + Ok(()) + } + + fn encoding_length(&self) -> usize { + match self { + #encoding_length_match_arms + } + } + } + } + .into() + } + Data::Union(_) => panic!("#[derive(Encodeable)] doesn't support unions"), + } +} + +fn impl_encode_calls_for_fields(fields: &Fields, dot_notation: bool) -> TokenStream { + let mut encode_calls = TokenStream::new(); + + fields.iter().for_each(|field| { + let name = field.ident.as_ref().unwrap(); + + if !dot_notation { + encode_calls.extend(quote! { + ::trigger_encoding::Encodeable::encode(#name, w)?; + }); + } else { + encode_calls.extend(quote! { + ::trigger_encoding::Encodeable::encode(&self.#name, w)?; + }); + } + }); + + encode_calls +} + +fn impl_encoding_length_calls_for_fields(fields: &Fields, dot_notation: bool) -> TokenStream { + let mut encoding_length_calls = TokenStream::new(); + + fields.iter().for_each(|field| { + let name = field.ident.as_ref().unwrap(); + + if !dot_notation { + encoding_length_calls.extend(quote! { + length += #name.encoding_length(); + }); + } else { + encoding_length_calls.extend(quote! { + length += self.#name.encoding_length(); + }); + } + }); + + encoding_length_calls +} + +fn pat_fields(fields: &Fields) -> TokenStream { + match fields { + Fields::Named(fields) => { + let fields = fields + .named + .iter() + .map(|field| field.ident.as_ref().unwrap()); + + quote!({ #(#fields),* }) + } + Fields::Unnamed(_) => panic!("#[derive(Encodeable)] doesn't support unnamed fields"), + Fields::Unit => quote!(), + } +} diff --git a/crates/trigger-codegen/src/handler_module_attribute.rs b/crates/trigger-codegen/src/handler_module_attribute.rs new file mode 100644 index 0000000..257c482 --- /dev/null +++ b/crates/trigger-codegen/src/handler_module_attribute.rs @@ -0,0 +1,125 @@ +use proc_macro2::TokenStream; +use quote::{quote, ToTokens}; +use syn::{parse_macro_input, FnArg, Item, ItemMod, ReturnType}; + +pub fn imp(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + const INVALID_FUNCTION_SIGNATURE_MSG: &str = "functions in message handler module should have following signature: fn(&mut MessageContext<'_>, CsReq) -> ScRsp"; + + let module = parse_macro_input!(input as ItemMod); + let mod_name = &module.ident; + + let (_, items) = module + .content + .as_ref() + .expect("#[handlers] module should contain message handler functions"); + + let mut output_module = TokenStream::new(); + let mut handler_match_arms = TokenStream::new(); + let mut supports_message_expressions = TokenStream::new(); + + for item in items.iter() { + let Item::Fn(func) = item else { + output_module.extend(item.to_token_stream()); + continue; + }; + + let sig = &func.sig; + let name = &sig.ident; + + assert_eq!(sig.inputs.len(), 2, "{}", INVALID_FUNCTION_SIGNATURE_MSG); + + let argument = match sig.inputs.get(1).as_ref().unwrap() { + FnArg::Typed(argument) => argument, + FnArg::Receiver(_) => unreachable!(), + }; + + output_module.extend(quote! { + #[::tracing::instrument(skip_all)] + #func + }); + + let request_type = argument.ty.as_ref(); + supports_message_expressions.extend(quote! { + if cmd_id == #request_type::CMD_ID { + return true; + } + }); + + let has_return_message = ReturnType::Default != sig.output; + + if has_return_message { + handler_match_arms.extend(quote! { + #request_type::CMD_ID => { + let request = match #request_type::decode(&mut ::std::io::Cursor::new(&message.message.blob)) { + Ok(request) => request, + Err(err) => { + ::tracing::error!("failed to decode message {}: {}", stringify!(#request_type), err); + return None; + } + }; + + let mut context = super::MessageContext::new(state, session, player, message.request_id); + let response = #mod_name::#name(&mut context, request).await; + + ::tracing::debug!("client message {} was handled", stringify!(#request_type)); + Some(::trigger_sv::message::AvailableServerProtocolMessage { + session_id: context.session.id, + ack_request_id: message.request_id, + response: Some(response.into()), + notifies: context.remove_notifies(), + }) + } + }); + } else { + handler_match_arms.extend(quote! { + #request_type::CMD_ID => { + let request = match #request_type::decode(&mut ::std::io::Cursor::new(&message.message.blob)) { + Ok(request) => request, + Err(err) => { + ::tracing::error!("failed to decode message {}: {}", stringify!(#request_type), err); + return None; + } + }; + + let mut context = super::MessageContext::new(state, session, player, message.request_id); + #mod_name::#name(&mut context, request).await; + + ::tracing::debug!("client message {} was handled", stringify!(#request_type)); + Some(::trigger_sv::message::AvailableServerProtocolMessage { + session_id: context.session.id, + ack_request_id: message.request_id, + response: None, + notifies: context.remove_notifies(), + }) + } + }); + } + } + + quote! { + pub fn supports_message(cmd_id: u16) -> bool { + use ::trigger_protocol::*; + + #supports_message_expressions + false + } + + pub async fn handle_message(state: &'static crate::AppState, session: &crate::session::GameSession, player: &mut crate::NapPlayer, message: ::trigger_sv::message::ForwardClientProtocolMessage) -> Option<::trigger_sv::message::AvailableServerProtocolMessage> { + use ::trigger_protocol::*; + use ::trigger_encoding::{Encodeable, Decodeable}; + + match message.message.cmd_id { + #handler_match_arms + _ => None, + } + } + + mod #mod_name { + use super::MessageContext; + use ::trigger_protocol::*; + + #output_module + } + } + .into() +} diff --git a/crates/trigger-codegen/src/lib.rs b/crates/trigger-codegen/src/lib.rs new file mode 100644 index 0000000..815f5e3 --- /dev/null +++ b/crates/trigger-codegen/src/lib.rs @@ -0,0 +1,48 @@ +use proc_macro::TokenStream; +use quote::{quote, ToTokens}; +use syn::{parse_macro_input, DeriveInput, Meta, MetaList}; + +mod commands; +mod decodeable; +mod encodeable; +mod handler_module_attribute; + +#[proc_macro_derive(Encodeable)] +pub fn derive_encodeable(item: TokenStream) -> TokenStream { + encodeable::impl_encodeable(item) +} + +#[proc_macro_derive(Decodeable)] +pub fn derive_decodeable(item: TokenStream) -> TokenStream { + decodeable::impl_decodeable(item) +} + +#[proc_macro_derive(GMInput)] +pub fn derive_commands(item: TokenStream) -> TokenStream { + commands::impl_gm_input(item) +} + +#[proc_macro_attribute] +pub fn handlers(_attr: TokenStream, input: TokenStream) -> TokenStream { + handler_module_attribute::imp(input) +} + +#[proc_macro_derive(ClientCmdID, attributes(id))] +pub fn derive_client_cmd_id(item: TokenStream) -> TokenStream { + let input = parse_macro_input!(item as DeriveInput); + let struct_name = input.ident; + + let id = match input.attrs.iter().find(|attr| attr.path().is_ident("id")) { + Some(attr) => match attr.meta { + Meta::List(MetaList { ref tokens, .. }) => tokens.into_token_stream(), + _ => panic!("Invalid cmdid attribute value"), + }, + _ => 0u16.into_token_stream(), + }; + + TokenStream::from(quote! { + impl crate::ClientCmdID for #struct_name { + const CMD_ID: u16 = #id; + } + }) +} diff --git a/crates/trigger-cryptography/Cargo.toml b/crates/trigger-cryptography/Cargo.toml new file mode 100644 index 0000000..f8ec99b --- /dev/null +++ b/crates/trigger-cryptography/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "trigger-cryptography" +edition = "2024" +version.workspace = true + +[dependencies] +rsa.workspace = true +rand.workspace = true +rand_mt.workspace = true +thiserror.workspace = true +byteorder.workspace = true diff --git a/crates/trigger-cryptography/src/lib.rs b/crates/trigger-cryptography/src/lib.rs new file mode 100644 index 0000000..d05af3e --- /dev/null +++ b/crates/trigger-cryptography/src/lib.rs @@ -0,0 +1,13 @@ +use byteorder::{BigEndian, ByteOrder}; +use rand_mt::Mt64; + +pub mod mhy; +pub mod rsa; + +pub fn gen_xorpad(seed: u64) -> [u8; 4096] { + let mut buf = [0u8; 4096]; + let mut rng = Mt64::new(seed); + (0..(buf.len() >> 3)).for_each(|i| BigEndian::write_u64(&mut buf[i * 8..], rng.next_u64())); + + buf +} diff --git a/crates/trigger-cryptography/src/mhy/aes.rs b/crates/trigger-cryptography/src/mhy/aes.rs new file mode 100644 index 0000000..c9c2d14 --- /dev/null +++ b/crates/trigger-cryptography/src/mhy/aes.rs @@ -0,0 +1,178 @@ +#![allow(unused)] + +use super::tables::{ + LOOKUP_G11, LOOKUP_G13, LOOKUP_G14, LOOKUP_G2, LOOKUP_G3, LOOKUP_G9, LOOKUP_RCON, LOOKUP_SBOX, + LOOKUP_SBOX_INV, SHIFT_ROWS_TABLE, SHIFT_ROWS_TABLE_INV, +}; + +fn xorr(a: &mut [u8], b: &[u8], n: usize) { + (0..n).for_each(|i| a[i] ^= b[i]); +} + +fn xor_round_key(state: &mut [u8], keys: &[u8], round: usize) { + xorr(state, &keys[round * 16..], 16); +} + +fn sub_bytes(a: &mut [u8], n: usize) { + (0..n).for_each(|i| a[i] = LOOKUP_SBOX[a[i] as usize]); +} + +fn sub_bytes_inv(a: &mut [u8], n: usize) { + (0..n).for_each(|i| a[i] = LOOKUP_SBOX_INV[a[i] as usize]); +} + +fn key_schedule_core(a: &mut [u8], i: usize) { + let temp = a[0]; + a[0] = a[1]; + a[1] = a[2]; + a[2] = a[3]; + a[3] = temp; + sub_bytes(a, 4); + a[0] ^= LOOKUP_RCON[i]; +} + +fn oqs_aes128_load_schedule_c(key: &[u8]) -> [u8; 176] { + let mut schedule = [0u8; 176]; + + let mut bytes = 16; + let mut i = 1; + let mut t = [0u8; 4]; + + schedule[0..16].copy_from_slice(key); + + while bytes < 176 { + t.copy_from_slice(&schedule[bytes - 4..]); + key_schedule_core(&mut t, i); + i += 1; + xorr(&mut schedule[bytes..], &t, 4); + schedule[bytes..].copy_from_slice(&t); + bytes += 4; + + for _ in 0..3 { + t.copy_from_slice(&schedule[bytes - 4..]); + xorr(&mut t, &schedule[bytes - 16..], 4); + schedule[bytes..].copy_from_slice(&t); + bytes += 4; + } + } + + schedule +} + +fn shift_rows(state: &mut [u8]) { + let temp = state.to_vec(); + (0..16).for_each(|i| state[i] = temp[SHIFT_ROWS_TABLE[i] as usize]); +} + +fn shift_rows_inv(state: &mut [u8]) { + let temp = state.to_vec(); + (0..16).for_each(|i| state[i] = temp[SHIFT_ROWS_TABLE_INV[i] as usize]); +} + +fn mix_col(state: &mut [u8]) { + let (a0, a1, a2, a3) = (state[0], state[1], state[2], state[3]); + + state[0] = LOOKUP_G2[a0 as usize] ^ LOOKUP_G3[a1 as usize] ^ a2 ^ a3; + state[1] = LOOKUP_G2[a1 as usize] ^ LOOKUP_G3[a2 as usize] ^ a3 ^ a0; + state[2] = LOOKUP_G2[a2 as usize] ^ LOOKUP_G3[a3 as usize] ^ a0 ^ a1; + state[3] = LOOKUP_G2[a3 as usize] ^ LOOKUP_G3[a0 as usize] ^ a1 ^ a2; +} + +fn mix_cols(state: &mut [u8]) { + mix_col(&mut state[0..4]); + mix_col(&mut state[4..8]); + mix_col(&mut state[8..12]); + mix_col(&mut state[12..16]); +} + +fn mix_col_inv(state: &mut [u8]) { + let (a0, a1, a2, a3) = (state[0], state[1], state[2], state[3]); + + state[0] = LOOKUP_G14[a0 as usize] + ^ LOOKUP_G9[a3 as usize] + ^ LOOKUP_G13[a2 as usize] + ^ LOOKUP_G11[a1 as usize]; + state[1] = LOOKUP_G14[a1 as usize] + ^ LOOKUP_G9[a0 as usize] + ^ LOOKUP_G13[a3 as usize] + ^ LOOKUP_G11[a2 as usize]; + state[2] = LOOKUP_G14[a2 as usize] + ^ LOOKUP_G9[a1 as usize] + ^ LOOKUP_G13[a0 as usize] + ^ LOOKUP_G11[a3 as usize]; + state[3] = LOOKUP_G14[a3 as usize] + ^ LOOKUP_G9[a2 as usize] + ^ LOOKUP_G13[a1 as usize] + ^ LOOKUP_G11[a0 as usize]; +} + +fn mix_cols_inv(state: &mut [u8]) { + mix_col_inv(&mut state[0..4]); + mix_col_inv(&mut state[4..8]); + mix_col_inv(&mut state[8..12]); + mix_col_inv(&mut state[12..16]); +} + +fn oqs_aes128_enc_c(plaintext: &[u8], schedule: &[u8], ciphertext: &mut [u8]) { + ciphertext.copy_from_slice(&plaintext[..16]); + xor_round_key(ciphertext, schedule, 0); + + for i in 1..10 { + sub_bytes(ciphertext, 16); + shift_rows(ciphertext); + mix_cols(ciphertext); + xor_round_key(ciphertext, schedule, i); + } + + sub_bytes(ciphertext, 16); + shift_rows(ciphertext); + xor_round_key(ciphertext, schedule, 10); +} + +pub fn oqs_mhy128_enc_c(plaintext: &[u8], schedule: &[u8], ciphertext: &mut [u8]) { + ciphertext.copy_from_slice(&plaintext[..16]); + xor_round_key(ciphertext, schedule, 0); + + for i in 1..10 { + sub_bytes_inv(ciphertext, 16); + shift_rows_inv(ciphertext); + mix_cols_inv(ciphertext); + xor_round_key(ciphertext, schedule, i); + } + + sub_bytes_inv(ciphertext, 16); + shift_rows_inv(ciphertext); + xor_round_key(ciphertext, schedule, 10); +} + +fn oqs_aes128_dec_c(ciphertext: &[u8], schedule: &[u8], plaintext: &mut [u8]) { + plaintext.copy_from_slice(&ciphertext[..16]); + xor_round_key(plaintext, schedule, 10); + shift_rows_inv(plaintext); + sub_bytes_inv(plaintext, 16); + + for i in 0..9 { + xor_round_key(plaintext, schedule, 9 - i); + mix_cols_inv(plaintext); + shift_rows_inv(plaintext); + sub_bytes_inv(plaintext, 16); + } + + xor_round_key(plaintext, schedule, 0); +} + +fn oqs_mhy128_dec_c(ciphertext: &[u8], schedule: &[u8], plaintext: &mut [u8]) { + plaintext.copy_from_slice(&ciphertext[..16]); + xor_round_key(plaintext, schedule, 10); + shift_rows(plaintext); + sub_bytes(plaintext, 16); + + for i in 0..9 { + xor_round_key(plaintext, schedule, 9 - i); + mix_cols(plaintext); + shift_rows(plaintext); + sub_bytes(plaintext, 16); + } + + xor_round_key(plaintext, schedule, 0); +} diff --git a/crates/trigger-cryptography/src/mhy/ec2b.rs b/crates/trigger-cryptography/src/mhy/ec2b.rs new file mode 100644 index 0000000..d3db556 --- /dev/null +++ b/crates/trigger-cryptography/src/mhy/ec2b.rs @@ -0,0 +1,99 @@ +use super::aes::oqs_mhy128_enc_c; +use super::tables::{AES_XORPAD_TABLE, KEY_XORPAD_TABLE}; +use byteorder::{BigEndian, ByteOrder, LittleEndian, ReadBytesExt}; +use rand_mt::Mt64; +use std::io::Read; +use thiserror::Error; + +const HEAD_MAGIC: u32 = 0x45633262; // "Ec2b" +const KEY_SIZE: usize = 16; +const DATA_SIZE: usize = 2048; + +pub struct Ec2b { + key: [u8; KEY_SIZE], + data: [u8; DATA_SIZE], +} + +#[derive(Error, Debug)] +pub enum DecodeError { + #[error("I/O error: {0}")] + IoError(#[from] std::io::Error), + #[error("magic mismatch, expected: {HEAD_MAGIC}, got: {0}")] + MagicMismatch(u32), + #[error("invalid key size, expected: {KEY_SIZE}, got: {0}")] + InvalidKeySize(usize), + #[error("invalid data size, expected: {DATA_SIZE}, got: {0}")] + InvalidDataSize(usize), +} + +impl Ec2b { + const XOR_MAGIC: u64 = 0xCEAC3B5A867837AC; + + pub fn read(r: &mut R) -> Result { + let magic = r.read_u32::()?; + matches!(magic, HEAD_MAGIC) + .then_some(()) + .ok_or(DecodeError::MagicMismatch(magic))?; + + let key_size = r.read_u32::()? as usize; + matches!(key_size, KEY_SIZE) + .then_some(()) + .ok_or(DecodeError::InvalidKeySize(key_size))?; + + let mut key = [0u8; KEY_SIZE]; + r.read_exact(&mut key)?; + + let data_size = r.read_u32::()? as usize; + matches!(data_size, DATA_SIZE) + .then_some(()) + .ok_or(DecodeError::InvalidDataSize(data_size))?; + + let mut data = [0u8; DATA_SIZE]; + r.read_exact(&mut data)?; + + Self::key_scramble(&mut key); + (0..16).for_each(|i| key[i] ^= KEY_XORPAD_TABLE[i]); + + Ok(Self { key, data }) + } + + #[must_use] + fn derive_seed(&self) -> u64 { + let val = self + .data + .chunks_exact(8) + .map(|chunk| u64::from_le_bytes(chunk.try_into().unwrap())) + .fold(0xFFFFFFFFFFFFFFFF, |val, i| val ^ i); + + let key_qword_0 = u64::from_le_bytes(self.key[0..8].try_into().unwrap()); + let key_qword_1 = u64::from_le_bytes(self.key[8..16].try_into().unwrap()); + + key_qword_1 ^ Self::XOR_MAGIC ^ val ^ key_qword_0 + } + + pub fn fill_buffer(&self, buf: &mut [u8]) { + assert!(buf.len() % 8 == 0); + + let mut rng = Mt64::new(self.derive_seed()); + (0..(buf.len() >> 3)) + .for_each(|i| LittleEndian::write_u64(&mut buf[i * 8..], rng.next_u64())); + } + + fn key_scramble(key: &mut [u8]) { + let mut round_keys = [0u8; 176]; + for round in 0..11 { + for i in 0..16 { + for j in 0..16 { + let idx = (round << 8) + (i * 16) + j; + round_keys[round * 16 + i] ^= + AES_XORPAD_TABLE[1][idx] ^ AES_XORPAD_TABLE[0][idx]; + } + } + } + + let mut chip = [0u8; 16]; + oqs_mhy128_enc_c(key, &round_keys, &mut chip); + + key.copy_from_slice(&chip); + } +} diff --git a/crates/trigger-cryptography/src/mhy/mod.rs b/crates/trigger-cryptography/src/mhy/mod.rs new file mode 100644 index 0000000..ec6846c --- /dev/null +++ b/crates/trigger-cryptography/src/mhy/mod.rs @@ -0,0 +1,5 @@ +mod aes; +mod ec2b; +mod tables; + +pub use ec2b::{DecodeError, Ec2b}; diff --git a/crates/trigger-cryptography/src/mhy/tables.rs b/crates/trigger-cryptography/src/mhy/tables.rs new file mode 100644 index 0000000..477632a --- /dev/null +++ b/crates/trigger-cryptography/src/mhy/tables.rs @@ -0,0 +1,536 @@ +#![allow(unused)] + +pub const SHIFT_ROWS_TABLE: [u8; 16] = [0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12, 1, 6, 11]; +pub const SHIFT_ROWS_TABLE_INV: [u8; 16] = [0, 13, 10, 7, 4, 1, 14, 11, 8, 5, 2, 15, 12, 9, 6, 3]; +pub const LOOKUP_RCON: [u8; 16] = [ + 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, +]; +pub const LOOKUP_SBOX: [u8; 256] = [ + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, + 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, + 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, + 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, + 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, + 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, + 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, + 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, + 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, + 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, + 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16, +]; +pub const LOOKUP_SBOX_INV: [u8; 256] = [ + 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, + 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, + 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, + 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, + 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, + 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, + 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, + 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, + 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, + 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, + 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, + 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, + 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, + 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, + 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d, +]; +pub const LOOKUP_G2: [u8; 256] = [ + 0x00, 0x02, 0x04, 0x06, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, + 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, + 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, + 0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, + 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, + 0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, + 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, + 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, + 0x1b, 0x19, 0x1f, 0x1d, 0x13, 0x11, 0x17, 0x15, 0x0b, 0x09, 0x0f, 0x0d, 0x03, 0x01, 0x07, 0x05, + 0x3b, 0x39, 0x3f, 0x3d, 0x33, 0x31, 0x37, 0x35, 0x2b, 0x29, 0x2f, 0x2d, 0x23, 0x21, 0x27, 0x25, + 0x5b, 0x59, 0x5f, 0x5d, 0x53, 0x51, 0x57, 0x55, 0x4b, 0x49, 0x4f, 0x4d, 0x43, 0x41, 0x47, 0x45, + 0x7b, 0x79, 0x7f, 0x7d, 0x73, 0x71, 0x77, 0x75, 0x6b, 0x69, 0x6f, 0x6d, 0x63, 0x61, 0x67, 0x65, + 0x9b, 0x99, 0x9f, 0x9d, 0x93, 0x91, 0x97, 0x95, 0x8b, 0x89, 0x8f, 0x8d, 0x83, 0x81, 0x87, 0x85, + 0xbb, 0xb9, 0xbf, 0xbd, 0xb3, 0xb1, 0xb7, 0xb5, 0xab, 0xa9, 0xaf, 0xad, 0xa3, 0xa1, 0xa7, 0xa5, + 0xdb, 0xd9, 0xdf, 0xdd, 0xd3, 0xd1, 0xd7, 0xd5, 0xcb, 0xc9, 0xcf, 0xcd, 0xc3, 0xc1, 0xc7, 0xc5, + 0xfb, 0xf9, 0xff, 0xfd, 0xf3, 0xf1, 0xf7, 0xf5, 0xeb, 0xe9, 0xef, 0xed, 0xe3, 0xe1, 0xe7, 0xe5, +]; +pub const LOOKUP_G3: [u8; 256] = [ + 0x00, 0x03, 0x06, 0x05, 0x0c, 0x0f, 0x0a, 0x09, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11, + 0x30, 0x33, 0x36, 0x35, 0x3c, 0x3f, 0x3a, 0x39, 0x28, 0x2b, 0x2e, 0x2d, 0x24, 0x27, 0x22, 0x21, + 0x60, 0x63, 0x66, 0x65, 0x6c, 0x6f, 0x6a, 0x69, 0x78, 0x7b, 0x7e, 0x7d, 0x74, 0x77, 0x72, 0x71, + 0x50, 0x53, 0x56, 0x55, 0x5c, 0x5f, 0x5a, 0x59, 0x48, 0x4b, 0x4e, 0x4d, 0x44, 0x47, 0x42, 0x41, + 0xc0, 0xc3, 0xc6, 0xc5, 0xcc, 0xcf, 0xca, 0xc9, 0xd8, 0xdb, 0xde, 0xdd, 0xd4, 0xd7, 0xd2, 0xd1, + 0xf0, 0xf3, 0xf6, 0xf5, 0xfc, 0xff, 0xfa, 0xf9, 0xe8, 0xeb, 0xee, 0xed, 0xe4, 0xe7, 0xe2, 0xe1, + 0xa0, 0xa3, 0xa6, 0xa5, 0xac, 0xaf, 0xaa, 0xa9, 0xb8, 0xbb, 0xbe, 0xbd, 0xb4, 0xb7, 0xb2, 0xb1, + 0x90, 0x93, 0x96, 0x95, 0x9c, 0x9f, 0x9a, 0x99, 0x88, 0x8b, 0x8e, 0x8d, 0x84, 0x87, 0x82, 0x81, + 0x9b, 0x98, 0x9d, 0x9e, 0x97, 0x94, 0x91, 0x92, 0x83, 0x80, 0x85, 0x86, 0x8f, 0x8c, 0x89, 0x8a, + 0xab, 0xa8, 0xad, 0xae, 0xa7, 0xa4, 0xa1, 0xa2, 0xb3, 0xb0, 0xb5, 0xb6, 0xbf, 0xbc, 0xb9, 0xba, + 0xfb, 0xf8, 0xfd, 0xfe, 0xf7, 0xf4, 0xf1, 0xf2, 0xe3, 0xe0, 0xe5, 0xe6, 0xef, 0xec, 0xe9, 0xea, + 0xcb, 0xc8, 0xcd, 0xce, 0xc7, 0xc4, 0xc1, 0xc2, 0xd3, 0xd0, 0xd5, 0xd6, 0xdf, 0xdc, 0xd9, 0xda, + 0x5b, 0x58, 0x5d, 0x5e, 0x57, 0x54, 0x51, 0x52, 0x43, 0x40, 0x45, 0x46, 0x4f, 0x4c, 0x49, 0x4a, + 0x6b, 0x68, 0x6d, 0x6e, 0x67, 0x64, 0x61, 0x62, 0x73, 0x70, 0x75, 0x76, 0x7f, 0x7c, 0x79, 0x7a, + 0x3b, 0x38, 0x3d, 0x3e, 0x37, 0x34, 0x31, 0x32, 0x23, 0x20, 0x25, 0x26, 0x2f, 0x2c, 0x29, 0x2a, + 0x0b, 0x08, 0x0d, 0x0e, 0x07, 0x04, 0x01, 0x02, 0x13, 0x10, 0x15, 0x16, 0x1f, 0x1c, 0x19, 0x1a, +]; +pub const LOOKUP_G9: [u8; 256] = [ + 0x00, 0x09, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77, + 0x90, 0x99, 0x82, 0x8b, 0xb4, 0xbd, 0xa6, 0xaf, 0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, + 0x3b, 0x32, 0x29, 0x20, 0x1f, 0x16, 0x0d, 0x04, 0x73, 0x7a, 0x61, 0x68, 0x57, 0x5e, 0x45, 0x4c, + 0xab, 0xa2, 0xb9, 0xb0, 0x8f, 0x86, 0x9d, 0x94, 0xe3, 0xea, 0xf1, 0xf8, 0xc7, 0xce, 0xd5, 0xdc, + 0x76, 0x7f, 0x64, 0x6d, 0x52, 0x5b, 0x40, 0x49, 0x3e, 0x37, 0x2c, 0x25, 0x1a, 0x13, 0x08, 0x01, + 0xe6, 0xef, 0xf4, 0xfd, 0xc2, 0xcb, 0xd0, 0xd9, 0xae, 0xa7, 0xbc, 0xb5, 0x8a, 0x83, 0x98, 0x91, + 0x4d, 0x44, 0x5f, 0x56, 0x69, 0x60, 0x7b, 0x72, 0x05, 0x0c, 0x17, 0x1e, 0x21, 0x28, 0x33, 0x3a, + 0xdd, 0xd4, 0xcf, 0xc6, 0xf9, 0xf0, 0xeb, 0xe2, 0x95, 0x9c, 0x87, 0x8e, 0xb1, 0xb8, 0xa3, 0xaa, + 0xec, 0xe5, 0xfe, 0xf7, 0xc8, 0xc1, 0xda, 0xd3, 0xa4, 0xad, 0xb6, 0xbf, 0x80, 0x89, 0x92, 0x9b, + 0x7c, 0x75, 0x6e, 0x67, 0x58, 0x51, 0x4a, 0x43, 0x34, 0x3d, 0x26, 0x2f, 0x10, 0x19, 0x02, 0x0b, + 0xd7, 0xde, 0xc5, 0xcc, 0xf3, 0xfa, 0xe1, 0xe8, 0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, + 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 0x78, 0x0f, 0x06, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30, + 0x9a, 0x93, 0x88, 0x81, 0xbe, 0xb7, 0xac, 0xa5, 0xd2, 0xdb, 0xc0, 0xc9, 0xf6, 0xff, 0xe4, 0xed, + 0x0a, 0x03, 0x18, 0x11, 0x2e, 0x27, 0x3c, 0x35, 0x42, 0x4b, 0x50, 0x59, 0x66, 0x6f, 0x74, 0x7d, + 0xa1, 0xa8, 0xb3, 0xba, 0x85, 0x8c, 0x97, 0x9e, 0xe9, 0xe0, 0xfb, 0xf2, 0xcd, 0xc4, 0xdf, 0xd6, + 0x31, 0x38, 0x23, 0x2a, 0x15, 0x1c, 0x07, 0x0e, 0x79, 0x70, 0x6b, 0x62, 0x5d, 0x54, 0x4f, 0x46, +]; +pub const LOOKUP_G11: [u8; 256] = [ + 0x00, 0x0b, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69, + 0xb0, 0xbb, 0xa6, 0xad, 0x9c, 0x97, 0x8a, 0x81, 0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, + 0x7b, 0x70, 0x6d, 0x66, 0x57, 0x5c, 0x41, 0x4a, 0x23, 0x28, 0x35, 0x3e, 0x0f, 0x04, 0x19, 0x12, + 0xcb, 0xc0, 0xdd, 0xd6, 0xe7, 0xec, 0xf1, 0xfa, 0x93, 0x98, 0x85, 0x8e, 0xbf, 0xb4, 0xa9, 0xa2, + 0xf6, 0xfd, 0xe0, 0xeb, 0xda, 0xd1, 0xcc, 0xc7, 0xae, 0xa5, 0xb8, 0xb3, 0x82, 0x89, 0x94, 0x9f, + 0x46, 0x4d, 0x50, 0x5b, 0x6a, 0x61, 0x7c, 0x77, 0x1e, 0x15, 0x08, 0x03, 0x32, 0x39, 0x24, 0x2f, + 0x8d, 0x86, 0x9b, 0x90, 0xa1, 0xaa, 0xb7, 0xbc, 0xd5, 0xde, 0xc3, 0xc8, 0xf9, 0xf2, 0xef, 0xe4, + 0x3d, 0x36, 0x2b, 0x20, 0x11, 0x1a, 0x07, 0x0c, 0x65, 0x6e, 0x73, 0x78, 0x49, 0x42, 0x5f, 0x54, + 0xf7, 0xfc, 0xe1, 0xea, 0xdb, 0xd0, 0xcd, 0xc6, 0xaf, 0xa4, 0xb9, 0xb2, 0x83, 0x88, 0x95, 0x9e, + 0x47, 0x4c, 0x51, 0x5a, 0x6b, 0x60, 0x7d, 0x76, 0x1f, 0x14, 0x09, 0x02, 0x33, 0x38, 0x25, 0x2e, + 0x8c, 0x87, 0x9a, 0x91, 0xa0, 0xab, 0xb6, 0xbd, 0xd4, 0xdf, 0xc2, 0xc9, 0xf8, 0xf3, 0xee, 0xe5, + 0x3c, 0x37, 0x2a, 0x21, 0x10, 0x1b, 0x06, 0x0d, 0x64, 0x6f, 0x72, 0x79, 0x48, 0x43, 0x5e, 0x55, + 0x01, 0x0a, 0x17, 0x1c, 0x2d, 0x26, 0x3b, 0x30, 0x59, 0x52, 0x4f, 0x44, 0x75, 0x7e, 0x63, 0x68, + 0xb1, 0xba, 0xa7, 0xac, 0x9d, 0x96, 0x8b, 0x80, 0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, + 0x7a, 0x71, 0x6c, 0x67, 0x56, 0x5d, 0x40, 0x4b, 0x22, 0x29, 0x34, 0x3f, 0x0e, 0x05, 0x18, 0x13, + 0xca, 0xc1, 0xdc, 0xd7, 0xe6, 0xed, 0xf0, 0xfb, 0x92, 0x99, 0x84, 0x8f, 0xbe, 0xb5, 0xa8, 0xa3, +]; +pub const LOOKUP_G13: [u8; 256] = [ + 0x00, 0x0d, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b, + 0xd0, 0xdd, 0xca, 0xc7, 0xe4, 0xe9, 0xfe, 0xf3, 0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, + 0xbb, 0xb6, 0xa1, 0xac, 0x8f, 0x82, 0x95, 0x98, 0xd3, 0xde, 0xc9, 0xc4, 0xe7, 0xea, 0xfd, 0xf0, + 0x6b, 0x66, 0x71, 0x7c, 0x5f, 0x52, 0x45, 0x48, 0x03, 0x0e, 0x19, 0x14, 0x37, 0x3a, 0x2d, 0x20, + 0x6d, 0x60, 0x77, 0x7a, 0x59, 0x54, 0x43, 0x4e, 0x05, 0x08, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, + 0xbd, 0xb0, 0xa7, 0xaa, 0x89, 0x84, 0x93, 0x9e, 0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6, + 0xd6, 0xdb, 0xcc, 0xc1, 0xe2, 0xef, 0xf8, 0xf5, 0xbe, 0xb3, 0xa4, 0xa9, 0x8a, 0x87, 0x90, 0x9d, + 0x06, 0x0b, 0x1c, 0x11, 0x32, 0x3f, 0x28, 0x25, 0x6e, 0x63, 0x74, 0x79, 0x5a, 0x57, 0x40, 0x4d, + 0xda, 0xd7, 0xc0, 0xcd, 0xee, 0xe3, 0xf4, 0xf9, 0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91, + 0x0a, 0x07, 0x10, 0x1d, 0x3e, 0x33, 0x24, 0x29, 0x62, 0x6f, 0x78, 0x75, 0x56, 0x5b, 0x4c, 0x41, + 0x61, 0x6c, 0x7b, 0x76, 0x55, 0x58, 0x4f, 0x42, 0x09, 0x04, 0x13, 0x1e, 0x3d, 0x30, 0x27, 0x2a, + 0xb1, 0xbc, 0xab, 0xa6, 0x85, 0x88, 0x9f, 0x92, 0xd9, 0xd4, 0xc3, 0xce, 0xed, 0xe0, 0xf7, 0xfa, + 0xb7, 0xba, 0xad, 0xa0, 0x83, 0x8e, 0x99, 0x94, 0xdf, 0xd2, 0xc5, 0xc8, 0xeb, 0xe6, 0xf1, 0xfc, + 0x67, 0x6a, 0x7d, 0x70, 0x53, 0x5e, 0x49, 0x44, 0x0f, 0x02, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, + 0x0c, 0x01, 0x16, 0x1b, 0x38, 0x35, 0x22, 0x2f, 0x64, 0x69, 0x7e, 0x73, 0x50, 0x5d, 0x4a, 0x47, + 0xdc, 0xd1, 0xc6, 0xcb, 0xe8, 0xe5, 0xf2, 0xff, 0xb4, 0xb9, 0xae, 0xa3, 0x80, 0x8d, 0x9a, 0x97, +]; +pub const LOOKUP_G14: [u8; 256] = [ + 0x00, 0x0e, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a, + 0xe0, 0xee, 0xfc, 0xf2, 0xd8, 0xd6, 0xc4, 0xca, 0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, + 0xdb, 0xd5, 0xc7, 0xc9, 0xe3, 0xed, 0xff, 0xf1, 0xab, 0xa5, 0xb7, 0xb9, 0x93, 0x9d, 0x8f, 0x81, + 0x3b, 0x35, 0x27, 0x29, 0x03, 0x0d, 0x1f, 0x11, 0x4b, 0x45, 0x57, 0x59, 0x73, 0x7d, 0x6f, 0x61, + 0xad, 0xa3, 0xb1, 0xbf, 0x95, 0x9b, 0x89, 0x87, 0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, + 0x4d, 0x43, 0x51, 0x5f, 0x75, 0x7b, 0x69, 0x67, 0x3d, 0x33, 0x21, 0x2f, 0x05, 0x0b, 0x19, 0x17, + 0x76, 0x78, 0x6a, 0x64, 0x4e, 0x40, 0x52, 0x5c, 0x06, 0x08, 0x1a, 0x14, 0x3e, 0x30, 0x22, 0x2c, + 0x96, 0x98, 0x8a, 0x84, 0xae, 0xa0, 0xb2, 0xbc, 0xe6, 0xe8, 0xfa, 0xf4, 0xde, 0xd0, 0xc2, 0xcc, + 0x41, 0x4f, 0x5d, 0x53, 0x79, 0x77, 0x65, 0x6b, 0x31, 0x3f, 0x2d, 0x23, 0x09, 0x07, 0x15, 0x1b, + 0xa1, 0xaf, 0xbd, 0xb3, 0x99, 0x97, 0x85, 0x8b, 0xd1, 0xdf, 0xcd, 0xc3, 0xe9, 0xe7, 0xf5, 0xfb, + 0x9a, 0x94, 0x86, 0x88, 0xa2, 0xac, 0xbe, 0xb0, 0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, + 0x7a, 0x74, 0x66, 0x68, 0x42, 0x4c, 0x5e, 0x50, 0x0a, 0x04, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20, + 0xec, 0xe2, 0xf0, 0xfe, 0xd4, 0xda, 0xc8, 0xc6, 0x9c, 0x92, 0x80, 0x8e, 0xa4, 0xaa, 0xb8, 0xb6, + 0x0c, 0x02, 0x10, 0x1e, 0x34, 0x3a, 0x28, 0x26, 0x7c, 0x72, 0x60, 0x6e, 0x44, 0x4a, 0x58, 0x56, + 0x37, 0x39, 0x2b, 0x25, 0x0f, 0x01, 0x13, 0x1d, 0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d, + 0xd7, 0xd9, 0xcb, 0xc5, 0xef, 0xe1, 0xf3, 0xfd, 0xa7, 0xa9, 0xbb, 0xb5, 0x9f, 0x91, 0x83, 0x8d, +]; +pub const KEY_XORPAD_TABLE: [u8; 16] = [ + 0xA2, 0x25, 0x25, 0x99, 0xB7, 0x62, 0xF4, 0x39, 0x28, 0xE1, 0xB7, 0x73, 0x91, 0x05, 0x25, 0x87, +]; +pub const AES_XORPAD_TABLE: [[u8; 2816]; 2] = [ + [ + 0xDE, 0xAD, 0xCA, 0xFE, 0xFA, 0xCE, 0xB0, 0x0C, 0xDE, 0xAD, 0xCA, 0xFE, 0xFA, 0xCE, 0xB0, + 0x0C, 0x3A, 0xE6, 0xDE, 0x9C, 0x81, 0xBA, 0x7C, 0xC6, 0x12, 0x1B, 0xAF, 0xD2, 0x8A, 0xBA, + 0xF5, 0xE6, 0x41, 0xDF, 0x71, 0xBA, 0x37, 0x11, 0x50, 0xF3, 0xF3, 0x62, 0x6E, 0x04, 0xF1, + 0x14, 0xFC, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x7B, 0x52, 0x7C, + 0x19, 0x98, 0x35, 0x96, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, + 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, + 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, + 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, + 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, + 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, + 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, + 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, + 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, + 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, + 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, + 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, + 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, + 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, + 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, + 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, + 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, + 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, + 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, + 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, + 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, + 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, + 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, + 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, + 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, + 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, + 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, + 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, + 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, + 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, + 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, + 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, + 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, + 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, + 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, + 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, + 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, + 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, + 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, + 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, + 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, + 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, + 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, + 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, + 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, + 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, + 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, + 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, + 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, + 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, + 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, + 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, + 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, + 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, + 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, + 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, + 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, + 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, + 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, + 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, + 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, + 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, + 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, + 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, + 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, + 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, + 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, + 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, + 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, + 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, + 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, + 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, + 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, + 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, + 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, + 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, + 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, + 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, + 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, + 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, + 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, + 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, + 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, + 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, + 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, + 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, + 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, + 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, + 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, + 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, + 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, + 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, + 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, + 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, + 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, + 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, + 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, + 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, + 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, + 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, + 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, + 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, + 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, + 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, + 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, + 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, + 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, + 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, + 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, + 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, + 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, + 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, + 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, + 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, + 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, + 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, + 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, + 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, + 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, + 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, + 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, + 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, + 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, + 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, + 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, + 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, + 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, + 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, + 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, + 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, + 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, + 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, + 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, + 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, + 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, + 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, + 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, + 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, + 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, + 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, + 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, + 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, + 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, + 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, + 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, + 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, + 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, + 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, + 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, + 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, + 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, + 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, + 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, + 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, + 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, + 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, + 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, + 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, + 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, + 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, + 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, + 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, + 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, + 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, + 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, + 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, + 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, + 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, 0x18, 0x18, 0xE0, 0xAC, + 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, 0xB5, 0x0E, 0xB6, 0x3E, + 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, 0xD0, 0x69, 0x81, 0x00, + 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, 0x82, 0x47, 0x6A, 0xB8, + 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, 0x1F, 0x8E, 0xFA, 0x3C, 0x73, 0x62, 0x6A, 0x92, + 0x18, 0x18, 0xE0, 0xAC, 0x9E, 0x71, 0x37, 0x3C, 0x48, 0xDE, 0xDC, 0xA2, 0xE8, 0xBB, 0x35, + 0xB5, 0x0E, 0xB6, 0x3E, 0x71, 0x25, 0x8A, 0xF2, 0x33, 0xE0, 0xD6, 0xBE, 0xF0, 0x3A, 0x93, + 0xD0, 0x69, 0x81, 0x00, 0x53, 0x7E, 0xCA, 0x4E, 0x78, 0x4B, 0xA2, 0xF7, 0xB3, 0xF1, 0x67, + 0x82, 0x47, 0x6A, 0xB8, 0xAA, 0x76, 0xF9, 0xDF, 0x3B, 0xEC, 0x56, + ], + [ + 0xC3, 0x20, 0x20, 0xB4, 0xAF, 0x0E, 0x82, 0x2E, 0xEF, 0x29, 0xFE, 0x75, 0x1D, 0xDB, 0x4B, + 0x86, 0x86, 0x23, 0x28, 0x72, 0xA3, 0xF4, 0x1B, 0x4F, 0x5F, 0x0E, 0x02, 0xB1, 0xAC, 0x0D, + 0xE6, 0x4F, 0x8B, 0x0B, 0x3F, 0xF3, 0x5F, 0xB5, 0x09, 0x7E, 0x3B, 0xE9, 0x93, 0x29, 0x55, + 0xE1, 0xB4, 0x9B, 0xCC, 0xCE, 0x37, 0xFC, 0xAB, 0x6B, 0xA4, 0x05, 0xE6, 0xC7, 0x45, 0x34, + 0xC0, 0xFF, 0x7C, 0x24, 0x89, 0x36, 0xBF, 0x17, 0xAB, 0x91, 0xCA, 0x49, 0xF2, 0x74, 0x80, + 0xB6, 0x90, 0x60, 0xFF, 0xD2, 0xA9, 0xE5, 0xC9, 0x64, 0xBC, 0x38, 0x40, 0x98, 0xB3, 0xBA, + 0x8F, 0x8B, 0xBA, 0x9D, 0xF3, 0xCF, 0x57, 0xBA, 0xAC, 0x18, 0xE7, 0xD3, 0x03, 0x01, 0x48, + 0x29, 0x41, 0xF6, 0x2F, 0x89, 0xD4, 0x9F, 0xD7, 0xD3, 0x05, 0x71, 0x63, 0x30, 0x4E, 0xBB, + 0xF7, 0xB0, 0x99, 0xFF, 0x43, 0xDA, 0x87, 0xCA, 0xA7, 0x48, 0x92, 0x9E, 0x76, 0xA6, 0xEE, + 0x48, 0x1C, 0x96, 0x28, 0x8E, 0x54, 0x30, 0xD6, 0xA5, 0xD3, 0x22, 0xA2, 0x30, 0xCB, 0x6A, + 0x85, 0x26, 0x69, 0xE1, 0x7C, 0xEC, 0xDC, 0xD4, 0x89, 0x2A, 0xB8, 0xAE, 0xDF, 0x12, 0x6E, + 0x39, 0x8A, 0x9B, 0x48, 0x61, 0xF9, 0x4B, 0x34, 0xD0, 0xF1, 0x60, 0x87, 0xBA, 0x88, 0x86, + 0x68, 0x8C, 0xBE, 0xC1, 0x9C, 0xAE, 0x30, 0xBC, 0xE6, 0x62, 0xFF, 0xEB, 0xBB, 0x88, 0x7C, + 0xD2, 0xBB, 0x57, 0xB4, 0x02, 0x82, 0x06, 0x72, 0xD2, 0x94, 0x60, 0x86, 0x4A, 0x29, 0xF0, + 0xEA, 0xD3, 0x88, 0x92, 0xF1, 0x22, 0xD1, 0x5C, 0x88, 0x65, 0xE6, 0xFB, 0xEE, 0x28, 0x79, + 0x86, 0x68, 0x7D, 0xA6, 0x5A, 0xBF, 0xBD, 0x7D, 0x15, 0xEF, 0x05, 0xF6, 0xF9, 0xE0, 0x11, + 0xD6, 0x30, 0x94, 0xF2, 0x6C, 0x3D, 0x0A, 0xDB, 0xC5, 0x0E, 0xDC, 0xF2, 0xFD, 0x1F, 0x61, + 0x91, 0x5D, 0x80, 0x69, 0xA3, 0xDB, 0x35, 0x98, 0x4E, 0x4A, 0xC1, 0x49, 0x76, 0xAB, 0xC0, + 0x67, 0x36, 0x3F, 0xA4, 0xC6, 0xE8, 0xCA, 0x25, 0x44, 0x63, 0x23, 0xB5, 0xC8, 0xBB, 0x3A, + 0xAC, 0xA1, 0x09, 0xC3, 0x10, 0x57, 0xA5, 0x5B, 0x3B, 0x33, 0x21, 0xCD, 0x3C, 0x88, 0xAE, + 0x1E, 0x8F, 0xC1, 0xD6, 0xFB, 0x94, 0x61, 0x38, 0xAB, 0xF1, 0x9C, 0x06, 0xCB, 0x89, 0x58, + 0x9A, 0xF4, 0xF4, 0x33, 0x80, 0x66, 0x13, 0xC0, 0xFD, 0xE2, 0x16, 0xE0, 0x89, 0x65, 0xE2, + 0xC1, 0xA6, 0xE3, 0x74, 0xD2, 0x5F, 0xA0, 0x76, 0xAD, 0xF5, 0x6B, 0x4F, 0xE0, 0xF7, 0x52, + 0xB0, 0xB1, 0x48, 0xDD, 0xEE, 0xB6, 0x01, 0x9A, 0x90, 0x91, 0x18, 0xEC, 0xCB, 0xCB, 0xAD, + 0x04, 0xB6, 0x73, 0xCF, 0x7F, 0xF3, 0xAC, 0xBE, 0xEC, 0x91, 0x44, 0x56, 0x81, 0xB8, 0x74, + 0xAE, 0x28, 0x5D, 0xC7, 0x5C, 0xAB, 0x8B, 0x56, 0x21, 0x32, 0x91, 0xB9, 0x9E, 0x70, 0xF6, + 0x9B, 0xAC, 0x50, 0x0B, 0x2E, 0x4B, 0x8B, 0xA2, 0xA5, 0x24, 0x5B, 0x91, 0xDF, 0x24, 0xA7, + 0xB0, 0x79, 0xA7, 0x16, 0x54, 0x44, 0x2E, 0xBC, 0x48, 0xCD, 0x87, 0xBA, 0xAF, 0xD4, 0xB9, + 0x1C, 0x0F, 0xAA, 0xFA, 0x3A, 0x3F, 0x3A, 0x3D, 0x68, 0x5A, 0xAE, 0xAC, 0xBA, 0xBE, 0xA3, + 0x92, 0x6E, 0x38, 0x8E, 0x33, 0x3E, 0x0A, 0xCC, 0xF6, 0xE3, 0x26, 0x57, 0xEC, 0x8E, 0x63, + 0x31, 0x27, 0xBA, 0x20, 0x4E, 0x7F, 0x34, 0xE5, 0x19, 0xFE, 0x7F, 0xA6, 0x97, 0x90, 0xD6, + 0x29, 0x1C, 0x3F, 0x8C, 0x3F, 0x81, 0x62, 0x3D, 0xF5, 0x00, 0xD4, 0xC5, 0xE2, 0xE1, 0x42, + 0x42, 0x8C, 0x65, 0x8F, 0x5A, 0x66, 0x59, 0xE1, 0xDD, 0xEC, 0xDC, 0x1B, 0x4E, 0x63, 0x82, + 0xFF, 0x02, 0x9D, 0x53, 0xDE, 0xBD, 0xB4, 0x80, 0xCF, 0x2B, 0xB7, 0xDE, 0x69, 0x5D, 0x1B, + 0xCA, 0xFB, 0xB3, 0xF9, 0xBE, 0xD0, 0xF5, 0x79, 0x86, 0x2F, 0x0E, 0xB6, 0xA9, 0x87, 0xF4, + 0x68, 0xC1, 0xBF, 0x4F, 0xB8, 0xA6, 0x2D, 0x03, 0xA9, 0x72, 0x04, 0xCA, 0x37, 0x6D, 0x1B, + 0x90, 0xDD, 0xBC, 0x52, 0xAE, 0xF3, 0xFF, 0x08, 0xDD, 0x4B, 0x46, 0xD0, 0xCD, 0xB1, 0x8A, + 0x35, 0x9A, 0x02, 0x64, 0x64, 0x2F, 0x57, 0xA5, 0x7B, 0x9A, 0x0D, 0x2B, 0x55, 0x11, 0x3C, + 0xC0, 0x35, 0x74, 0x69, 0xD9, 0x7B, 0x43, 0x1D, 0xAC, 0xB2, 0xC2, 0x8A, 0xBE, 0x22, 0x45, + 0x46, 0x76, 0xA9, 0x8A, 0x49, 0xB2, 0x5F, 0xC0, 0xB8, 0xBC, 0xCD, 0x27, 0xF8, 0x14, 0xB2, + 0xA9, 0x6D, 0x5A, 0x1F, 0xA4, 0x43, 0x1E, 0x0F, 0xDB, 0xA4, 0x9E, 0x2B, 0xCA, 0xFC, 0x98, + 0x7F, 0xF1, 0x18, 0x87, 0x5B, 0x11, 0x2D, 0xC5, 0xE4, 0x91, 0x20, 0xA9, 0x6A, 0x2D, 0xAC, + 0xA8, 0xFA, 0x94, 0x57, 0x7F, 0x30, 0x73, 0x08, 0xE8, 0x49, 0xF0, 0xC8, 0x63, 0xDA, 0x83, + 0x87, 0x2A, 0xC3, 0x31, 0x1A, 0xFC, 0xB7, 0x57, 0xB2, 0x40, 0x46, 0x09, 0x6D, 0x84, 0xB4, + 0x66, 0xF1, 0x13, 0x16, 0x3A, 0x3A, 0xFB, 0xC6, 0x6E, 0xB0, 0x71, 0xB8, 0x23, 0x74, 0x22, + 0x89, 0xFC, 0xBE, 0x34, 0xB3, 0x17, 0xB6, 0xC9, 0x68, 0x53, 0x64, 0x47, 0xAF, 0xCA, 0x1D, + 0x5F, 0xB4, 0x74, 0xA3, 0x77, 0xB5, 0xFB, 0x77, 0xD9, 0x69, 0x2B, 0x3A, 0xAA, 0xAE, 0xE4, + 0x03, 0x81, 0x6B, 0x3A, 0x35, 0x9C, 0x45, 0x50, 0x9C, 0x76, 0xCE, 0xE3, 0x7F, 0x64, 0x4B, + 0x9F, 0x83, 0x7B, 0x72, 0xBC, 0x02, 0x1E, 0x94, 0x99, 0xC1, 0x1C, 0x45, 0x19, 0x1D, 0x56, + 0x74, 0x73, 0xE7, 0xFC, 0x58, 0x72, 0x2D, 0xE3, 0x50, 0xA4, 0x21, 0xBE, 0x81, 0xDF, 0x80, + 0xDA, 0x40, 0xDB, 0x79, 0x67, 0x0E, 0x94, 0xA3, 0x05, 0xDD, 0xF7, 0x14, 0x28, 0xD6, 0xC4, + 0x2B, 0xF3, 0xCF, 0x36, 0x08, 0x84, 0xF3, 0xC8, 0x8C, 0xAD, 0xCE, 0x7F, 0x7C, 0x0F, 0xC6, + 0xFE, 0x05, 0x54, 0x4B, 0x17, 0xA1, 0x83, 0x65, 0x97, 0x29, 0x01, 0x70, 0xC1, 0x16, 0xAE, + 0x69, 0xA4, 0x90, 0xB9, 0xBE, 0x17, 0x05, 0x50, 0xF1, 0x65, 0x07, 0x23, 0x76, 0x64, 0x84, + 0x2D, 0x40, 0x34, 0xFD, 0xDF, 0x62, 0x7E, 0x4C, 0x85, 0xD2, 0x6D, 0x17, 0xE1, 0x41, 0x12, + 0xC6, 0x3E, 0xD6, 0x14, 0xB8, 0x5F, 0x8F, 0x39, 0x65, 0xC2, 0x62, 0x21, 0x06, 0x5C, 0xC9, + 0xB8, 0x99, 0xA5, 0x00, 0xE3, 0x9C, 0x73, 0xAB, 0xB9, 0x76, 0x12, 0xD2, 0xFA, 0x7F, 0x7D, + 0x64, 0x63, 0x9E, 0x26, 0xAA, 0x89, 0x85, 0x3A, 0xC9, 0x94, 0x04, 0x97, 0xEC, 0xFD, 0xC5, + 0xA3, 0xB1, 0x7D, 0xD6, 0x07, 0x9C, 0x47, 0x30, 0x9C, 0x64, 0x97, 0x0E, 0xC6, 0xFC, 0x0B, + 0xFF, 0xA7, 0xF9, 0x46, 0x5B, 0x2B, 0xDB, 0x9E, 0x1C, 0x85, 0x3A, 0x75, 0xD6, 0xEB, 0x9B, + 0x15, 0x36, 0xD7, 0x1A, 0x3D, 0xFC, 0x0B, 0x75, 0x08, 0x5E, 0x32, 0x23, 0xE0, 0xA5, 0xAD, + 0x0F, 0x45, 0xB3, 0x78, 0x20, 0x22, 0x24, 0x64, 0x0C, 0xCF, 0xD6, 0x3C, 0xA4, 0x48, 0xC7, + 0xB3, 0x6E, 0x02, 0xE2, 0x0A, 0xAB, 0x92, 0xFC, 0x40, 0x7D, 0xF5, 0x02, 0x61, 0x56, 0xAB, + 0xC5, 0x68, 0x38, 0xE0, 0x01, 0xF1, 0x94, 0x73, 0xC6, 0xFE, 0xC2, 0x34, 0x67, 0x8E, 0xB1, + 0x73, 0x72, 0xD4, 0x3B, 0xFD, 0x1F, 0xE2, 0xA8, 0xED, 0x20, 0x14, 0x0A, 0x60, 0x6D, 0xD1, + 0x85, 0x14, 0x05, 0x54, 0x96, 0xC6, 0x3D, 0xB5, 0x1B, 0x37, 0x56, 0x24, 0xF7, 0x7C, 0x0F, + 0x55, 0xC6, 0xAA, 0x7E, 0x33, 0x2D, 0xE1, 0x97, 0x74, 0xA8, 0xDC, 0xC5, 0xA1, 0xEC, 0x8C, + 0xEF, 0x28, 0x3B, 0x49, 0x8B, 0x00, 0xED, 0x8B, 0xD9, 0xE9, 0x65, 0xD5, 0x05, 0x7B, 0x6D, + 0x20, 0xCA, 0x8F, 0x93, 0xB4, 0xCA, 0x36, 0x34, 0x8E, 0x16, 0x46, 0xCE, 0x02, 0x23, 0x43, + 0x22, 0xF6, 0xBD, 0x10, 0xCC, 0xD0, 0xA3, 0xB0, 0x42, 0xA5, 0xAF, 0x59, 0x72, 0x97, 0x0B, + 0xAE, 0x80, 0x8D, 0x19, 0xD0, 0x1D, 0x7D, 0x30, 0x4E, 0x5B, 0x46, 0xC0, 0xC2, 0x5C, 0x40, + 0xFC, 0xF3, 0xEF, 0x05, 0x84, 0xE8, 0x0C, 0x80, 0xD7, 0x37, 0xA1, 0x6F, 0xC1, 0x8C, 0xE0, + 0xBA, 0xA1, 0x88, 0x7B, 0xE7, 0x20, 0xBF, 0x18, 0x02, 0x40, 0x9F, 0x6F, 0x23, 0x11, 0x78, + 0x07, 0xD0, 0x92, 0x87, 0x2D, 0xB5, 0xE0, 0xE9, 0xE9, 0xAA, 0x32, 0x88, 0x57, 0xF8, 0x9B, + 0x01, 0x93, 0x2D, 0x07, 0x77, 0x68, 0x86, 0xAD, 0x06, 0xDE, 0x57, 0xA9, 0xA4, 0x96, 0x33, + 0x42, 0xF8, 0xFB, 0x23, 0x1F, 0x99, 0xB6, 0x62, 0x93, 0x6B, 0x12, 0xBE, 0x72, 0x9F, 0x96, + 0x1A, 0xDA, 0x05, 0x60, 0xF1, 0xD5, 0x40, 0x9F, 0x75, 0xF3, 0x1D, 0xBE, 0xD7, 0x87, 0x5D, + 0x3A, 0x55, 0xF0, 0x9B, 0xBF, 0xE8, 0xB9, 0x72, 0xC2, 0xDD, 0x4D, 0x27, 0xF6, 0xA9, 0x37, + 0x96, 0x7E, 0x6E, 0x6E, 0x64, 0x37, 0x4E, 0x2E, 0x3F, 0xFD, 0x3C, 0xF4, 0xA6, 0xF5, 0x22, + 0xA8, 0x43, 0xF4, 0x13, 0x21, 0xB5, 0x4E, 0xA8, 0x6D, 0x50, 0x0A, 0xB3, 0xFE, 0x9F, 0x5C, + 0xE7, 0x1A, 0xCF, 0x36, 0x42, 0x30, 0x1C, 0x88, 0x7F, 0x29, 0xE9, 0xCD, 0x96, 0xF2, 0x6A, + 0x52, 0xB2, 0x25, 0x87, 0x63, 0xDC, 0xFC, 0x72, 0xE4, 0xF8, 0x5E, 0xB1, 0x97, 0xB4, 0x1E, + 0x08, 0x90, 0x68, 0x10, 0x73, 0x7F, 0x94, 0x61, 0x48, 0x49, 0x36, 0x9B, 0x7D, 0xBD, 0xDF, + 0xCD, 0xB1, 0xA3, 0x7D, 0xFB, 0xDD, 0x97, 0x8A, 0x0D, 0xFC, 0x9A, 0xB8, 0xA9, 0x33, 0xB5, + 0x4E, 0x50, 0x3D, 0x60, 0x90, 0xEB, 0xAB, 0xB8, 0xCB, 0x6E, 0x32, 0xE4, 0x6B, 0xB0, 0x3F, + 0x57, 0xB8, 0xA4, 0x6A, 0x7C, 0x00, 0x66, 0x39, 0xB1, 0x22, 0xE2, 0x04, 0x26, 0xA1, 0x5A, + 0x17, 0xAA, 0x80, 0xB6, 0xC0, 0xF6, 0xCF, 0x7A, 0xF8, 0x60, 0xE9, 0x52, 0xB8, 0x0E, 0x08, + 0xC0, 0xD5, 0x1F, 0xAB, 0x61, 0x62, 0x1A, 0x83, 0xD1, 0x92, 0xE1, 0x4D, 0x6D, 0xDF, 0x27, + 0x0E, 0xFF, 0xF9, 0xA3, 0x36, 0xFF, 0x73, 0xEF, 0x1D, 0xAB, 0xAC, 0xBF, 0xA7, 0xB3, 0x29, + 0xD2, 0xB2, 0x37, 0xAB, 0x08, 0x7D, 0xB6, 0x7E, 0x0D, 0x25, 0xAA, 0x49, 0x29, 0x9F, 0x61, + 0x52, 0x44, 0x19, 0x1C, 0x51, 0x95, 0x74, 0xB9, 0x3D, 0xDD, 0x95, 0x2C, 0x4F, 0x30, 0x56, + 0xC9, 0xEF, 0x3D, 0x87, 0x90, 0x1E, 0xF8, 0x69, 0xFF, 0x37, 0x06, 0x27, 0xDB, 0x72, 0x82, + 0x2C, 0xDE, 0xB8, 0x39, 0x0B, 0x78, 0xB1, 0x1F, 0x37, 0x54, 0xBF, 0x21, 0x32, 0x87, 0xB4, + 0xD9, 0x49, 0x2D, 0x29, 0x19, 0x43, 0x01, 0xD4, 0xC0, 0xA3, 0xFF, 0x09, 0x6F, 0x69, 0xC8, + 0x5D, 0x35, 0x1D, 0x10, 0x09, 0x91, 0xB6, 0x12, 0xEC, 0x04, 0xA6, 0x61, 0xEF, 0x73, 0xC7, + 0x4C, 0x04, 0x8E, 0x3E, 0xAE, 0xD7, 0xC2, 0x84, 0x48, 0xAB, 0x99, 0x96, 0x75, 0xD8, 0xAD, + 0xA7, 0x5B, 0xDE, 0x72, 0x44, 0x96, 0xC5, 0xB3, 0xEB, 0x8E, 0xED, 0xD6, 0x69, 0x81, 0xE6, + 0x07, 0x3A, 0x15, 0x0D, 0x66, 0x5F, 0x36, 0xA9, 0xAB, 0x53, 0x82, 0x47, 0x98, 0x27, 0xF2, + 0x16, 0x95, 0x05, 0x0B, 0xAE, 0xF1, 0x04, 0x92, 0x80, 0x20, 0xA4, 0x9B, 0x43, 0x66, 0x70, + 0x7F, 0x45, 0x0B, 0x4B, 0x85, 0x95, 0x10, 0x09, 0xC8, 0xD9, 0xF9, 0x5D, 0x40, 0x6D, 0x07, + 0x69, 0x18, 0xF3, 0xD6, 0x98, 0x61, 0x25, 0x8E, 0xA1, 0xE2, 0x24, 0xBD, 0xF0, 0xFA, 0x89, + 0xD8, 0x68, 0xB2, 0x03, 0x81, 0x63, 0xF9, 0x42, 0xD4, 0x1A, 0xD9, 0x4D, 0xCD, 0x30, 0x36, + 0x2D, 0xB1, 0x63, 0xFC, 0xA3, 0x2B, 0xA7, 0x07, 0x50, 0xBC, 0x67, 0xAB, 0x7D, 0x33, 0x1D, + 0xEC, 0x62, 0xFE, 0xD2, 0x65, 0xAA, 0xBA, 0x37, 0xC9, 0x7F, 0x67, 0x26, 0x9D, 0x8A, 0x8B, + 0x63, 0x0B, 0xE0, 0x30, 0x65, 0x07, 0x8C, 0xF3, 0xD1, 0xCF, 0x0D, 0xB4, 0x1E, 0xF3, 0x29, + 0xBE, 0x43, 0x1F, 0x34, 0x1E, 0x52, 0x02, 0xA7, 0x8D, 0x30, 0x2E, 0x3E, 0x39, 0x00, 0xB6, + 0x7B, 0x5C, 0x29, 0x39, 0xC0, 0x0D, 0xAB, 0xA0, 0x6D, 0x77, 0x3C, 0xB2, 0x18, 0x42, 0x57, + 0x63, 0xDA, 0x9E, 0xF5, 0xE0, 0x42, 0x43, 0xF6, 0x50, 0xFD, 0x71, 0x9B, 0x30, 0xE0, 0x92, + 0x8B, 0xD1, 0xE1, 0xC4, 0x96, 0xC9, 0xF5, 0x14, 0xB6, 0xF7, 0xA5, 0x10, 0x77, 0xF4, 0xF9, + 0xAC, 0xDC, 0x45, 0xE1, 0x3C, 0xD6, 0x0B, 0xA5, 0xE2, 0x58, 0x01, 0x19, 0x39, 0x14, 0x68, + 0x96, 0xC0, 0xCE, 0xA9, 0xDE, 0x84, 0x22, 0x59, 0x87, 0x70, 0xFD, 0x8A, 0x71, 0x64, 0x79, + 0x16, 0x37, 0x80, 0x83, 0xFD, 0x9C, 0x73, 0xE6, 0x9C, 0x8B, 0xCD, 0xC0, 0x69, 0x66, 0x90, + 0x45, 0x0A, 0xC9, 0x81, 0x4A, 0xDA, 0x26, 0xDA, 0xA1, 0x70, 0x03, 0x6C, 0x36, 0x9D, 0xAD, + 0xD7, 0xE2, 0x1F, 0x27, 0xBE, 0xBB, 0xEC, 0x63, 0xD9, 0xC2, 0x2A, 0x56, 0x4D, 0x63, 0xCD, + 0x92, 0xEE, 0xAF, 0xCA, 0xD0, 0x11, 0x35, 0x2F, 0x1D, 0xF1, 0x96, 0xD1, 0xAA, 0xDC, 0xF6, + 0x14, 0x3F, 0xA0, 0xEE, 0x90, 0x83, 0x9F, 0x42, 0x40, 0xE6, 0x2C, 0x10, 0x23, 0x00, 0x23, + 0x18, 0x8C, 0xA1, 0x26, 0x4B, 0x22, 0xE1, 0x36, 0x07, 0x55, 0xCB, 0xC3, 0xD2, 0xDD, 0x12, + 0x58, 0x19, 0x75, 0x03, 0xC6, 0xD8, 0x2E, 0xCE, 0x87, 0x1C, 0xC3, 0x15, 0x44, 0x2A, 0x30, + 0x00, 0x52, 0x39, 0x31, 0x13, 0xF4, 0x25, 0x75, 0x74, 0x15, 0x6C, 0xC5, 0xC1, 0xD2, 0x33, + 0x75, 0xC2, 0x41, 0x22, 0x28, 0x95, 0xDF, 0x97, 0x6C, 0x31, 0xF8, 0x35, 0xA6, 0x54, 0x29, + 0x5C, 0xF4, 0x20, 0x97, 0x69, 0xE5, 0x46, 0xFF, 0x34, 0x24, 0x73, 0x12, 0xB8, 0x61, 0x25, + 0x46, 0xB3, 0x8F, 0xBA, 0x3C, 0xFA, 0x06, 0xFF, 0x3F, 0x66, 0x9D, 0x22, 0x55, 0x46, 0x2F, + 0xFF, 0x44, 0xDB, 0x25, 0x29, 0xE0, 0x16, 0x6E, 0xEC, 0x87, 0x97, 0x92, 0x37, 0x23, 0x0E, + 0x52, 0x4E, 0xBB, 0x10, 0xBB, 0x1C, 0x73, 0x75, 0xD1, 0x31, 0xC3, 0xAD, 0xFE, 0xB8, 0x12, + 0x50, 0xA0, 0x69, 0x91, 0x36, 0xEA, 0x5F, 0x0D, 0xEC, 0x1A, 0x23, 0x4A, 0x7D, 0x94, 0x84, + 0xC8, 0x4A, 0x58, 0x6A, 0xA1, 0xA3, 0x75, 0xCA, 0x85, 0xE7, 0x96, 0x91, 0x07, 0x05, 0x3A, + 0x57, 0x61, 0x6A, 0x6F, 0xF1, 0xEF, 0xF7, 0xB3, 0xB1, 0x09, 0xB8, 0x91, 0xA8, 0xF9, 0x57, + 0xB8, 0x63, 0x95, 0xFF, 0xB4, 0x1C, 0x96, 0xE7, 0xE5, 0xEC, 0x06, 0x3A, 0x11, 0xE6, 0x81, + 0xAB, 0x23, 0xE4, 0x5E, 0x5A, 0xB6, 0x6B, 0x69, 0x62, 0x6F, 0x9D, 0xC4, 0x08, 0x6F, 0xA6, + 0xBE, 0x4D, 0x09, 0x12, 0x77, 0xCA, 0xDD, 0xB5, 0x2D, 0x66, 0xCB, 0x4F, 0x4F, 0x11, 0xF2, + 0x3A, 0x1A, 0x97, 0x1F, 0xFE, 0x50, 0x2F, 0x19, 0x32, 0x05, 0x45, 0xA0, 0x50, 0x60, 0x58, + 0x40, 0x40, 0x3D, 0xF6, 0xC3, 0x6F, 0x07, 0xC8, 0x26, 0x26, 0x0E, 0x42, 0x22, 0x96, 0x6D, + 0xFE, 0x95, 0x53, 0x70, 0xDC, 0x92, 0x12, 0x63, 0xFD, 0xA3, 0x7D, 0x6E, 0x44, 0xCD, 0x11, + 0x2C, 0x51, 0x6F, 0xBC, 0x50, 0xFC, 0x1C, 0xC8, 0x3A, 0x28, 0xF5, 0x39, 0xF8, 0x8C, 0x60, + 0x5D, 0xA5, 0x4A, 0xFA, 0xAB, 0x04, 0x7F, 0x34, 0x91, 0x53, 0xE7, 0x6C, 0x56, 0xC6, 0x14, + 0xE4, 0xCC, 0xE4, 0xBB, 0x6E, 0x47, 0x7A, 0x46, 0x6B, 0xE2, 0x88, 0xA0, 0xBD, 0xBD, 0xCC, + 0x51, 0xF3, 0x37, 0x4B, 0xB3, 0xA0, 0x19, 0x92, 0x48, 0x35, 0xBB, 0xBC, 0x79, 0x78, 0xFF, + 0x49, 0xC1, 0x2B, 0x93, 0xDF, 0x75, 0xA7, 0xFB, 0x94, 0x89, 0xAF, 0x50, 0x5E, 0x2D, 0xE1, + 0x78, 0x60, 0x0C, 0xDF, 0xF8, 0x7C, 0xFD, 0xCD, 0x2D, 0xE2, 0xFF, 0xD3, 0xA3, 0x4A, 0x48, + 0x0D, 0x40, 0x8F, 0x03, 0x4F, 0x2C, 0xBD, 0xFA, 0x2E, 0x16, 0xC3, 0xD4, 0xFD, 0x0B, 0xB3, + 0xBD, 0x4F, 0x30, 0xAD, 0xD0, 0xAE, 0xCA, 0x77, 0x9D, 0xDD, 0x3D, 0xA3, 0x66, 0xD0, 0xC1, + 0x6D, 0xCC, 0x3B, 0x56, 0x81, 0x5D, 0x80, 0x07, 0xD8, 0x84, 0x46, 0x71, 0x40, 0x57, 0xB3, + 0x44, 0x85, 0x63, 0x4E, 0x17, 0x2C, 0xB0, 0x21, 0x98, 0x43, 0x42, 0x04, 0x18, 0x84, 0xFA, + 0xB1, 0xD7, 0xC5, 0x5C, 0xCA, 0x25, 0x8B, 0x1A, 0x7A, 0x50, 0x60, 0x68, 0x4A, 0x30, 0xEA, + 0xE6, 0xDE, 0x19, 0xBB, 0x9F, 0x47, 0xEF, 0xDB, 0xC5, 0x81, 0x72, 0xF0, 0x8D, 0xBA, 0x74, + 0x3A, 0xD1, 0xD5, 0xC6, 0xD1, 0xE0, 0xAE, 0x28, 0x2A, 0x65, 0xE5, 0x0B, 0x09, 0xFA, 0xEA, + 0x5B, 0xA6, 0xDB, 0x38, 0xD8, 0x67, 0xC0, 0xBE, 0xA1, 0x12, 0x1C, 0x03, 0xB1, 0x81, 0xB8, + 0x95, 0xDD, 0x78, 0xF8, 0x16, 0x6E, 0xAB, 0xBB, 0xAA, 0x33, 0x54, 0x0E, 0x39, 0x83, 0x24, + 0x17, 0xB3, 0x0B, 0x3C, 0xA1, 0x62, 0x21, 0xB2, 0xA0, 0xF8, 0x49, 0xAB, 0x8B, 0x80, 0xC6, + 0x3D, 0xF1, 0x2E, 0x18, 0x44, 0x74, 0x5F, 0x98, 0x92, 0x33, 0xFB, 0xB2, 0x52, 0x6B, 0x97, + 0xE9, 0x48, 0x12, 0x91, 0x32, 0x50, 0x21, 0x75, 0x74, 0x69, 0x88, 0x54, 0xC6, 0xF3, 0xC9, + 0x37, 0x3C, 0xB3, 0x89, 0xAB, 0x33, 0x1F, 0x79, 0x57, 0xF7, 0xE4, 0xB5, 0x87, 0x0C, 0xA4, + 0x99, 0x48, 0x89, 0x63, 0x5F, 0x72, 0xA1, 0xBC, 0xFF, 0xFE, 0xF8, 0xB3, 0xF1, 0x00, 0xE4, + 0xD4, 0x01, 0x9B, 0xB7, 0x2E, 0x4F, 0xA0, 0x90, 0xE4, 0x9B, 0x6A, 0xA8, 0xBA, 0xE1, 0xD3, + 0xD5, 0xBC, 0xEB, 0xC5, 0xB2, 0x89, 0xB4, 0xE9, 0x4D, 0x3F, 0x4C, 0xFA, 0x8C, 0xCB, 0xCD, + 0x22, 0x08, 0xB8, 0xC7, 0xB3, 0xA3, 0xED, 0x6B, 0xAC, 0xF3, 0x2D, 0x98, 0x70, 0x41, 0x47, + 0x85, 0xE8, 0x6E, 0x31, 0x0A, 0xC2, 0x3E, 0x51, 0x39, 0x55, 0xF8, 0x4A, 0xE9, 0x48, 0x64, + 0x01, 0xDB, 0x8D, 0xE3, 0xAF, 0xA4, 0xB9, 0xD8, 0x19, 0xCA, 0x86, 0xCA, 0xA1, 0x6C, 0x1C, + 0x12, 0x3D, 0xA1, 0x02, 0x23, 0x1D, 0x29, 0x5D, 0x94, 0x04, 0xC6, 0x51, 0x01, 0x40, 0x0B, + 0xB3, 0x69, 0x25, 0x45, 0xEF, 0x43, 0x81, 0x4F, 0x97, 0x57, 0x0D, 0xA1, 0xA5, 0xC9, 0x9D, + 0xE6, 0x56, 0xB9, 0x38, 0x93, 0xA1, 0x78, 0xC5, 0xBF, 0x75, 0xFE, 0x81, 0x6A, 0x35, 0x64, + 0x89, 0x64, 0x43, 0x75, 0xFD, 0x29, 0x63, 0xD1, 0x15, 0xAB, 0x43, 0x60, 0x65, 0xDC, 0x98, + 0xD5, 0xC7, 0x6E, 0xF9, 0xB2, 0x38, 0xFB, 0x6E, 0xB0, 0x34, 0x9C, 0xA3, 0x73, 0x61, 0xF5, + 0x51, 0xFF, 0x1F, 0xCE, 0xB0, 0x08, 0x83, 0x29, 0xB3, 0x82, 0x07, 0xFA, 0xC4, 0xE5, 0x21, + 0xD3, 0xA0, 0xD4, 0xC0, 0xF8, 0x1A, 0x65, 0x9B, 0x35, 0x7A, 0xE3, 0x32, 0xA5, 0x4D, 0x77, + 0x1F, 0x23, 0x19, 0xCC, 0xE1, 0xB3, 0x50, 0x0D, 0xE8, 0x2F, 0x8B, 0x18, 0x89, 0x61, 0xCB, + 0x22, 0xBA, 0xE0, 0x4A, 0xA2, 0x7F, 0xA5, 0x1B, 0x45, 0x59, 0x33, 0xC4, 0x73, 0xDF, 0x42, + 0xC6, 0x00, 0x11, 0x37, 0xF2, 0x3C, 0x1B, 0xF4, 0x26, 0xD1, 0x6D, 0x93, 0xC1, 0x94, 0xD2, + 0x60, 0xE5, 0xF3, 0x91, 0x66, 0x92, 0x3C, 0x65, 0x27, 0xC1, 0x83, 0x13, 0x76, 0x5A, 0x88, + 0xEC, 0xB2, 0x59, 0x95, 0x18, 0x81, 0x2E, 0x94, 0x96, 0x53, 0x17, 0xB6, 0xFD, 0x8C, 0xCC, + 0xBE, 0x8D, 0x36, 0xB3, 0xC8, 0xF2, 0xB2, 0xBE, 0x0F, 0x12, 0x99, 0xFF, 0xFA, 0xF9, 0x18, + 0xAB, 0x30, 0xFA, 0xB1, 0x5B, 0xF2, 0xEE, 0xCA, 0x6E, 0xA1, 0xD9, 0xCE, 0xCC, 0x60, 0xA0, + 0x4D, 0xFD, 0x7C, 0xAD, 0x4D, 0x50, 0xB6, 0x88, 0x0D, 0x88, 0x3B, 0x28, 0x7F, 0xA1, 0x28, + 0x41, 0x0A, 0x43, 0xAD, 0xCC, 0x08, 0x14, 0xF3, 0xF2, 0x43, 0xE7, 0xCF, 0x6A, 0x5C, 0x11, + 0xD0, 0x6D, 0x99, 0xC8, 0x4F, 0xB1, 0x14, 0x06, 0xBC, 0x68, 0x6D, 0xBE, 0xCD, 0xD7, 0x58, + 0xA2, 0x17, 0xF5, 0x9E, 0xFD, 0xDA, 0xFA, 0xBF, 0x73, 0x57, 0x4A, 0xF8, 0xF3, 0xA9, 0x94, + 0xB3, 0x01, 0xE9, 0xA3, 0xDA, 0xEA, 0xC1, 0x40, 0x33, 0xAA, 0x3F, 0xE6, 0x0D, 0x6A, 0xE2, + 0xF3, 0x74, 0xE8, 0x1B, 0x3C, 0x2B, 0x25, 0x44, 0x8E, 0x1C, 0x36, 0xBE, 0xA9, 0x27, 0x6E, + 0x6A, 0x48, 0x8E, 0x2F, 0x2C, 0x9D, 0x71, 0x66, 0x23, 0x7C, 0x7A, 0x74, 0x93, 0x46, 0x2D, + 0xCA, 0x6B, 0xC6, 0x33, 0xDA, 0x1E, 0x1E, 0x44, 0x07, 0xFD, 0x89, 0x5D, 0x30, 0x02, 0x4C, + 0xB1, 0x73, 0xC0, 0x91, 0xEB, 0xA5, 0x61, 0x89, 0xA4, 0x04, 0xFD, 0xD5, 0x5F, 0x54, 0x59, + 0x81, 0xC3, 0x2A, 0x13, 0x89, 0xDA, 0x68, 0xB6, 0x3A, 0x9C, 0x70, 0x6F, 0x48, 0xB4, 0x3C, + 0xF8, 0x9B, 0xF8, 0xF2, 0x59, 0xBF, 0xF4, 0x8D, 0x06, 0x58, 0xEA, 0xA2, 0xA6, 0xB4, 0x70, + 0x08, 0x80, 0x2B, 0x50, 0x13, 0x36, 0x79, 0x17, 0x0B, 0x94, 0x0E, 0x4D, 0xF5, 0xC8, 0x14, + 0xB9, 0x02, 0x7D, 0xEE, 0x6B, 0xBD, 0x10, 0xB4, 0x85, 0x74, 0xA1, 0xB9, 0x84, 0x67, 0xC6, + 0x2C, 0xDB, 0xDA, 0x55, 0x54, 0x16, 0xDA, 0x02, 0xB6, 0xDA, 0x2A, 0x9B, 0x51, 0xD6, 0xDC, + 0x87, 0x80, 0xC1, 0xB8, 0x6F, 0x0C, 0xEF, 0x4B, 0xD1, 0x1A, 0x9F, 0x36, 0x2E, 0x9C, 0x7E, + 0x5F, 0x17, 0xE2, 0xC1, 0x82, 0x0C, 0x42, 0x0D, 0x15, 0x18, 0xCA, + ], +]; diff --git a/crates/trigger-cryptography/src/rsa.rs b/crates/trigger-cryptography/src/rsa.rs new file mode 100644 index 0000000..ae09363 --- /dev/null +++ b/crates/trigger-cryptography/src/rsa.rs @@ -0,0 +1,40 @@ +use rsa::{ + pkcs1v15::SigningKey, sha2::Sha256, signature::RandomizedSigner, Pkcs1v15Encrypt, + RsaPrivateKey, RsaPublicKey, +}; + +const RSA_CHUNK_SIZE: usize = 117; + +pub fn encrypt(public_key: &[u8], data: &[u8]) -> Vec { + let public_key: RsaPublicKey = rsa::pkcs8::DecodePublicKey::from_public_key_der(public_key) + .expect("Failed to read public key from der"); + let mut rng = rand::thread_rng(); + + let mut result: Vec = Vec::new(); + for chunk in data.chunks(RSA_CHUNK_SIZE) { + let encrypted_chunk = public_key + .encrypt(&mut rng, Pkcs1v15Encrypt, chunk) + .expect("Encryption failed"); + + result.extend(encrypted_chunk); + } + + result +} + +pub fn sign(private_key: &[u8], data: &[u8]) -> Box<[u8]> { + let private_key = rsa::pkcs8::DecodePrivateKey::from_pkcs8_der(private_key) + .expect("Failed to read pkcs8 private key"); + let signing_key = SigningKey::::new(private_key); + + signing_key + .sign_with_rng(&mut rand::thread_rng(), data) + .into() +} + +pub fn decrypt(private_key: &[u8], cipher: &[u8]) -> Option> { + let private_key: RsaPrivateKey = rsa::pkcs8::DecodePrivateKey::from_pkcs8_der(private_key) + .expect("Failed to read pkcs8 private key"); + + private_key.decrypt(Pkcs1v15Encrypt, cipher).ok() +} diff --git a/crates/trigger-database/Cargo.toml b/crates/trigger-database/Cargo.toml new file mode 100644 index 0000000..ce0fa7c --- /dev/null +++ b/crates/trigger-database/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "trigger-database" +edition = "2024" +version.workspace = true + +[dependencies] +sea-orm.workspace = true +serde.workspace = true +tracing.workspace = true + +entity = { path = "entity" } +migration = { path = "migration" } diff --git a/crates/trigger-database/entity/Cargo.toml b/crates/trigger-database/entity/Cargo.toml new file mode 100644 index 0000000..ce18bf3 --- /dev/null +++ b/crates/trigger-database/entity/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "entity" +version = "0.1.0" +edition = "2021" + +[dependencies] +sea-orm.workspace = true diff --git a/crates/trigger-database/entity/src/account_uid.rs b/crates/trigger-database/entity/src/account_uid.rs new file mode 100644 index 0000000..f209ed1 --- /dev/null +++ b/crates/trigger-database/entity/src/account_uid.rs @@ -0,0 +1,15 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_account_uid")] +pub struct Model { + #[sea_orm(primary_key)] + pub player_uid: i32, + #[sea_orm(unique)] + pub account_uid: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/archive_data.rs b/crates/trigger-database/entity/src/archive_data.rs new file mode 100644 index 0000000..7f84d29 --- /dev/null +++ b/crates/trigger-database/entity/src/archive_data.rs @@ -0,0 +1,14 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_archive_data")] +pub struct Model { + #[sea_orm(primary_key)] + pub owner_player_uid: i32, + pub hollow_archive_id_list: Vec, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/archive_videotape_data.rs b/crates/trigger-database/entity/src/archive_videotape_data.rs new file mode 100644 index 0000000..46d48ce --- /dev/null +++ b/crates/trigger-database/entity/src/archive_videotape_data.rs @@ -0,0 +1,15 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_archive_videotape_data")] +pub struct Model { + #[sea_orm(primary_key)] + pub owner_player_uid: i32, + #[sea_orm(primary_key)] + pub archive_file_id: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/auto_recovery_data.rs b/crates/trigger-database/entity/src/auto_recovery_data.rs new file mode 100644 index 0000000..a12c204 --- /dev/null +++ b/crates/trigger-database/entity/src/auto_recovery_data.rs @@ -0,0 +1,17 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_auto_recovery_data")] +pub struct Model { + #[sea_orm(primary_key)] + pub owner_player_uid: i32, + #[sea_orm(primary_key)] + pub id: i32, + pub last_recovery_timestamp: i64, + pub buy_times: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/avatar.rs b/crates/trigger-database/entity/src/avatar.rs new file mode 100644 index 0000000..a58ea74 --- /dev/null +++ b/crates/trigger-database/entity/src/avatar.rs @@ -0,0 +1,28 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_avatar_data")] +pub struct Model { + #[sea_orm(primary_key)] + pub owner_player_uid: i32, + #[sea_orm(primary_key)] + pub avatar_id: i32, + pub level: i16, + pub exp: i32, + pub rank: i16, + pub passive_skill_level: i16, + pub skill_type_level: Vec, + pub unlocked_talent_num: i16, + pub talent_switch: i16, + pub cur_weapon_uid: i32, + pub equip_slot_list: Vec, + pub taken_rank_up_reward_list: Vec, + pub first_get_time: i64, + pub show_weapon_type: i16, + pub avatar_skin_id: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/cafe_data.rs b/crates/trigger-database/entity/src/cafe_data.rs new file mode 100644 index 0000000..724275a --- /dev/null +++ b/crates/trigger-database/entity/src/cafe_data.rs @@ -0,0 +1,16 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_cafe_data")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub player_uid: i32, + pub cafe_item_list: Vec, + pub cur_cafe_item: i32, + pub last_drink_timestamp: i64, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/equipment.rs b/crates/trigger-database/entity/src/equipment.rs new file mode 100644 index 0000000..5f9fcad --- /dev/null +++ b/crates/trigger-database/entity/src/equipment.rs @@ -0,0 +1,22 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_equipment_data")] +pub struct Model { + #[sea_orm(primary_key)] + pub owner_player_uid: i32, + #[sea_orm(primary_key)] + pub equip_uid: i32, + pub equip_id: i32, + pub level: i16, + pub exp: i32, + pub star: i16, + pub lock: bool, + pub properties: Vec, + pub sub_properties: Vec, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/hollow_data.rs b/crates/trigger-database/entity/src/hollow_data.rs new file mode 100644 index 0000000..c64d501 --- /dev/null +++ b/crates/trigger-database/entity/src/hollow_data.rs @@ -0,0 +1,15 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_hollow_data")] +pub struct Model { + #[sea_orm(primary_key)] + pub owner_player_uid: i32, + pub unlock_hollow_group_list: Vec, + pub unlock_hollow_id_list: Vec, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/hollow_info.rs b/crates/trigger-database/entity/src/hollow_info.rs new file mode 100644 index 0000000..becea81 --- /dev/null +++ b/crates/trigger-database/entity/src/hollow_info.rs @@ -0,0 +1,15 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_hollow_info")] +pub struct Model { + #[sea_orm(primary_key)] + pub owner_player_uid: i32, + #[sea_orm(primary_key)] + pub hollow_id: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/lib.rs b/crates/trigger-database/entity/src/lib.rs new file mode 100644 index 0000000..d94b850 --- /dev/null +++ b/crates/trigger-database/entity/src/lib.rs @@ -0,0 +1,18 @@ +pub mod account_uid; +pub mod archive_data; +pub mod archive_videotape_data; +pub mod auto_recovery_data; +pub mod avatar; +pub mod cafe_data; +pub mod equipment; +pub mod hollow_data; +pub mod hollow_info; +pub mod material; +pub mod player_basic_info; +pub mod player_item_uid; +pub mod player_world_info; +pub mod quest_collection; +pub mod quest_info; +pub mod ramen_data; +pub mod scene_info; +pub mod weapon; diff --git a/crates/trigger-database/entity/src/material.rs b/crates/trigger-database/entity/src/material.rs new file mode 100644 index 0000000..86d7550 --- /dev/null +++ b/crates/trigger-database/entity/src/material.rs @@ -0,0 +1,16 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_material_data")] +pub struct Model { + #[sea_orm(primary_key)] + pub owner_player_uid: i32, + #[sea_orm(primary_key)] + pub id: i32, + pub num: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/player_basic_info.rs b/crates/trigger-database/entity/src/player_basic_info.rs new file mode 100644 index 0000000..5537285 --- /dev/null +++ b/crates/trigger-database/entity/src/player_basic_info.rs @@ -0,0 +1,19 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_player_basic_info")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub player_uid: i32, + pub nick_name: String, + pub level: i32, + pub exp: i32, + pub avatar_id: i32, + pub player_avatar_id: i32, + pub control_avatar_id: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/player_item_uid.rs b/crates/trigger-database/entity/src/player_item_uid.rs new file mode 100644 index 0000000..bece399 --- /dev/null +++ b/crates/trigger-database/entity/src/player_item_uid.rs @@ -0,0 +1,14 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_player_item_uid")] +pub struct Model { + #[sea_orm(primary_key)] + pub player_uid: i32, + pub last_item_uid: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/player_world_info.rs b/crates/trigger-database/entity/src/player_world_info.rs new file mode 100644 index 0000000..6d15dbd --- /dev/null +++ b/crates/trigger-database/entity/src/player_world_info.rs @@ -0,0 +1,17 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_player_world_info")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub player_uid: i32, + pub last_enter_world_timestamp: i64, + pub default_scene_uid: i64, + pub current_scene_uid: i64, + pub back_scene_uid: i64, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/quest_collection.rs b/crates/trigger-database/entity/src/quest_collection.rs new file mode 100644 index 0000000..788b0a9 --- /dev/null +++ b/crates/trigger-database/entity/src/quest_collection.rs @@ -0,0 +1,16 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_quest_collection")] +pub struct Model { + #[sea_orm(primary_key)] + pub owner_player_uid: i32, + #[sea_orm(primary_key)] + pub quest_type: i32, + pub finished_quest_id_list: Vec, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/quest_info.rs b/crates/trigger-database/entity/src/quest_info.rs new file mode 100644 index 0000000..90a597d --- /dev/null +++ b/crates/trigger-database/entity/src/quest_info.rs @@ -0,0 +1,18 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_quest_info")] +pub struct Model { + #[sea_orm(primary_key)] + pub owner_player_uid: i32, + #[sea_orm(primary_key)] + pub quest_type: i32, + #[sea_orm(primary_key)] + pub quest_id: i32, + pub unlock_time: i64, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/ramen_data.rs b/crates/trigger-database/entity/src/ramen_data.rs new file mode 100644 index 0000000..0d0cd31 --- /dev/null +++ b/crates/trigger-database/entity/src/ramen_data.rs @@ -0,0 +1,16 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_ramen_data")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub player_uid: i32, + pub unlock_ramen_list: Vec, + pub cur_ramen: i32, + pub eat_ramen_times: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/scene_info.rs b/crates/trigger-database/entity/src/scene_info.rs new file mode 100644 index 0000000..d1d0b7e --- /dev/null +++ b/crates/trigger-database/entity/src/scene_info.rs @@ -0,0 +1,17 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_scene_info")] +pub struct Model { + #[sea_orm(primary_key)] + pub scene_uid: i64, + pub owner_player_uid: i32, + pub scene_type: i16, + pub to_be_destroyed: bool, + pub ext: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/entity/src/weapon.rs b/crates/trigger-database/entity/src/weapon.rs new file mode 100644 index 0000000..d9455bd --- /dev/null +++ b/crates/trigger-database/entity/src/weapon.rs @@ -0,0 +1,21 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "t_weapon_data")] +pub struct Model { + #[sea_orm(primary_key)] + pub owner_player_uid: i32, + #[sea_orm(primary_key)] + pub weapon_uid: i32, + pub weapon_id: i32, + pub level: i16, + pub exp: i32, + pub star: i16, + pub refine_level: i16, + pub lock: bool, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/trigger-database/migration/Cargo.toml b/crates/trigger-database/migration/Cargo.toml new file mode 100644 index 0000000..58352f2 --- /dev/null +++ b/crates/trigger-database/migration/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "migration" +version = "0.1.0" +edition = "2021" +publish = false + +[lib] +name = "migration" +path = "src/lib.rs" + +[dependencies] +async-std = { version = "1", features = ["attributes", "tokio1"] } +entity = { path = "../entity" } + +[dependencies.sea-orm-migration] +version = "1.1.4" +features = [ + "runtime-tokio-rustls", # `ASYNC_RUNTIME` feature + "sqlx-postgres", # `DATABASE_DRIVER` feature +] diff --git a/crates/trigger-database/migration/README.md b/crates/trigger-database/migration/README.md new file mode 100644 index 0000000..3b438d8 --- /dev/null +++ b/crates/trigger-database/migration/README.md @@ -0,0 +1,41 @@ +# Running Migrator CLI + +- Generate a new migration file + ```sh + cargo run -- generate MIGRATION_NAME + ``` +- Apply all pending migrations + ```sh + cargo run + ``` + ```sh + cargo run -- up + ``` +- Apply first 10 pending migrations + ```sh + cargo run -- up -n 10 + ``` +- Rollback last applied migrations + ```sh + cargo run -- down + ``` +- Rollback last 10 applied migrations + ```sh + cargo run -- down -n 10 + ``` +- Drop all tables from the database, then reapply all migrations + ```sh + cargo run -- fresh + ``` +- Rollback all applied migrations, then reapply all migrations + ```sh + cargo run -- refresh + ``` +- Rollback all applied migrations + ```sh + cargo run -- reset + ``` +- Check the status of all migrations + ```sh + cargo run -- status + ``` diff --git a/crates/trigger-database/migration/src/lib.rs b/crates/trigger-database/migration/src/lib.rs new file mode 100644 index 0000000..55c1944 --- /dev/null +++ b/crates/trigger-database/migration/src/lib.rs @@ -0,0 +1,12 @@ +pub use sea_orm_migration::prelude::*; + +mod m20250201_194424_create_table; + +pub struct Migrator; + +#[async_trait::async_trait] +impl MigratorTrait for Migrator { + fn migrations() -> Vec> { + vec![Box::new(m20250201_194424_create_table::Migration)] + } +} diff --git a/crates/trigger-database/migration/src/m20250201_194424_create_table.rs b/crates/trigger-database/migration/src/m20250201_194424_create_table.rs new file mode 100644 index 0000000..0f90baa --- /dev/null +++ b/crates/trigger-database/migration/src/m20250201_194424_create_table.rs @@ -0,0 +1,51 @@ +use sea_orm::Schema; +use sea_orm_migration::prelude::*; + +#[derive(DeriveMigrationName)] +pub struct Migration; + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + let builder = manager.get_database_backend(); + let schema = Schema::new(builder); + + tables! { + (manager, schema) + account_uid; + player_basic_info; + player_world_info; + player_item_uid; + quest_collection; + quest_info; + archive_data; + archive_videotape_data; + hollow_data; + hollow_info; + avatar; + material; + weapon; + equipment; + auto_recovery_data; + scene_info; + ramen_data; + cafe_data; + } + + Ok(()) + } + + async fn down(&self, _manager: &SchemaManager) -> Result<(), DbErr> { + todo!() + } +} + +macro_rules! tables { + (($manager:expr, $schema:expr) $($name:ident;)*) => { + $($manager + .create_table($schema.create_table_from_entity(entity::$name::Entity)) + .await?;)* + }; +} + +use tables; diff --git a/crates/trigger-database/migration/src/main.rs b/crates/trigger-database/migration/src/main.rs new file mode 100644 index 0000000..c6b6e48 --- /dev/null +++ b/crates/trigger-database/migration/src/main.rs @@ -0,0 +1,6 @@ +use sea_orm_migration::prelude::*; + +#[async_std::main] +async fn main() { + cli::run_cli(migration::Migrator).await; +} diff --git a/crates/trigger-database/src/lib.rs b/crates/trigger-database/src/lib.rs new file mode 100644 index 0000000..5082333 --- /dev/null +++ b/crates/trigger-database/src/lib.rs @@ -0,0 +1,48 @@ +use std::fmt; + +use migration::{Migrator, MigratorTrait}; +use sea_orm::Database; +use serde::Deserialize; + +pub use entity; +pub use sea_orm::DatabaseConnection; +pub use sea_orm::DbErr; +use tracing::error; + +pub mod prelude { + pub use sea_orm::entity::prelude::*; + pub use sea_orm::entity::ActiveValue::*; + pub use sea_orm::query::Condition; + pub use sea_orm::TransactionTrait; +} + +#[derive(Debug, Deserialize)] +pub struct DatabaseSetting { + pub end_point: String, + pub database: String, + pub user: String, + pub password: String, +} + +pub async fn connect(database_setting: &DatabaseSetting) -> Result { + let connection = Database::connect(&database_setting.to_string()).await.map_err(|err| { + error!("Failed to connect to PostgreSQL. Please recheck [database] section in environment configuration. Error: {err}"); + })?; + + Migrator::up(&connection, None).await.map_err(|err| { + error!("Failed to apply pending migrations to the database. Error: {err}"); + error!("You probably just broke your database. Congratulations."); + })?; + + Ok(connection) +} + +impl fmt::Display for DatabaseSetting { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "postgres://{}:{}@{}/{}", + &self.user, &self.password, &self.end_point, &self.database + ) + } +} diff --git a/crates/trigger-encoding/Cargo.toml b/crates/trigger-encoding/Cargo.toml new file mode 100644 index 0000000..d139550 --- /dev/null +++ b/crates/trigger-encoding/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "trigger-encoding" +edition = "2024" +version.workspace = true + +[dependencies] +paste.workspace = true +byteorder.workspace = true diff --git a/crates/trigger-encoding/src/lib.rs b/crates/trigger-encoding/src/lib.rs new file mode 100644 index 0000000..15982ee --- /dev/null +++ b/crates/trigger-encoding/src/lib.rs @@ -0,0 +1,245 @@ +use byteorder::{ReadBytesExt, WriteBytesExt, BE}; +use std::collections::HashMap; +use std::io::{self, Read, Write}; + +pub trait Encodeable { + fn encode(&self, w: &mut W) -> io::Result<()>; + fn encoding_length(&self) -> usize; + + fn encode_to_vec(&self) -> Vec { + let mut buf = Vec::with_capacity(self.encoding_length()); + self.encode(&mut std::io::Cursor::new(&mut buf)).unwrap(); + + buf + } +} + +pub trait Decodeable: Sized { + fn decode(r: &mut R) -> io::Result; +} + +macro_rules! impl_primitives { + ($($ty:ident),*) => { + $(impl Encodeable for $ty { + fn encode(&self, w: &mut W) -> io::Result<()> { + paste::paste!(w.[]::(*self)) + } + + fn encoding_length(&self) -> usize { + $ty::BITS as usize / 8 + } + } + + impl Decodeable for $ty { + fn decode(r: &mut R) -> io::Result { + paste::paste!(r.[]::()) + } + })* + }; +} + +impl_primitives! { + u16, u32, u64, + i16, i32, i64 +} + +// u8 +impl Encodeable for u8 { + fn encode(&self, w: &mut W) -> io::Result<()> { + w.write_u8(*self) + } + + fn encoding_length(&self) -> usize { + 1 + } +} + +impl Decodeable for u8 { + fn decode(r: &mut R) -> io::Result { + r.read_u8() + } +} + +// i8 +impl Encodeable for i8 { + fn encode(&self, w: &mut W) -> io::Result<()> { + w.write_i8(*self) + } + + fn encoding_length(&self) -> usize { + 1 + } +} + +impl Decodeable for i8 { + fn decode(r: &mut R) -> io::Result { + r.read_i8() + } +} + +// bool +impl Encodeable for bool { + fn encode(&self, w: &mut W) -> io::Result<()> { + (*self as u8).encode(w) + } + + fn encoding_length(&self) -> usize { + 1 + } +} + +impl Decodeable for bool { + fn decode(r: &mut R) -> io::Result { + Ok(u8::decode(r)? != 0) + } +} + +// f32 + +impl Encodeable for f32 { + fn encode(&self, w: &mut W) -> io::Result<()> { + self.to_bits().encode(w) + } + + fn encoding_length(&self) -> usize { + 4 + } +} + +impl Decodeable for f32 { + fn decode(r: &mut R) -> io::Result { + Ok(Self::from_bits(Decodeable::decode(r)?)) + } +} + +// f64 + +impl Encodeable for f64 { + fn encode(&self, w: &mut W) -> io::Result<()> { + self.to_bits().encode(w) + } + + fn encoding_length(&self) -> usize { + 8 + } +} + +impl Decodeable for f64 { + fn decode(r: &mut R) -> io::Result { + Ok(Self::from_bits(Decodeable::decode(r)?)) + } +} + +// String +impl Encodeable for String { + fn encode(&self, w: &mut W) -> io::Result<()> { + (self.len() as u32).encode(w)?; + w.write_all(self.as_bytes()) + } + + fn encoding_length(&self) -> usize { + 4 + self.len() + } +} + +impl Decodeable for String { + fn decode(r: &mut R) -> io::Result { + let length = u32::decode(r)?; + let mut data = vec![0u8; length as usize]; + r.read_exact(&mut data)?; + + // TODO: maybe we want custom error type to combine io error and this one? + Ok(String::from_utf8(data).expect("failed to decode string as UTF-8")) + } +} + +// Vec +impl Encodeable for Vec +where + T: Encodeable, +{ + fn encode(&self, w: &mut W) -> io::Result<()> { + (self.len() as u32).encode(w)?; + self.iter().try_for_each(|item| item.encode(w)) + } + + fn encoding_length(&self) -> usize { + self.iter() + .fold(4, |length, item| length + item.encoding_length()) + } +} + +impl Decodeable for Vec +where + T: Decodeable, +{ + fn decode(r: &mut R) -> io::Result { + (0..u32::decode(r)?) + .map(|_| T::decode(r)) + .collect::, _>>() + } +} + +// Option +impl Encodeable for Option +where + T: Encodeable, +{ + fn encode(&self, w: &mut W) -> io::Result<()> { + self.is_some().encode(w)?; + self.as_ref().map(|item| item.encode(w)).unwrap_or(Ok(())) + } + + fn encoding_length(&self) -> usize { + self.as_ref() + .iter() + .fold(1, |length, item| length + item.encoding_length()) + } +} + +impl Decodeable for Option +where + T: Decodeable, +{ + fn decode(r: &mut R) -> io::Result { + (bool::decode(r)?).then(|| T::decode(r)).transpose() + } +} + +// HashMap +impl Encodeable for HashMap +where + K: Encodeable, + V: Encodeable, +{ + fn encode(&self, w: &mut W) -> io::Result<()> { + (self.len() as u32).encode(w)?; + self.iter().try_for_each(|(k, v)| { + k.encode(w)?; + v.encode(w) + }) + } + + fn encoding_length(&self) -> usize { + self.iter() + .fold((self.len() as u32).encoding_length(), |len, (k, v)| { + len + k.encoding_length() + v.encoding_length() + }) + } +} + +impl Decodeable for HashMap +where + K: Decodeable + Eq + std::hash::Hash, + V: Decodeable, +{ + fn decode(r: &mut R) -> io::Result { + let len = u32::decode(r)?; + let mut map = HashMap::with_capacity(len as usize); + for _ in 0..len { + map.insert(K::decode(r)?, V::decode(r)?); + } + + Ok(map) + } +} diff --git a/crates/trigger-fileconfig/Cargo.toml b/crates/trigger-fileconfig/Cargo.toml new file mode 100644 index 0000000..2797a3b --- /dev/null +++ b/crates/trigger-fileconfig/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "trigger-fileconfig" +edition = "2024" +version.workspace = true + +[dependencies] +byteorder.workspace = true +flatbuffers.workspace = true + +paste.workspace = true +xxhash-rust.workspace = true + +const_format.workspace = true +blockfile = { path = "blockfile" } + +serde.workspace = true +serde_json.workspace = true + +[build-dependencies] +flatc-rust.workspace = true diff --git a/crates/trigger-fileconfig/blockfile/Cargo.toml b/crates/trigger-fileconfig/blockfile/Cargo.toml new file mode 100644 index 0000000..718f551 --- /dev/null +++ b/crates/trigger-fileconfig/blockfile/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "blockfile" +version = "0.1.0" +edition = "2021" + +[dependencies] +byteorder.workspace = true +lz4_flex.workspace = true +aes.workspace = true +ecb.workspace = true diff --git a/crates/trigger-fileconfig/blockfile/src/lib.rs b/crates/trigger-fileconfig/blockfile/src/lib.rs new file mode 100644 index 0000000..e4e0f0c --- /dev/null +++ b/crates/trigger-fileconfig/blockfile/src/lib.rs @@ -0,0 +1,111 @@ +mod magic; +mod unpack; +mod util; + +use std::{ + collections::HashMap, + io::{Cursor, Read, Seek}, +}; + +use byteorder::{ReadBytesExt, BE, LE}; +pub use unpack::unpack_blk_raw; + +pub struct ArchiveFile { + data: Box<[u8]>, + file_map: HashMap, +} + +impl ArchiveFile { + pub fn from_raw(data: Box<[u8]>) -> std::io::Result { + let mut reader = Cursor::new(&data); + + // Skip unity slop + let header_size = reader.read_u32::()?; + reader.seek_relative(header_size as i64)?; + + while let Ok(b) = reader.read_u8() { + if b != 0 { + reader.seek_relative(-1)?; + break; + } + } + + let mut file_map = HashMap::new(); + + // read to end + while reader.read_u8().is_ok() { + reader.seek_relative(-1)?; + + let file_name = reader.read_string()?; + let mut file_size = reader.read_u32::()? as usize; + while file_size & 0xFF == 0 { + let b = reader.read_u8()?; + reader.seek_relative(-1)?; + + // Beginning of data + if b == 0xC || b == 0x10 { + break; + } + + reader.seek_relative(-3)?; + file_size = reader.read_u32::()? as usize; + } + if file_name.ends_with(".bundle") { + // when .bundle encoded, it ends with name of itself. + let mut buf = vec![0u8; file_name.len()]; + loop { + reader.seek_relative(1)?; + reader.read_exact(&mut buf)?; + if file_name.as_bytes() == &buf { + reader.seek_relative(0x15)?; + break; + } + + reader.seek_relative(-(file_name.len() as i64))?; + } + } else { + let offset = reader.stream_position()?; + reader.seek_relative(file_size as i64)?; // skip data + + let eof = loop { + match reader.read_u8() { + Ok(0) => (), + Ok(_) => break false, + Err(_) => break true, + } + }; + + //println!("got file: {file_name}, size: {file_size} bytes"); + file_map.insert(file_name, (offset as usize, file_size)); + + if eof { + break; + } + + reader.seek_relative(-1)?; + } + } + + Ok(Self { data, file_map }) + } + + pub fn open(&self, file_name: &str) -> Option<&[u8]> { + self.file_map + .get(file_name) + .map(|&(start, size)| &self.data[start..start + size]) + } +} + +pub trait ReadHelper { + fn read_string(&mut self) -> std::io::Result; +} + +impl ReadHelper for R { + fn read_string(&mut self) -> std::io::Result { + let str_len = self.read_u32::()? as usize; + let mut buf = vec![0u8; str_len]; + self.read_exact(&mut buf)?; + + Ok(String::from_utf8_lossy(&buf).to_string()) + } +} diff --git a/crates/trigger-fileconfig/blockfile/src/magic.rs b/crates/trigger-fileconfig/blockfile/src/magic.rs new file mode 100644 index 0000000..8394a9d --- /dev/null +++ b/crates/trigger-fileconfig/blockfile/src/magic.rs @@ -0,0 +1,137 @@ +pub static XMMWORD_181D77E00: u128 = 0x0FFFFFFFF00000001636577656E79686D; // "mhynewec" + +pub static UNK_181D77E50: [u8; 256] = [ + 0x29, 0x23, 0xbe, 0x84, 0xe1, 0x6c, 0xd6, 0xae, 0x52, 0x90, 0x49, 0xf1, 0xf1, 0xbb, 0xe9, 0xeb, + 0xb3, 0xa6, 0xdb, 0x3c, 0x87, 0xc, 0x3e, 0x99, 0x24, 0x5e, 0xd, 0x1c, 0x6, 0xb7, 0x47, 0xde, + 0xb3, 0x12, 0x4d, 0xc8, 0x43, 0xbb, 0x8b, 0xa6, 0x1f, 0x3, 0x5a, 0x7d, 0x9, 0x38, 0x25, 0x1f, + 0x5d, 0xd4, 0xcb, 0xfc, 0x96, 0xf5, 0x45, 0x3b, 0x13, 0xd, 0x89, 0xa, 0x1c, 0xdb, 0xae, 0x32, + 0x20, 0x9a, 0x50, 0xee, 0x40, 0x78, 0x36, 0xfd, 0x12, 0x49, 0x32, 0xf6, 0x9e, 0x7d, 0x49, 0xdc, + 0xad, 0x4f, 0x14, 0xf2, 0x44, 0x40, 0x66, 0xd0, 0x6b, 0xc4, 0x30, 0xb7, 0x32, 0x3b, 0xa1, 0x22, + 0xf6, 0x22, 0x91, 0x9d, 0xe1, 0x8b, 0x1f, 0xda, 0xb0, 0xca, 0x99, 0x2, 0xb9, 0x72, 0x9d, 0x49, + 0x2c, 0x80, 0x7e, 0xc5, 0x99, 0xd5, 0xe9, 0x80, 0xb2, 0xea, 0xc9, 0xcc, 0x53, 0xbf, 0x67, 0xd6, + 0xbf, 0x14, 0xd6, 0x7e, 0x2d, 0xdc, 0x8e, 0x66, 0x83, 0xef, 0x57, 0x49, 0x61, 0xff, 0x69, 0x8f, + 0x61, 0xcd, 0xd1, 0x1e, 0x9d, 0x9c, 0x16, 0x72, 0x72, 0xe6, 0x1d, 0xf0, 0x84, 0x4f, 0x4a, 0x77, + 0x2, 0xd7, 0xe8, 0x39, 0x2c, 0x53, 0xcb, 0xc9, 0x12, 0x1e, 0x33, 0x74, 0x9e, 0xc, 0xf4, 0xd5, + 0xd4, 0x9f, 0xd4, 0xa4, 0x59, 0x7e, 0x35, 0xcf, 0x32, 0x22, 0xf4, 0xcc, 0xcf, 0xd3, 0x90, 0x2d, + 0x48, 0xd3, 0x8f, 0x75, 0xe6, 0xd9, 0x1d, 0x2a, 0xe5, 0xc0, 0xf7, 0x2b, 0x78, 0x81, 0x87, 0x44, + 0xe, 0x5f, 0x50, 0x0, 0xd4, 0x61, 0x8d, 0xbe, 0x7b, 0x5, 0x15, 0x7, 0x3b, 0x33, 0x82, 0x1f, + 0x18, 0x70, 0x92, 0xda, 0x64, 0x54, 0xce, 0xb1, 0x85, 0x3e, 0x69, 0x15, 0xf8, 0x46, 0x6a, 0x4, + 0x96, 0x73, 0xe, 0xd9, 0x16, 0x2f, 0x67, 0x68, 0xd4, 0xf7, 0x4a, 0x4a, 0xd0, 0x57, 0x68, 0x76, +]; + +// shuffle128 tables +// UnityPlayer: byte_181d7c580 +pub static SHUFFLE_TABLE: [u8; 48] = [ + 0xb, 0x2, 0x8, 0xc, 0x1, 0x5, 0x0, 0xf, 0x6, 0x7, 0x9, 0x3, 0xd, 0x4, 0xe, 0xa, 0x4, 0x5, 0x7, + 0xa, 0x2, 0xf, 0xb, 0x8, 0xe, 0xd, 0x9, 0x6, 0xc, 0x3, 0x0, 0x1, 0x8, 0x0, 0xc, 0x6, 0x4, 0xb, + 0x7, 0x9, 0x5, 0x3, 0xf, 0x1, 0xd, 0xa, 0x2, 0xe, +]; + +pub static BYTE_181D7BF80: [u8; 256] = [ + 0x1, 0x3, 0x5, 0xf, 0x11, 0x33, 0x55, 0xff, 0x1a, 0x2e, 0x72, 0x96, 0xa1, 0xf8, 0x13, 0x35, + 0x5f, 0xe1, 0x38, 0x48, 0xd8, 0x73, 0x95, 0xa4, 0xf7, 0x2, 0x6, 0xa, 0x1e, 0x22, 0x66, 0xaa, + 0xe5, 0x34, 0x5c, 0xe4, 0x37, 0x59, 0xeb, 0x26, 0x6a, 0xbe, 0xd9, 0x70, 0x90, 0xab, 0xe6, 0x31, + 0x53, 0xf5, 0x4, 0xc, 0x14, 0x3c, 0x44, 0xcc, 0x4f, 0xd1, 0x68, 0xb8, 0xd3, 0x6e, 0xb2, 0xcd, + 0x4c, 0xd4, 0x67, 0xa9, 0xe0, 0x3b, 0x4d, 0xd7, 0x62, 0xa6, 0xf1, 0x8, 0x18, 0x28, 0x78, 0x88, + 0x83, 0x9e, 0xb9, 0xd0, 0x6b, 0xbd, 0xdc, 0x7f, 0x81, 0x98, 0xb3, 0xce, 0x49, 0xdb, 0x76, 0x9a, + 0xb5, 0xc4, 0x57, 0xf9, 0x10, 0x30, 0x50, 0xf0, 0xb, 0x1d, 0x27, 0x69, 0xbb, 0xd6, 0x61, 0xa3, + 0xfe, 0x19, 0x2b, 0x7d, 0x87, 0x92, 0xad, 0xec, 0x2f, 0x71, 0x93, 0xae, 0xe9, 0x20, 0x60, 0xa0, + 0xfb, 0x16, 0x3a, 0x4e, 0xd2, 0x6d, 0xb7, 0xc2, 0x5d, 0xe7, 0x32, 0x56, 0xfa, 0x15, 0x3f, 0x41, + 0xc3, 0x5e, 0xe2, 0x3d, 0x47, 0xc9, 0x40, 0xc0, 0x5b, 0xed, 0x2c, 0x74, 0x9c, 0xbf, 0xda, 0x75, + 0x9f, 0xba, 0xd5, 0x64, 0xac, 0xef, 0x2a, 0x7e, 0x82, 0x9d, 0xbc, 0xdf, 0x7a, 0x8e, 0x89, 0x80, + 0x9b, 0xb6, 0xc1, 0x58, 0xe8, 0x23, 0x65, 0xaf, 0xea, 0x25, 0x6f, 0xb1, 0xc8, 0x43, 0xc5, 0x54, + 0xfc, 0x1f, 0x21, 0x63, 0xa5, 0xf4, 0x7, 0x9, 0x1b, 0x2d, 0x77, 0x99, 0xb0, 0xcb, 0x46, 0xca, + 0x45, 0xcf, 0x4a, 0xde, 0x79, 0x8b, 0x86, 0x91, 0xa8, 0xe3, 0x3e, 0x42, 0xc6, 0x51, 0xf3, 0xe, + 0x12, 0x36, 0x5a, 0xee, 0x29, 0x7b, 0x8d, 0x8c, 0x8f, 0x8a, 0x85, 0x94, 0xa7, 0xf2, 0xd, 0x17, + 0x39, 0x4b, 0xdd, 0x7c, 0x84, 0x97, 0xa2, 0xfd, 0x1c, 0x24, 0x6c, 0xb4, 0xc7, 0x52, 0xf6, 0xc5, +]; + +pub static BYTE_181D7C080: [u8; 256] = [ + 0x3e, 0x0, 0x19, 0x1, 0x32, 0x2, 0x1a, 0xc6, 0x4b, 0xc7, 0x1b, 0x68, 0x33, 0xee, 0xdf, 0x3, + 0x64, 0x4, 0xe0, 0xe, 0x34, 0x8d, 0x81, 0xef, 0x4c, 0x71, 0x8, 0xc8, 0xf8, 0x69, 0x1c, 0xc1, + 0x7d, 0xc2, 0x1d, 0xb5, 0xf9, 0xb9, 0x27, 0x6a, 0x4d, 0xe4, 0xa6, 0x72, 0x9a, 0xc9, 0x9, 0x78, + 0x65, 0x2f, 0x8a, 0x5, 0x21, 0xf, 0xe1, 0x24, 0x12, 0xf0, 0x82, 0x45, 0x35, 0x93, 0xda, 0x8e, + 0x96, 0x8f, 0xdb, 0xbd, 0x36, 0xd0, 0xce, 0x94, 0x13, 0x5c, 0xd2, 0xf1, 0x40, 0x46, 0x83, 0x38, + 0x66, 0xdd, 0xfd, 0x30, 0xbf, 0x6, 0x8b, 0x62, 0xb3, 0x25, 0xe2, 0x98, 0x22, 0x88, 0x91, 0x10, + 0x7e, 0x6e, 0x48, 0xc3, 0xa3, 0xb6, 0x1e, 0x42, 0x3a, 0x6b, 0x28, 0x54, 0xfa, 0x85, 0x3d, 0xba, + 0x2b, 0x79, 0xa, 0x15, 0x9b, 0x9f, 0x5e, 0xca, 0x4e, 0xd4, 0xac, 0xe5, 0xf3, 0x73, 0xa7, 0x57, + 0xaf, 0x58, 0xa8, 0x50, 0xf4, 0xea, 0xd6, 0x74, 0x4f, 0xae, 0xe9, 0xd5, 0xe7, 0xe6, 0xad, 0xe8, + 0x2c, 0xd7, 0x75, 0x7a, 0xeb, 0x16, 0xb, 0xf5, 0x59, 0xcb, 0x5f, 0xb0, 0x9c, 0xa9, 0x51, 0xa0, + 0x7f, 0xc, 0xf6, 0x6f, 0x17, 0xc4, 0x49, 0xec, 0xd8, 0x43, 0x1f, 0x2d, 0xa4, 0x76, 0x7b, 0xb7, + 0xcc, 0xbb, 0x3e, 0x5a, 0xfb, 0x60, 0xb1, 0x86, 0x3b, 0x52, 0xa1, 0x6c, 0xaa, 0x55, 0x29, 0x9d, + 0x97, 0xb2, 0x87, 0x90, 0x61, 0xbe, 0xdc, 0xfc, 0xbc, 0x95, 0xcf, 0xcd, 0x37, 0x3f, 0x5b, 0xd1, + 0x53, 0x39, 0x84, 0x3c, 0x41, 0xa2, 0x6d, 0x47, 0x14, 0x2a, 0x9e, 0x5d, 0x56, 0xf2, 0xd3, 0xab, + 0x44, 0x11, 0x92, 0xd9, 0x23, 0x20, 0x2e, 0x89, 0xb4, 0x7c, 0xb8, 0x26, 0x77, 0x99, 0xe3, 0xa5, + 0x67, 0x4a, 0xed, 0xde, 0xc5, 0x31, 0xfe, 0x18, 0xd, 0x63, 0x8c, 0x80, 0xc0, 0xf7, 0x70, 0x7, +]; + +pub static BYTE_181D7C5B8: [u8; 8] = [0xa7, 0x99, 0x66, 0x50, 0xb9, 0x2d, 0xf0, 0x78]; + +pub static BYTE_181D7C5B0: [u8; 8] = [0x48, 0x14, 0x36, 0xed, 0x8e, 0x44, 0x5b, 0xb6]; + +pub static BYTE_181D7C180: [u8; 1024] = [ + 0xf7, 0xe7, 0xd8, 0xb8, 0x64, 0x31, 0xd1, 0x74, 0x88, 0xaa, 0xb4, 0x8b, 0x6a, 0xa3, 0xfc, 0x55, + 0x59, 0xc5, 0x6d, 0xc9, 0x9a, 0x11, 0x2f, 0x37, 0xad, 0x35, 0x15, 0x62, 0x61, 0x4, 0x44, 0x1, + 0xdd, 0x47, 0x3d, 0xff, 0x8f, 0x51, 0xaf, 0xf, 0x19, 0x23, 0x92, 0x13, 0x0, 0x53, 0x4b, 0x67, + 0x21, 0x1c, 0x1b, 0x94, 0xe2, 0x29, 0x9f, 0x4c, 0xfb, 0xbb, 0x75, 0xf0, 0xfe, 0x1f, 0xdb, 0xef, + 0x1d, 0xf1, 0x3a, 0x1a, 0x5, 0x6, 0xce, 0xde, 0x63, 0xa, 0x6b, 0x2d, 0x28, 0x41, 0x6c, 0xc, + 0x42, 0xdc, 0x58, 0xb6, 0x39, 0x2e, 0xd2, 0xf6, 0x2b, 0xac, 0x84, 0x96, 0x17, 0xf3, 0x3f, 0x8d, + 0xab, 0x95, 0xcd, 0x30, 0xe, 0x66, 0x90, 0xf4, 0xed, 0xe0, 0x8e, 0xc2, 0x78, 0x2c, 0x7e, 0xf8, + 0x5d, 0x2, 0x91, 0xfa, 0x3c, 0xda, 0xb7, 0x6f, 0xf9, 0x4f, 0x14, 0x5e, 0xea, 0x24, 0x56, 0x9e, + 0xc1, 0xa5, 0x85, 0xd7, 0x8, 0x83, 0x4e, 0xf5, 0x76, 0x32, 0x86, 0x5c, 0xd3, 0x9, 0x5f, 0xfd, + 0x36, 0x3, 0xee, 0xe3, 0x34, 0x77, 0x79, 0x18, 0xbd, 0xdf, 0x97, 0x71, 0xba, 0x65, 0x68, 0x7a, + 0x54, 0x80, 0x48, 0x38, 0x5b, 0x4d, 0x5a, 0x7f, 0xb, 0x7c, 0xa6, 0x7b, 0x25, 0xd6, 0xd, 0x40, + 0xd0, 0x7, 0x99, 0x9d, 0x93, 0x69, 0xd9, 0x8c, 0xb3, 0xb5, 0xa4, 0x1e, 0xcb, 0x33, 0x82, 0xe9, + 0xc3, 0x60, 0xa7, 0xae, 0x45, 0xbe, 0xb1, 0x46, 0xb2, 0x9c, 0x22, 0xc7, 0x81, 0x98, 0xa9, 0xd5, + 0x6e, 0xe1, 0x10, 0xca, 0xbc, 0x4a, 0x70, 0xd4, 0xc4, 0x72, 0x12, 0xcf, 0x2a, 0x87, 0x16, 0xc8, + 0x73, 0xa1, 0x3e, 0x52, 0x50, 0xa8, 0x57, 0x27, 0xec, 0xcc, 0x7d, 0xe4, 0xa0, 0x89, 0xbf, 0xe5, + 0x8a, 0x20, 0xeb, 0xc0, 0xa2, 0x49, 0xb9, 0xe8, 0x26, 0xc6, 0xe6, 0xb0, 0x3b, 0x9b, 0xf2, 0x43, + 0x5e, 0xb0, 0xe6, 0xd, 0xf9, 0x87, 0xd7, 0x8a, 0xdf, 0xe7, 0x19, 0x99, 0x6f, 0xd5, 0x5b, 0x4e, + 0xcb, 0xc2, 0x48, 0xd2, 0xf2, 0x44, 0x35, 0x3, 0xe9, 0x86, 0xd0, 0x95, 0x2, 0x4a, 0x4, 0x62, + 0xc5, 0x9d, 0x1d, 0xe2, 0xfd, 0x53, 0x8, 0x8d, 0x5d, 0x75, 0xd9, 0x3f, 0x94, 0x59, 0x14, 0x29, + 0x98, 0x76, 0x8c, 0x79, 0x2e, 0x8f, 0x39, 0xc, 0x4c, 0xc8, 0xc0, 0x81, 0x9c, 0x10, 0xbb, 0xaf, + 0xf7, 0xe5, 0xb2, 0xb3, 0xee, 0x56, 0x57, 0xb8, 0xfa, 0x40, 0x7a, 0x72, 0x77, 0x24, 0x6c, 0xc6, + 0x47, 0x3a, 0x74, 0xcf, 0x89, 0xb4, 0x9b, 0x26, 0xaa, 0x38, 0x9, 0xc3, 0x1c, 0xde, 0x9f, 0xdd, + 0x16, 0x1f, 0x55, 0xbd, 0xad, 0xac, 0x80, 0x4f, 0x64, 0x4b, 0x71, 0xb7, 0xf6, 0x6, 0x2b, 0xc7, + 0x1, 0xea, 0x46, 0xa6, 0xeb, 0x3d, 0xca, 0x7, 0x34, 0x1b, 0xff, 0x7c, 0x7d, 0x2d, 0x37, 0x67, + 0x60, 0x9a, 0xc4, 0x97, 0x7f, 0xd6, 0xbe, 0xae, 0x85, 0x25, 0x88, 0x65, 0xa2, 0x0, 0xb6, 0x8e, + 0xd4, 0x6e, 0x1a, 0x63, 0x36, 0x92, 0xc1, 0xe1, 0x15, 0xa5, 0x58, 0x3b, 0x7e, 0x22, 0x2f, 0x84, + 0xf, 0x5c, 0x96, 0xb1, 0xf1, 0x6d, 0x8b, 0xf4, 0xa8, 0xb5, 0xb, 0xfe, 0x23, 0xe3, 0xce, 0xf8, + 0xf5, 0x51, 0x45, 0x43, 0x18, 0x1e, 0xd1, 0xba, 0xbc, 0x90, 0x21, 0x70, 0x30, 0xc9, 0x2a, 0xec, + 0x61, 0x7b, 0x66, 0x5f, 0x13, 0x33, 0x20, 0x6b, 0xcd, 0x3c, 0xa0, 0x93, 0x31, 0xb9, 0x5, 0x82, + 0xfb, 0x3e, 0x17, 0x12, 0x6a, 0xa, 0xcc, 0x4d, 0xa1, 0x73, 0x52, 0x78, 0xbf, 0x28, 0x50, 0x69, + 0xdc, 0x68, 0x42, 0xe0, 0xa4, 0x2c, 0xef, 0xf0, 0x11, 0xe8, 0x91, 0x49, 0x83, 0x5a, 0xf3, 0x32, + 0xdb, 0xab, 0xda, 0x27, 0xe, 0xed, 0xa3, 0xfc, 0x41, 0xa7, 0xa9, 0xd3, 0x9e, 0xe4, 0xd8, 0x54, + 0x95, 0xae, 0xf0, 0xd5, 0x73, 0x24, 0xd2, 0xa5, 0x99, 0xb, 0x1b, 0xc4, 0x9a, 0xd8, 0x69, 0x6f, + 0x25, 0xed, 0x8e, 0x91, 0x63, 0xf8, 0x35, 0x62, 0x5b, 0x94, 0x88, 0xb2, 0x5c, 0xf, 0xdd, 0xa4, + 0x7a, 0x1a, 0x12, 0xc6, 0x37, 0x44, 0xf1, 0x4e, 0xb9, 0x4d, 0x43, 0xd1, 0xad, 0xeb, 0xb4, 0x46, + 0x80, 0x30, 0x5e, 0xe4, 0x87, 0x6e, 0xa, 0x82, 0xcf, 0x74, 0x38, 0xb5, 0xc1, 0xd6, 0x1, 0x5, + 0xe8, 0x83, 0xa9, 0x6d, 0xce, 0xa8, 0xc5, 0x51, 0xa3, 0x3f, 0xda, 0x3, 0xd0, 0x3a, 0x39, 0x6c, + 0x11, 0x97, 0x68, 0x54, 0xc0, 0x4b, 0xdf, 0x19, 0xc, 0x21, 0x1f, 0x66, 0xbd, 0xe9, 0x61, 0x49, + 0xc8, 0x42, 0xbc, 0xec, 0x7f, 0xc3, 0x4f, 0x2e, 0xa1, 0x58, 0x3d, 0x81, 0xe3, 0x14, 0xb8, 0x2, + 0x23, 0x9e, 0x77, 0x2b, 0x33, 0xa6, 0x93, 0x13, 0x34, 0xe, 0x6, 0x45, 0xfb, 0x7, 0x75, 0xd, + 0x1e, 0x40, 0xab, 0x7d, 0xf5, 0xbb, 0x55, 0xef, 0x4, 0x65, 0x79, 0x2f, 0xca, 0xf3, 0x29, 0xcb, + 0xea, 0x17, 0xf4, 0xe6, 0x71, 0x4c, 0x50, 0x26, 0xd9, 0x78, 0x5f, 0x9, 0x9c, 0x1c, 0x85, 0x31, + 0x22, 0x9b, 0xc9, 0xe0, 0x8f, 0xac, 0x57, 0x8b, 0x7c, 0x47, 0x7e, 0x16, 0xf7, 0x8, 0x5a, 0x59, + 0x1d, 0xc7, 0xf9, 0x0, 0x2d, 0x60, 0x3c, 0x9f, 0x96, 0xa2, 0xba, 0x20, 0x70, 0xf6, 0x48, 0xb0, + 0x2c, 0x72, 0xe1, 0x64, 0xe7, 0xff, 0xb7, 0x56, 0xa7, 0x53, 0x84, 0xd7, 0xe2, 0xd4, 0xa0, 0xb1, + 0x8c, 0xe5, 0x2a, 0xdc, 0x15, 0x28, 0x5d, 0x3b, 0x36, 0x7b, 0x86, 0x6a, 0xdb, 0x10, 0xbe, 0x6b, + 0xfe, 0x9d, 0x18, 0xde, 0x76, 0xf2, 0xcd, 0xb6, 0x32, 0xfc, 0x41, 0xaf, 0xbf, 0x67, 0xb3, 0xaa, + 0xc2, 0x8a, 0xfd, 0x89, 0xcc, 0xfa, 0x90, 0x98, 0x8d, 0x52, 0xd3, 0xee, 0x92, 0x3e, 0x4a, 0x27, + 0x2a, 0xd7, 0x9e, 0x2, 0x53, 0x63, 0xea, 0xe9, 0x8f, 0x35, 0x22, 0x7f, 0xfe, 0xca, 0x75, 0x46, + 0x57, 0x94, 0xd9, 0x4e, 0xd2, 0xd4, 0x76, 0xa1, 0xc3, 0xd8, 0xbc, 0x9b, 0x84, 0x87, 0x91, 0x51, + 0xb1, 0xab, 0x81, 0x64, 0x47, 0xaf, 0x9d, 0x6a, 0x5b, 0x2d, 0xd6, 0x95, 0x77, 0x3, 0xc1, 0x10, + 0xad, 0x61, 0xc, 0xbf, 0x11, 0x34, 0x7e, 0x1, 0x38, 0x20, 0x4b, 0xb6, 0x4a, 0x1a, 0x45, 0x99, + 0x5f, 0x26, 0xbb, 0xc5, 0xcd, 0x23, 0xf1, 0xf7, 0xb4, 0x8e, 0xe1, 0xf8, 0x68, 0x56, 0x29, 0xd5, + 0x3d, 0xef, 0x12, 0x28, 0xc4, 0x2e, 0x79, 0xa6, 0x48, 0x85, 0x73, 0x14, 0xe4, 0xc6, 0x6b, 0x92, + 0x30, 0x27, 0x93, 0x13, 0xd, 0xe2, 0xc9, 0xf0, 0x65, 0xdf, 0xfb, 0xe3, 0x6, 0x2f, 0x8c, 0x4c, + 0x18, 0x15, 0xd3, 0x49, 0x3e, 0x7, 0x59, 0xb0, 0x88, 0xa9, 0xc8, 0x3b, 0x86, 0xee, 0x5c, 0x7a, + 0x5e, 0xff, 0x8d, 0xac, 0x8, 0xe6, 0x60, 0x54, 0xa0, 0x7d, 0x40, 0x33, 0xa8, 0xfc, 0xe0, 0x37, + 0x98, 0xbd, 0xec, 0x9, 0xb2, 0x71, 0x58, 0x1f, 0xde, 0x74, 0x89, 0x36, 0x52, 0x66, 0xa2, 0x3c, + 0x96, 0x5d, 0x50, 0x90, 0x41, 0xf5, 0x17, 0x2b, 0xb, 0xdc, 0xf6, 0x0, 0x83, 0xdd, 0x6d, 0xb5, + 0x3a, 0x9c, 0xb8, 0x70, 0x7c, 0x43, 0x69, 0xfd, 0x32, 0x1b, 0xed, 0xf, 0x55, 0x97, 0xc2, 0xfa, + 0x39, 0x4f, 0x9a, 0x82, 0x19, 0xe7, 0x78, 0x6e, 0xcb, 0xa4, 0xbe, 0x24, 0xb3, 0xf3, 0xcc, 0xcf, + 0x1c, 0xf9, 0x44, 0xa5, 0x1e, 0x80, 0x3f, 0xd0, 0x21, 0xa3, 0xe8, 0x31, 0x5, 0x16, 0x8a, 0xba, + 0x67, 0xe, 0xe5, 0xb7, 0xd1, 0x42, 0x1d, 0xdb, 0x72, 0x6c, 0xa7, 0xce, 0x4, 0x4d, 0xda, 0xc7, + 0x8b, 0x9f, 0x6f, 0xa, 0x2c, 0xeb, 0xf2, 0x5a, 0x7b, 0xaa, 0x25, 0xc0, 0x62, 0xae, 0xf4, 0xb9, +]; diff --git a/crates/trigger-fileconfig/blockfile/src/unpack.rs b/crates/trigger-fileconfig/blockfile/src/unpack.rs new file mode 100644 index 0000000..afa35dd --- /dev/null +++ b/crates/trigger-fileconfig/blockfile/src/unpack.rs @@ -0,0 +1,98 @@ +use std::{ + cmp, + io::{self, Cursor, Read}, +}; + +use byteorder::{ReadBytesExt, LE}; + +use crate::util::{sub_18001A770, MhyObscureReadExt}; + +#[derive(Debug)] +#[expect(unused)] +struct CabFileInfo { + pub path: String, + pub flag: bool, + pub offset: usize, + pub size: usize, +} + +#[derive(Debug)] +struct BlockInfo { + pub compressed_size: usize, + pub decompressed_size: usize, +} + +impl CabFileInfo { + pub fn read(r: &mut R) -> io::Result { + Ok(Self { + path: r.read_path_string()?, + flag: r.read_bool()?, + offset: r.read_obscure_i32()? as usize, + size: r.read_obscure_u32()? as usize, + }) + } +} + +impl BlockInfo { + pub fn read(r: &mut R) -> io::Result { + Ok(Self { + compressed_size: r.read_obscure_i32()? as usize, + decompressed_size: r.read_obscure_u32()? as usize, + }) + } +} + +pub fn unpack_blk_raw(mut buf: R) -> io::Result> { + let v45 = buf.read_u64::()?; + assert_eq!((v45 as u32) | 0x1000000, 0x3179686D); // "mhy1" + + let v6 = (v45 >> 32) as usize; + let mut v8 = vec![0u8; v6]; + buf.read_exact(&mut v8)?; + + sub_18001A770(&mut v8, cmp::min(v6, 128), 0x1C); + if v6 >= 0x27 { + let data = &v8[48..]; + let decompressed_size = (data[1] as u32) + | ((data[6] as u32) << 8) + | ((data[3] as u32) << 16) + | ((data[2] as u32) << 24); + + let data = lz4_flex::block::decompress(&data[7..], decompressed_size as usize).unwrap(); + let mut reader = Cursor::new(&data); + + let _ = (0..reader.read_obscure_i32()?) + .map(|_| CabFileInfo::read(&mut reader)) + .collect::, _>>()?; + + let compressed_blocks = (0..reader.read_obscure_i32()?) + .map(|_| BlockInfo::read(&mut reader)) + .collect::, _>>()?; + + let mut decompressed_data = vec![ + 0u8; + compressed_blocks + .iter() + .fold(0usize, |len, b| len + b.decompressed_size) + ]; + + let mut idx = 0; + for block in compressed_blocks { + let mut compressed = vec![0u8; block.compressed_size]; + buf.read(&mut compressed)?; + + sub_18001A770(&mut compressed, cmp::min(128, block.compressed_size), 8); + lz4_flex::block::decompress_into( + &compressed[28..], + &mut decompressed_data[idx..idx + block.decompressed_size], + ) + .unwrap(); + + idx += block.decompressed_size; + } + + Ok(decompressed_data.into_boxed_slice()) + } else { + Ok(Vec::with_capacity(0).into_boxed_slice()) + } +} diff --git a/crates/trigger-fileconfig/blockfile/src/util.rs b/crates/trigger-fileconfig/blockfile/src/util.rs new file mode 100644 index 0000000..92bcec6 --- /dev/null +++ b/crates/trigger-fileconfig/blockfile/src/util.rs @@ -0,0 +1,146 @@ +use byteorder::{ByteOrder, LE}; + +use crate::magic::*; +use std::io::{Read, Result}; + +pub trait MhyObscureReadExt { + fn read_obscure_u32(&mut self) -> Result; + fn read_obscure_i32(&mut self) -> Result; + fn read_path_string(&mut self) -> Result; + fn read_bool(&mut self) -> Result; +} + +impl MhyObscureReadExt for R { + fn read_obscure_u32(&mut self) -> Result { + let mut buf = [0u8; 7]; + self.read_exact(&mut buf)?; + + Ok((buf[1] as u32) + | ((buf[6] as u32) << 8) + | ((buf[3] as u32) << 16) + | ((buf[2] as u32) << 24)) + } + + fn read_obscure_i32(&mut self) -> Result { + let mut buf = [0u8; 6]; + self.read_exact(&mut buf)?; + + Ok((buf[2] as i32) + | ((buf[4] as i32) << 8) + | ((buf[0] as i32) << 16) + | ((buf[5] as i32) << 24)) + } + + fn read_path_string(&mut self) -> Result { + const WIN32_MAX_PATH: usize = 260; + + let mut buf = [0u8; WIN32_MAX_PATH + 1]; + self.read_exact(&mut buf)?; + + let str_len = buf.iter().position(|&c| c == 0).unwrap_or(WIN32_MAX_PATH); + Ok(String::from_utf8(buf[..str_len].to_vec()).unwrap()) + } + + fn read_bool(&mut self) -> Result { + use byteorder::ReadBytesExt; + Ok(self.read_u8()? != 0) + } +} + +type Aes128Encryptor = ecb::Encryptor; + +// UnityPlayer: 0x1A770 +#[allow(non_snake_case)] +pub fn sub_18001A770(a1: &mut Vec, len: usize, a4: usize) { + use aes::cipher::{block_padding::NoPadding, BlockEncryptMut, KeyInit}; + + let v5 = a4 + 15; + shuffle128(&mut a1[4..20]); + let v20 = v5 & 0xFFFFFFF0; + assert_eq!(LE::read_u128(&a1[4..20]), XMMWORD_181D77E00); + if len >= 0x24 { + let v70 = v20; + shuffle128(&mut a1[20..36]); + + let en = Aes128Encryptor::new(a1[0..16].into()); + en.encrypt_padded_mut::(&mut a1[20..36], 16) + .unwrap(); + + (0..4).for_each(|i| a1[i] ^= a1[20 + i]); + + let v58 = a1[20..28].to_vec(); + let v73 = a1[28..36].to_vec(); + + sub_18001A5E0(&mut a1[20 + v70..len], len - 20 - v70, &v58, 8, &v73); + } +} + +// UnityPlayer: 0x1A5E0 +#[allow(non_snake_case)] +fn sub_18001A5E0(a1: &mut [u8], a2: usize, a3: &[u8], a4: usize, a5: &[u8]) { + let mut v21 = UNK_181D77E50.to_vec(); + let mut v11 = 0u8; + for v9 in 0..256 { + let v10 = v21[v9]; + v11 = v11.wrapping_add(a3[v9 % a4].wrapping_add(v10)); + v21[v9] = v21[v11 as usize]; + v21[v11 as usize] = v10; + } + + let mut v13 = 0u8; + let mut v14 = 0u8; + for v12 in 0..a2 { + let v15 = v14.wrapping_add(1); + v14 = v14.wrapping_add(1); + let v16 = v21[v14 as usize]; + v13 = v13.wrapping_add(v16); + v21[v14 as usize] = v21[v13 as usize]; + v21[v13 as usize] = v16; + let v17 = v16.wrapping_add(v21[v14 as usize]); + let v18 = a5[v15 as usize & 7] % 3; + match v18 { + 2 => { + a1[v12] = a1[v12].wrapping_add(v21[v17 as usize]); + } + 1 => { + a1[v12] = a1[v12].wrapping_sub(v21[v17 as usize]); + } + 0 => { + a1[v12] ^= v21[v17 as usize]; + } + _ => unreachable!(), + } + } +} + +// inlined 3 times in sub_18001A770 +// 'decrypts' 16-byte chunks of data +fn shuffle128(a1: &mut [u8]) { + assert_eq!(a1.len(), 16); + for v6 in 0..3 { + let v8 = 32 - 16 * v6; + + let mut temp = [0u8; 16]; + for i in 0..16 { + temp[i] = a1[SHUFFLE_TABLE[v8 + i] as usize]; + } + a1.copy_from_slice(&temp); + + let mut v16 = 0; + for v17 in 0..16 { + let v9 = a1[v17]; + let v18 = v17 & 7; + let v19 = if v9 != 0 { + BYTE_181D7BF80[(((BYTE_181D7C080[v9 as usize] as u16) + + (BYTE_181D7C080[BYTE_181D7C5B8[v18] as usize] as u16)) + % 0xFF) as usize] as usize + | (v16 & 0x300) + } else { + v16 & 0x300 + }; + + a1[v17] = BYTE_181D7C180[v19 as usize] ^ BYTE_181D7C5B0[v18 as usize]; + v16 += 256; + } + } +} diff --git a/crates/trigger-fileconfig/build.rs b/crates/trigger-fileconfig/build.rs new file mode 100644 index 0000000..a2b8b06 --- /dev/null +++ b/crates/trigger-fileconfig/build.rs @@ -0,0 +1,11 @@ +use std::path::Path; + +fn main() { + println!("cargo:rerun-if-changed=fbs"); + + let _ = flatc_rust::run(flatc_rust::Args { + inputs: &[Path::new("fbs/tables.fbs")], + out_dir: Path::new("gen_flatbuffers"), + ..Default::default() + }); +} diff --git a/crates/trigger-fileconfig/fbs/tables.fbs b/crates/trigger-fileconfig/fbs/tables.fbs new file mode 100644 index 0000000..bc64c26 --- /dev/null +++ b/crates/trigger-fileconfig/fbs/tables.fbs @@ -0,0 +1,415 @@ +table AvatarBaseTemplate { + id: int; + code_name: string; + name: string; + full_name: string; + audio_event_replace_param: string; + audio_bank: string; + hit_types: [int]; + element_types: [int]; + unk_1: int; + gender: int; + camp: int; + unk_2: [string]; +} + +struct Property { + property: int; + value: int; +} + +struct RefineCost { + item_id: int; + number: int; +} + +table WeaponTemplate { + item_id: int; + weapon_name: string; + unk_missing_field: int; + base_property: Property; + rand_property: Property; + star_limit: int; + exp_recycle: int; + weapon_script_config: string; + weapon_ui_model: string; + unk_1: int; + unk_missing_field_2: int; + unk_weapon_path: string; + unk_missing_field_3: int; + refine_initial: int; + refine_limit: int; + unk_missing_field_4: int; + unk_missing_field_5: int; + unk_string_with_values: string; + unk_missing_field_6: int; + unk_2: int; // 3 + weapon_desc: string; + weapon_release_tag: string; + unk_empty_string: string; + avatar_id: int; + weapon_comment: string; + refine_costs: [RefineCost]; + unk_3: int; +} + +table UnlockConfigTemplate { + id: int; + unk_1: string; + unk_2: [int]; + unk_3: int; + unk_4: int; + unk_5: int; + unk_6: string; + unk_7: int; + unk_8: string; + icon_res: string; + unk_9: int; + name: string; + unk_10: string; + unk_11: int; + unk_12: int; + unk_13: bool; + unk_14: int; + unk_15: string; + unk_16: int; + unk_17: string; + unk_18: int; + unk_19: int; + unk_20: string; + unk_21: int; + unk_22: string; +} + +table PostGirlConfigTemplate { + id: int; + name: string; + tag: string; + unk_1: int; + unk_2: string; + unk_3: int; + role_icon_name: string; + unk_4: string; + unk_5: [int]; +} + +table ArchiveFileQuestTemplate { + id: int; + archive_id: int; + archive_name: string; + difficulty_lv: int; + show_type: int; + recommended_hit_types: [int]; + video: string; + archive_file_name: string; + archive_file_num: string; + archive_file_ni_ids: [int]; + auto_distribution: bool; + unk_1: bool; +} + +table ArchiveBattleQuestTemplate { + id: int; + quest_name: string; + quest_desc: string; + target: string; + quest_type: int; + chapter: int; + difficulty: int; + monster_level: int; + recommended_level: int; + unk_1: int; + unk_2: int; + hollow_id: int; + first_battle_event_id: int; + battle_event_id: int; + unk_3: int; + battle_rank: string; + slot_1_avatar: int; + slot_2_avatar: int; + slot_3_avatar: int; + buddy: int; + unk_4: bool; + unk_5: int; + unk_6: bool; + chapter_name: string; + quest_image: int; + unk_7: string; + unk_8: bool; + unk_9: int; + unk_10: bool; + unk_11: int; + unk_12: string; + unk_13: int; +} + +table SectionConfigTemplate { + section_id: int; + section_photo: string; + name: string; + born_transform: string; + alternative_born_transform: string; + unk_3: int; + section_name: string; +} + +table MainCityBGMConfigTemplate { + id: int; + play_event_name: string; + state_name: string; +} + +table HollowBuffTemplate { + id: int; + buff_name: string; + menu_name: string; + mini_icons: [int]; + decorated_icons: [int]; + unk_1: int; + price: int; + unlock_condition: string; + unk_2: bool; + client_ability: int; + targets: [string]; + unk_3: int; + max_times: int; + unk_4: string; + description_text: string; + prefab: string; + icon: string; +} + +table CafeConfigTemplate { + id: int; + menu_name: string; + unk_1: int; + price: int; + unlock_condition: string; + unk_2: bool; + description_text: string; + icon: int; + cafe_prefab: string; + reward_buff_id: int; + unk_3: int; + unk_4: int; + unk_5: [int]; + energy_amount: int; + unk_7: int; + unk_8: int; +} + +table EquipmentTemplate { + item_id: int; + equipment_type: int; + suit_type: int; + disk_icon_path: string; + drawing_path: string; + front_label_texture_path: string; + back_label_texture_path: string; + disk_texture_path: string; + play_music_tag: string; + pause_music_tag: string; +} + +table EquipmentSuitTemplate { + id: int; + name: string; + primary_condition: int; + primary_suit_propertys: [Property]; + primary_suit_ability: int; + primary_description: string; + secondary_condition: int; + secondary_suit_propertys: [Property]; + secondary_suit_ability: int; + secondary_description: string; + suit_item_icon: string; + suit_story: string; + suit_filter_option: string; + suit_icon: string; +} + +table HollowConfigTemplate { + id: int; + hollow_group: int; + name: string; + unlock_condition: string; + lock_hint: string; + pic_res: string; + model_res: string; + locked_color: string; + unlocked_color: string; + unk_1: bool; + unk_2: string; + unk_3: string; +} + +table HollowQuestTemplate { + id: int; + unk_1: int; + chessboard_id: int; + unk_2: int; + group_id: int; + hollow_quest_type: int; + unk_3: int; + duration: string; + has_stamina: string; + environments: [string]; + main_difficulty: string; + difficulties: [string]; + recommended_elements: [string]; + client: string; + unk_4: int; + unk_5: bool; + unk_6: int; + scale: int; + show_tip: int; + monster_level: int; + recommended_level: int; + average_level_tips: int; + recommended_hit_types: [int]; + unk_7: [int]; + unk_8: bool; + unk_9: bool; + unk_10: string; + unk_11: int; + unk_12: bool; + unk_13: int; + slot_1_avatar: int; + slot_2_avatar: int; + slot_3_avatar: int; + unk_14: int; + unk_15: bool; + unk_16: bool; + unk_17: int; + preview_res_group_id: int; + chessboard_res_group_id: int; + bgm_chapter_state: string; + unk_18: int; + unk_19: string; + unk_20: int; + unk_21: [int]; + unk_22: int; + unk_23: int; + unk_24: int; + unk_25: bool; + unk_26: int; + title: string; + difficulty: string; + target: string; + unk_27: [string]; + unk_28: int; + unk_29: int; + unk_30: bool; + unk_31: int; + unk_32: bool; + unk_33: int; + hollow_item_ban_lists: [int]; + unk_34: bool; + enemy_types: [string]; + background: string; + unk_35: int; + unk_36: [int]; + unk_37: [int]; + unk_38: int; + unk_39: int; + unk_40: int; + unk_41: int; +} + +table BattleGroupConfigTemplate { + id: int; + quest_id: int; + unk_1: int; + unk_2: string; + unk_3: int; + unk_4: string; + unk_5: string; + unk_6: [string]; + battle_event_id: int; + unk_8: bool; + unk_9: bool; + unk_10: [string]; +} + +table MusicPlayerConfigTemplate { + id: int; + group_id: int; + unk_1: string; + play_tag: string; + pause_tag: string; + resume_tag: string; + stop_all_tag: string; + play_volume: string; + unk_2: string; + unk_3: int; + unlock_condition: string; + name: string; + unk_4: string; + unk_5: string; + unk_6: long; + unk_7: string; +} + +table AvatarBaseTemplateTb { + data: [AvatarBaseTemplate]; +} + +table WeaponTemplateTb { + data: [WeaponTemplate]; +} + +table UnlockConfigTemplateTb { + data: [UnlockConfigTemplate]; +} + +table PostGirlConfigTemplateTb { + data: [PostGirlConfigTemplate]; +} + +table ArchiveFileQuestTemplateTb { + data: [ArchiveFileQuestTemplate]; +} + +table ArchiveBattleQuestTemplateTb { + data: [ArchiveBattleQuestTemplate]; +} + +table SectionConfigTemplateTb { + data: [SectionConfigTemplate]; +} + +table MainCityBGMConfigTemplateTb { + data: [MainCityBGMConfigTemplate]; +} + +table HollowBuffTemplateTb { + data: [HollowBuffTemplate]; +} + +table CafeConfigTemplateTb { + data: [CafeConfigTemplate]; +} + +table EquipmentTemplateTb { + data: [EquipmentTemplate]; +} + +table EquipmentSuitTemplateTb { + data: [EquipmentSuitTemplate]; +} + +table HollowConfigTemplateTb { + data: [HollowConfigTemplate]; +} + +table HollowQuestTemplateTb { + data: [HollowQuestTemplate]; +} + +table BattleGroupConfigTemplateTb { + data: [BattleGroupConfigTemplate]; +} + +table MusicPlayerConfigTemplateTb { + data: [MusicPlayerConfigTemplate]; +} diff --git a/crates/trigger-fileconfig/gen_flatbuffers/tables_generated.rs b/crates/trigger-fileconfig/gen_flatbuffers/tables_generated.rs new file mode 100644 index 0000000..a96cdff --- /dev/null +++ b/crates/trigger-fileconfig/gen_flatbuffers/tables_generated.rs @@ -0,0 +1,8097 @@ +// automatically generated by the FlatBuffers compiler, do not modify + + +// @generated + +use core::mem; +use core::cmp::Ordering; + +extern crate flatbuffers; +use self::flatbuffers::{EndianScalar, Follow}; + +// struct Property, aligned to 4 +#[repr(transparent)] +#[derive(Clone, Copy, PartialEq)] +pub struct Property(pub [u8; 8]); +impl Default for Property { + fn default() -> Self { + Self([0; 8]) + } +} +impl core::fmt::Debug for Property { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + f.debug_struct("Property") + .field("property", &self.property()) + .field("value", &self.value()) + .finish() + } +} + +impl flatbuffers::SimpleToVerifyInSlice for Property {} +impl<'a> flatbuffers::Follow<'a> for Property { + type Inner = &'a Property; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + <&'a Property>::follow(buf, loc) + } +} +impl<'a> flatbuffers::Follow<'a> for &'a Property { + type Inner = &'a Property; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + flatbuffers::follow_cast_ref::(buf, loc) + } +} +impl<'b> flatbuffers::Push for Property { + type Output = Property; + #[inline] + unsafe fn push(&self, dst: &mut [u8], _written_len: usize) { + let src = ::core::slice::from_raw_parts(self as *const Property as *const u8, ::size()); + dst.copy_from_slice(src); + } + #[inline] + fn alignment() -> flatbuffers::PushAlignment { + flatbuffers::PushAlignment::new(4) + } +} + +impl<'a> flatbuffers::Verifiable for Property { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.in_buffer::(pos) + } +} + +impl<'a> Property { + #[allow(clippy::too_many_arguments)] + pub fn new( + property: i32, + value: i32, + ) -> Self { + let mut s = Self([0; 8]); + s.set_property(property); + s.set_value(value); + s + } + + pub fn property(&self) -> i32 { + let mut mem = core::mem::MaybeUninit::<::Scalar>::uninit(); + // Safety: + // Created from a valid Table for this object + // Which contains a valid value in this slot + EndianScalar::from_little_endian(unsafe { + core::ptr::copy_nonoverlapping( + self.0[0..].as_ptr(), + mem.as_mut_ptr() as *mut u8, + core::mem::size_of::<::Scalar>(), + ); + mem.assume_init() + }) + } + + pub fn set_property(&mut self, x: i32) { + let x_le = x.to_little_endian(); + // Safety: + // Created from a valid Table for this object + // Which contains a valid value in this slot + unsafe { + core::ptr::copy_nonoverlapping( + &x_le as *const _ as *const u8, + self.0[0..].as_mut_ptr(), + core::mem::size_of::<::Scalar>(), + ); + } + } + + pub fn value(&self) -> i32 { + let mut mem = core::mem::MaybeUninit::<::Scalar>::uninit(); + // Safety: + // Created from a valid Table for this object + // Which contains a valid value in this slot + EndianScalar::from_little_endian(unsafe { + core::ptr::copy_nonoverlapping( + self.0[4..].as_ptr(), + mem.as_mut_ptr() as *mut u8, + core::mem::size_of::<::Scalar>(), + ); + mem.assume_init() + }) + } + + pub fn set_value(&mut self, x: i32) { + let x_le = x.to_little_endian(); + // Safety: + // Created from a valid Table for this object + // Which contains a valid value in this slot + unsafe { + core::ptr::copy_nonoverlapping( + &x_le as *const _ as *const u8, + self.0[4..].as_mut_ptr(), + core::mem::size_of::<::Scalar>(), + ); + } + } + +} + +// struct RefineCost, aligned to 4 +#[repr(transparent)] +#[derive(Clone, Copy, PartialEq)] +pub struct RefineCost(pub [u8; 8]); +impl Default for RefineCost { + fn default() -> Self { + Self([0; 8]) + } +} +impl core::fmt::Debug for RefineCost { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + f.debug_struct("RefineCost") + .field("item_id", &self.item_id()) + .field("number", &self.number()) + .finish() + } +} + +impl flatbuffers::SimpleToVerifyInSlice for RefineCost {} +impl<'a> flatbuffers::Follow<'a> for RefineCost { + type Inner = &'a RefineCost; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + <&'a RefineCost>::follow(buf, loc) + } +} +impl<'a> flatbuffers::Follow<'a> for &'a RefineCost { + type Inner = &'a RefineCost; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + flatbuffers::follow_cast_ref::(buf, loc) + } +} +impl<'b> flatbuffers::Push for RefineCost { + type Output = RefineCost; + #[inline] + unsafe fn push(&self, dst: &mut [u8], _written_len: usize) { + let src = ::core::slice::from_raw_parts(self as *const RefineCost as *const u8, ::size()); + dst.copy_from_slice(src); + } + #[inline] + fn alignment() -> flatbuffers::PushAlignment { + flatbuffers::PushAlignment::new(4) + } +} + +impl<'a> flatbuffers::Verifiable for RefineCost { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.in_buffer::(pos) + } +} + +impl<'a> RefineCost { + #[allow(clippy::too_many_arguments)] + pub fn new( + item_id: i32, + number: i32, + ) -> Self { + let mut s = Self([0; 8]); + s.set_item_id(item_id); + s.set_number(number); + s + } + + pub fn item_id(&self) -> i32 { + let mut mem = core::mem::MaybeUninit::<::Scalar>::uninit(); + // Safety: + // Created from a valid Table for this object + // Which contains a valid value in this slot + EndianScalar::from_little_endian(unsafe { + core::ptr::copy_nonoverlapping( + self.0[0..].as_ptr(), + mem.as_mut_ptr() as *mut u8, + core::mem::size_of::<::Scalar>(), + ); + mem.assume_init() + }) + } + + pub fn set_item_id(&mut self, x: i32) { + let x_le = x.to_little_endian(); + // Safety: + // Created from a valid Table for this object + // Which contains a valid value in this slot + unsafe { + core::ptr::copy_nonoverlapping( + &x_le as *const _ as *const u8, + self.0[0..].as_mut_ptr(), + core::mem::size_of::<::Scalar>(), + ); + } + } + + pub fn number(&self) -> i32 { + let mut mem = core::mem::MaybeUninit::<::Scalar>::uninit(); + // Safety: + // Created from a valid Table for this object + // Which contains a valid value in this slot + EndianScalar::from_little_endian(unsafe { + core::ptr::copy_nonoverlapping( + self.0[4..].as_ptr(), + mem.as_mut_ptr() as *mut u8, + core::mem::size_of::<::Scalar>(), + ); + mem.assume_init() + }) + } + + pub fn set_number(&mut self, x: i32) { + let x_le = x.to_little_endian(); + // Safety: + // Created from a valid Table for this object + // Which contains a valid value in this slot + unsafe { + core::ptr::copy_nonoverlapping( + &x_le as *const _ as *const u8, + self.0[4..].as_mut_ptr(), + core::mem::size_of::<::Scalar>(), + ); + } + } + +} + +pub enum AvatarBaseTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct AvatarBaseTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for AvatarBaseTemplate<'a> { + type Inner = AvatarBaseTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> AvatarBaseTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_CODE_NAME: flatbuffers::VOffsetT = 6; + pub const VT_NAME: flatbuffers::VOffsetT = 8; + pub const VT_FULL_NAME: flatbuffers::VOffsetT = 10; + pub const VT_AUDIO_EVENT_REPLACE_PARAM: flatbuffers::VOffsetT = 12; + pub const VT_AUDIO_BANK: flatbuffers::VOffsetT = 14; + pub const VT_HIT_TYPES: flatbuffers::VOffsetT = 16; + pub const VT_ELEMENT_TYPES: flatbuffers::VOffsetT = 18; + pub const VT_UNK_1: flatbuffers::VOffsetT = 20; + pub const VT_GENDER: flatbuffers::VOffsetT = 22; + pub const VT_CAMP: flatbuffers::VOffsetT = 24; + pub const VT_UNK_2: flatbuffers::VOffsetT = 26; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + AvatarBaseTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args AvatarBaseTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = AvatarBaseTemplateBuilder::new(_fbb); + if let Some(x) = args.unk_2 { builder.add_unk_2(x); } + builder.add_camp(args.camp); + builder.add_gender(args.gender); + builder.add_unk_1(args.unk_1); + if let Some(x) = args.element_types { builder.add_element_types(x); } + if let Some(x) = args.hit_types { builder.add_hit_types(x); } + if let Some(x) = args.audio_bank { builder.add_audio_bank(x); } + if let Some(x) = args.audio_event_replace_param { builder.add_audio_event_replace_param(x); } + if let Some(x) = args.full_name { builder.add_full_name(x); } + if let Some(x) = args.name { builder.add_name(x); } + if let Some(x) = args.code_name { builder.add_code_name(x); } + builder.add_id(args.id); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(AvatarBaseTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn code_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(AvatarBaseTemplate::VT_CODE_NAME, None)} + } + #[inline] + pub fn name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(AvatarBaseTemplate::VT_NAME, None)} + } + #[inline] + pub fn full_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(AvatarBaseTemplate::VT_FULL_NAME, None)} + } + #[inline] + pub fn audio_event_replace_param(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(AvatarBaseTemplate::VT_AUDIO_EVENT_REPLACE_PARAM, None)} + } + #[inline] + pub fn audio_bank(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(AvatarBaseTemplate::VT_AUDIO_BANK, None)} + } + #[inline] + pub fn hit_types(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(AvatarBaseTemplate::VT_HIT_TYPES, None)} + } + #[inline] + pub fn element_types(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(AvatarBaseTemplate::VT_ELEMENT_TYPES, None)} + } + #[inline] + pub fn unk_1(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(AvatarBaseTemplate::VT_UNK_1, Some(0)).unwrap()} + } + #[inline] + pub fn gender(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(AvatarBaseTemplate::VT_GENDER, Some(0)).unwrap()} + } + #[inline] + pub fn camp(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(AvatarBaseTemplate::VT_CAMP, Some(0)).unwrap()} + } + #[inline] + pub fn unk_2(&self) -> Option>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(AvatarBaseTemplate::VT_UNK_2, None)} + } +} + +impl flatbuffers::Verifiable for AvatarBaseTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("code_name", Self::VT_CODE_NAME, false)? + .visit_field::>("name", Self::VT_NAME, false)? + .visit_field::>("full_name", Self::VT_FULL_NAME, false)? + .visit_field::>("audio_event_replace_param", Self::VT_AUDIO_EVENT_REPLACE_PARAM, false)? + .visit_field::>("audio_bank", Self::VT_AUDIO_BANK, false)? + .visit_field::>>("hit_types", Self::VT_HIT_TYPES, false)? + .visit_field::>>("element_types", Self::VT_ELEMENT_TYPES, false)? + .visit_field::("unk_1", Self::VT_UNK_1, false)? + .visit_field::("gender", Self::VT_GENDER, false)? + .visit_field::("camp", Self::VT_CAMP, false)? + .visit_field::>>>("unk_2", Self::VT_UNK_2, false)? + .finish(); + Ok(()) + } +} +pub struct AvatarBaseTemplateArgs<'a> { + pub id: i32, + pub code_name: Option>, + pub name: Option>, + pub full_name: Option>, + pub audio_event_replace_param: Option>, + pub audio_bank: Option>, + pub hit_types: Option>>, + pub element_types: Option>>, + pub unk_1: i32, + pub gender: i32, + pub camp: i32, + pub unk_2: Option>>>, +} +impl<'a> Default for AvatarBaseTemplateArgs<'a> { + #[inline] + fn default() -> Self { + AvatarBaseTemplateArgs { + id: 0, + code_name: None, + name: None, + full_name: None, + audio_event_replace_param: None, + audio_bank: None, + hit_types: None, + element_types: None, + unk_1: 0, + gender: 0, + camp: 0, + unk_2: None, + } + } +} + +pub struct AvatarBaseTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> AvatarBaseTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(AvatarBaseTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_code_name(&mut self, code_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(AvatarBaseTemplate::VT_CODE_NAME, code_name); + } + #[inline] + pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(AvatarBaseTemplate::VT_NAME, name); + } + #[inline] + pub fn add_full_name(&mut self, full_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(AvatarBaseTemplate::VT_FULL_NAME, full_name); + } + #[inline] + pub fn add_audio_event_replace_param(&mut self, audio_event_replace_param: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(AvatarBaseTemplate::VT_AUDIO_EVENT_REPLACE_PARAM, audio_event_replace_param); + } + #[inline] + pub fn add_audio_bank(&mut self, audio_bank: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(AvatarBaseTemplate::VT_AUDIO_BANK, audio_bank); + } + #[inline] + pub fn add_hit_types(&mut self, hit_types: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(AvatarBaseTemplate::VT_HIT_TYPES, hit_types); + } + #[inline] + pub fn add_element_types(&mut self, element_types: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(AvatarBaseTemplate::VT_ELEMENT_TYPES, element_types); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: i32) { + self.fbb_.push_slot::(AvatarBaseTemplate::VT_UNK_1, unk_1, 0); + } + #[inline] + pub fn add_gender(&mut self, gender: i32) { + self.fbb_.push_slot::(AvatarBaseTemplate::VT_GENDER, gender, 0); + } + #[inline] + pub fn add_camp(&mut self, camp: i32) { + self.fbb_.push_slot::(AvatarBaseTemplate::VT_CAMP, camp, 0); + } + #[inline] + pub fn add_unk_2(&mut self, unk_2: flatbuffers::WIPOffset>>) { + self.fbb_.push_slot_always::>(AvatarBaseTemplate::VT_UNK_2, unk_2); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> AvatarBaseTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + AvatarBaseTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for AvatarBaseTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("AvatarBaseTemplate"); + ds.field("id", &self.id()); + ds.field("code_name", &self.code_name()); + ds.field("name", &self.name()); + ds.field("full_name", &self.full_name()); + ds.field("audio_event_replace_param", &self.audio_event_replace_param()); + ds.field("audio_bank", &self.audio_bank()); + ds.field("hit_types", &self.hit_types()); + ds.field("element_types", &self.element_types()); + ds.field("unk_1", &self.unk_1()); + ds.field("gender", &self.gender()); + ds.field("camp", &self.camp()); + ds.field("unk_2", &self.unk_2()); + ds.finish() + } +} +pub enum WeaponTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct WeaponTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for WeaponTemplate<'a> { + type Inner = WeaponTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> WeaponTemplate<'a> { + pub const VT_ITEM_ID: flatbuffers::VOffsetT = 4; + pub const VT_WEAPON_NAME: flatbuffers::VOffsetT = 6; + pub const VT_UNK_MISSING_FIELD: flatbuffers::VOffsetT = 8; + pub const VT_BASE_PROPERTY: flatbuffers::VOffsetT = 10; + pub const VT_RAND_PROPERTY: flatbuffers::VOffsetT = 12; + pub const VT_STAR_LIMIT: flatbuffers::VOffsetT = 14; + pub const VT_EXP_RECYCLE: flatbuffers::VOffsetT = 16; + pub const VT_WEAPON_SCRIPT_CONFIG: flatbuffers::VOffsetT = 18; + pub const VT_WEAPON_UI_MODEL: flatbuffers::VOffsetT = 20; + pub const VT_UNK_1: flatbuffers::VOffsetT = 22; + pub const VT_UNK_MISSING_FIELD_2: flatbuffers::VOffsetT = 24; + pub const VT_UNK_WEAPON_PATH: flatbuffers::VOffsetT = 26; + pub const VT_UNK_MISSING_FIELD_3: flatbuffers::VOffsetT = 28; + pub const VT_REFINE_INITIAL: flatbuffers::VOffsetT = 30; + pub const VT_REFINE_LIMIT: flatbuffers::VOffsetT = 32; + pub const VT_UNK_MISSING_FIELD_4: flatbuffers::VOffsetT = 34; + pub const VT_UNK_MISSING_FIELD_5: flatbuffers::VOffsetT = 36; + pub const VT_UNK_STRING_WITH_VALUES: flatbuffers::VOffsetT = 38; + pub const VT_UNK_MISSING_FIELD_6: flatbuffers::VOffsetT = 40; + pub const VT_UNK_2: flatbuffers::VOffsetT = 42; + pub const VT_WEAPON_DESC: flatbuffers::VOffsetT = 44; + pub const VT_WEAPON_RELEASE_TAG: flatbuffers::VOffsetT = 46; + pub const VT_UNK_EMPTY_STRING: flatbuffers::VOffsetT = 48; + pub const VT_AVATAR_ID: flatbuffers::VOffsetT = 50; + pub const VT_WEAPON_COMMENT: flatbuffers::VOffsetT = 52; + pub const VT_REFINE_COSTS: flatbuffers::VOffsetT = 54; + pub const VT_UNK_3: flatbuffers::VOffsetT = 56; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + WeaponTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args WeaponTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = WeaponTemplateBuilder::new(_fbb); + builder.add_unk_3(args.unk_3); + if let Some(x) = args.refine_costs { builder.add_refine_costs(x); } + if let Some(x) = args.weapon_comment { builder.add_weapon_comment(x); } + builder.add_avatar_id(args.avatar_id); + if let Some(x) = args.unk_empty_string { builder.add_unk_empty_string(x); } + if let Some(x) = args.weapon_release_tag { builder.add_weapon_release_tag(x); } + if let Some(x) = args.weapon_desc { builder.add_weapon_desc(x); } + builder.add_unk_2(args.unk_2); + builder.add_unk_missing_field_6(args.unk_missing_field_6); + if let Some(x) = args.unk_string_with_values { builder.add_unk_string_with_values(x); } + builder.add_unk_missing_field_5(args.unk_missing_field_5); + builder.add_unk_missing_field_4(args.unk_missing_field_4); + builder.add_refine_limit(args.refine_limit); + builder.add_refine_initial(args.refine_initial); + builder.add_unk_missing_field_3(args.unk_missing_field_3); + if let Some(x) = args.unk_weapon_path { builder.add_unk_weapon_path(x); } + builder.add_unk_missing_field_2(args.unk_missing_field_2); + builder.add_unk_1(args.unk_1); + if let Some(x) = args.weapon_ui_model { builder.add_weapon_ui_model(x); } + if let Some(x) = args.weapon_script_config { builder.add_weapon_script_config(x); } + builder.add_exp_recycle(args.exp_recycle); + builder.add_star_limit(args.star_limit); + if let Some(x) = args.rand_property { builder.add_rand_property(x); } + if let Some(x) = args.base_property { builder.add_base_property(x); } + builder.add_unk_missing_field(args.unk_missing_field); + if let Some(x) = args.weapon_name { builder.add_weapon_name(x); } + builder.add_item_id(args.item_id); + builder.finish() + } + + + #[inline] + pub fn item_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_ITEM_ID, Some(0)).unwrap()} + } + #[inline] + pub fn weapon_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(WeaponTemplate::VT_WEAPON_NAME, None)} + } + #[inline] + pub fn unk_missing_field(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_UNK_MISSING_FIELD, Some(0)).unwrap()} + } + #[inline] + pub fn base_property(&self) -> Option<&'a Property> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_BASE_PROPERTY, None)} + } + #[inline] + pub fn rand_property(&self) -> Option<&'a Property> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_RAND_PROPERTY, None)} + } + #[inline] + pub fn star_limit(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_STAR_LIMIT, Some(0)).unwrap()} + } + #[inline] + pub fn exp_recycle(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_EXP_RECYCLE, Some(0)).unwrap()} + } + #[inline] + pub fn weapon_script_config(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(WeaponTemplate::VT_WEAPON_SCRIPT_CONFIG, None)} + } + #[inline] + pub fn weapon_ui_model(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(WeaponTemplate::VT_WEAPON_UI_MODEL, None)} + } + #[inline] + pub fn unk_1(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_UNK_1, Some(0)).unwrap()} + } + #[inline] + pub fn unk_missing_field_2(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_UNK_MISSING_FIELD_2, Some(0)).unwrap()} + } + #[inline] + pub fn unk_weapon_path(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(WeaponTemplate::VT_UNK_WEAPON_PATH, None)} + } + #[inline] + pub fn unk_missing_field_3(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_UNK_MISSING_FIELD_3, Some(0)).unwrap()} + } + #[inline] + pub fn refine_initial(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_REFINE_INITIAL, Some(0)).unwrap()} + } + #[inline] + pub fn refine_limit(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_REFINE_LIMIT, Some(0)).unwrap()} + } + #[inline] + pub fn unk_missing_field_4(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_UNK_MISSING_FIELD_4, Some(0)).unwrap()} + } + #[inline] + pub fn unk_missing_field_5(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_UNK_MISSING_FIELD_5, Some(0)).unwrap()} + } + #[inline] + pub fn unk_string_with_values(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(WeaponTemplate::VT_UNK_STRING_WITH_VALUES, None)} + } + #[inline] + pub fn unk_missing_field_6(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_UNK_MISSING_FIELD_6, Some(0)).unwrap()} + } + #[inline] + pub fn unk_2(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_UNK_2, Some(0)).unwrap()} + } + #[inline] + pub fn weapon_desc(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(WeaponTemplate::VT_WEAPON_DESC, None)} + } + #[inline] + pub fn weapon_release_tag(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(WeaponTemplate::VT_WEAPON_RELEASE_TAG, None)} + } + #[inline] + pub fn unk_empty_string(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(WeaponTemplate::VT_UNK_EMPTY_STRING, None)} + } + #[inline] + pub fn avatar_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_AVATAR_ID, Some(0)).unwrap()} + } + #[inline] + pub fn weapon_comment(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(WeaponTemplate::VT_WEAPON_COMMENT, None)} + } + #[inline] + pub fn refine_costs(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(WeaponTemplate::VT_REFINE_COSTS, None)} + } + #[inline] + pub fn unk_3(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(WeaponTemplate::VT_UNK_3, Some(0)).unwrap()} + } +} + +impl flatbuffers::Verifiable for WeaponTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("item_id", Self::VT_ITEM_ID, false)? + .visit_field::>("weapon_name", Self::VT_WEAPON_NAME, false)? + .visit_field::("unk_missing_field", Self::VT_UNK_MISSING_FIELD, false)? + .visit_field::("base_property", Self::VT_BASE_PROPERTY, false)? + .visit_field::("rand_property", Self::VT_RAND_PROPERTY, false)? + .visit_field::("star_limit", Self::VT_STAR_LIMIT, false)? + .visit_field::("exp_recycle", Self::VT_EXP_RECYCLE, false)? + .visit_field::>("weapon_script_config", Self::VT_WEAPON_SCRIPT_CONFIG, false)? + .visit_field::>("weapon_ui_model", Self::VT_WEAPON_UI_MODEL, false)? + .visit_field::("unk_1", Self::VT_UNK_1, false)? + .visit_field::("unk_missing_field_2", Self::VT_UNK_MISSING_FIELD_2, false)? + .visit_field::>("unk_weapon_path", Self::VT_UNK_WEAPON_PATH, false)? + .visit_field::("unk_missing_field_3", Self::VT_UNK_MISSING_FIELD_3, false)? + .visit_field::("refine_initial", Self::VT_REFINE_INITIAL, false)? + .visit_field::("refine_limit", Self::VT_REFINE_LIMIT, false)? + .visit_field::("unk_missing_field_4", Self::VT_UNK_MISSING_FIELD_4, false)? + .visit_field::("unk_missing_field_5", Self::VT_UNK_MISSING_FIELD_5, false)? + .visit_field::>("unk_string_with_values", Self::VT_UNK_STRING_WITH_VALUES, false)? + .visit_field::("unk_missing_field_6", Self::VT_UNK_MISSING_FIELD_6, false)? + .visit_field::("unk_2", Self::VT_UNK_2, false)? + .visit_field::>("weapon_desc", Self::VT_WEAPON_DESC, false)? + .visit_field::>("weapon_release_tag", Self::VT_WEAPON_RELEASE_TAG, false)? + .visit_field::>("unk_empty_string", Self::VT_UNK_EMPTY_STRING, false)? + .visit_field::("avatar_id", Self::VT_AVATAR_ID, false)? + .visit_field::>("weapon_comment", Self::VT_WEAPON_COMMENT, false)? + .visit_field::>>("refine_costs", Self::VT_REFINE_COSTS, false)? + .visit_field::("unk_3", Self::VT_UNK_3, false)? + .finish(); + Ok(()) + } +} +pub struct WeaponTemplateArgs<'a> { + pub item_id: i32, + pub weapon_name: Option>, + pub unk_missing_field: i32, + pub base_property: Option<&'a Property>, + pub rand_property: Option<&'a Property>, + pub star_limit: i32, + pub exp_recycle: i32, + pub weapon_script_config: Option>, + pub weapon_ui_model: Option>, + pub unk_1: i32, + pub unk_missing_field_2: i32, + pub unk_weapon_path: Option>, + pub unk_missing_field_3: i32, + pub refine_initial: i32, + pub refine_limit: i32, + pub unk_missing_field_4: i32, + pub unk_missing_field_5: i32, + pub unk_string_with_values: Option>, + pub unk_missing_field_6: i32, + pub unk_2: i32, + pub weapon_desc: Option>, + pub weapon_release_tag: Option>, + pub unk_empty_string: Option>, + pub avatar_id: i32, + pub weapon_comment: Option>, + pub refine_costs: Option>>, + pub unk_3: i32, +} +impl<'a> Default for WeaponTemplateArgs<'a> { + #[inline] + fn default() -> Self { + WeaponTemplateArgs { + item_id: 0, + weapon_name: None, + unk_missing_field: 0, + base_property: None, + rand_property: None, + star_limit: 0, + exp_recycle: 0, + weapon_script_config: None, + weapon_ui_model: None, + unk_1: 0, + unk_missing_field_2: 0, + unk_weapon_path: None, + unk_missing_field_3: 0, + refine_initial: 0, + refine_limit: 0, + unk_missing_field_4: 0, + unk_missing_field_5: 0, + unk_string_with_values: None, + unk_missing_field_6: 0, + unk_2: 0, + weapon_desc: None, + weapon_release_tag: None, + unk_empty_string: None, + avatar_id: 0, + weapon_comment: None, + refine_costs: None, + unk_3: 0, + } + } +} + +pub struct WeaponTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> WeaponTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_item_id(&mut self, item_id: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_ITEM_ID, item_id, 0); + } + #[inline] + pub fn add_weapon_name(&mut self, weapon_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(WeaponTemplate::VT_WEAPON_NAME, weapon_name); + } + #[inline] + pub fn add_unk_missing_field(&mut self, unk_missing_field: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_UNK_MISSING_FIELD, unk_missing_field, 0); + } + #[inline] + pub fn add_base_property(&mut self, base_property: &Property) { + self.fbb_.push_slot_always::<&Property>(WeaponTemplate::VT_BASE_PROPERTY, base_property); + } + #[inline] + pub fn add_rand_property(&mut self, rand_property: &Property) { + self.fbb_.push_slot_always::<&Property>(WeaponTemplate::VT_RAND_PROPERTY, rand_property); + } + #[inline] + pub fn add_star_limit(&mut self, star_limit: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_STAR_LIMIT, star_limit, 0); + } + #[inline] + pub fn add_exp_recycle(&mut self, exp_recycle: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_EXP_RECYCLE, exp_recycle, 0); + } + #[inline] + pub fn add_weapon_script_config(&mut self, weapon_script_config: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(WeaponTemplate::VT_WEAPON_SCRIPT_CONFIG, weapon_script_config); + } + #[inline] + pub fn add_weapon_ui_model(&mut self, weapon_ui_model: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(WeaponTemplate::VT_WEAPON_UI_MODEL, weapon_ui_model); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_UNK_1, unk_1, 0); + } + #[inline] + pub fn add_unk_missing_field_2(&mut self, unk_missing_field_2: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_UNK_MISSING_FIELD_2, unk_missing_field_2, 0); + } + #[inline] + pub fn add_unk_weapon_path(&mut self, unk_weapon_path: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(WeaponTemplate::VT_UNK_WEAPON_PATH, unk_weapon_path); + } + #[inline] + pub fn add_unk_missing_field_3(&mut self, unk_missing_field_3: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_UNK_MISSING_FIELD_3, unk_missing_field_3, 0); + } + #[inline] + pub fn add_refine_initial(&mut self, refine_initial: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_REFINE_INITIAL, refine_initial, 0); + } + #[inline] + pub fn add_refine_limit(&mut self, refine_limit: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_REFINE_LIMIT, refine_limit, 0); + } + #[inline] + pub fn add_unk_missing_field_4(&mut self, unk_missing_field_4: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_UNK_MISSING_FIELD_4, unk_missing_field_4, 0); + } + #[inline] + pub fn add_unk_missing_field_5(&mut self, unk_missing_field_5: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_UNK_MISSING_FIELD_5, unk_missing_field_5, 0); + } + #[inline] + pub fn add_unk_string_with_values(&mut self, unk_string_with_values: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(WeaponTemplate::VT_UNK_STRING_WITH_VALUES, unk_string_with_values); + } + #[inline] + pub fn add_unk_missing_field_6(&mut self, unk_missing_field_6: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_UNK_MISSING_FIELD_6, unk_missing_field_6, 0); + } + #[inline] + pub fn add_unk_2(&mut self, unk_2: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_UNK_2, unk_2, 0); + } + #[inline] + pub fn add_weapon_desc(&mut self, weapon_desc: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(WeaponTemplate::VT_WEAPON_DESC, weapon_desc); + } + #[inline] + pub fn add_weapon_release_tag(&mut self, weapon_release_tag: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(WeaponTemplate::VT_WEAPON_RELEASE_TAG, weapon_release_tag); + } + #[inline] + pub fn add_unk_empty_string(&mut self, unk_empty_string: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(WeaponTemplate::VT_UNK_EMPTY_STRING, unk_empty_string); + } + #[inline] + pub fn add_avatar_id(&mut self, avatar_id: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_AVATAR_ID, avatar_id, 0); + } + #[inline] + pub fn add_weapon_comment(&mut self, weapon_comment: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(WeaponTemplate::VT_WEAPON_COMMENT, weapon_comment); + } + #[inline] + pub fn add_refine_costs(&mut self, refine_costs: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(WeaponTemplate::VT_REFINE_COSTS, refine_costs); + } + #[inline] + pub fn add_unk_3(&mut self, unk_3: i32) { + self.fbb_.push_slot::(WeaponTemplate::VT_UNK_3, unk_3, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> WeaponTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + WeaponTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for WeaponTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("WeaponTemplate"); + ds.field("item_id", &self.item_id()); + ds.field("weapon_name", &self.weapon_name()); + ds.field("unk_missing_field", &self.unk_missing_field()); + ds.field("base_property", &self.base_property()); + ds.field("rand_property", &self.rand_property()); + ds.field("star_limit", &self.star_limit()); + ds.field("exp_recycle", &self.exp_recycle()); + ds.field("weapon_script_config", &self.weapon_script_config()); + ds.field("weapon_ui_model", &self.weapon_ui_model()); + ds.field("unk_1", &self.unk_1()); + ds.field("unk_missing_field_2", &self.unk_missing_field_2()); + ds.field("unk_weapon_path", &self.unk_weapon_path()); + ds.field("unk_missing_field_3", &self.unk_missing_field_3()); + ds.field("refine_initial", &self.refine_initial()); + ds.field("refine_limit", &self.refine_limit()); + ds.field("unk_missing_field_4", &self.unk_missing_field_4()); + ds.field("unk_missing_field_5", &self.unk_missing_field_5()); + ds.field("unk_string_with_values", &self.unk_string_with_values()); + ds.field("unk_missing_field_6", &self.unk_missing_field_6()); + ds.field("unk_2", &self.unk_2()); + ds.field("weapon_desc", &self.weapon_desc()); + ds.field("weapon_release_tag", &self.weapon_release_tag()); + ds.field("unk_empty_string", &self.unk_empty_string()); + ds.field("avatar_id", &self.avatar_id()); + ds.field("weapon_comment", &self.weapon_comment()); + ds.field("refine_costs", &self.refine_costs()); + ds.field("unk_3", &self.unk_3()); + ds.finish() + } +} +pub enum UnlockConfigTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct UnlockConfigTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for UnlockConfigTemplate<'a> { + type Inner = UnlockConfigTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> UnlockConfigTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_UNK_1: flatbuffers::VOffsetT = 6; + pub const VT_UNK_2: flatbuffers::VOffsetT = 8; + pub const VT_UNK_3: flatbuffers::VOffsetT = 10; + pub const VT_UNK_4: flatbuffers::VOffsetT = 12; + pub const VT_UNK_5: flatbuffers::VOffsetT = 14; + pub const VT_UNK_6: flatbuffers::VOffsetT = 16; + pub const VT_UNK_7: flatbuffers::VOffsetT = 18; + pub const VT_UNK_8: flatbuffers::VOffsetT = 20; + pub const VT_ICON_RES: flatbuffers::VOffsetT = 22; + pub const VT_UNK_9: flatbuffers::VOffsetT = 24; + pub const VT_NAME: flatbuffers::VOffsetT = 26; + pub const VT_UNK_10: flatbuffers::VOffsetT = 28; + pub const VT_UNK_11: flatbuffers::VOffsetT = 30; + pub const VT_UNK_12: flatbuffers::VOffsetT = 32; + pub const VT_UNK_13: flatbuffers::VOffsetT = 34; + pub const VT_UNK_14: flatbuffers::VOffsetT = 36; + pub const VT_UNK_15: flatbuffers::VOffsetT = 38; + pub const VT_UNK_16: flatbuffers::VOffsetT = 40; + pub const VT_UNK_17: flatbuffers::VOffsetT = 42; + pub const VT_UNK_18: flatbuffers::VOffsetT = 44; + pub const VT_UNK_19: flatbuffers::VOffsetT = 46; + pub const VT_UNK_20: flatbuffers::VOffsetT = 48; + pub const VT_UNK_21: flatbuffers::VOffsetT = 50; + pub const VT_UNK_22: flatbuffers::VOffsetT = 52; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + UnlockConfigTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args UnlockConfigTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = UnlockConfigTemplateBuilder::new(_fbb); + if let Some(x) = args.unk_22 { builder.add_unk_22(x); } + builder.add_unk_21(args.unk_21); + if let Some(x) = args.unk_20 { builder.add_unk_20(x); } + builder.add_unk_19(args.unk_19); + builder.add_unk_18(args.unk_18); + if let Some(x) = args.unk_17 { builder.add_unk_17(x); } + builder.add_unk_16(args.unk_16); + if let Some(x) = args.unk_15 { builder.add_unk_15(x); } + builder.add_unk_14(args.unk_14); + builder.add_unk_12(args.unk_12); + builder.add_unk_11(args.unk_11); + if let Some(x) = args.unk_10 { builder.add_unk_10(x); } + if let Some(x) = args.name { builder.add_name(x); } + builder.add_unk_9(args.unk_9); + if let Some(x) = args.icon_res { builder.add_icon_res(x); } + if let Some(x) = args.unk_8 { builder.add_unk_8(x); } + builder.add_unk_7(args.unk_7); + if let Some(x) = args.unk_6 { builder.add_unk_6(x); } + builder.add_unk_5(args.unk_5); + builder.add_unk_4(args.unk_4); + builder.add_unk_3(args.unk_3); + if let Some(x) = args.unk_2 { builder.add_unk_2(x); } + if let Some(x) = args.unk_1 { builder.add_unk_1(x); } + builder.add_id(args.id); + builder.add_unk_13(args.unk_13); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn unk_1(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(UnlockConfigTemplate::VT_UNK_1, None)} + } + #[inline] + pub fn unk_2(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(UnlockConfigTemplate::VT_UNK_2, None)} + } + #[inline] + pub fn unk_3(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_3, Some(0)).unwrap()} + } + #[inline] + pub fn unk_4(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_4, Some(0)).unwrap()} + } + #[inline] + pub fn unk_5(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_5, Some(0)).unwrap()} + } + #[inline] + pub fn unk_6(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(UnlockConfigTemplate::VT_UNK_6, None)} + } + #[inline] + pub fn unk_7(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_7, Some(0)).unwrap()} + } + #[inline] + pub fn unk_8(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(UnlockConfigTemplate::VT_UNK_8, None)} + } + #[inline] + pub fn icon_res(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(UnlockConfigTemplate::VT_ICON_RES, None)} + } + #[inline] + pub fn unk_9(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_9, Some(0)).unwrap()} + } + #[inline] + pub fn name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(UnlockConfigTemplate::VT_NAME, None)} + } + #[inline] + pub fn unk_10(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(UnlockConfigTemplate::VT_UNK_10, None)} + } + #[inline] + pub fn unk_11(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_11, Some(0)).unwrap()} + } + #[inline] + pub fn unk_12(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_12, Some(0)).unwrap()} + } + #[inline] + pub fn unk_13(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_13, Some(false)).unwrap()} + } + #[inline] + pub fn unk_14(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_14, Some(0)).unwrap()} + } + #[inline] + pub fn unk_15(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(UnlockConfigTemplate::VT_UNK_15, None)} + } + #[inline] + pub fn unk_16(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_16, Some(0)).unwrap()} + } + #[inline] + pub fn unk_17(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(UnlockConfigTemplate::VT_UNK_17, None)} + } + #[inline] + pub fn unk_18(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_18, Some(0)).unwrap()} + } + #[inline] + pub fn unk_19(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_19, Some(0)).unwrap()} + } + #[inline] + pub fn unk_20(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(UnlockConfigTemplate::VT_UNK_20, None)} + } + #[inline] + pub fn unk_21(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(UnlockConfigTemplate::VT_UNK_21, Some(0)).unwrap()} + } + #[inline] + pub fn unk_22(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(UnlockConfigTemplate::VT_UNK_22, None)} + } +} + +impl flatbuffers::Verifiable for UnlockConfigTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("unk_1", Self::VT_UNK_1, false)? + .visit_field::>>("unk_2", Self::VT_UNK_2, false)? + .visit_field::("unk_3", Self::VT_UNK_3, false)? + .visit_field::("unk_4", Self::VT_UNK_4, false)? + .visit_field::("unk_5", Self::VT_UNK_5, false)? + .visit_field::>("unk_6", Self::VT_UNK_6, false)? + .visit_field::("unk_7", Self::VT_UNK_7, false)? + .visit_field::>("unk_8", Self::VT_UNK_8, false)? + .visit_field::>("icon_res", Self::VT_ICON_RES, false)? + .visit_field::("unk_9", Self::VT_UNK_9, false)? + .visit_field::>("name", Self::VT_NAME, false)? + .visit_field::>("unk_10", Self::VT_UNK_10, false)? + .visit_field::("unk_11", Self::VT_UNK_11, false)? + .visit_field::("unk_12", Self::VT_UNK_12, false)? + .visit_field::("unk_13", Self::VT_UNK_13, false)? + .visit_field::("unk_14", Self::VT_UNK_14, false)? + .visit_field::>("unk_15", Self::VT_UNK_15, false)? + .visit_field::("unk_16", Self::VT_UNK_16, false)? + .visit_field::>("unk_17", Self::VT_UNK_17, false)? + .visit_field::("unk_18", Self::VT_UNK_18, false)? + .visit_field::("unk_19", Self::VT_UNK_19, false)? + .visit_field::>("unk_20", Self::VT_UNK_20, false)? + .visit_field::("unk_21", Self::VT_UNK_21, false)? + .visit_field::>("unk_22", Self::VT_UNK_22, false)? + .finish(); + Ok(()) + } +} +pub struct UnlockConfigTemplateArgs<'a> { + pub id: i32, + pub unk_1: Option>, + pub unk_2: Option>>, + pub unk_3: i32, + pub unk_4: i32, + pub unk_5: i32, + pub unk_6: Option>, + pub unk_7: i32, + pub unk_8: Option>, + pub icon_res: Option>, + pub unk_9: i32, + pub name: Option>, + pub unk_10: Option>, + pub unk_11: i32, + pub unk_12: i32, + pub unk_13: bool, + pub unk_14: i32, + pub unk_15: Option>, + pub unk_16: i32, + pub unk_17: Option>, + pub unk_18: i32, + pub unk_19: i32, + pub unk_20: Option>, + pub unk_21: i32, + pub unk_22: Option>, +} +impl<'a> Default for UnlockConfigTemplateArgs<'a> { + #[inline] + fn default() -> Self { + UnlockConfigTemplateArgs { + id: 0, + unk_1: None, + unk_2: None, + unk_3: 0, + unk_4: 0, + unk_5: 0, + unk_6: None, + unk_7: 0, + unk_8: None, + icon_res: None, + unk_9: 0, + name: None, + unk_10: None, + unk_11: 0, + unk_12: 0, + unk_13: false, + unk_14: 0, + unk_15: None, + unk_16: 0, + unk_17: None, + unk_18: 0, + unk_19: 0, + unk_20: None, + unk_21: 0, + unk_22: None, + } + } +} + +pub struct UnlockConfigTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> UnlockConfigTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplate::VT_UNK_1, unk_1); + } + #[inline] + pub fn add_unk_2(&mut self, unk_2: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplate::VT_UNK_2, unk_2); + } + #[inline] + pub fn add_unk_3(&mut self, unk_3: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_3, unk_3, 0); + } + #[inline] + pub fn add_unk_4(&mut self, unk_4: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_4, unk_4, 0); + } + #[inline] + pub fn add_unk_5(&mut self, unk_5: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_5, unk_5, 0); + } + #[inline] + pub fn add_unk_6(&mut self, unk_6: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplate::VT_UNK_6, unk_6); + } + #[inline] + pub fn add_unk_7(&mut self, unk_7: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_7, unk_7, 0); + } + #[inline] + pub fn add_unk_8(&mut self, unk_8: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplate::VT_UNK_8, unk_8); + } + #[inline] + pub fn add_icon_res(&mut self, icon_res: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplate::VT_ICON_RES, icon_res); + } + #[inline] + pub fn add_unk_9(&mut self, unk_9: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_9, unk_9, 0); + } + #[inline] + pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplate::VT_NAME, name); + } + #[inline] + pub fn add_unk_10(&mut self, unk_10: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplate::VT_UNK_10, unk_10); + } + #[inline] + pub fn add_unk_11(&mut self, unk_11: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_11, unk_11, 0); + } + #[inline] + pub fn add_unk_12(&mut self, unk_12: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_12, unk_12, 0); + } + #[inline] + pub fn add_unk_13(&mut self, unk_13: bool) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_13, unk_13, false); + } + #[inline] + pub fn add_unk_14(&mut self, unk_14: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_14, unk_14, 0); + } + #[inline] + pub fn add_unk_15(&mut self, unk_15: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplate::VT_UNK_15, unk_15); + } + #[inline] + pub fn add_unk_16(&mut self, unk_16: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_16, unk_16, 0); + } + #[inline] + pub fn add_unk_17(&mut self, unk_17: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplate::VT_UNK_17, unk_17); + } + #[inline] + pub fn add_unk_18(&mut self, unk_18: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_18, unk_18, 0); + } + #[inline] + pub fn add_unk_19(&mut self, unk_19: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_19, unk_19, 0); + } + #[inline] + pub fn add_unk_20(&mut self, unk_20: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplate::VT_UNK_20, unk_20); + } + #[inline] + pub fn add_unk_21(&mut self, unk_21: i32) { + self.fbb_.push_slot::(UnlockConfigTemplate::VT_UNK_21, unk_21, 0); + } + #[inline] + pub fn add_unk_22(&mut self, unk_22: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplate::VT_UNK_22, unk_22); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> UnlockConfigTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + UnlockConfigTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for UnlockConfigTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("UnlockConfigTemplate"); + ds.field("id", &self.id()); + ds.field("unk_1", &self.unk_1()); + ds.field("unk_2", &self.unk_2()); + ds.field("unk_3", &self.unk_3()); + ds.field("unk_4", &self.unk_4()); + ds.field("unk_5", &self.unk_5()); + ds.field("unk_6", &self.unk_6()); + ds.field("unk_7", &self.unk_7()); + ds.field("unk_8", &self.unk_8()); + ds.field("icon_res", &self.icon_res()); + ds.field("unk_9", &self.unk_9()); + ds.field("name", &self.name()); + ds.field("unk_10", &self.unk_10()); + ds.field("unk_11", &self.unk_11()); + ds.field("unk_12", &self.unk_12()); + ds.field("unk_13", &self.unk_13()); + ds.field("unk_14", &self.unk_14()); + ds.field("unk_15", &self.unk_15()); + ds.field("unk_16", &self.unk_16()); + ds.field("unk_17", &self.unk_17()); + ds.field("unk_18", &self.unk_18()); + ds.field("unk_19", &self.unk_19()); + ds.field("unk_20", &self.unk_20()); + ds.field("unk_21", &self.unk_21()); + ds.field("unk_22", &self.unk_22()); + ds.finish() + } +} +pub enum PostGirlConfigTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct PostGirlConfigTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for PostGirlConfigTemplate<'a> { + type Inner = PostGirlConfigTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> PostGirlConfigTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_NAME: flatbuffers::VOffsetT = 6; + pub const VT_TAG: flatbuffers::VOffsetT = 8; + pub const VT_UNK_1: flatbuffers::VOffsetT = 10; + pub const VT_UNK_2: flatbuffers::VOffsetT = 12; + pub const VT_UNK_3: flatbuffers::VOffsetT = 14; + pub const VT_ROLE_ICON_NAME: flatbuffers::VOffsetT = 16; + pub const VT_UNK_4: flatbuffers::VOffsetT = 18; + pub const VT_UNK_5: flatbuffers::VOffsetT = 20; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + PostGirlConfigTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args PostGirlConfigTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = PostGirlConfigTemplateBuilder::new(_fbb); + if let Some(x) = args.unk_5 { builder.add_unk_5(x); } + if let Some(x) = args.unk_4 { builder.add_unk_4(x); } + if let Some(x) = args.role_icon_name { builder.add_role_icon_name(x); } + builder.add_unk_3(args.unk_3); + if let Some(x) = args.unk_2 { builder.add_unk_2(x); } + builder.add_unk_1(args.unk_1); + if let Some(x) = args.tag { builder.add_tag(x); } + if let Some(x) = args.name { builder.add_name(x); } + builder.add_id(args.id); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(PostGirlConfigTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(PostGirlConfigTemplate::VT_NAME, None)} + } + #[inline] + pub fn tag(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(PostGirlConfigTemplate::VT_TAG, None)} + } + #[inline] + pub fn unk_1(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(PostGirlConfigTemplate::VT_UNK_1, Some(0)).unwrap()} + } + #[inline] + pub fn unk_2(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(PostGirlConfigTemplate::VT_UNK_2, None)} + } + #[inline] + pub fn unk_3(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(PostGirlConfigTemplate::VT_UNK_3, Some(0)).unwrap()} + } + #[inline] + pub fn role_icon_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(PostGirlConfigTemplate::VT_ROLE_ICON_NAME, None)} + } + #[inline] + pub fn unk_4(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(PostGirlConfigTemplate::VT_UNK_4, None)} + } + #[inline] + pub fn unk_5(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(PostGirlConfigTemplate::VT_UNK_5, None)} + } +} + +impl flatbuffers::Verifiable for PostGirlConfigTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("name", Self::VT_NAME, false)? + .visit_field::>("tag", Self::VT_TAG, false)? + .visit_field::("unk_1", Self::VT_UNK_1, false)? + .visit_field::>("unk_2", Self::VT_UNK_2, false)? + .visit_field::("unk_3", Self::VT_UNK_3, false)? + .visit_field::>("role_icon_name", Self::VT_ROLE_ICON_NAME, false)? + .visit_field::>("unk_4", Self::VT_UNK_4, false)? + .visit_field::>>("unk_5", Self::VT_UNK_5, false)? + .finish(); + Ok(()) + } +} +pub struct PostGirlConfigTemplateArgs<'a> { + pub id: i32, + pub name: Option>, + pub tag: Option>, + pub unk_1: i32, + pub unk_2: Option>, + pub unk_3: i32, + pub role_icon_name: Option>, + pub unk_4: Option>, + pub unk_5: Option>>, +} +impl<'a> Default for PostGirlConfigTemplateArgs<'a> { + #[inline] + fn default() -> Self { + PostGirlConfigTemplateArgs { + id: 0, + name: None, + tag: None, + unk_1: 0, + unk_2: None, + unk_3: 0, + role_icon_name: None, + unk_4: None, + unk_5: None, + } + } +} + +pub struct PostGirlConfigTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> PostGirlConfigTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(PostGirlConfigTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(PostGirlConfigTemplate::VT_NAME, name); + } + #[inline] + pub fn add_tag(&mut self, tag: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(PostGirlConfigTemplate::VT_TAG, tag); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: i32) { + self.fbb_.push_slot::(PostGirlConfigTemplate::VT_UNK_1, unk_1, 0); + } + #[inline] + pub fn add_unk_2(&mut self, unk_2: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(PostGirlConfigTemplate::VT_UNK_2, unk_2); + } + #[inline] + pub fn add_unk_3(&mut self, unk_3: i32) { + self.fbb_.push_slot::(PostGirlConfigTemplate::VT_UNK_3, unk_3, 0); + } + #[inline] + pub fn add_role_icon_name(&mut self, role_icon_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(PostGirlConfigTemplate::VT_ROLE_ICON_NAME, role_icon_name); + } + #[inline] + pub fn add_unk_4(&mut self, unk_4: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(PostGirlConfigTemplate::VT_UNK_4, unk_4); + } + #[inline] + pub fn add_unk_5(&mut self, unk_5: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(PostGirlConfigTemplate::VT_UNK_5, unk_5); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> PostGirlConfigTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + PostGirlConfigTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for PostGirlConfigTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("PostGirlConfigTemplate"); + ds.field("id", &self.id()); + ds.field("name", &self.name()); + ds.field("tag", &self.tag()); + ds.field("unk_1", &self.unk_1()); + ds.field("unk_2", &self.unk_2()); + ds.field("unk_3", &self.unk_3()); + ds.field("role_icon_name", &self.role_icon_name()); + ds.field("unk_4", &self.unk_4()); + ds.field("unk_5", &self.unk_5()); + ds.finish() + } +} +pub enum ArchiveFileQuestTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct ArchiveFileQuestTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for ArchiveFileQuestTemplate<'a> { + type Inner = ArchiveFileQuestTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> ArchiveFileQuestTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_ARCHIVE_ID: flatbuffers::VOffsetT = 6; + pub const VT_ARCHIVE_NAME: flatbuffers::VOffsetT = 8; + pub const VT_DIFFICULTY_LV: flatbuffers::VOffsetT = 10; + pub const VT_SHOW_TYPE: flatbuffers::VOffsetT = 12; + pub const VT_RECOMMENDED_HIT_TYPES: flatbuffers::VOffsetT = 14; + pub const VT_VIDEO: flatbuffers::VOffsetT = 16; + pub const VT_ARCHIVE_FILE_NAME: flatbuffers::VOffsetT = 18; + pub const VT_ARCHIVE_FILE_NUM: flatbuffers::VOffsetT = 20; + pub const VT_ARCHIVE_FILE_NI_IDS: flatbuffers::VOffsetT = 22; + pub const VT_AUTO_DISTRIBUTION: flatbuffers::VOffsetT = 24; + pub const VT_UNK_1: flatbuffers::VOffsetT = 26; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + ArchiveFileQuestTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args ArchiveFileQuestTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = ArchiveFileQuestTemplateBuilder::new(_fbb); + if let Some(x) = args.archive_file_ni_ids { builder.add_archive_file_ni_ids(x); } + if let Some(x) = args.archive_file_num { builder.add_archive_file_num(x); } + if let Some(x) = args.archive_file_name { builder.add_archive_file_name(x); } + if let Some(x) = args.video { builder.add_video(x); } + if let Some(x) = args.recommended_hit_types { builder.add_recommended_hit_types(x); } + builder.add_show_type(args.show_type); + builder.add_difficulty_lv(args.difficulty_lv); + if let Some(x) = args.archive_name { builder.add_archive_name(x); } + builder.add_archive_id(args.archive_id); + builder.add_id(args.id); + builder.add_unk_1(args.unk_1); + builder.add_auto_distribution(args.auto_distribution); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveFileQuestTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn archive_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveFileQuestTemplate::VT_ARCHIVE_ID, Some(0)).unwrap()} + } + #[inline] + pub fn archive_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(ArchiveFileQuestTemplate::VT_ARCHIVE_NAME, None)} + } + #[inline] + pub fn difficulty_lv(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveFileQuestTemplate::VT_DIFFICULTY_LV, Some(0)).unwrap()} + } + #[inline] + pub fn show_type(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveFileQuestTemplate::VT_SHOW_TYPE, Some(0)).unwrap()} + } + #[inline] + pub fn recommended_hit_types(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(ArchiveFileQuestTemplate::VT_RECOMMENDED_HIT_TYPES, None)} + } + #[inline] + pub fn video(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(ArchiveFileQuestTemplate::VT_VIDEO, None)} + } + #[inline] + pub fn archive_file_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(ArchiveFileQuestTemplate::VT_ARCHIVE_FILE_NAME, None)} + } + #[inline] + pub fn archive_file_num(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(ArchiveFileQuestTemplate::VT_ARCHIVE_FILE_NUM, None)} + } + #[inline] + pub fn archive_file_ni_ids(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(ArchiveFileQuestTemplate::VT_ARCHIVE_FILE_NI_IDS, None)} + } + #[inline] + pub fn auto_distribution(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveFileQuestTemplate::VT_AUTO_DISTRIBUTION, Some(false)).unwrap()} + } + #[inline] + pub fn unk_1(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveFileQuestTemplate::VT_UNK_1, Some(false)).unwrap()} + } +} + +impl flatbuffers::Verifiable for ArchiveFileQuestTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::("archive_id", Self::VT_ARCHIVE_ID, false)? + .visit_field::>("archive_name", Self::VT_ARCHIVE_NAME, false)? + .visit_field::("difficulty_lv", Self::VT_DIFFICULTY_LV, false)? + .visit_field::("show_type", Self::VT_SHOW_TYPE, false)? + .visit_field::>>("recommended_hit_types", Self::VT_RECOMMENDED_HIT_TYPES, false)? + .visit_field::>("video", Self::VT_VIDEO, false)? + .visit_field::>("archive_file_name", Self::VT_ARCHIVE_FILE_NAME, false)? + .visit_field::>("archive_file_num", Self::VT_ARCHIVE_FILE_NUM, false)? + .visit_field::>>("archive_file_ni_ids", Self::VT_ARCHIVE_FILE_NI_IDS, false)? + .visit_field::("auto_distribution", Self::VT_AUTO_DISTRIBUTION, false)? + .visit_field::("unk_1", Self::VT_UNK_1, false)? + .finish(); + Ok(()) + } +} +pub struct ArchiveFileQuestTemplateArgs<'a> { + pub id: i32, + pub archive_id: i32, + pub archive_name: Option>, + pub difficulty_lv: i32, + pub show_type: i32, + pub recommended_hit_types: Option>>, + pub video: Option>, + pub archive_file_name: Option>, + pub archive_file_num: Option>, + pub archive_file_ni_ids: Option>>, + pub auto_distribution: bool, + pub unk_1: bool, +} +impl<'a> Default for ArchiveFileQuestTemplateArgs<'a> { + #[inline] + fn default() -> Self { + ArchiveFileQuestTemplateArgs { + id: 0, + archive_id: 0, + archive_name: None, + difficulty_lv: 0, + show_type: 0, + recommended_hit_types: None, + video: None, + archive_file_name: None, + archive_file_num: None, + archive_file_ni_ids: None, + auto_distribution: false, + unk_1: false, + } + } +} + +pub struct ArchiveFileQuestTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ArchiveFileQuestTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(ArchiveFileQuestTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_archive_id(&mut self, archive_id: i32) { + self.fbb_.push_slot::(ArchiveFileQuestTemplate::VT_ARCHIVE_ID, archive_id, 0); + } + #[inline] + pub fn add_archive_name(&mut self, archive_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(ArchiveFileQuestTemplate::VT_ARCHIVE_NAME, archive_name); + } + #[inline] + pub fn add_difficulty_lv(&mut self, difficulty_lv: i32) { + self.fbb_.push_slot::(ArchiveFileQuestTemplate::VT_DIFFICULTY_LV, difficulty_lv, 0); + } + #[inline] + pub fn add_show_type(&mut self, show_type: i32) { + self.fbb_.push_slot::(ArchiveFileQuestTemplate::VT_SHOW_TYPE, show_type, 0); + } + #[inline] + pub fn add_recommended_hit_types(&mut self, recommended_hit_types: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(ArchiveFileQuestTemplate::VT_RECOMMENDED_HIT_TYPES, recommended_hit_types); + } + #[inline] + pub fn add_video(&mut self, video: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(ArchiveFileQuestTemplate::VT_VIDEO, video); + } + #[inline] + pub fn add_archive_file_name(&mut self, archive_file_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(ArchiveFileQuestTemplate::VT_ARCHIVE_FILE_NAME, archive_file_name); + } + #[inline] + pub fn add_archive_file_num(&mut self, archive_file_num: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(ArchiveFileQuestTemplate::VT_ARCHIVE_FILE_NUM, archive_file_num); + } + #[inline] + pub fn add_archive_file_ni_ids(&mut self, archive_file_ni_ids: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(ArchiveFileQuestTemplate::VT_ARCHIVE_FILE_NI_IDS, archive_file_ni_ids); + } + #[inline] + pub fn add_auto_distribution(&mut self, auto_distribution: bool) { + self.fbb_.push_slot::(ArchiveFileQuestTemplate::VT_AUTO_DISTRIBUTION, auto_distribution, false); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: bool) { + self.fbb_.push_slot::(ArchiveFileQuestTemplate::VT_UNK_1, unk_1, false); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ArchiveFileQuestTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + ArchiveFileQuestTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for ArchiveFileQuestTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("ArchiveFileQuestTemplate"); + ds.field("id", &self.id()); + ds.field("archive_id", &self.archive_id()); + ds.field("archive_name", &self.archive_name()); + ds.field("difficulty_lv", &self.difficulty_lv()); + ds.field("show_type", &self.show_type()); + ds.field("recommended_hit_types", &self.recommended_hit_types()); + ds.field("video", &self.video()); + ds.field("archive_file_name", &self.archive_file_name()); + ds.field("archive_file_num", &self.archive_file_num()); + ds.field("archive_file_ni_ids", &self.archive_file_ni_ids()); + ds.field("auto_distribution", &self.auto_distribution()); + ds.field("unk_1", &self.unk_1()); + ds.finish() + } +} +pub enum ArchiveBattleQuestTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct ArchiveBattleQuestTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for ArchiveBattleQuestTemplate<'a> { + type Inner = ArchiveBattleQuestTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> ArchiveBattleQuestTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_QUEST_NAME: flatbuffers::VOffsetT = 6; + pub const VT_QUEST_DESC: flatbuffers::VOffsetT = 8; + pub const VT_TARGET: flatbuffers::VOffsetT = 10; + pub const VT_QUEST_TYPE: flatbuffers::VOffsetT = 12; + pub const VT_CHAPTER: flatbuffers::VOffsetT = 14; + pub const VT_DIFFICULTY: flatbuffers::VOffsetT = 16; + pub const VT_MONSTER_LEVEL: flatbuffers::VOffsetT = 18; + pub const VT_RECOMMENDED_LEVEL: flatbuffers::VOffsetT = 20; + pub const VT_UNK_1: flatbuffers::VOffsetT = 22; + pub const VT_UNK_2: flatbuffers::VOffsetT = 24; + pub const VT_HOLLOW_ID: flatbuffers::VOffsetT = 26; + pub const VT_FIRST_BATTLE_EVENT_ID: flatbuffers::VOffsetT = 28; + pub const VT_BATTLE_EVENT_ID: flatbuffers::VOffsetT = 30; + pub const VT_UNK_3: flatbuffers::VOffsetT = 32; + pub const VT_BATTLE_RANK: flatbuffers::VOffsetT = 34; + pub const VT_SLOT_1_AVATAR: flatbuffers::VOffsetT = 36; + pub const VT_SLOT_2_AVATAR: flatbuffers::VOffsetT = 38; + pub const VT_SLOT_3_AVATAR: flatbuffers::VOffsetT = 40; + pub const VT_BUDDY: flatbuffers::VOffsetT = 42; + pub const VT_UNK_4: flatbuffers::VOffsetT = 44; + pub const VT_UNK_5: flatbuffers::VOffsetT = 46; + pub const VT_UNK_6: flatbuffers::VOffsetT = 48; + pub const VT_CHAPTER_NAME: flatbuffers::VOffsetT = 50; + pub const VT_QUEST_IMAGE: flatbuffers::VOffsetT = 52; + pub const VT_UNK_7: flatbuffers::VOffsetT = 54; + pub const VT_UNK_8: flatbuffers::VOffsetT = 56; + pub const VT_UNK_9: flatbuffers::VOffsetT = 58; + pub const VT_UNK_10: flatbuffers::VOffsetT = 60; + pub const VT_UNK_11: flatbuffers::VOffsetT = 62; + pub const VT_UNK_12: flatbuffers::VOffsetT = 64; + pub const VT_UNK_13: flatbuffers::VOffsetT = 66; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + ArchiveBattleQuestTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args ArchiveBattleQuestTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = ArchiveBattleQuestTemplateBuilder::new(_fbb); + builder.add_unk_13(args.unk_13); + if let Some(x) = args.unk_12 { builder.add_unk_12(x); } + builder.add_unk_11(args.unk_11); + builder.add_unk_9(args.unk_9); + if let Some(x) = args.unk_7 { builder.add_unk_7(x); } + builder.add_quest_image(args.quest_image); + if let Some(x) = args.chapter_name { builder.add_chapter_name(x); } + builder.add_unk_5(args.unk_5); + builder.add_buddy(args.buddy); + builder.add_slot_3_avatar(args.slot_3_avatar); + builder.add_slot_2_avatar(args.slot_2_avatar); + builder.add_slot_1_avatar(args.slot_1_avatar); + if let Some(x) = args.battle_rank { builder.add_battle_rank(x); } + builder.add_unk_3(args.unk_3); + builder.add_battle_event_id(args.battle_event_id); + builder.add_first_battle_event_id(args.first_battle_event_id); + builder.add_hollow_id(args.hollow_id); + builder.add_unk_2(args.unk_2); + builder.add_unk_1(args.unk_1); + builder.add_recommended_level(args.recommended_level); + builder.add_monster_level(args.monster_level); + builder.add_difficulty(args.difficulty); + builder.add_chapter(args.chapter); + builder.add_quest_type(args.quest_type); + if let Some(x) = args.target { builder.add_target(x); } + if let Some(x) = args.quest_desc { builder.add_quest_desc(x); } + if let Some(x) = args.quest_name { builder.add_quest_name(x); } + builder.add_id(args.id); + builder.add_unk_10(args.unk_10); + builder.add_unk_8(args.unk_8); + builder.add_unk_6(args.unk_6); + builder.add_unk_4(args.unk_4); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn quest_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(ArchiveBattleQuestTemplate::VT_QUEST_NAME, None)} + } + #[inline] + pub fn quest_desc(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(ArchiveBattleQuestTemplate::VT_QUEST_DESC, None)} + } + #[inline] + pub fn target(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(ArchiveBattleQuestTemplate::VT_TARGET, None)} + } + #[inline] + pub fn quest_type(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_QUEST_TYPE, Some(0)).unwrap()} + } + #[inline] + pub fn chapter(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_CHAPTER, Some(0)).unwrap()} + } + #[inline] + pub fn difficulty(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_DIFFICULTY, Some(0)).unwrap()} + } + #[inline] + pub fn monster_level(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_MONSTER_LEVEL, Some(0)).unwrap()} + } + #[inline] + pub fn recommended_level(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_RECOMMENDED_LEVEL, Some(0)).unwrap()} + } + #[inline] + pub fn unk_1(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_UNK_1, Some(0)).unwrap()} + } + #[inline] + pub fn unk_2(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_UNK_2, Some(0)).unwrap()} + } + #[inline] + pub fn hollow_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_HOLLOW_ID, Some(0)).unwrap()} + } + #[inline] + pub fn first_battle_event_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_FIRST_BATTLE_EVENT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn battle_event_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_BATTLE_EVENT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn unk_3(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_UNK_3, Some(0)).unwrap()} + } + #[inline] + pub fn battle_rank(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(ArchiveBattleQuestTemplate::VT_BATTLE_RANK, None)} + } + #[inline] + pub fn slot_1_avatar(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_SLOT_1_AVATAR, Some(0)).unwrap()} + } + #[inline] + pub fn slot_2_avatar(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_SLOT_2_AVATAR, Some(0)).unwrap()} + } + #[inline] + pub fn slot_3_avatar(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_SLOT_3_AVATAR, Some(0)).unwrap()} + } + #[inline] + pub fn buddy(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_BUDDY, Some(0)).unwrap()} + } + #[inline] + pub fn unk_4(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_UNK_4, Some(false)).unwrap()} + } + #[inline] + pub fn unk_5(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_UNK_5, Some(0)).unwrap()} + } + #[inline] + pub fn unk_6(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_UNK_6, Some(false)).unwrap()} + } + #[inline] + pub fn chapter_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(ArchiveBattleQuestTemplate::VT_CHAPTER_NAME, None)} + } + #[inline] + pub fn quest_image(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_QUEST_IMAGE, Some(0)).unwrap()} + } + #[inline] + pub fn unk_7(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(ArchiveBattleQuestTemplate::VT_UNK_7, None)} + } + #[inline] + pub fn unk_8(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_UNK_8, Some(false)).unwrap()} + } + #[inline] + pub fn unk_9(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_UNK_9, Some(0)).unwrap()} + } + #[inline] + pub fn unk_10(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_UNK_10, Some(false)).unwrap()} + } + #[inline] + pub fn unk_11(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_UNK_11, Some(0)).unwrap()} + } + #[inline] + pub fn unk_12(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(ArchiveBattleQuestTemplate::VT_UNK_12, None)} + } + #[inline] + pub fn unk_13(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(ArchiveBattleQuestTemplate::VT_UNK_13, Some(0)).unwrap()} + } +} + +impl flatbuffers::Verifiable for ArchiveBattleQuestTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("quest_name", Self::VT_QUEST_NAME, false)? + .visit_field::>("quest_desc", Self::VT_QUEST_DESC, false)? + .visit_field::>("target", Self::VT_TARGET, false)? + .visit_field::("quest_type", Self::VT_QUEST_TYPE, false)? + .visit_field::("chapter", Self::VT_CHAPTER, false)? + .visit_field::("difficulty", Self::VT_DIFFICULTY, false)? + .visit_field::("monster_level", Self::VT_MONSTER_LEVEL, false)? + .visit_field::("recommended_level", Self::VT_RECOMMENDED_LEVEL, false)? + .visit_field::("unk_1", Self::VT_UNK_1, false)? + .visit_field::("unk_2", Self::VT_UNK_2, false)? + .visit_field::("hollow_id", Self::VT_HOLLOW_ID, false)? + .visit_field::("first_battle_event_id", Self::VT_FIRST_BATTLE_EVENT_ID, false)? + .visit_field::("battle_event_id", Self::VT_BATTLE_EVENT_ID, false)? + .visit_field::("unk_3", Self::VT_UNK_3, false)? + .visit_field::>("battle_rank", Self::VT_BATTLE_RANK, false)? + .visit_field::("slot_1_avatar", Self::VT_SLOT_1_AVATAR, false)? + .visit_field::("slot_2_avatar", Self::VT_SLOT_2_AVATAR, false)? + .visit_field::("slot_3_avatar", Self::VT_SLOT_3_AVATAR, false)? + .visit_field::("buddy", Self::VT_BUDDY, false)? + .visit_field::("unk_4", Self::VT_UNK_4, false)? + .visit_field::("unk_5", Self::VT_UNK_5, false)? + .visit_field::("unk_6", Self::VT_UNK_6, false)? + .visit_field::>("chapter_name", Self::VT_CHAPTER_NAME, false)? + .visit_field::("quest_image", Self::VT_QUEST_IMAGE, false)? + .visit_field::>("unk_7", Self::VT_UNK_7, false)? + .visit_field::("unk_8", Self::VT_UNK_8, false)? + .visit_field::("unk_9", Self::VT_UNK_9, false)? + .visit_field::("unk_10", Self::VT_UNK_10, false)? + .visit_field::("unk_11", Self::VT_UNK_11, false)? + .visit_field::>("unk_12", Self::VT_UNK_12, false)? + .visit_field::("unk_13", Self::VT_UNK_13, false)? + .finish(); + Ok(()) + } +} +pub struct ArchiveBattleQuestTemplateArgs<'a> { + pub id: i32, + pub quest_name: Option>, + pub quest_desc: Option>, + pub target: Option>, + pub quest_type: i32, + pub chapter: i32, + pub difficulty: i32, + pub monster_level: i32, + pub recommended_level: i32, + pub unk_1: i32, + pub unk_2: i32, + pub hollow_id: i32, + pub first_battle_event_id: i32, + pub battle_event_id: i32, + pub unk_3: i32, + pub battle_rank: Option>, + pub slot_1_avatar: i32, + pub slot_2_avatar: i32, + pub slot_3_avatar: i32, + pub buddy: i32, + pub unk_4: bool, + pub unk_5: i32, + pub unk_6: bool, + pub chapter_name: Option>, + pub quest_image: i32, + pub unk_7: Option>, + pub unk_8: bool, + pub unk_9: i32, + pub unk_10: bool, + pub unk_11: i32, + pub unk_12: Option>, + pub unk_13: i32, +} +impl<'a> Default for ArchiveBattleQuestTemplateArgs<'a> { + #[inline] + fn default() -> Self { + ArchiveBattleQuestTemplateArgs { + id: 0, + quest_name: None, + quest_desc: None, + target: None, + quest_type: 0, + chapter: 0, + difficulty: 0, + monster_level: 0, + recommended_level: 0, + unk_1: 0, + unk_2: 0, + hollow_id: 0, + first_battle_event_id: 0, + battle_event_id: 0, + unk_3: 0, + battle_rank: None, + slot_1_avatar: 0, + slot_2_avatar: 0, + slot_3_avatar: 0, + buddy: 0, + unk_4: false, + unk_5: 0, + unk_6: false, + chapter_name: None, + quest_image: 0, + unk_7: None, + unk_8: false, + unk_9: 0, + unk_10: false, + unk_11: 0, + unk_12: None, + unk_13: 0, + } + } +} + +pub struct ArchiveBattleQuestTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ArchiveBattleQuestTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_quest_name(&mut self, quest_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(ArchiveBattleQuestTemplate::VT_QUEST_NAME, quest_name); + } + #[inline] + pub fn add_quest_desc(&mut self, quest_desc: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(ArchiveBattleQuestTemplate::VT_QUEST_DESC, quest_desc); + } + #[inline] + pub fn add_target(&mut self, target: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(ArchiveBattleQuestTemplate::VT_TARGET, target); + } + #[inline] + pub fn add_quest_type(&mut self, quest_type: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_QUEST_TYPE, quest_type, 0); + } + #[inline] + pub fn add_chapter(&mut self, chapter: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_CHAPTER, chapter, 0); + } + #[inline] + pub fn add_difficulty(&mut self, difficulty: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_DIFFICULTY, difficulty, 0); + } + #[inline] + pub fn add_monster_level(&mut self, monster_level: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_MONSTER_LEVEL, monster_level, 0); + } + #[inline] + pub fn add_recommended_level(&mut self, recommended_level: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_RECOMMENDED_LEVEL, recommended_level, 0); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_UNK_1, unk_1, 0); + } + #[inline] + pub fn add_unk_2(&mut self, unk_2: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_UNK_2, unk_2, 0); + } + #[inline] + pub fn add_hollow_id(&mut self, hollow_id: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_HOLLOW_ID, hollow_id, 0); + } + #[inline] + pub fn add_first_battle_event_id(&mut self, first_battle_event_id: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_FIRST_BATTLE_EVENT_ID, first_battle_event_id, 0); + } + #[inline] + pub fn add_battle_event_id(&mut self, battle_event_id: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_BATTLE_EVENT_ID, battle_event_id, 0); + } + #[inline] + pub fn add_unk_3(&mut self, unk_3: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_UNK_3, unk_3, 0); + } + #[inline] + pub fn add_battle_rank(&mut self, battle_rank: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(ArchiveBattleQuestTemplate::VT_BATTLE_RANK, battle_rank); + } + #[inline] + pub fn add_slot_1_avatar(&mut self, slot_1_avatar: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_SLOT_1_AVATAR, slot_1_avatar, 0); + } + #[inline] + pub fn add_slot_2_avatar(&mut self, slot_2_avatar: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_SLOT_2_AVATAR, slot_2_avatar, 0); + } + #[inline] + pub fn add_slot_3_avatar(&mut self, slot_3_avatar: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_SLOT_3_AVATAR, slot_3_avatar, 0); + } + #[inline] + pub fn add_buddy(&mut self, buddy: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_BUDDY, buddy, 0); + } + #[inline] + pub fn add_unk_4(&mut self, unk_4: bool) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_UNK_4, unk_4, false); + } + #[inline] + pub fn add_unk_5(&mut self, unk_5: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_UNK_5, unk_5, 0); + } + #[inline] + pub fn add_unk_6(&mut self, unk_6: bool) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_UNK_6, unk_6, false); + } + #[inline] + pub fn add_chapter_name(&mut self, chapter_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(ArchiveBattleQuestTemplate::VT_CHAPTER_NAME, chapter_name); + } + #[inline] + pub fn add_quest_image(&mut self, quest_image: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_QUEST_IMAGE, quest_image, 0); + } + #[inline] + pub fn add_unk_7(&mut self, unk_7: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(ArchiveBattleQuestTemplate::VT_UNK_7, unk_7); + } + #[inline] + pub fn add_unk_8(&mut self, unk_8: bool) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_UNK_8, unk_8, false); + } + #[inline] + pub fn add_unk_9(&mut self, unk_9: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_UNK_9, unk_9, 0); + } + #[inline] + pub fn add_unk_10(&mut self, unk_10: bool) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_UNK_10, unk_10, false); + } + #[inline] + pub fn add_unk_11(&mut self, unk_11: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_UNK_11, unk_11, 0); + } + #[inline] + pub fn add_unk_12(&mut self, unk_12: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(ArchiveBattleQuestTemplate::VT_UNK_12, unk_12); + } + #[inline] + pub fn add_unk_13(&mut self, unk_13: i32) { + self.fbb_.push_slot::(ArchiveBattleQuestTemplate::VT_UNK_13, unk_13, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ArchiveBattleQuestTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + ArchiveBattleQuestTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for ArchiveBattleQuestTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("ArchiveBattleQuestTemplate"); + ds.field("id", &self.id()); + ds.field("quest_name", &self.quest_name()); + ds.field("quest_desc", &self.quest_desc()); + ds.field("target", &self.target()); + ds.field("quest_type", &self.quest_type()); + ds.field("chapter", &self.chapter()); + ds.field("difficulty", &self.difficulty()); + ds.field("monster_level", &self.monster_level()); + ds.field("recommended_level", &self.recommended_level()); + ds.field("unk_1", &self.unk_1()); + ds.field("unk_2", &self.unk_2()); + ds.field("hollow_id", &self.hollow_id()); + ds.field("first_battle_event_id", &self.first_battle_event_id()); + ds.field("battle_event_id", &self.battle_event_id()); + ds.field("unk_3", &self.unk_3()); + ds.field("battle_rank", &self.battle_rank()); + ds.field("slot_1_avatar", &self.slot_1_avatar()); + ds.field("slot_2_avatar", &self.slot_2_avatar()); + ds.field("slot_3_avatar", &self.slot_3_avatar()); + ds.field("buddy", &self.buddy()); + ds.field("unk_4", &self.unk_4()); + ds.field("unk_5", &self.unk_5()); + ds.field("unk_6", &self.unk_6()); + ds.field("chapter_name", &self.chapter_name()); + ds.field("quest_image", &self.quest_image()); + ds.field("unk_7", &self.unk_7()); + ds.field("unk_8", &self.unk_8()); + ds.field("unk_9", &self.unk_9()); + ds.field("unk_10", &self.unk_10()); + ds.field("unk_11", &self.unk_11()); + ds.field("unk_12", &self.unk_12()); + ds.field("unk_13", &self.unk_13()); + ds.finish() + } +} +pub enum SectionConfigTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct SectionConfigTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for SectionConfigTemplate<'a> { + type Inner = SectionConfigTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> SectionConfigTemplate<'a> { + pub const VT_SECTION_ID: flatbuffers::VOffsetT = 4; + pub const VT_SECTION_PHOTO: flatbuffers::VOffsetT = 6; + pub const VT_NAME: flatbuffers::VOffsetT = 8; + pub const VT_BORN_TRANSFORM: flatbuffers::VOffsetT = 10; + pub const VT_ALTERNATIVE_BORN_TRANSFORM: flatbuffers::VOffsetT = 12; + pub const VT_UNK_3: flatbuffers::VOffsetT = 14; + pub const VT_SECTION_NAME: flatbuffers::VOffsetT = 16; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + SectionConfigTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args SectionConfigTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = SectionConfigTemplateBuilder::new(_fbb); + if let Some(x) = args.section_name { builder.add_section_name(x); } + builder.add_unk_3(args.unk_3); + if let Some(x) = args.alternative_born_transform { builder.add_alternative_born_transform(x); } + if let Some(x) = args.born_transform { builder.add_born_transform(x); } + if let Some(x) = args.name { builder.add_name(x); } + if let Some(x) = args.section_photo { builder.add_section_photo(x); } + builder.add_section_id(args.section_id); + builder.finish() + } + + + #[inline] + pub fn section_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(SectionConfigTemplate::VT_SECTION_ID, Some(0)).unwrap()} + } + #[inline] + pub fn section_photo(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(SectionConfigTemplate::VT_SECTION_PHOTO, None)} + } + #[inline] + pub fn name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(SectionConfigTemplate::VT_NAME, None)} + } + #[inline] + pub fn born_transform(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(SectionConfigTemplate::VT_BORN_TRANSFORM, None)} + } + #[inline] + pub fn alternative_born_transform(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(SectionConfigTemplate::VT_ALTERNATIVE_BORN_TRANSFORM, None)} + } + #[inline] + pub fn unk_3(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(SectionConfigTemplate::VT_UNK_3, Some(0)).unwrap()} + } + #[inline] + pub fn section_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(SectionConfigTemplate::VT_SECTION_NAME, None)} + } +} + +impl flatbuffers::Verifiable for SectionConfigTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("section_id", Self::VT_SECTION_ID, false)? + .visit_field::>("section_photo", Self::VT_SECTION_PHOTO, false)? + .visit_field::>("name", Self::VT_NAME, false)? + .visit_field::>("born_transform", Self::VT_BORN_TRANSFORM, false)? + .visit_field::>("alternative_born_transform", Self::VT_ALTERNATIVE_BORN_TRANSFORM, false)? + .visit_field::("unk_3", Self::VT_UNK_3, false)? + .visit_field::>("section_name", Self::VT_SECTION_NAME, false)? + .finish(); + Ok(()) + } +} +pub struct SectionConfigTemplateArgs<'a> { + pub section_id: i32, + pub section_photo: Option>, + pub name: Option>, + pub born_transform: Option>, + pub alternative_born_transform: Option>, + pub unk_3: i32, + pub section_name: Option>, +} +impl<'a> Default for SectionConfigTemplateArgs<'a> { + #[inline] + fn default() -> Self { + SectionConfigTemplateArgs { + section_id: 0, + section_photo: None, + name: None, + born_transform: None, + alternative_born_transform: None, + unk_3: 0, + section_name: None, + } + } +} + +pub struct SectionConfigTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> SectionConfigTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_section_id(&mut self, section_id: i32) { + self.fbb_.push_slot::(SectionConfigTemplate::VT_SECTION_ID, section_id, 0); + } + #[inline] + pub fn add_section_photo(&mut self, section_photo: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(SectionConfigTemplate::VT_SECTION_PHOTO, section_photo); + } + #[inline] + pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(SectionConfigTemplate::VT_NAME, name); + } + #[inline] + pub fn add_born_transform(&mut self, born_transform: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(SectionConfigTemplate::VT_BORN_TRANSFORM, born_transform); + } + #[inline] + pub fn add_alternative_born_transform(&mut self, alternative_born_transform: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(SectionConfigTemplate::VT_ALTERNATIVE_BORN_TRANSFORM, alternative_born_transform); + } + #[inline] + pub fn add_unk_3(&mut self, unk_3: i32) { + self.fbb_.push_slot::(SectionConfigTemplate::VT_UNK_3, unk_3, 0); + } + #[inline] + pub fn add_section_name(&mut self, section_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(SectionConfigTemplate::VT_SECTION_NAME, section_name); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> SectionConfigTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + SectionConfigTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for SectionConfigTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("SectionConfigTemplate"); + ds.field("section_id", &self.section_id()); + ds.field("section_photo", &self.section_photo()); + ds.field("name", &self.name()); + ds.field("born_transform", &self.born_transform()); + ds.field("alternative_born_transform", &self.alternative_born_transform()); + ds.field("unk_3", &self.unk_3()); + ds.field("section_name", &self.section_name()); + ds.finish() + } +} +pub enum MainCityBGMConfigTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct MainCityBGMConfigTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for MainCityBGMConfigTemplate<'a> { + type Inner = MainCityBGMConfigTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> MainCityBGMConfigTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_PLAY_EVENT_NAME: flatbuffers::VOffsetT = 6; + pub const VT_STATE_NAME: flatbuffers::VOffsetT = 8; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + MainCityBGMConfigTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args MainCityBGMConfigTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = MainCityBGMConfigTemplateBuilder::new(_fbb); + if let Some(x) = args.state_name { builder.add_state_name(x); } + if let Some(x) = args.play_event_name { builder.add_play_event_name(x); } + builder.add_id(args.id); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(MainCityBGMConfigTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn play_event_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MainCityBGMConfigTemplate::VT_PLAY_EVENT_NAME, None)} + } + #[inline] + pub fn state_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MainCityBGMConfigTemplate::VT_STATE_NAME, None)} + } +} + +impl flatbuffers::Verifiable for MainCityBGMConfigTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("play_event_name", Self::VT_PLAY_EVENT_NAME, false)? + .visit_field::>("state_name", Self::VT_STATE_NAME, false)? + .finish(); + Ok(()) + } +} +pub struct MainCityBGMConfigTemplateArgs<'a> { + pub id: i32, + pub play_event_name: Option>, + pub state_name: Option>, +} +impl<'a> Default for MainCityBGMConfigTemplateArgs<'a> { + #[inline] + fn default() -> Self { + MainCityBGMConfigTemplateArgs { + id: 0, + play_event_name: None, + state_name: None, + } + } +} + +pub struct MainCityBGMConfigTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> MainCityBGMConfigTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(MainCityBGMConfigTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_play_event_name(&mut self, play_event_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MainCityBGMConfigTemplate::VT_PLAY_EVENT_NAME, play_event_name); + } + #[inline] + pub fn add_state_name(&mut self, state_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MainCityBGMConfigTemplate::VT_STATE_NAME, state_name); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> MainCityBGMConfigTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + MainCityBGMConfigTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for MainCityBGMConfigTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("MainCityBGMConfigTemplate"); + ds.field("id", &self.id()); + ds.field("play_event_name", &self.play_event_name()); + ds.field("state_name", &self.state_name()); + ds.finish() + } +} +pub enum HollowBuffTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct HollowBuffTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for HollowBuffTemplate<'a> { + type Inner = HollowBuffTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> HollowBuffTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_BUFF_NAME: flatbuffers::VOffsetT = 6; + pub const VT_MENU_NAME: flatbuffers::VOffsetT = 8; + pub const VT_MINI_ICONS: flatbuffers::VOffsetT = 10; + pub const VT_DECORATED_ICONS: flatbuffers::VOffsetT = 12; + pub const VT_UNK_1: flatbuffers::VOffsetT = 14; + pub const VT_PRICE: flatbuffers::VOffsetT = 16; + pub const VT_UNLOCK_CONDITION: flatbuffers::VOffsetT = 18; + pub const VT_UNK_2: flatbuffers::VOffsetT = 20; + pub const VT_CLIENT_ABILITY: flatbuffers::VOffsetT = 22; + pub const VT_TARGETS: flatbuffers::VOffsetT = 24; + pub const VT_UNK_3: flatbuffers::VOffsetT = 26; + pub const VT_MAX_TIMES: flatbuffers::VOffsetT = 28; + pub const VT_UNK_4: flatbuffers::VOffsetT = 30; + pub const VT_DESCRIPTION_TEXT: flatbuffers::VOffsetT = 32; + pub const VT_PREFAB: flatbuffers::VOffsetT = 34; + pub const VT_ICON: flatbuffers::VOffsetT = 36; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + HollowBuffTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args HollowBuffTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = HollowBuffTemplateBuilder::new(_fbb); + if let Some(x) = args.icon { builder.add_icon(x); } + if let Some(x) = args.prefab { builder.add_prefab(x); } + if let Some(x) = args.description_text { builder.add_description_text(x); } + if let Some(x) = args.unk_4 { builder.add_unk_4(x); } + builder.add_max_times(args.max_times); + builder.add_unk_3(args.unk_3); + if let Some(x) = args.targets { builder.add_targets(x); } + builder.add_client_ability(args.client_ability); + if let Some(x) = args.unlock_condition { builder.add_unlock_condition(x); } + builder.add_price(args.price); + builder.add_unk_1(args.unk_1); + if let Some(x) = args.decorated_icons { builder.add_decorated_icons(x); } + if let Some(x) = args.mini_icons { builder.add_mini_icons(x); } + if let Some(x) = args.menu_name { builder.add_menu_name(x); } + if let Some(x) = args.buff_name { builder.add_buff_name(x); } + builder.add_id(args.id); + builder.add_unk_2(args.unk_2); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowBuffTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn buff_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowBuffTemplate::VT_BUFF_NAME, None)} + } + #[inline] + pub fn menu_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowBuffTemplate::VT_MENU_NAME, None)} + } + #[inline] + pub fn mini_icons(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(HollowBuffTemplate::VT_MINI_ICONS, None)} + } + #[inline] + pub fn decorated_icons(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(HollowBuffTemplate::VT_DECORATED_ICONS, None)} + } + #[inline] + pub fn unk_1(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowBuffTemplate::VT_UNK_1, Some(0)).unwrap()} + } + #[inline] + pub fn price(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowBuffTemplate::VT_PRICE, Some(0)).unwrap()} + } + #[inline] + pub fn unlock_condition(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowBuffTemplate::VT_UNLOCK_CONDITION, None)} + } + #[inline] + pub fn unk_2(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowBuffTemplate::VT_UNK_2, Some(false)).unwrap()} + } + #[inline] + pub fn client_ability(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowBuffTemplate::VT_CLIENT_ABILITY, Some(0)).unwrap()} + } + #[inline] + pub fn targets(&self) -> Option>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(HollowBuffTemplate::VT_TARGETS, None)} + } + #[inline] + pub fn unk_3(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowBuffTemplate::VT_UNK_3, Some(0)).unwrap()} + } + #[inline] + pub fn max_times(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowBuffTemplate::VT_MAX_TIMES, Some(0)).unwrap()} + } + #[inline] + pub fn unk_4(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowBuffTemplate::VT_UNK_4, None)} + } + #[inline] + pub fn description_text(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowBuffTemplate::VT_DESCRIPTION_TEXT, None)} + } + #[inline] + pub fn prefab(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowBuffTemplate::VT_PREFAB, None)} + } + #[inline] + pub fn icon(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowBuffTemplate::VT_ICON, None)} + } +} + +impl flatbuffers::Verifiable for HollowBuffTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("buff_name", Self::VT_BUFF_NAME, false)? + .visit_field::>("menu_name", Self::VT_MENU_NAME, false)? + .visit_field::>>("mini_icons", Self::VT_MINI_ICONS, false)? + .visit_field::>>("decorated_icons", Self::VT_DECORATED_ICONS, false)? + .visit_field::("unk_1", Self::VT_UNK_1, false)? + .visit_field::("price", Self::VT_PRICE, false)? + .visit_field::>("unlock_condition", Self::VT_UNLOCK_CONDITION, false)? + .visit_field::("unk_2", Self::VT_UNK_2, false)? + .visit_field::("client_ability", Self::VT_CLIENT_ABILITY, false)? + .visit_field::>>>("targets", Self::VT_TARGETS, false)? + .visit_field::("unk_3", Self::VT_UNK_3, false)? + .visit_field::("max_times", Self::VT_MAX_TIMES, false)? + .visit_field::>("unk_4", Self::VT_UNK_4, false)? + .visit_field::>("description_text", Self::VT_DESCRIPTION_TEXT, false)? + .visit_field::>("prefab", Self::VT_PREFAB, false)? + .visit_field::>("icon", Self::VT_ICON, false)? + .finish(); + Ok(()) + } +} +pub struct HollowBuffTemplateArgs<'a> { + pub id: i32, + pub buff_name: Option>, + pub menu_name: Option>, + pub mini_icons: Option>>, + pub decorated_icons: Option>>, + pub unk_1: i32, + pub price: i32, + pub unlock_condition: Option>, + pub unk_2: bool, + pub client_ability: i32, + pub targets: Option>>>, + pub unk_3: i32, + pub max_times: i32, + pub unk_4: Option>, + pub description_text: Option>, + pub prefab: Option>, + pub icon: Option>, +} +impl<'a> Default for HollowBuffTemplateArgs<'a> { + #[inline] + fn default() -> Self { + HollowBuffTemplateArgs { + id: 0, + buff_name: None, + menu_name: None, + mini_icons: None, + decorated_icons: None, + unk_1: 0, + price: 0, + unlock_condition: None, + unk_2: false, + client_ability: 0, + targets: None, + unk_3: 0, + max_times: 0, + unk_4: None, + description_text: None, + prefab: None, + icon: None, + } + } +} + +pub struct HollowBuffTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> HollowBuffTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(HollowBuffTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_buff_name(&mut self, buff_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowBuffTemplate::VT_BUFF_NAME, buff_name); + } + #[inline] + pub fn add_menu_name(&mut self, menu_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowBuffTemplate::VT_MENU_NAME, menu_name); + } + #[inline] + pub fn add_mini_icons(&mut self, mini_icons: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(HollowBuffTemplate::VT_MINI_ICONS, mini_icons); + } + #[inline] + pub fn add_decorated_icons(&mut self, decorated_icons: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(HollowBuffTemplate::VT_DECORATED_ICONS, decorated_icons); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: i32) { + self.fbb_.push_slot::(HollowBuffTemplate::VT_UNK_1, unk_1, 0); + } + #[inline] + pub fn add_price(&mut self, price: i32) { + self.fbb_.push_slot::(HollowBuffTemplate::VT_PRICE, price, 0); + } + #[inline] + pub fn add_unlock_condition(&mut self, unlock_condition: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowBuffTemplate::VT_UNLOCK_CONDITION, unlock_condition); + } + #[inline] + pub fn add_unk_2(&mut self, unk_2: bool) { + self.fbb_.push_slot::(HollowBuffTemplate::VT_UNK_2, unk_2, false); + } + #[inline] + pub fn add_client_ability(&mut self, client_ability: i32) { + self.fbb_.push_slot::(HollowBuffTemplate::VT_CLIENT_ABILITY, client_ability, 0); + } + #[inline] + pub fn add_targets(&mut self, targets: flatbuffers::WIPOffset>>) { + self.fbb_.push_slot_always::>(HollowBuffTemplate::VT_TARGETS, targets); + } + #[inline] + pub fn add_unk_3(&mut self, unk_3: i32) { + self.fbb_.push_slot::(HollowBuffTemplate::VT_UNK_3, unk_3, 0); + } + #[inline] + pub fn add_max_times(&mut self, max_times: i32) { + self.fbb_.push_slot::(HollowBuffTemplate::VT_MAX_TIMES, max_times, 0); + } + #[inline] + pub fn add_unk_4(&mut self, unk_4: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowBuffTemplate::VT_UNK_4, unk_4); + } + #[inline] + pub fn add_description_text(&mut self, description_text: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowBuffTemplate::VT_DESCRIPTION_TEXT, description_text); + } + #[inline] + pub fn add_prefab(&mut self, prefab: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowBuffTemplate::VT_PREFAB, prefab); + } + #[inline] + pub fn add_icon(&mut self, icon: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowBuffTemplate::VT_ICON, icon); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> HollowBuffTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + HollowBuffTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for HollowBuffTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("HollowBuffTemplate"); + ds.field("id", &self.id()); + ds.field("buff_name", &self.buff_name()); + ds.field("menu_name", &self.menu_name()); + ds.field("mini_icons", &self.mini_icons()); + ds.field("decorated_icons", &self.decorated_icons()); + ds.field("unk_1", &self.unk_1()); + ds.field("price", &self.price()); + ds.field("unlock_condition", &self.unlock_condition()); + ds.field("unk_2", &self.unk_2()); + ds.field("client_ability", &self.client_ability()); + ds.field("targets", &self.targets()); + ds.field("unk_3", &self.unk_3()); + ds.field("max_times", &self.max_times()); + ds.field("unk_4", &self.unk_4()); + ds.field("description_text", &self.description_text()); + ds.field("prefab", &self.prefab()); + ds.field("icon", &self.icon()); + ds.finish() + } +} +pub enum CafeConfigTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct CafeConfigTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for CafeConfigTemplate<'a> { + type Inner = CafeConfigTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> CafeConfigTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_MENU_NAME: flatbuffers::VOffsetT = 6; + pub const VT_UNK_1: flatbuffers::VOffsetT = 8; + pub const VT_PRICE: flatbuffers::VOffsetT = 10; + pub const VT_UNLOCK_CONDITION: flatbuffers::VOffsetT = 12; + pub const VT_UNK_2: flatbuffers::VOffsetT = 14; + pub const VT_DESCRIPTION_TEXT: flatbuffers::VOffsetT = 16; + pub const VT_ICON: flatbuffers::VOffsetT = 18; + pub const VT_CAFE_PREFAB: flatbuffers::VOffsetT = 20; + pub const VT_REWARD_BUFF_ID: flatbuffers::VOffsetT = 22; + pub const VT_UNK_3: flatbuffers::VOffsetT = 24; + pub const VT_UNK_4: flatbuffers::VOffsetT = 26; + pub const VT_UNK_5: flatbuffers::VOffsetT = 28; + pub const VT_ENERGY_AMOUNT: flatbuffers::VOffsetT = 30; + pub const VT_UNK_7: flatbuffers::VOffsetT = 32; + pub const VT_UNK_8: flatbuffers::VOffsetT = 34; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + CafeConfigTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args CafeConfigTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = CafeConfigTemplateBuilder::new(_fbb); + builder.add_unk_8(args.unk_8); + builder.add_unk_7(args.unk_7); + builder.add_energy_amount(args.energy_amount); + if let Some(x) = args.unk_5 { builder.add_unk_5(x); } + builder.add_unk_4(args.unk_4); + builder.add_unk_3(args.unk_3); + builder.add_reward_buff_id(args.reward_buff_id); + if let Some(x) = args.cafe_prefab { builder.add_cafe_prefab(x); } + builder.add_icon(args.icon); + if let Some(x) = args.description_text { builder.add_description_text(x); } + if let Some(x) = args.unlock_condition { builder.add_unlock_condition(x); } + builder.add_price(args.price); + builder.add_unk_1(args.unk_1); + if let Some(x) = args.menu_name { builder.add_menu_name(x); } + builder.add_id(args.id); + builder.add_unk_2(args.unk_2); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(CafeConfigTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn menu_name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(CafeConfigTemplate::VT_MENU_NAME, None)} + } + #[inline] + pub fn unk_1(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(CafeConfigTemplate::VT_UNK_1, Some(0)).unwrap()} + } + #[inline] + pub fn price(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(CafeConfigTemplate::VT_PRICE, Some(0)).unwrap()} + } + #[inline] + pub fn unlock_condition(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(CafeConfigTemplate::VT_UNLOCK_CONDITION, None)} + } + #[inline] + pub fn unk_2(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(CafeConfigTemplate::VT_UNK_2, Some(false)).unwrap()} + } + #[inline] + pub fn description_text(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(CafeConfigTemplate::VT_DESCRIPTION_TEXT, None)} + } + #[inline] + pub fn icon(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(CafeConfigTemplate::VT_ICON, Some(0)).unwrap()} + } + #[inline] + pub fn cafe_prefab(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(CafeConfigTemplate::VT_CAFE_PREFAB, None)} + } + #[inline] + pub fn reward_buff_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(CafeConfigTemplate::VT_REWARD_BUFF_ID, Some(0)).unwrap()} + } + #[inline] + pub fn unk_3(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(CafeConfigTemplate::VT_UNK_3, Some(0)).unwrap()} + } + #[inline] + pub fn unk_4(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(CafeConfigTemplate::VT_UNK_4, Some(0)).unwrap()} + } + #[inline] + pub fn unk_5(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(CafeConfigTemplate::VT_UNK_5, None)} + } + #[inline] + pub fn energy_amount(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(CafeConfigTemplate::VT_ENERGY_AMOUNT, Some(0)).unwrap()} + } + #[inline] + pub fn unk_7(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(CafeConfigTemplate::VT_UNK_7, Some(0)).unwrap()} + } + #[inline] + pub fn unk_8(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(CafeConfigTemplate::VT_UNK_8, Some(0)).unwrap()} + } +} + +impl flatbuffers::Verifiable for CafeConfigTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("menu_name", Self::VT_MENU_NAME, false)? + .visit_field::("unk_1", Self::VT_UNK_1, false)? + .visit_field::("price", Self::VT_PRICE, false)? + .visit_field::>("unlock_condition", Self::VT_UNLOCK_CONDITION, false)? + .visit_field::("unk_2", Self::VT_UNK_2, false)? + .visit_field::>("description_text", Self::VT_DESCRIPTION_TEXT, false)? + .visit_field::("icon", Self::VT_ICON, false)? + .visit_field::>("cafe_prefab", Self::VT_CAFE_PREFAB, false)? + .visit_field::("reward_buff_id", Self::VT_REWARD_BUFF_ID, false)? + .visit_field::("unk_3", Self::VT_UNK_3, false)? + .visit_field::("unk_4", Self::VT_UNK_4, false)? + .visit_field::>>("unk_5", Self::VT_UNK_5, false)? + .visit_field::("energy_amount", Self::VT_ENERGY_AMOUNT, false)? + .visit_field::("unk_7", Self::VT_UNK_7, false)? + .visit_field::("unk_8", Self::VT_UNK_8, false)? + .finish(); + Ok(()) + } +} +pub struct CafeConfigTemplateArgs<'a> { + pub id: i32, + pub menu_name: Option>, + pub unk_1: i32, + pub price: i32, + pub unlock_condition: Option>, + pub unk_2: bool, + pub description_text: Option>, + pub icon: i32, + pub cafe_prefab: Option>, + pub reward_buff_id: i32, + pub unk_3: i32, + pub unk_4: i32, + pub unk_5: Option>>, + pub energy_amount: i32, + pub unk_7: i32, + pub unk_8: i32, +} +impl<'a> Default for CafeConfigTemplateArgs<'a> { + #[inline] + fn default() -> Self { + CafeConfigTemplateArgs { + id: 0, + menu_name: None, + unk_1: 0, + price: 0, + unlock_condition: None, + unk_2: false, + description_text: None, + icon: 0, + cafe_prefab: None, + reward_buff_id: 0, + unk_3: 0, + unk_4: 0, + unk_5: None, + energy_amount: 0, + unk_7: 0, + unk_8: 0, + } + } +} + +pub struct CafeConfigTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> CafeConfigTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(CafeConfigTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_menu_name(&mut self, menu_name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(CafeConfigTemplate::VT_MENU_NAME, menu_name); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: i32) { + self.fbb_.push_slot::(CafeConfigTemplate::VT_UNK_1, unk_1, 0); + } + #[inline] + pub fn add_price(&mut self, price: i32) { + self.fbb_.push_slot::(CafeConfigTemplate::VT_PRICE, price, 0); + } + #[inline] + pub fn add_unlock_condition(&mut self, unlock_condition: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(CafeConfigTemplate::VT_UNLOCK_CONDITION, unlock_condition); + } + #[inline] + pub fn add_unk_2(&mut self, unk_2: bool) { + self.fbb_.push_slot::(CafeConfigTemplate::VT_UNK_2, unk_2, false); + } + #[inline] + pub fn add_description_text(&mut self, description_text: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(CafeConfigTemplate::VT_DESCRIPTION_TEXT, description_text); + } + #[inline] + pub fn add_icon(&mut self, icon: i32) { + self.fbb_.push_slot::(CafeConfigTemplate::VT_ICON, icon, 0); + } + #[inline] + pub fn add_cafe_prefab(&mut self, cafe_prefab: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(CafeConfigTemplate::VT_CAFE_PREFAB, cafe_prefab); + } + #[inline] + pub fn add_reward_buff_id(&mut self, reward_buff_id: i32) { + self.fbb_.push_slot::(CafeConfigTemplate::VT_REWARD_BUFF_ID, reward_buff_id, 0); + } + #[inline] + pub fn add_unk_3(&mut self, unk_3: i32) { + self.fbb_.push_slot::(CafeConfigTemplate::VT_UNK_3, unk_3, 0); + } + #[inline] + pub fn add_unk_4(&mut self, unk_4: i32) { + self.fbb_.push_slot::(CafeConfigTemplate::VT_UNK_4, unk_4, 0); + } + #[inline] + pub fn add_unk_5(&mut self, unk_5: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(CafeConfigTemplate::VT_UNK_5, unk_5); + } + #[inline] + pub fn add_energy_amount(&mut self, energy_amount: i32) { + self.fbb_.push_slot::(CafeConfigTemplate::VT_ENERGY_AMOUNT, energy_amount, 0); + } + #[inline] + pub fn add_unk_7(&mut self, unk_7: i32) { + self.fbb_.push_slot::(CafeConfigTemplate::VT_UNK_7, unk_7, 0); + } + #[inline] + pub fn add_unk_8(&mut self, unk_8: i32) { + self.fbb_.push_slot::(CafeConfigTemplate::VT_UNK_8, unk_8, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> CafeConfigTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + CafeConfigTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for CafeConfigTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("CafeConfigTemplate"); + ds.field("id", &self.id()); + ds.field("menu_name", &self.menu_name()); + ds.field("unk_1", &self.unk_1()); + ds.field("price", &self.price()); + ds.field("unlock_condition", &self.unlock_condition()); + ds.field("unk_2", &self.unk_2()); + ds.field("description_text", &self.description_text()); + ds.field("icon", &self.icon()); + ds.field("cafe_prefab", &self.cafe_prefab()); + ds.field("reward_buff_id", &self.reward_buff_id()); + ds.field("unk_3", &self.unk_3()); + ds.field("unk_4", &self.unk_4()); + ds.field("unk_5", &self.unk_5()); + ds.field("energy_amount", &self.energy_amount()); + ds.field("unk_7", &self.unk_7()); + ds.field("unk_8", &self.unk_8()); + ds.finish() + } +} +pub enum EquipmentTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct EquipmentTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for EquipmentTemplate<'a> { + type Inner = EquipmentTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> EquipmentTemplate<'a> { + pub const VT_ITEM_ID: flatbuffers::VOffsetT = 4; + pub const VT_EQUIPMENT_TYPE: flatbuffers::VOffsetT = 6; + pub const VT_SUIT_TYPE: flatbuffers::VOffsetT = 8; + pub const VT_DISK_ICON_PATH: flatbuffers::VOffsetT = 10; + pub const VT_DRAWING_PATH: flatbuffers::VOffsetT = 12; + pub const VT_FRONT_LABEL_TEXTURE_PATH: flatbuffers::VOffsetT = 14; + pub const VT_BACK_LABEL_TEXTURE_PATH: flatbuffers::VOffsetT = 16; + pub const VT_DISK_TEXTURE_PATH: flatbuffers::VOffsetT = 18; + pub const VT_PLAY_MUSIC_TAG: flatbuffers::VOffsetT = 20; + pub const VT_PAUSE_MUSIC_TAG: flatbuffers::VOffsetT = 22; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + EquipmentTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args EquipmentTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = EquipmentTemplateBuilder::new(_fbb); + if let Some(x) = args.pause_music_tag { builder.add_pause_music_tag(x); } + if let Some(x) = args.play_music_tag { builder.add_play_music_tag(x); } + if let Some(x) = args.disk_texture_path { builder.add_disk_texture_path(x); } + if let Some(x) = args.back_label_texture_path { builder.add_back_label_texture_path(x); } + if let Some(x) = args.front_label_texture_path { builder.add_front_label_texture_path(x); } + if let Some(x) = args.drawing_path { builder.add_drawing_path(x); } + if let Some(x) = args.disk_icon_path { builder.add_disk_icon_path(x); } + builder.add_suit_type(args.suit_type); + builder.add_equipment_type(args.equipment_type); + builder.add_item_id(args.item_id); + builder.finish() + } + + + #[inline] + pub fn item_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(EquipmentTemplate::VT_ITEM_ID, Some(0)).unwrap()} + } + #[inline] + pub fn equipment_type(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(EquipmentTemplate::VT_EQUIPMENT_TYPE, Some(0)).unwrap()} + } + #[inline] + pub fn suit_type(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(EquipmentTemplate::VT_SUIT_TYPE, Some(0)).unwrap()} + } + #[inline] + pub fn disk_icon_path(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentTemplate::VT_DISK_ICON_PATH, None)} + } + #[inline] + pub fn drawing_path(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentTemplate::VT_DRAWING_PATH, None)} + } + #[inline] + pub fn front_label_texture_path(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentTemplate::VT_FRONT_LABEL_TEXTURE_PATH, None)} + } + #[inline] + pub fn back_label_texture_path(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentTemplate::VT_BACK_LABEL_TEXTURE_PATH, None)} + } + #[inline] + pub fn disk_texture_path(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentTemplate::VT_DISK_TEXTURE_PATH, None)} + } + #[inline] + pub fn play_music_tag(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentTemplate::VT_PLAY_MUSIC_TAG, None)} + } + #[inline] + pub fn pause_music_tag(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentTemplate::VT_PAUSE_MUSIC_TAG, None)} + } +} + +impl flatbuffers::Verifiable for EquipmentTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("item_id", Self::VT_ITEM_ID, false)? + .visit_field::("equipment_type", Self::VT_EQUIPMENT_TYPE, false)? + .visit_field::("suit_type", Self::VT_SUIT_TYPE, false)? + .visit_field::>("disk_icon_path", Self::VT_DISK_ICON_PATH, false)? + .visit_field::>("drawing_path", Self::VT_DRAWING_PATH, false)? + .visit_field::>("front_label_texture_path", Self::VT_FRONT_LABEL_TEXTURE_PATH, false)? + .visit_field::>("back_label_texture_path", Self::VT_BACK_LABEL_TEXTURE_PATH, false)? + .visit_field::>("disk_texture_path", Self::VT_DISK_TEXTURE_PATH, false)? + .visit_field::>("play_music_tag", Self::VT_PLAY_MUSIC_TAG, false)? + .visit_field::>("pause_music_tag", Self::VT_PAUSE_MUSIC_TAG, false)? + .finish(); + Ok(()) + } +} +pub struct EquipmentTemplateArgs<'a> { + pub item_id: i32, + pub equipment_type: i32, + pub suit_type: i32, + pub disk_icon_path: Option>, + pub drawing_path: Option>, + pub front_label_texture_path: Option>, + pub back_label_texture_path: Option>, + pub disk_texture_path: Option>, + pub play_music_tag: Option>, + pub pause_music_tag: Option>, +} +impl<'a> Default for EquipmentTemplateArgs<'a> { + #[inline] + fn default() -> Self { + EquipmentTemplateArgs { + item_id: 0, + equipment_type: 0, + suit_type: 0, + disk_icon_path: None, + drawing_path: None, + front_label_texture_path: None, + back_label_texture_path: None, + disk_texture_path: None, + play_music_tag: None, + pause_music_tag: None, + } + } +} + +pub struct EquipmentTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> EquipmentTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_item_id(&mut self, item_id: i32) { + self.fbb_.push_slot::(EquipmentTemplate::VT_ITEM_ID, item_id, 0); + } + #[inline] + pub fn add_equipment_type(&mut self, equipment_type: i32) { + self.fbb_.push_slot::(EquipmentTemplate::VT_EQUIPMENT_TYPE, equipment_type, 0); + } + #[inline] + pub fn add_suit_type(&mut self, suit_type: i32) { + self.fbb_.push_slot::(EquipmentTemplate::VT_SUIT_TYPE, suit_type, 0); + } + #[inline] + pub fn add_disk_icon_path(&mut self, disk_icon_path: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentTemplate::VT_DISK_ICON_PATH, disk_icon_path); + } + #[inline] + pub fn add_drawing_path(&mut self, drawing_path: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentTemplate::VT_DRAWING_PATH, drawing_path); + } + #[inline] + pub fn add_front_label_texture_path(&mut self, front_label_texture_path: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentTemplate::VT_FRONT_LABEL_TEXTURE_PATH, front_label_texture_path); + } + #[inline] + pub fn add_back_label_texture_path(&mut self, back_label_texture_path: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentTemplate::VT_BACK_LABEL_TEXTURE_PATH, back_label_texture_path); + } + #[inline] + pub fn add_disk_texture_path(&mut self, disk_texture_path: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentTemplate::VT_DISK_TEXTURE_PATH, disk_texture_path); + } + #[inline] + pub fn add_play_music_tag(&mut self, play_music_tag: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentTemplate::VT_PLAY_MUSIC_TAG, play_music_tag); + } + #[inline] + pub fn add_pause_music_tag(&mut self, pause_music_tag: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentTemplate::VT_PAUSE_MUSIC_TAG, pause_music_tag); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> EquipmentTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + EquipmentTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for EquipmentTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("EquipmentTemplate"); + ds.field("item_id", &self.item_id()); + ds.field("equipment_type", &self.equipment_type()); + ds.field("suit_type", &self.suit_type()); + ds.field("disk_icon_path", &self.disk_icon_path()); + ds.field("drawing_path", &self.drawing_path()); + ds.field("front_label_texture_path", &self.front_label_texture_path()); + ds.field("back_label_texture_path", &self.back_label_texture_path()); + ds.field("disk_texture_path", &self.disk_texture_path()); + ds.field("play_music_tag", &self.play_music_tag()); + ds.field("pause_music_tag", &self.pause_music_tag()); + ds.finish() + } +} +pub enum EquipmentSuitTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct EquipmentSuitTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for EquipmentSuitTemplate<'a> { + type Inner = EquipmentSuitTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> EquipmentSuitTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_NAME: flatbuffers::VOffsetT = 6; + pub const VT_PRIMARY_CONDITION: flatbuffers::VOffsetT = 8; + pub const VT_PRIMARY_SUIT_PROPERTYS: flatbuffers::VOffsetT = 10; + pub const VT_PRIMARY_SUIT_ABILITY: flatbuffers::VOffsetT = 12; + pub const VT_PRIMARY_DESCRIPTION: flatbuffers::VOffsetT = 14; + pub const VT_SECONDARY_CONDITION: flatbuffers::VOffsetT = 16; + pub const VT_SECONDARY_SUIT_PROPERTYS: flatbuffers::VOffsetT = 18; + pub const VT_SECONDARY_SUIT_ABILITY: flatbuffers::VOffsetT = 20; + pub const VT_SECONDARY_DESCRIPTION: flatbuffers::VOffsetT = 22; + pub const VT_SUIT_ITEM_ICON: flatbuffers::VOffsetT = 24; + pub const VT_SUIT_STORY: flatbuffers::VOffsetT = 26; + pub const VT_SUIT_FILTER_OPTION: flatbuffers::VOffsetT = 28; + pub const VT_SUIT_ICON: flatbuffers::VOffsetT = 30; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + EquipmentSuitTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args EquipmentSuitTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = EquipmentSuitTemplateBuilder::new(_fbb); + if let Some(x) = args.suit_icon { builder.add_suit_icon(x); } + if let Some(x) = args.suit_filter_option { builder.add_suit_filter_option(x); } + if let Some(x) = args.suit_story { builder.add_suit_story(x); } + if let Some(x) = args.suit_item_icon { builder.add_suit_item_icon(x); } + if let Some(x) = args.secondary_description { builder.add_secondary_description(x); } + builder.add_secondary_suit_ability(args.secondary_suit_ability); + if let Some(x) = args.secondary_suit_propertys { builder.add_secondary_suit_propertys(x); } + builder.add_secondary_condition(args.secondary_condition); + if let Some(x) = args.primary_description { builder.add_primary_description(x); } + builder.add_primary_suit_ability(args.primary_suit_ability); + if let Some(x) = args.primary_suit_propertys { builder.add_primary_suit_propertys(x); } + builder.add_primary_condition(args.primary_condition); + if let Some(x) = args.name { builder.add_name(x); } + builder.add_id(args.id); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(EquipmentSuitTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentSuitTemplate::VT_NAME, None)} + } + #[inline] + pub fn primary_condition(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(EquipmentSuitTemplate::VT_PRIMARY_CONDITION, Some(0)).unwrap()} + } + #[inline] + pub fn primary_suit_propertys(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(EquipmentSuitTemplate::VT_PRIMARY_SUIT_PROPERTYS, None)} + } + #[inline] + pub fn primary_suit_ability(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(EquipmentSuitTemplate::VT_PRIMARY_SUIT_ABILITY, Some(0)).unwrap()} + } + #[inline] + pub fn primary_description(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentSuitTemplate::VT_PRIMARY_DESCRIPTION, None)} + } + #[inline] + pub fn secondary_condition(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(EquipmentSuitTemplate::VT_SECONDARY_CONDITION, Some(0)).unwrap()} + } + #[inline] + pub fn secondary_suit_propertys(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(EquipmentSuitTemplate::VT_SECONDARY_SUIT_PROPERTYS, None)} + } + #[inline] + pub fn secondary_suit_ability(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(EquipmentSuitTemplate::VT_SECONDARY_SUIT_ABILITY, Some(0)).unwrap()} + } + #[inline] + pub fn secondary_description(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentSuitTemplate::VT_SECONDARY_DESCRIPTION, None)} + } + #[inline] + pub fn suit_item_icon(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentSuitTemplate::VT_SUIT_ITEM_ICON, None)} + } + #[inline] + pub fn suit_story(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentSuitTemplate::VT_SUIT_STORY, None)} + } + #[inline] + pub fn suit_filter_option(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentSuitTemplate::VT_SUIT_FILTER_OPTION, None)} + } + #[inline] + pub fn suit_icon(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(EquipmentSuitTemplate::VT_SUIT_ICON, None)} + } +} + +impl flatbuffers::Verifiable for EquipmentSuitTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::>("name", Self::VT_NAME, false)? + .visit_field::("primary_condition", Self::VT_PRIMARY_CONDITION, false)? + .visit_field::>>("primary_suit_propertys", Self::VT_PRIMARY_SUIT_PROPERTYS, false)? + .visit_field::("primary_suit_ability", Self::VT_PRIMARY_SUIT_ABILITY, false)? + .visit_field::>("primary_description", Self::VT_PRIMARY_DESCRIPTION, false)? + .visit_field::("secondary_condition", Self::VT_SECONDARY_CONDITION, false)? + .visit_field::>>("secondary_suit_propertys", Self::VT_SECONDARY_SUIT_PROPERTYS, false)? + .visit_field::("secondary_suit_ability", Self::VT_SECONDARY_SUIT_ABILITY, false)? + .visit_field::>("secondary_description", Self::VT_SECONDARY_DESCRIPTION, false)? + .visit_field::>("suit_item_icon", Self::VT_SUIT_ITEM_ICON, false)? + .visit_field::>("suit_story", Self::VT_SUIT_STORY, false)? + .visit_field::>("suit_filter_option", Self::VT_SUIT_FILTER_OPTION, false)? + .visit_field::>("suit_icon", Self::VT_SUIT_ICON, false)? + .finish(); + Ok(()) + } +} +pub struct EquipmentSuitTemplateArgs<'a> { + pub id: i32, + pub name: Option>, + pub primary_condition: i32, + pub primary_suit_propertys: Option>>, + pub primary_suit_ability: i32, + pub primary_description: Option>, + pub secondary_condition: i32, + pub secondary_suit_propertys: Option>>, + pub secondary_suit_ability: i32, + pub secondary_description: Option>, + pub suit_item_icon: Option>, + pub suit_story: Option>, + pub suit_filter_option: Option>, + pub suit_icon: Option>, +} +impl<'a> Default for EquipmentSuitTemplateArgs<'a> { + #[inline] + fn default() -> Self { + EquipmentSuitTemplateArgs { + id: 0, + name: None, + primary_condition: 0, + primary_suit_propertys: None, + primary_suit_ability: 0, + primary_description: None, + secondary_condition: 0, + secondary_suit_propertys: None, + secondary_suit_ability: 0, + secondary_description: None, + suit_item_icon: None, + suit_story: None, + suit_filter_option: None, + suit_icon: None, + } + } +} + +pub struct EquipmentSuitTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> EquipmentSuitTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(EquipmentSuitTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentSuitTemplate::VT_NAME, name); + } + #[inline] + pub fn add_primary_condition(&mut self, primary_condition: i32) { + self.fbb_.push_slot::(EquipmentSuitTemplate::VT_PRIMARY_CONDITION, primary_condition, 0); + } + #[inline] + pub fn add_primary_suit_propertys(&mut self, primary_suit_propertys: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(EquipmentSuitTemplate::VT_PRIMARY_SUIT_PROPERTYS, primary_suit_propertys); + } + #[inline] + pub fn add_primary_suit_ability(&mut self, primary_suit_ability: i32) { + self.fbb_.push_slot::(EquipmentSuitTemplate::VT_PRIMARY_SUIT_ABILITY, primary_suit_ability, 0); + } + #[inline] + pub fn add_primary_description(&mut self, primary_description: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentSuitTemplate::VT_PRIMARY_DESCRIPTION, primary_description); + } + #[inline] + pub fn add_secondary_condition(&mut self, secondary_condition: i32) { + self.fbb_.push_slot::(EquipmentSuitTemplate::VT_SECONDARY_CONDITION, secondary_condition, 0); + } + #[inline] + pub fn add_secondary_suit_propertys(&mut self, secondary_suit_propertys: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(EquipmentSuitTemplate::VT_SECONDARY_SUIT_PROPERTYS, secondary_suit_propertys); + } + #[inline] + pub fn add_secondary_suit_ability(&mut self, secondary_suit_ability: i32) { + self.fbb_.push_slot::(EquipmentSuitTemplate::VT_SECONDARY_SUIT_ABILITY, secondary_suit_ability, 0); + } + #[inline] + pub fn add_secondary_description(&mut self, secondary_description: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentSuitTemplate::VT_SECONDARY_DESCRIPTION, secondary_description); + } + #[inline] + pub fn add_suit_item_icon(&mut self, suit_item_icon: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentSuitTemplate::VT_SUIT_ITEM_ICON, suit_item_icon); + } + #[inline] + pub fn add_suit_story(&mut self, suit_story: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentSuitTemplate::VT_SUIT_STORY, suit_story); + } + #[inline] + pub fn add_suit_filter_option(&mut self, suit_filter_option: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentSuitTemplate::VT_SUIT_FILTER_OPTION, suit_filter_option); + } + #[inline] + pub fn add_suit_icon(&mut self, suit_icon: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(EquipmentSuitTemplate::VT_SUIT_ICON, suit_icon); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> EquipmentSuitTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + EquipmentSuitTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for EquipmentSuitTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("EquipmentSuitTemplate"); + ds.field("id", &self.id()); + ds.field("name", &self.name()); + ds.field("primary_condition", &self.primary_condition()); + ds.field("primary_suit_propertys", &self.primary_suit_propertys()); + ds.field("primary_suit_ability", &self.primary_suit_ability()); + ds.field("primary_description", &self.primary_description()); + ds.field("secondary_condition", &self.secondary_condition()); + ds.field("secondary_suit_propertys", &self.secondary_suit_propertys()); + ds.field("secondary_suit_ability", &self.secondary_suit_ability()); + ds.field("secondary_description", &self.secondary_description()); + ds.field("suit_item_icon", &self.suit_item_icon()); + ds.field("suit_story", &self.suit_story()); + ds.field("suit_filter_option", &self.suit_filter_option()); + ds.field("suit_icon", &self.suit_icon()); + ds.finish() + } +} +pub enum HollowConfigTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct HollowConfigTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for HollowConfigTemplate<'a> { + type Inner = HollowConfigTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> HollowConfigTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_HOLLOW_GROUP: flatbuffers::VOffsetT = 6; + pub const VT_NAME: flatbuffers::VOffsetT = 8; + pub const VT_UNLOCK_CONDITION: flatbuffers::VOffsetT = 10; + pub const VT_LOCK_HINT: flatbuffers::VOffsetT = 12; + pub const VT_PIC_RES: flatbuffers::VOffsetT = 14; + pub const VT_MODEL_RES: flatbuffers::VOffsetT = 16; + pub const VT_LOCKED_COLOR: flatbuffers::VOffsetT = 18; + pub const VT_UNLOCKED_COLOR: flatbuffers::VOffsetT = 20; + pub const VT_UNK_1: flatbuffers::VOffsetT = 22; + pub const VT_UNK_2: flatbuffers::VOffsetT = 24; + pub const VT_UNK_3: flatbuffers::VOffsetT = 26; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + HollowConfigTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args HollowConfigTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = HollowConfigTemplateBuilder::new(_fbb); + if let Some(x) = args.unk_3 { builder.add_unk_3(x); } + if let Some(x) = args.unk_2 { builder.add_unk_2(x); } + if let Some(x) = args.unlocked_color { builder.add_unlocked_color(x); } + if let Some(x) = args.locked_color { builder.add_locked_color(x); } + if let Some(x) = args.model_res { builder.add_model_res(x); } + if let Some(x) = args.pic_res { builder.add_pic_res(x); } + if let Some(x) = args.lock_hint { builder.add_lock_hint(x); } + if let Some(x) = args.unlock_condition { builder.add_unlock_condition(x); } + if let Some(x) = args.name { builder.add_name(x); } + builder.add_hollow_group(args.hollow_group); + builder.add_id(args.id); + builder.add_unk_1(args.unk_1); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowConfigTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn hollow_group(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowConfigTemplate::VT_HOLLOW_GROUP, Some(0)).unwrap()} + } + #[inline] + pub fn name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowConfigTemplate::VT_NAME, None)} + } + #[inline] + pub fn unlock_condition(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowConfigTemplate::VT_UNLOCK_CONDITION, None)} + } + #[inline] + pub fn lock_hint(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowConfigTemplate::VT_LOCK_HINT, None)} + } + #[inline] + pub fn pic_res(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowConfigTemplate::VT_PIC_RES, None)} + } + #[inline] + pub fn model_res(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowConfigTemplate::VT_MODEL_RES, None)} + } + #[inline] + pub fn locked_color(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowConfigTemplate::VT_LOCKED_COLOR, None)} + } + #[inline] + pub fn unlocked_color(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowConfigTemplate::VT_UNLOCKED_COLOR, None)} + } + #[inline] + pub fn unk_1(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowConfigTemplate::VT_UNK_1, Some(false)).unwrap()} + } + #[inline] + pub fn unk_2(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowConfigTemplate::VT_UNK_2, None)} + } + #[inline] + pub fn unk_3(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowConfigTemplate::VT_UNK_3, None)} + } +} + +impl flatbuffers::Verifiable for HollowConfigTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::("hollow_group", Self::VT_HOLLOW_GROUP, false)? + .visit_field::>("name", Self::VT_NAME, false)? + .visit_field::>("unlock_condition", Self::VT_UNLOCK_CONDITION, false)? + .visit_field::>("lock_hint", Self::VT_LOCK_HINT, false)? + .visit_field::>("pic_res", Self::VT_PIC_RES, false)? + .visit_field::>("model_res", Self::VT_MODEL_RES, false)? + .visit_field::>("locked_color", Self::VT_LOCKED_COLOR, false)? + .visit_field::>("unlocked_color", Self::VT_UNLOCKED_COLOR, false)? + .visit_field::("unk_1", Self::VT_UNK_1, false)? + .visit_field::>("unk_2", Self::VT_UNK_2, false)? + .visit_field::>("unk_3", Self::VT_UNK_3, false)? + .finish(); + Ok(()) + } +} +pub struct HollowConfigTemplateArgs<'a> { + pub id: i32, + pub hollow_group: i32, + pub name: Option>, + pub unlock_condition: Option>, + pub lock_hint: Option>, + pub pic_res: Option>, + pub model_res: Option>, + pub locked_color: Option>, + pub unlocked_color: Option>, + pub unk_1: bool, + pub unk_2: Option>, + pub unk_3: Option>, +} +impl<'a> Default for HollowConfigTemplateArgs<'a> { + #[inline] + fn default() -> Self { + HollowConfigTemplateArgs { + id: 0, + hollow_group: 0, + name: None, + unlock_condition: None, + lock_hint: None, + pic_res: None, + model_res: None, + locked_color: None, + unlocked_color: None, + unk_1: false, + unk_2: None, + unk_3: None, + } + } +} + +pub struct HollowConfigTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> HollowConfigTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(HollowConfigTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_hollow_group(&mut self, hollow_group: i32) { + self.fbb_.push_slot::(HollowConfigTemplate::VT_HOLLOW_GROUP, hollow_group, 0); + } + #[inline] + pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowConfigTemplate::VT_NAME, name); + } + #[inline] + pub fn add_unlock_condition(&mut self, unlock_condition: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowConfigTemplate::VT_UNLOCK_CONDITION, unlock_condition); + } + #[inline] + pub fn add_lock_hint(&mut self, lock_hint: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowConfigTemplate::VT_LOCK_HINT, lock_hint); + } + #[inline] + pub fn add_pic_res(&mut self, pic_res: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowConfigTemplate::VT_PIC_RES, pic_res); + } + #[inline] + pub fn add_model_res(&mut self, model_res: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowConfigTemplate::VT_MODEL_RES, model_res); + } + #[inline] + pub fn add_locked_color(&mut self, locked_color: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowConfigTemplate::VT_LOCKED_COLOR, locked_color); + } + #[inline] + pub fn add_unlocked_color(&mut self, unlocked_color: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowConfigTemplate::VT_UNLOCKED_COLOR, unlocked_color); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: bool) { + self.fbb_.push_slot::(HollowConfigTemplate::VT_UNK_1, unk_1, false); + } + #[inline] + pub fn add_unk_2(&mut self, unk_2: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowConfigTemplate::VT_UNK_2, unk_2); + } + #[inline] + pub fn add_unk_3(&mut self, unk_3: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowConfigTemplate::VT_UNK_3, unk_3); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> HollowConfigTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + HollowConfigTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for HollowConfigTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("HollowConfigTemplate"); + ds.field("id", &self.id()); + ds.field("hollow_group", &self.hollow_group()); + ds.field("name", &self.name()); + ds.field("unlock_condition", &self.unlock_condition()); + ds.field("lock_hint", &self.lock_hint()); + ds.field("pic_res", &self.pic_res()); + ds.field("model_res", &self.model_res()); + ds.field("locked_color", &self.locked_color()); + ds.field("unlocked_color", &self.unlocked_color()); + ds.field("unk_1", &self.unk_1()); + ds.field("unk_2", &self.unk_2()); + ds.field("unk_3", &self.unk_3()); + ds.finish() + } +} +pub enum HollowQuestTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct HollowQuestTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for HollowQuestTemplate<'a> { + type Inner = HollowQuestTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> HollowQuestTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_UNK_1: flatbuffers::VOffsetT = 6; + pub const VT_CHESSBOARD_ID: flatbuffers::VOffsetT = 8; + pub const VT_UNK_2: flatbuffers::VOffsetT = 10; + pub const VT_GROUP_ID: flatbuffers::VOffsetT = 12; + pub const VT_HOLLOW_QUEST_TYPE: flatbuffers::VOffsetT = 14; + pub const VT_UNK_3: flatbuffers::VOffsetT = 16; + pub const VT_DURATION: flatbuffers::VOffsetT = 18; + pub const VT_HAS_STAMINA: flatbuffers::VOffsetT = 20; + pub const VT_ENVIRONMENTS: flatbuffers::VOffsetT = 22; + pub const VT_MAIN_DIFFICULTY: flatbuffers::VOffsetT = 24; + pub const VT_DIFFICULTIES: flatbuffers::VOffsetT = 26; + pub const VT_RECOMMENDED_ELEMENTS: flatbuffers::VOffsetT = 28; + pub const VT_CLIENT: flatbuffers::VOffsetT = 30; + pub const VT_UNK_4: flatbuffers::VOffsetT = 32; + pub const VT_UNK_5: flatbuffers::VOffsetT = 34; + pub const VT_UNK_6: flatbuffers::VOffsetT = 36; + pub const VT_SCALE: flatbuffers::VOffsetT = 38; + pub const VT_SHOW_TIP: flatbuffers::VOffsetT = 40; + pub const VT_MONSTER_LEVEL: flatbuffers::VOffsetT = 42; + pub const VT_RECOMMENDED_LEVEL: flatbuffers::VOffsetT = 44; + pub const VT_AVERAGE_LEVEL_TIPS: flatbuffers::VOffsetT = 46; + pub const VT_RECOMMENDED_HIT_TYPES: flatbuffers::VOffsetT = 48; + pub const VT_UNK_7: flatbuffers::VOffsetT = 50; + pub const VT_UNK_8: flatbuffers::VOffsetT = 52; + pub const VT_UNK_9: flatbuffers::VOffsetT = 54; + pub const VT_UNK_10: flatbuffers::VOffsetT = 56; + pub const VT_UNK_11: flatbuffers::VOffsetT = 58; + pub const VT_UNK_12: flatbuffers::VOffsetT = 60; + pub const VT_UNK_13: flatbuffers::VOffsetT = 62; + pub const VT_SLOT_1_AVATAR: flatbuffers::VOffsetT = 64; + pub const VT_SLOT_2_AVATAR: flatbuffers::VOffsetT = 66; + pub const VT_SLOT_3_AVATAR: flatbuffers::VOffsetT = 68; + pub const VT_UNK_14: flatbuffers::VOffsetT = 70; + pub const VT_UNK_15: flatbuffers::VOffsetT = 72; + pub const VT_UNK_16: flatbuffers::VOffsetT = 74; + pub const VT_UNK_17: flatbuffers::VOffsetT = 76; + pub const VT_PREVIEW_RES_GROUP_ID: flatbuffers::VOffsetT = 78; + pub const VT_CHESSBOARD_RES_GROUP_ID: flatbuffers::VOffsetT = 80; + pub const VT_BGM_CHAPTER_STATE: flatbuffers::VOffsetT = 82; + pub const VT_UNK_18: flatbuffers::VOffsetT = 84; + pub const VT_UNK_19: flatbuffers::VOffsetT = 86; + pub const VT_UNK_20: flatbuffers::VOffsetT = 88; + pub const VT_UNK_21: flatbuffers::VOffsetT = 90; + pub const VT_UNK_22: flatbuffers::VOffsetT = 92; + pub const VT_UNK_23: flatbuffers::VOffsetT = 94; + pub const VT_UNK_24: flatbuffers::VOffsetT = 96; + pub const VT_UNK_25: flatbuffers::VOffsetT = 98; + pub const VT_UNK_26: flatbuffers::VOffsetT = 100; + pub const VT_TITLE: flatbuffers::VOffsetT = 102; + pub const VT_DIFFICULTY: flatbuffers::VOffsetT = 104; + pub const VT_TARGET: flatbuffers::VOffsetT = 106; + pub const VT_UNK_27: flatbuffers::VOffsetT = 108; + pub const VT_UNK_28: flatbuffers::VOffsetT = 110; + pub const VT_UNK_29: flatbuffers::VOffsetT = 112; + pub const VT_UNK_30: flatbuffers::VOffsetT = 114; + pub const VT_UNK_31: flatbuffers::VOffsetT = 116; + pub const VT_UNK_32: flatbuffers::VOffsetT = 118; + pub const VT_UNK_33: flatbuffers::VOffsetT = 120; + pub const VT_HOLLOW_ITEM_BAN_LISTS: flatbuffers::VOffsetT = 122; + pub const VT_UNK_34: flatbuffers::VOffsetT = 124; + pub const VT_ENEMY_TYPES: flatbuffers::VOffsetT = 126; + pub const VT_BACKGROUND: flatbuffers::VOffsetT = 128; + pub const VT_UNK_35: flatbuffers::VOffsetT = 130; + pub const VT_UNK_36: flatbuffers::VOffsetT = 132; + pub const VT_UNK_37: flatbuffers::VOffsetT = 134; + pub const VT_UNK_38: flatbuffers::VOffsetT = 136; + pub const VT_UNK_39: flatbuffers::VOffsetT = 138; + pub const VT_UNK_40: flatbuffers::VOffsetT = 140; + pub const VT_UNK_41: flatbuffers::VOffsetT = 142; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + HollowQuestTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args HollowQuestTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = HollowQuestTemplateBuilder::new(_fbb); + builder.add_unk_41(args.unk_41); + builder.add_unk_40(args.unk_40); + builder.add_unk_39(args.unk_39); + builder.add_unk_38(args.unk_38); + if let Some(x) = args.unk_37 { builder.add_unk_37(x); } + if let Some(x) = args.unk_36 { builder.add_unk_36(x); } + builder.add_unk_35(args.unk_35); + if let Some(x) = args.background { builder.add_background(x); } + if let Some(x) = args.enemy_types { builder.add_enemy_types(x); } + if let Some(x) = args.hollow_item_ban_lists { builder.add_hollow_item_ban_lists(x); } + builder.add_unk_33(args.unk_33); + builder.add_unk_31(args.unk_31); + builder.add_unk_29(args.unk_29); + builder.add_unk_28(args.unk_28); + if let Some(x) = args.unk_27 { builder.add_unk_27(x); } + if let Some(x) = args.target { builder.add_target(x); } + if let Some(x) = args.difficulty { builder.add_difficulty(x); } + if let Some(x) = args.title { builder.add_title(x); } + builder.add_unk_26(args.unk_26); + builder.add_unk_24(args.unk_24); + builder.add_unk_23(args.unk_23); + builder.add_unk_22(args.unk_22); + if let Some(x) = args.unk_21 { builder.add_unk_21(x); } + builder.add_unk_20(args.unk_20); + if let Some(x) = args.unk_19 { builder.add_unk_19(x); } + builder.add_unk_18(args.unk_18); + if let Some(x) = args.bgm_chapter_state { builder.add_bgm_chapter_state(x); } + builder.add_chessboard_res_group_id(args.chessboard_res_group_id); + builder.add_preview_res_group_id(args.preview_res_group_id); + builder.add_unk_17(args.unk_17); + builder.add_unk_14(args.unk_14); + builder.add_slot_3_avatar(args.slot_3_avatar); + builder.add_slot_2_avatar(args.slot_2_avatar); + builder.add_slot_1_avatar(args.slot_1_avatar); + builder.add_unk_13(args.unk_13); + builder.add_unk_11(args.unk_11); + if let Some(x) = args.unk_10 { builder.add_unk_10(x); } + if let Some(x) = args.unk_7 { builder.add_unk_7(x); } + if let Some(x) = args.recommended_hit_types { builder.add_recommended_hit_types(x); } + builder.add_average_level_tips(args.average_level_tips); + builder.add_recommended_level(args.recommended_level); + builder.add_monster_level(args.monster_level); + builder.add_show_tip(args.show_tip); + builder.add_scale(args.scale); + builder.add_unk_6(args.unk_6); + builder.add_unk_4(args.unk_4); + if let Some(x) = args.client { builder.add_client(x); } + if let Some(x) = args.recommended_elements { builder.add_recommended_elements(x); } + if let Some(x) = args.difficulties { builder.add_difficulties(x); } + if let Some(x) = args.main_difficulty { builder.add_main_difficulty(x); } + if let Some(x) = args.environments { builder.add_environments(x); } + if let Some(x) = args.has_stamina { builder.add_has_stamina(x); } + if let Some(x) = args.duration { builder.add_duration(x); } + builder.add_unk_3(args.unk_3); + builder.add_hollow_quest_type(args.hollow_quest_type); + builder.add_group_id(args.group_id); + builder.add_unk_2(args.unk_2); + builder.add_chessboard_id(args.chessboard_id); + builder.add_unk_1(args.unk_1); + builder.add_id(args.id); + builder.add_unk_34(args.unk_34); + builder.add_unk_32(args.unk_32); + builder.add_unk_30(args.unk_30); + builder.add_unk_25(args.unk_25); + builder.add_unk_16(args.unk_16); + builder.add_unk_15(args.unk_15); + builder.add_unk_12(args.unk_12); + builder.add_unk_9(args.unk_9); + builder.add_unk_8(args.unk_8); + builder.add_unk_5(args.unk_5); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn unk_1(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_1, Some(0)).unwrap()} + } + #[inline] + pub fn chessboard_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_CHESSBOARD_ID, Some(0)).unwrap()} + } + #[inline] + pub fn unk_2(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_2, Some(0)).unwrap()} + } + #[inline] + pub fn group_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_GROUP_ID, Some(0)).unwrap()} + } + #[inline] + pub fn hollow_quest_type(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_HOLLOW_QUEST_TYPE, Some(0)).unwrap()} + } + #[inline] + pub fn unk_3(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_3, Some(0)).unwrap()} + } + #[inline] + pub fn duration(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowQuestTemplate::VT_DURATION, None)} + } + #[inline] + pub fn has_stamina(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowQuestTemplate::VT_HAS_STAMINA, None)} + } + #[inline] + pub fn environments(&self) -> Option>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(HollowQuestTemplate::VT_ENVIRONMENTS, None)} + } + #[inline] + pub fn main_difficulty(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowQuestTemplate::VT_MAIN_DIFFICULTY, None)} + } + #[inline] + pub fn difficulties(&self) -> Option>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(HollowQuestTemplate::VT_DIFFICULTIES, None)} + } + #[inline] + pub fn recommended_elements(&self) -> Option>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(HollowQuestTemplate::VT_RECOMMENDED_ELEMENTS, None)} + } + #[inline] + pub fn client(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowQuestTemplate::VT_CLIENT, None)} + } + #[inline] + pub fn unk_4(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_4, Some(0)).unwrap()} + } + #[inline] + pub fn unk_5(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_5, Some(false)).unwrap()} + } + #[inline] + pub fn unk_6(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_6, Some(0)).unwrap()} + } + #[inline] + pub fn scale(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_SCALE, Some(0)).unwrap()} + } + #[inline] + pub fn show_tip(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_SHOW_TIP, Some(0)).unwrap()} + } + #[inline] + pub fn monster_level(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_MONSTER_LEVEL, Some(0)).unwrap()} + } + #[inline] + pub fn recommended_level(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_RECOMMENDED_LEVEL, Some(0)).unwrap()} + } + #[inline] + pub fn average_level_tips(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_AVERAGE_LEVEL_TIPS, Some(0)).unwrap()} + } + #[inline] + pub fn recommended_hit_types(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(HollowQuestTemplate::VT_RECOMMENDED_HIT_TYPES, None)} + } + #[inline] + pub fn unk_7(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(HollowQuestTemplate::VT_UNK_7, None)} + } + #[inline] + pub fn unk_8(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_8, Some(false)).unwrap()} + } + #[inline] + pub fn unk_9(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_9, Some(false)).unwrap()} + } + #[inline] + pub fn unk_10(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowQuestTemplate::VT_UNK_10, None)} + } + #[inline] + pub fn unk_11(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_11, Some(0)).unwrap()} + } + #[inline] + pub fn unk_12(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_12, Some(false)).unwrap()} + } + #[inline] + pub fn unk_13(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_13, Some(0)).unwrap()} + } + #[inline] + pub fn slot_1_avatar(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_SLOT_1_AVATAR, Some(0)).unwrap()} + } + #[inline] + pub fn slot_2_avatar(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_SLOT_2_AVATAR, Some(0)).unwrap()} + } + #[inline] + pub fn slot_3_avatar(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_SLOT_3_AVATAR, Some(0)).unwrap()} + } + #[inline] + pub fn unk_14(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_14, Some(0)).unwrap()} + } + #[inline] + pub fn unk_15(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_15, Some(false)).unwrap()} + } + #[inline] + pub fn unk_16(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_16, Some(false)).unwrap()} + } + #[inline] + pub fn unk_17(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_17, Some(0)).unwrap()} + } + #[inline] + pub fn preview_res_group_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_PREVIEW_RES_GROUP_ID, Some(0)).unwrap()} + } + #[inline] + pub fn chessboard_res_group_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_CHESSBOARD_RES_GROUP_ID, Some(0)).unwrap()} + } + #[inline] + pub fn bgm_chapter_state(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowQuestTemplate::VT_BGM_CHAPTER_STATE, None)} + } + #[inline] + pub fn unk_18(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_18, Some(0)).unwrap()} + } + #[inline] + pub fn unk_19(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowQuestTemplate::VT_UNK_19, None)} + } + #[inline] + pub fn unk_20(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_20, Some(0)).unwrap()} + } + #[inline] + pub fn unk_21(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(HollowQuestTemplate::VT_UNK_21, None)} + } + #[inline] + pub fn unk_22(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_22, Some(0)).unwrap()} + } + #[inline] + pub fn unk_23(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_23, Some(0)).unwrap()} + } + #[inline] + pub fn unk_24(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_24, Some(0)).unwrap()} + } + #[inline] + pub fn unk_25(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_25, Some(false)).unwrap()} + } + #[inline] + pub fn unk_26(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_26, Some(0)).unwrap()} + } + #[inline] + pub fn title(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowQuestTemplate::VT_TITLE, None)} + } + #[inline] + pub fn difficulty(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowQuestTemplate::VT_DIFFICULTY, None)} + } + #[inline] + pub fn target(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowQuestTemplate::VT_TARGET, None)} + } + #[inline] + pub fn unk_27(&self) -> Option>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(HollowQuestTemplate::VT_UNK_27, None)} + } + #[inline] + pub fn unk_28(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_28, Some(0)).unwrap()} + } + #[inline] + pub fn unk_29(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_29, Some(0)).unwrap()} + } + #[inline] + pub fn unk_30(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_30, Some(false)).unwrap()} + } + #[inline] + pub fn unk_31(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_31, Some(0)).unwrap()} + } + #[inline] + pub fn unk_32(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_32, Some(false)).unwrap()} + } + #[inline] + pub fn unk_33(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_33, Some(0)).unwrap()} + } + #[inline] + pub fn hollow_item_ban_lists(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(HollowQuestTemplate::VT_HOLLOW_ITEM_BAN_LISTS, None)} + } + #[inline] + pub fn unk_34(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_34, Some(false)).unwrap()} + } + #[inline] + pub fn enemy_types(&self) -> Option>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(HollowQuestTemplate::VT_ENEMY_TYPES, None)} + } + #[inline] + pub fn background(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(HollowQuestTemplate::VT_BACKGROUND, None)} + } + #[inline] + pub fn unk_35(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_35, Some(0)).unwrap()} + } + #[inline] + pub fn unk_36(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(HollowQuestTemplate::VT_UNK_36, None)} + } + #[inline] + pub fn unk_37(&self) -> Option> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>(HollowQuestTemplate::VT_UNK_37, None)} + } + #[inline] + pub fn unk_38(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_38, Some(0)).unwrap()} + } + #[inline] + pub fn unk_39(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_39, Some(0)).unwrap()} + } + #[inline] + pub fn unk_40(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_40, Some(0)).unwrap()} + } + #[inline] + pub fn unk_41(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(HollowQuestTemplate::VT_UNK_41, Some(0)).unwrap()} + } +} + +impl flatbuffers::Verifiable for HollowQuestTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::("unk_1", Self::VT_UNK_1, false)? + .visit_field::("chessboard_id", Self::VT_CHESSBOARD_ID, false)? + .visit_field::("unk_2", Self::VT_UNK_2, false)? + .visit_field::("group_id", Self::VT_GROUP_ID, false)? + .visit_field::("hollow_quest_type", Self::VT_HOLLOW_QUEST_TYPE, false)? + .visit_field::("unk_3", Self::VT_UNK_3, false)? + .visit_field::>("duration", Self::VT_DURATION, false)? + .visit_field::>("has_stamina", Self::VT_HAS_STAMINA, false)? + .visit_field::>>>("environments", Self::VT_ENVIRONMENTS, false)? + .visit_field::>("main_difficulty", Self::VT_MAIN_DIFFICULTY, false)? + .visit_field::>>>("difficulties", Self::VT_DIFFICULTIES, false)? + .visit_field::>>>("recommended_elements", Self::VT_RECOMMENDED_ELEMENTS, false)? + .visit_field::>("client", Self::VT_CLIENT, false)? + .visit_field::("unk_4", Self::VT_UNK_4, false)? + .visit_field::("unk_5", Self::VT_UNK_5, false)? + .visit_field::("unk_6", Self::VT_UNK_6, false)? + .visit_field::("scale", Self::VT_SCALE, false)? + .visit_field::("show_tip", Self::VT_SHOW_TIP, false)? + .visit_field::("monster_level", Self::VT_MONSTER_LEVEL, false)? + .visit_field::("recommended_level", Self::VT_RECOMMENDED_LEVEL, false)? + .visit_field::("average_level_tips", Self::VT_AVERAGE_LEVEL_TIPS, false)? + .visit_field::>>("recommended_hit_types", Self::VT_RECOMMENDED_HIT_TYPES, false)? + .visit_field::>>("unk_7", Self::VT_UNK_7, false)? + .visit_field::("unk_8", Self::VT_UNK_8, false)? + .visit_field::("unk_9", Self::VT_UNK_9, false)? + .visit_field::>("unk_10", Self::VT_UNK_10, false)? + .visit_field::("unk_11", Self::VT_UNK_11, false)? + .visit_field::("unk_12", Self::VT_UNK_12, false)? + .visit_field::("unk_13", Self::VT_UNK_13, false)? + .visit_field::("slot_1_avatar", Self::VT_SLOT_1_AVATAR, false)? + .visit_field::("slot_2_avatar", Self::VT_SLOT_2_AVATAR, false)? + .visit_field::("slot_3_avatar", Self::VT_SLOT_3_AVATAR, false)? + .visit_field::("unk_14", Self::VT_UNK_14, false)? + .visit_field::("unk_15", Self::VT_UNK_15, false)? + .visit_field::("unk_16", Self::VT_UNK_16, false)? + .visit_field::("unk_17", Self::VT_UNK_17, false)? + .visit_field::("preview_res_group_id", Self::VT_PREVIEW_RES_GROUP_ID, false)? + .visit_field::("chessboard_res_group_id", Self::VT_CHESSBOARD_RES_GROUP_ID, false)? + .visit_field::>("bgm_chapter_state", Self::VT_BGM_CHAPTER_STATE, false)? + .visit_field::("unk_18", Self::VT_UNK_18, false)? + .visit_field::>("unk_19", Self::VT_UNK_19, false)? + .visit_field::("unk_20", Self::VT_UNK_20, false)? + .visit_field::>>("unk_21", Self::VT_UNK_21, false)? + .visit_field::("unk_22", Self::VT_UNK_22, false)? + .visit_field::("unk_23", Self::VT_UNK_23, false)? + .visit_field::("unk_24", Self::VT_UNK_24, false)? + .visit_field::("unk_25", Self::VT_UNK_25, false)? + .visit_field::("unk_26", Self::VT_UNK_26, false)? + .visit_field::>("title", Self::VT_TITLE, false)? + .visit_field::>("difficulty", Self::VT_DIFFICULTY, false)? + .visit_field::>("target", Self::VT_TARGET, false)? + .visit_field::>>>("unk_27", Self::VT_UNK_27, false)? + .visit_field::("unk_28", Self::VT_UNK_28, false)? + .visit_field::("unk_29", Self::VT_UNK_29, false)? + .visit_field::("unk_30", Self::VT_UNK_30, false)? + .visit_field::("unk_31", Self::VT_UNK_31, false)? + .visit_field::("unk_32", Self::VT_UNK_32, false)? + .visit_field::("unk_33", Self::VT_UNK_33, false)? + .visit_field::>>("hollow_item_ban_lists", Self::VT_HOLLOW_ITEM_BAN_LISTS, false)? + .visit_field::("unk_34", Self::VT_UNK_34, false)? + .visit_field::>>>("enemy_types", Self::VT_ENEMY_TYPES, false)? + .visit_field::>("background", Self::VT_BACKGROUND, false)? + .visit_field::("unk_35", Self::VT_UNK_35, false)? + .visit_field::>>("unk_36", Self::VT_UNK_36, false)? + .visit_field::>>("unk_37", Self::VT_UNK_37, false)? + .visit_field::("unk_38", Self::VT_UNK_38, false)? + .visit_field::("unk_39", Self::VT_UNK_39, false)? + .visit_field::("unk_40", Self::VT_UNK_40, false)? + .visit_field::("unk_41", Self::VT_UNK_41, false)? + .finish(); + Ok(()) + } +} +pub struct HollowQuestTemplateArgs<'a> { + pub id: i32, + pub unk_1: i32, + pub chessboard_id: i32, + pub unk_2: i32, + pub group_id: i32, + pub hollow_quest_type: i32, + pub unk_3: i32, + pub duration: Option>, + pub has_stamina: Option>, + pub environments: Option>>>, + pub main_difficulty: Option>, + pub difficulties: Option>>>, + pub recommended_elements: Option>>>, + pub client: Option>, + pub unk_4: i32, + pub unk_5: bool, + pub unk_6: i32, + pub scale: i32, + pub show_tip: i32, + pub monster_level: i32, + pub recommended_level: i32, + pub average_level_tips: i32, + pub recommended_hit_types: Option>>, + pub unk_7: Option>>, + pub unk_8: bool, + pub unk_9: bool, + pub unk_10: Option>, + pub unk_11: i32, + pub unk_12: bool, + pub unk_13: i32, + pub slot_1_avatar: i32, + pub slot_2_avatar: i32, + pub slot_3_avatar: i32, + pub unk_14: i32, + pub unk_15: bool, + pub unk_16: bool, + pub unk_17: i32, + pub preview_res_group_id: i32, + pub chessboard_res_group_id: i32, + pub bgm_chapter_state: Option>, + pub unk_18: i32, + pub unk_19: Option>, + pub unk_20: i32, + pub unk_21: Option>>, + pub unk_22: i32, + pub unk_23: i32, + pub unk_24: i32, + pub unk_25: bool, + pub unk_26: i32, + pub title: Option>, + pub difficulty: Option>, + pub target: Option>, + pub unk_27: Option>>>, + pub unk_28: i32, + pub unk_29: i32, + pub unk_30: bool, + pub unk_31: i32, + pub unk_32: bool, + pub unk_33: i32, + pub hollow_item_ban_lists: Option>>, + pub unk_34: bool, + pub enemy_types: Option>>>, + pub background: Option>, + pub unk_35: i32, + pub unk_36: Option>>, + pub unk_37: Option>>, + pub unk_38: i32, + pub unk_39: i32, + pub unk_40: i32, + pub unk_41: i32, +} +impl<'a> Default for HollowQuestTemplateArgs<'a> { + #[inline] + fn default() -> Self { + HollowQuestTemplateArgs { + id: 0, + unk_1: 0, + chessboard_id: 0, + unk_2: 0, + group_id: 0, + hollow_quest_type: 0, + unk_3: 0, + duration: None, + has_stamina: None, + environments: None, + main_difficulty: None, + difficulties: None, + recommended_elements: None, + client: None, + unk_4: 0, + unk_5: false, + unk_6: 0, + scale: 0, + show_tip: 0, + monster_level: 0, + recommended_level: 0, + average_level_tips: 0, + recommended_hit_types: None, + unk_7: None, + unk_8: false, + unk_9: false, + unk_10: None, + unk_11: 0, + unk_12: false, + unk_13: 0, + slot_1_avatar: 0, + slot_2_avatar: 0, + slot_3_avatar: 0, + unk_14: 0, + unk_15: false, + unk_16: false, + unk_17: 0, + preview_res_group_id: 0, + chessboard_res_group_id: 0, + bgm_chapter_state: None, + unk_18: 0, + unk_19: None, + unk_20: 0, + unk_21: None, + unk_22: 0, + unk_23: 0, + unk_24: 0, + unk_25: false, + unk_26: 0, + title: None, + difficulty: None, + target: None, + unk_27: None, + unk_28: 0, + unk_29: 0, + unk_30: false, + unk_31: 0, + unk_32: false, + unk_33: 0, + hollow_item_ban_lists: None, + unk_34: false, + enemy_types: None, + background: None, + unk_35: 0, + unk_36: None, + unk_37: None, + unk_38: 0, + unk_39: 0, + unk_40: 0, + unk_41: 0, + } + } +} + +pub struct HollowQuestTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> HollowQuestTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_1, unk_1, 0); + } + #[inline] + pub fn add_chessboard_id(&mut self, chessboard_id: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_CHESSBOARD_ID, chessboard_id, 0); + } + #[inline] + pub fn add_unk_2(&mut self, unk_2: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_2, unk_2, 0); + } + #[inline] + pub fn add_group_id(&mut self, group_id: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_GROUP_ID, group_id, 0); + } + #[inline] + pub fn add_hollow_quest_type(&mut self, hollow_quest_type: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_HOLLOW_QUEST_TYPE, hollow_quest_type, 0); + } + #[inline] + pub fn add_unk_3(&mut self, unk_3: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_3, unk_3, 0); + } + #[inline] + pub fn add_duration(&mut self, duration: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_DURATION, duration); + } + #[inline] + pub fn add_has_stamina(&mut self, has_stamina: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_HAS_STAMINA, has_stamina); + } + #[inline] + pub fn add_environments(&mut self, environments: flatbuffers::WIPOffset>>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_ENVIRONMENTS, environments); + } + #[inline] + pub fn add_main_difficulty(&mut self, main_difficulty: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_MAIN_DIFFICULTY, main_difficulty); + } + #[inline] + pub fn add_difficulties(&mut self, difficulties: flatbuffers::WIPOffset>>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_DIFFICULTIES, difficulties); + } + #[inline] + pub fn add_recommended_elements(&mut self, recommended_elements: flatbuffers::WIPOffset>>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_RECOMMENDED_ELEMENTS, recommended_elements); + } + #[inline] + pub fn add_client(&mut self, client: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_CLIENT, client); + } + #[inline] + pub fn add_unk_4(&mut self, unk_4: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_4, unk_4, 0); + } + #[inline] + pub fn add_unk_5(&mut self, unk_5: bool) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_5, unk_5, false); + } + #[inline] + pub fn add_unk_6(&mut self, unk_6: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_6, unk_6, 0); + } + #[inline] + pub fn add_scale(&mut self, scale: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_SCALE, scale, 0); + } + #[inline] + pub fn add_show_tip(&mut self, show_tip: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_SHOW_TIP, show_tip, 0); + } + #[inline] + pub fn add_monster_level(&mut self, monster_level: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_MONSTER_LEVEL, monster_level, 0); + } + #[inline] + pub fn add_recommended_level(&mut self, recommended_level: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_RECOMMENDED_LEVEL, recommended_level, 0); + } + #[inline] + pub fn add_average_level_tips(&mut self, average_level_tips: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_AVERAGE_LEVEL_TIPS, average_level_tips, 0); + } + #[inline] + pub fn add_recommended_hit_types(&mut self, recommended_hit_types: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_RECOMMENDED_HIT_TYPES, recommended_hit_types); + } + #[inline] + pub fn add_unk_7(&mut self, unk_7: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_UNK_7, unk_7); + } + #[inline] + pub fn add_unk_8(&mut self, unk_8: bool) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_8, unk_8, false); + } + #[inline] + pub fn add_unk_9(&mut self, unk_9: bool) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_9, unk_9, false); + } + #[inline] + pub fn add_unk_10(&mut self, unk_10: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_UNK_10, unk_10); + } + #[inline] + pub fn add_unk_11(&mut self, unk_11: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_11, unk_11, 0); + } + #[inline] + pub fn add_unk_12(&mut self, unk_12: bool) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_12, unk_12, false); + } + #[inline] + pub fn add_unk_13(&mut self, unk_13: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_13, unk_13, 0); + } + #[inline] + pub fn add_slot_1_avatar(&mut self, slot_1_avatar: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_SLOT_1_AVATAR, slot_1_avatar, 0); + } + #[inline] + pub fn add_slot_2_avatar(&mut self, slot_2_avatar: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_SLOT_2_AVATAR, slot_2_avatar, 0); + } + #[inline] + pub fn add_slot_3_avatar(&mut self, slot_3_avatar: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_SLOT_3_AVATAR, slot_3_avatar, 0); + } + #[inline] + pub fn add_unk_14(&mut self, unk_14: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_14, unk_14, 0); + } + #[inline] + pub fn add_unk_15(&mut self, unk_15: bool) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_15, unk_15, false); + } + #[inline] + pub fn add_unk_16(&mut self, unk_16: bool) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_16, unk_16, false); + } + #[inline] + pub fn add_unk_17(&mut self, unk_17: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_17, unk_17, 0); + } + #[inline] + pub fn add_preview_res_group_id(&mut self, preview_res_group_id: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_PREVIEW_RES_GROUP_ID, preview_res_group_id, 0); + } + #[inline] + pub fn add_chessboard_res_group_id(&mut self, chessboard_res_group_id: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_CHESSBOARD_RES_GROUP_ID, chessboard_res_group_id, 0); + } + #[inline] + pub fn add_bgm_chapter_state(&mut self, bgm_chapter_state: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_BGM_CHAPTER_STATE, bgm_chapter_state); + } + #[inline] + pub fn add_unk_18(&mut self, unk_18: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_18, unk_18, 0); + } + #[inline] + pub fn add_unk_19(&mut self, unk_19: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_UNK_19, unk_19); + } + #[inline] + pub fn add_unk_20(&mut self, unk_20: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_20, unk_20, 0); + } + #[inline] + pub fn add_unk_21(&mut self, unk_21: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_UNK_21, unk_21); + } + #[inline] + pub fn add_unk_22(&mut self, unk_22: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_22, unk_22, 0); + } + #[inline] + pub fn add_unk_23(&mut self, unk_23: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_23, unk_23, 0); + } + #[inline] + pub fn add_unk_24(&mut self, unk_24: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_24, unk_24, 0); + } + #[inline] + pub fn add_unk_25(&mut self, unk_25: bool) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_25, unk_25, false); + } + #[inline] + pub fn add_unk_26(&mut self, unk_26: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_26, unk_26, 0); + } + #[inline] + pub fn add_title(&mut self, title: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_TITLE, title); + } + #[inline] + pub fn add_difficulty(&mut self, difficulty: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_DIFFICULTY, difficulty); + } + #[inline] + pub fn add_target(&mut self, target: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_TARGET, target); + } + #[inline] + pub fn add_unk_27(&mut self, unk_27: flatbuffers::WIPOffset>>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_UNK_27, unk_27); + } + #[inline] + pub fn add_unk_28(&mut self, unk_28: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_28, unk_28, 0); + } + #[inline] + pub fn add_unk_29(&mut self, unk_29: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_29, unk_29, 0); + } + #[inline] + pub fn add_unk_30(&mut self, unk_30: bool) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_30, unk_30, false); + } + #[inline] + pub fn add_unk_31(&mut self, unk_31: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_31, unk_31, 0); + } + #[inline] + pub fn add_unk_32(&mut self, unk_32: bool) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_32, unk_32, false); + } + #[inline] + pub fn add_unk_33(&mut self, unk_33: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_33, unk_33, 0); + } + #[inline] + pub fn add_hollow_item_ban_lists(&mut self, hollow_item_ban_lists: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_HOLLOW_ITEM_BAN_LISTS, hollow_item_ban_lists); + } + #[inline] + pub fn add_unk_34(&mut self, unk_34: bool) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_34, unk_34, false); + } + #[inline] + pub fn add_enemy_types(&mut self, enemy_types: flatbuffers::WIPOffset>>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_ENEMY_TYPES, enemy_types); + } + #[inline] + pub fn add_background(&mut self, background: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_BACKGROUND, background); + } + #[inline] + pub fn add_unk_35(&mut self, unk_35: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_35, unk_35, 0); + } + #[inline] + pub fn add_unk_36(&mut self, unk_36: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_UNK_36, unk_36); + } + #[inline] + pub fn add_unk_37(&mut self, unk_37: flatbuffers::WIPOffset>) { + self.fbb_.push_slot_always::>(HollowQuestTemplate::VT_UNK_37, unk_37); + } + #[inline] + pub fn add_unk_38(&mut self, unk_38: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_38, unk_38, 0); + } + #[inline] + pub fn add_unk_39(&mut self, unk_39: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_39, unk_39, 0); + } + #[inline] + pub fn add_unk_40(&mut self, unk_40: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_40, unk_40, 0); + } + #[inline] + pub fn add_unk_41(&mut self, unk_41: i32) { + self.fbb_.push_slot::(HollowQuestTemplate::VT_UNK_41, unk_41, 0); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> HollowQuestTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + HollowQuestTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for HollowQuestTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("HollowQuestTemplate"); + ds.field("id", &self.id()); + ds.field("unk_1", &self.unk_1()); + ds.field("chessboard_id", &self.chessboard_id()); + ds.field("unk_2", &self.unk_2()); + ds.field("group_id", &self.group_id()); + ds.field("hollow_quest_type", &self.hollow_quest_type()); + ds.field("unk_3", &self.unk_3()); + ds.field("duration", &self.duration()); + ds.field("has_stamina", &self.has_stamina()); + ds.field("environments", &self.environments()); + ds.field("main_difficulty", &self.main_difficulty()); + ds.field("difficulties", &self.difficulties()); + ds.field("recommended_elements", &self.recommended_elements()); + ds.field("client", &self.client()); + ds.field("unk_4", &self.unk_4()); + ds.field("unk_5", &self.unk_5()); + ds.field("unk_6", &self.unk_6()); + ds.field("scale", &self.scale()); + ds.field("show_tip", &self.show_tip()); + ds.field("monster_level", &self.monster_level()); + ds.field("recommended_level", &self.recommended_level()); + ds.field("average_level_tips", &self.average_level_tips()); + ds.field("recommended_hit_types", &self.recommended_hit_types()); + ds.field("unk_7", &self.unk_7()); + ds.field("unk_8", &self.unk_8()); + ds.field("unk_9", &self.unk_9()); + ds.field("unk_10", &self.unk_10()); + ds.field("unk_11", &self.unk_11()); + ds.field("unk_12", &self.unk_12()); + ds.field("unk_13", &self.unk_13()); + ds.field("slot_1_avatar", &self.slot_1_avatar()); + ds.field("slot_2_avatar", &self.slot_2_avatar()); + ds.field("slot_3_avatar", &self.slot_3_avatar()); + ds.field("unk_14", &self.unk_14()); + ds.field("unk_15", &self.unk_15()); + ds.field("unk_16", &self.unk_16()); + ds.field("unk_17", &self.unk_17()); + ds.field("preview_res_group_id", &self.preview_res_group_id()); + ds.field("chessboard_res_group_id", &self.chessboard_res_group_id()); + ds.field("bgm_chapter_state", &self.bgm_chapter_state()); + ds.field("unk_18", &self.unk_18()); + ds.field("unk_19", &self.unk_19()); + ds.field("unk_20", &self.unk_20()); + ds.field("unk_21", &self.unk_21()); + ds.field("unk_22", &self.unk_22()); + ds.field("unk_23", &self.unk_23()); + ds.field("unk_24", &self.unk_24()); + ds.field("unk_25", &self.unk_25()); + ds.field("unk_26", &self.unk_26()); + ds.field("title", &self.title()); + ds.field("difficulty", &self.difficulty()); + ds.field("target", &self.target()); + ds.field("unk_27", &self.unk_27()); + ds.field("unk_28", &self.unk_28()); + ds.field("unk_29", &self.unk_29()); + ds.field("unk_30", &self.unk_30()); + ds.field("unk_31", &self.unk_31()); + ds.field("unk_32", &self.unk_32()); + ds.field("unk_33", &self.unk_33()); + ds.field("hollow_item_ban_lists", &self.hollow_item_ban_lists()); + ds.field("unk_34", &self.unk_34()); + ds.field("enemy_types", &self.enemy_types()); + ds.field("background", &self.background()); + ds.field("unk_35", &self.unk_35()); + ds.field("unk_36", &self.unk_36()); + ds.field("unk_37", &self.unk_37()); + ds.field("unk_38", &self.unk_38()); + ds.field("unk_39", &self.unk_39()); + ds.field("unk_40", &self.unk_40()); + ds.field("unk_41", &self.unk_41()); + ds.finish() + } +} +pub enum BattleGroupConfigTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct BattleGroupConfigTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for BattleGroupConfigTemplate<'a> { + type Inner = BattleGroupConfigTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> BattleGroupConfigTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_QUEST_ID: flatbuffers::VOffsetT = 6; + pub const VT_UNK_1: flatbuffers::VOffsetT = 8; + pub const VT_UNK_2: flatbuffers::VOffsetT = 10; + pub const VT_UNK_3: flatbuffers::VOffsetT = 12; + pub const VT_UNK_4: flatbuffers::VOffsetT = 14; + pub const VT_UNK_5: flatbuffers::VOffsetT = 16; + pub const VT_UNK_6: flatbuffers::VOffsetT = 18; + pub const VT_BATTLE_EVENT_ID: flatbuffers::VOffsetT = 20; + pub const VT_UNK_8: flatbuffers::VOffsetT = 22; + pub const VT_UNK_9: flatbuffers::VOffsetT = 24; + pub const VT_UNK_10: flatbuffers::VOffsetT = 26; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + BattleGroupConfigTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args BattleGroupConfigTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = BattleGroupConfigTemplateBuilder::new(_fbb); + if let Some(x) = args.unk_10 { builder.add_unk_10(x); } + builder.add_battle_event_id(args.battle_event_id); + if let Some(x) = args.unk_6 { builder.add_unk_6(x); } + if let Some(x) = args.unk_5 { builder.add_unk_5(x); } + if let Some(x) = args.unk_4 { builder.add_unk_4(x); } + builder.add_unk_3(args.unk_3); + if let Some(x) = args.unk_2 { builder.add_unk_2(x); } + builder.add_unk_1(args.unk_1); + builder.add_quest_id(args.quest_id); + builder.add_id(args.id); + builder.add_unk_9(args.unk_9); + builder.add_unk_8(args.unk_8); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(BattleGroupConfigTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn quest_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(BattleGroupConfigTemplate::VT_QUEST_ID, Some(0)).unwrap()} + } + #[inline] + pub fn unk_1(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(BattleGroupConfigTemplate::VT_UNK_1, Some(0)).unwrap()} + } + #[inline] + pub fn unk_2(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(BattleGroupConfigTemplate::VT_UNK_2, None)} + } + #[inline] + pub fn unk_3(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(BattleGroupConfigTemplate::VT_UNK_3, Some(0)).unwrap()} + } + #[inline] + pub fn unk_4(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(BattleGroupConfigTemplate::VT_UNK_4, None)} + } + #[inline] + pub fn unk_5(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(BattleGroupConfigTemplate::VT_UNK_5, None)} + } + #[inline] + pub fn unk_6(&self) -> Option>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(BattleGroupConfigTemplate::VT_UNK_6, None)} + } + #[inline] + pub fn battle_event_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(BattleGroupConfigTemplate::VT_BATTLE_EVENT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn unk_8(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(BattleGroupConfigTemplate::VT_UNK_8, Some(false)).unwrap()} + } + #[inline] + pub fn unk_9(&self) -> bool { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(BattleGroupConfigTemplate::VT_UNK_9, Some(false)).unwrap()} + } + #[inline] + pub fn unk_10(&self) -> Option>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(BattleGroupConfigTemplate::VT_UNK_10, None)} + } +} + +impl flatbuffers::Verifiable for BattleGroupConfigTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::("quest_id", Self::VT_QUEST_ID, false)? + .visit_field::("unk_1", Self::VT_UNK_1, false)? + .visit_field::>("unk_2", Self::VT_UNK_2, false)? + .visit_field::("unk_3", Self::VT_UNK_3, false)? + .visit_field::>("unk_4", Self::VT_UNK_4, false)? + .visit_field::>("unk_5", Self::VT_UNK_5, false)? + .visit_field::>>>("unk_6", Self::VT_UNK_6, false)? + .visit_field::("battle_event_id", Self::VT_BATTLE_EVENT_ID, false)? + .visit_field::("unk_8", Self::VT_UNK_8, false)? + .visit_field::("unk_9", Self::VT_UNK_9, false)? + .visit_field::>>>("unk_10", Self::VT_UNK_10, false)? + .finish(); + Ok(()) + } +} +pub struct BattleGroupConfigTemplateArgs<'a> { + pub id: i32, + pub quest_id: i32, + pub unk_1: i32, + pub unk_2: Option>, + pub unk_3: i32, + pub unk_4: Option>, + pub unk_5: Option>, + pub unk_6: Option>>>, + pub battle_event_id: i32, + pub unk_8: bool, + pub unk_9: bool, + pub unk_10: Option>>>, +} +impl<'a> Default for BattleGroupConfigTemplateArgs<'a> { + #[inline] + fn default() -> Self { + BattleGroupConfigTemplateArgs { + id: 0, + quest_id: 0, + unk_1: 0, + unk_2: None, + unk_3: 0, + unk_4: None, + unk_5: None, + unk_6: None, + battle_event_id: 0, + unk_8: false, + unk_9: false, + unk_10: None, + } + } +} + +pub struct BattleGroupConfigTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> BattleGroupConfigTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(BattleGroupConfigTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_quest_id(&mut self, quest_id: i32) { + self.fbb_.push_slot::(BattleGroupConfigTemplate::VT_QUEST_ID, quest_id, 0); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: i32) { + self.fbb_.push_slot::(BattleGroupConfigTemplate::VT_UNK_1, unk_1, 0); + } + #[inline] + pub fn add_unk_2(&mut self, unk_2: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(BattleGroupConfigTemplate::VT_UNK_2, unk_2); + } + #[inline] + pub fn add_unk_3(&mut self, unk_3: i32) { + self.fbb_.push_slot::(BattleGroupConfigTemplate::VT_UNK_3, unk_3, 0); + } + #[inline] + pub fn add_unk_4(&mut self, unk_4: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(BattleGroupConfigTemplate::VT_UNK_4, unk_4); + } + #[inline] + pub fn add_unk_5(&mut self, unk_5: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(BattleGroupConfigTemplate::VT_UNK_5, unk_5); + } + #[inline] + pub fn add_unk_6(&mut self, unk_6: flatbuffers::WIPOffset>>) { + self.fbb_.push_slot_always::>(BattleGroupConfigTemplate::VT_UNK_6, unk_6); + } + #[inline] + pub fn add_battle_event_id(&mut self, battle_event_id: i32) { + self.fbb_.push_slot::(BattleGroupConfigTemplate::VT_BATTLE_EVENT_ID, battle_event_id, 0); + } + #[inline] + pub fn add_unk_8(&mut self, unk_8: bool) { + self.fbb_.push_slot::(BattleGroupConfigTemplate::VT_UNK_8, unk_8, false); + } + #[inline] + pub fn add_unk_9(&mut self, unk_9: bool) { + self.fbb_.push_slot::(BattleGroupConfigTemplate::VT_UNK_9, unk_9, false); + } + #[inline] + pub fn add_unk_10(&mut self, unk_10: flatbuffers::WIPOffset>>) { + self.fbb_.push_slot_always::>(BattleGroupConfigTemplate::VT_UNK_10, unk_10); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> BattleGroupConfigTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + BattleGroupConfigTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for BattleGroupConfigTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("BattleGroupConfigTemplate"); + ds.field("id", &self.id()); + ds.field("quest_id", &self.quest_id()); + ds.field("unk_1", &self.unk_1()); + ds.field("unk_2", &self.unk_2()); + ds.field("unk_3", &self.unk_3()); + ds.field("unk_4", &self.unk_4()); + ds.field("unk_5", &self.unk_5()); + ds.field("unk_6", &self.unk_6()); + ds.field("battle_event_id", &self.battle_event_id()); + ds.field("unk_8", &self.unk_8()); + ds.field("unk_9", &self.unk_9()); + ds.field("unk_10", &self.unk_10()); + ds.finish() + } +} +pub enum MusicPlayerConfigTemplateOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct MusicPlayerConfigTemplate<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for MusicPlayerConfigTemplate<'a> { + type Inner = MusicPlayerConfigTemplate<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> MusicPlayerConfigTemplate<'a> { + pub const VT_ID: flatbuffers::VOffsetT = 4; + pub const VT_GROUP_ID: flatbuffers::VOffsetT = 6; + pub const VT_UNK_1: flatbuffers::VOffsetT = 8; + pub const VT_PLAY_TAG: flatbuffers::VOffsetT = 10; + pub const VT_PAUSE_TAG: flatbuffers::VOffsetT = 12; + pub const VT_RESUME_TAG: flatbuffers::VOffsetT = 14; + pub const VT_STOP_ALL_TAG: flatbuffers::VOffsetT = 16; + pub const VT_PLAY_VOLUME: flatbuffers::VOffsetT = 18; + pub const VT_UNK_2: flatbuffers::VOffsetT = 20; + pub const VT_UNK_3: flatbuffers::VOffsetT = 22; + pub const VT_UNLOCK_CONDITION: flatbuffers::VOffsetT = 24; + pub const VT_NAME: flatbuffers::VOffsetT = 26; + pub const VT_UNK_4: flatbuffers::VOffsetT = 28; + pub const VT_UNK_5: flatbuffers::VOffsetT = 30; + pub const VT_UNK_6: flatbuffers::VOffsetT = 32; + pub const VT_UNK_7: flatbuffers::VOffsetT = 34; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + MusicPlayerConfigTemplate { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args MusicPlayerConfigTemplateArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = MusicPlayerConfigTemplateBuilder::new(_fbb); + builder.add_unk_6(args.unk_6); + if let Some(x) = args.unk_7 { builder.add_unk_7(x); } + if let Some(x) = args.unk_5 { builder.add_unk_5(x); } + if let Some(x) = args.unk_4 { builder.add_unk_4(x); } + if let Some(x) = args.name { builder.add_name(x); } + if let Some(x) = args.unlock_condition { builder.add_unlock_condition(x); } + builder.add_unk_3(args.unk_3); + if let Some(x) = args.unk_2 { builder.add_unk_2(x); } + if let Some(x) = args.play_volume { builder.add_play_volume(x); } + if let Some(x) = args.stop_all_tag { builder.add_stop_all_tag(x); } + if let Some(x) = args.resume_tag { builder.add_resume_tag(x); } + if let Some(x) = args.pause_tag { builder.add_pause_tag(x); } + if let Some(x) = args.play_tag { builder.add_play_tag(x); } + if let Some(x) = args.unk_1 { builder.add_unk_1(x); } + builder.add_group_id(args.group_id); + builder.add_id(args.id); + builder.finish() + } + + + #[inline] + pub fn id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(MusicPlayerConfigTemplate::VT_ID, Some(0)).unwrap()} + } + #[inline] + pub fn group_id(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(MusicPlayerConfigTemplate::VT_GROUP_ID, Some(0)).unwrap()} + } + #[inline] + pub fn unk_1(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_UNK_1, None)} + } + #[inline] + pub fn play_tag(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_PLAY_TAG, None)} + } + #[inline] + pub fn pause_tag(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_PAUSE_TAG, None)} + } + #[inline] + pub fn resume_tag(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_RESUME_TAG, None)} + } + #[inline] + pub fn stop_all_tag(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_STOP_ALL_TAG, None)} + } + #[inline] + pub fn play_volume(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_PLAY_VOLUME, None)} + } + #[inline] + pub fn unk_2(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_UNK_2, None)} + } + #[inline] + pub fn unk_3(&self) -> i32 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(MusicPlayerConfigTemplate::VT_UNK_3, Some(0)).unwrap()} + } + #[inline] + pub fn unlock_condition(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_UNLOCK_CONDITION, None)} + } + #[inline] + pub fn name(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_NAME, None)} + } + #[inline] + pub fn unk_4(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_UNK_4, None)} + } + #[inline] + pub fn unk_5(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_UNK_5, None)} + } + #[inline] + pub fn unk_6(&self) -> i64 { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::(MusicPlayerConfigTemplate::VT_UNK_6, Some(0)).unwrap()} + } + #[inline] + pub fn unk_7(&self) -> Option<&'a str> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>(MusicPlayerConfigTemplate::VT_UNK_7, None)} + } +} + +impl flatbuffers::Verifiable for MusicPlayerConfigTemplate<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::("id", Self::VT_ID, false)? + .visit_field::("group_id", Self::VT_GROUP_ID, false)? + .visit_field::>("unk_1", Self::VT_UNK_1, false)? + .visit_field::>("play_tag", Self::VT_PLAY_TAG, false)? + .visit_field::>("pause_tag", Self::VT_PAUSE_TAG, false)? + .visit_field::>("resume_tag", Self::VT_RESUME_TAG, false)? + .visit_field::>("stop_all_tag", Self::VT_STOP_ALL_TAG, false)? + .visit_field::>("play_volume", Self::VT_PLAY_VOLUME, false)? + .visit_field::>("unk_2", Self::VT_UNK_2, false)? + .visit_field::("unk_3", Self::VT_UNK_3, false)? + .visit_field::>("unlock_condition", Self::VT_UNLOCK_CONDITION, false)? + .visit_field::>("name", Self::VT_NAME, false)? + .visit_field::>("unk_4", Self::VT_UNK_4, false)? + .visit_field::>("unk_5", Self::VT_UNK_5, false)? + .visit_field::("unk_6", Self::VT_UNK_6, false)? + .visit_field::>("unk_7", Self::VT_UNK_7, false)? + .finish(); + Ok(()) + } +} +pub struct MusicPlayerConfigTemplateArgs<'a> { + pub id: i32, + pub group_id: i32, + pub unk_1: Option>, + pub play_tag: Option>, + pub pause_tag: Option>, + pub resume_tag: Option>, + pub stop_all_tag: Option>, + pub play_volume: Option>, + pub unk_2: Option>, + pub unk_3: i32, + pub unlock_condition: Option>, + pub name: Option>, + pub unk_4: Option>, + pub unk_5: Option>, + pub unk_6: i64, + pub unk_7: Option>, +} +impl<'a> Default for MusicPlayerConfigTemplateArgs<'a> { + #[inline] + fn default() -> Self { + MusicPlayerConfigTemplateArgs { + id: 0, + group_id: 0, + unk_1: None, + play_tag: None, + pause_tag: None, + resume_tag: None, + stop_all_tag: None, + play_volume: None, + unk_2: None, + unk_3: 0, + unlock_condition: None, + name: None, + unk_4: None, + unk_5: None, + unk_6: 0, + unk_7: None, + } + } +} + +pub struct MusicPlayerConfigTemplateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> MusicPlayerConfigTemplateBuilder<'a, 'b, A> { + #[inline] + pub fn add_id(&mut self, id: i32) { + self.fbb_.push_slot::(MusicPlayerConfigTemplate::VT_ID, id, 0); + } + #[inline] + pub fn add_group_id(&mut self, group_id: i32) { + self.fbb_.push_slot::(MusicPlayerConfigTemplate::VT_GROUP_ID, group_id, 0); + } + #[inline] + pub fn add_unk_1(&mut self, unk_1: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_UNK_1, unk_1); + } + #[inline] + pub fn add_play_tag(&mut self, play_tag: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_PLAY_TAG, play_tag); + } + #[inline] + pub fn add_pause_tag(&mut self, pause_tag: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_PAUSE_TAG, pause_tag); + } + #[inline] + pub fn add_resume_tag(&mut self, resume_tag: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_RESUME_TAG, resume_tag); + } + #[inline] + pub fn add_stop_all_tag(&mut self, stop_all_tag: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_STOP_ALL_TAG, stop_all_tag); + } + #[inline] + pub fn add_play_volume(&mut self, play_volume: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_PLAY_VOLUME, play_volume); + } + #[inline] + pub fn add_unk_2(&mut self, unk_2: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_UNK_2, unk_2); + } + #[inline] + pub fn add_unk_3(&mut self, unk_3: i32) { + self.fbb_.push_slot::(MusicPlayerConfigTemplate::VT_UNK_3, unk_3, 0); + } + #[inline] + pub fn add_unlock_condition(&mut self, unlock_condition: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_UNLOCK_CONDITION, unlock_condition); + } + #[inline] + pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_NAME, name); + } + #[inline] + pub fn add_unk_4(&mut self, unk_4: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_UNK_4, unk_4); + } + #[inline] + pub fn add_unk_5(&mut self, unk_5: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_UNK_5, unk_5); + } + #[inline] + pub fn add_unk_6(&mut self, unk_6: i64) { + self.fbb_.push_slot::(MusicPlayerConfigTemplate::VT_UNK_6, unk_6, 0); + } + #[inline] + pub fn add_unk_7(&mut self, unk_7: flatbuffers::WIPOffset<&'b str>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplate::VT_UNK_7, unk_7); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> MusicPlayerConfigTemplateBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + MusicPlayerConfigTemplateBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for MusicPlayerConfigTemplate<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("MusicPlayerConfigTemplate"); + ds.field("id", &self.id()); + ds.field("group_id", &self.group_id()); + ds.field("unk_1", &self.unk_1()); + ds.field("play_tag", &self.play_tag()); + ds.field("pause_tag", &self.pause_tag()); + ds.field("resume_tag", &self.resume_tag()); + ds.field("stop_all_tag", &self.stop_all_tag()); + ds.field("play_volume", &self.play_volume()); + ds.field("unk_2", &self.unk_2()); + ds.field("unk_3", &self.unk_3()); + ds.field("unlock_condition", &self.unlock_condition()); + ds.field("name", &self.name()); + ds.field("unk_4", &self.unk_4()); + ds.field("unk_5", &self.unk_5()); + ds.field("unk_6", &self.unk_6()); + ds.field("unk_7", &self.unk_7()); + ds.finish() + } +} +pub enum AvatarBaseTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct AvatarBaseTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for AvatarBaseTemplateTb<'a> { + type Inner = AvatarBaseTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> AvatarBaseTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + AvatarBaseTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args AvatarBaseTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = AvatarBaseTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(AvatarBaseTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for AvatarBaseTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct AvatarBaseTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for AvatarBaseTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + AvatarBaseTemplateTbArgs { + data: None, + } + } +} + +pub struct AvatarBaseTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> AvatarBaseTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(AvatarBaseTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> AvatarBaseTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + AvatarBaseTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for AvatarBaseTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("AvatarBaseTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum WeaponTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct WeaponTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for WeaponTemplateTb<'a> { + type Inner = WeaponTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> WeaponTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + WeaponTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args WeaponTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = WeaponTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(WeaponTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for WeaponTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct WeaponTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for WeaponTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + WeaponTemplateTbArgs { + data: None, + } + } +} + +pub struct WeaponTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> WeaponTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(WeaponTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> WeaponTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + WeaponTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for WeaponTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("WeaponTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum UnlockConfigTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct UnlockConfigTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for UnlockConfigTemplateTb<'a> { + type Inner = UnlockConfigTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> UnlockConfigTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + UnlockConfigTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args UnlockConfigTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = UnlockConfigTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(UnlockConfigTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for UnlockConfigTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct UnlockConfigTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for UnlockConfigTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + UnlockConfigTemplateTbArgs { + data: None, + } + } +} + +pub struct UnlockConfigTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> UnlockConfigTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(UnlockConfigTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> UnlockConfigTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + UnlockConfigTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for UnlockConfigTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("UnlockConfigTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum PostGirlConfigTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct PostGirlConfigTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for PostGirlConfigTemplateTb<'a> { + type Inner = PostGirlConfigTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> PostGirlConfigTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + PostGirlConfigTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args PostGirlConfigTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = PostGirlConfigTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(PostGirlConfigTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for PostGirlConfigTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct PostGirlConfigTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for PostGirlConfigTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + PostGirlConfigTemplateTbArgs { + data: None, + } + } +} + +pub struct PostGirlConfigTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> PostGirlConfigTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(PostGirlConfigTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> PostGirlConfigTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + PostGirlConfigTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for PostGirlConfigTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("PostGirlConfigTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum ArchiveFileQuestTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct ArchiveFileQuestTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for ArchiveFileQuestTemplateTb<'a> { + type Inner = ArchiveFileQuestTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> ArchiveFileQuestTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + ArchiveFileQuestTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args ArchiveFileQuestTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = ArchiveFileQuestTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(ArchiveFileQuestTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for ArchiveFileQuestTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct ArchiveFileQuestTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for ArchiveFileQuestTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + ArchiveFileQuestTemplateTbArgs { + data: None, + } + } +} + +pub struct ArchiveFileQuestTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ArchiveFileQuestTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(ArchiveFileQuestTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ArchiveFileQuestTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + ArchiveFileQuestTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for ArchiveFileQuestTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("ArchiveFileQuestTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum ArchiveBattleQuestTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct ArchiveBattleQuestTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for ArchiveBattleQuestTemplateTb<'a> { + type Inner = ArchiveBattleQuestTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> ArchiveBattleQuestTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + ArchiveBattleQuestTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args ArchiveBattleQuestTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = ArchiveBattleQuestTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(ArchiveBattleQuestTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for ArchiveBattleQuestTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct ArchiveBattleQuestTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for ArchiveBattleQuestTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + ArchiveBattleQuestTemplateTbArgs { + data: None, + } + } +} + +pub struct ArchiveBattleQuestTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ArchiveBattleQuestTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(ArchiveBattleQuestTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ArchiveBattleQuestTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + ArchiveBattleQuestTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for ArchiveBattleQuestTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("ArchiveBattleQuestTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum SectionConfigTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct SectionConfigTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for SectionConfigTemplateTb<'a> { + type Inner = SectionConfigTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> SectionConfigTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + SectionConfigTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args SectionConfigTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = SectionConfigTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(SectionConfigTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for SectionConfigTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct SectionConfigTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for SectionConfigTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + SectionConfigTemplateTbArgs { + data: None, + } + } +} + +pub struct SectionConfigTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> SectionConfigTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(SectionConfigTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> SectionConfigTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + SectionConfigTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for SectionConfigTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("SectionConfigTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum MainCityBGMConfigTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct MainCityBGMConfigTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for MainCityBGMConfigTemplateTb<'a> { + type Inner = MainCityBGMConfigTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> MainCityBGMConfigTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + MainCityBGMConfigTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args MainCityBGMConfigTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = MainCityBGMConfigTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(MainCityBGMConfigTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for MainCityBGMConfigTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct MainCityBGMConfigTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for MainCityBGMConfigTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + MainCityBGMConfigTemplateTbArgs { + data: None, + } + } +} + +pub struct MainCityBGMConfigTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> MainCityBGMConfigTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(MainCityBGMConfigTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> MainCityBGMConfigTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + MainCityBGMConfigTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for MainCityBGMConfigTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("MainCityBGMConfigTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum HollowBuffTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct HollowBuffTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for HollowBuffTemplateTb<'a> { + type Inner = HollowBuffTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> HollowBuffTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + HollowBuffTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args HollowBuffTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = HollowBuffTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(HollowBuffTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for HollowBuffTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct HollowBuffTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for HollowBuffTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + HollowBuffTemplateTbArgs { + data: None, + } + } +} + +pub struct HollowBuffTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> HollowBuffTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(HollowBuffTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> HollowBuffTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + HollowBuffTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for HollowBuffTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("HollowBuffTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum CafeConfigTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct CafeConfigTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for CafeConfigTemplateTb<'a> { + type Inner = CafeConfigTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> CafeConfigTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + CafeConfigTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args CafeConfigTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = CafeConfigTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(CafeConfigTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for CafeConfigTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct CafeConfigTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for CafeConfigTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + CafeConfigTemplateTbArgs { + data: None, + } + } +} + +pub struct CafeConfigTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> CafeConfigTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(CafeConfigTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> CafeConfigTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + CafeConfigTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for CafeConfigTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("CafeConfigTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum EquipmentTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct EquipmentTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for EquipmentTemplateTb<'a> { + type Inner = EquipmentTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> EquipmentTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + EquipmentTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args EquipmentTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = EquipmentTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(EquipmentTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for EquipmentTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct EquipmentTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for EquipmentTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + EquipmentTemplateTbArgs { + data: None, + } + } +} + +pub struct EquipmentTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> EquipmentTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(EquipmentTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> EquipmentTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + EquipmentTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for EquipmentTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("EquipmentTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum EquipmentSuitTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct EquipmentSuitTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for EquipmentSuitTemplateTb<'a> { + type Inner = EquipmentSuitTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> EquipmentSuitTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + EquipmentSuitTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args EquipmentSuitTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = EquipmentSuitTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(EquipmentSuitTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for EquipmentSuitTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct EquipmentSuitTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for EquipmentSuitTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + EquipmentSuitTemplateTbArgs { + data: None, + } + } +} + +pub struct EquipmentSuitTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> EquipmentSuitTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(EquipmentSuitTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> EquipmentSuitTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + EquipmentSuitTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for EquipmentSuitTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("EquipmentSuitTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum HollowConfigTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct HollowConfigTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for HollowConfigTemplateTb<'a> { + type Inner = HollowConfigTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> HollowConfigTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + HollowConfigTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args HollowConfigTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = HollowConfigTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(HollowConfigTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for HollowConfigTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct HollowConfigTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for HollowConfigTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + HollowConfigTemplateTbArgs { + data: None, + } + } +} + +pub struct HollowConfigTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> HollowConfigTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(HollowConfigTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> HollowConfigTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + HollowConfigTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for HollowConfigTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("HollowConfigTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum HollowQuestTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct HollowQuestTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for HollowQuestTemplateTb<'a> { + type Inner = HollowQuestTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> HollowQuestTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + HollowQuestTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args HollowQuestTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = HollowQuestTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(HollowQuestTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for HollowQuestTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct HollowQuestTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for HollowQuestTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + HollowQuestTemplateTbArgs { + data: None, + } + } +} + +pub struct HollowQuestTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> HollowQuestTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(HollowQuestTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> HollowQuestTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + HollowQuestTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for HollowQuestTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("HollowQuestTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum BattleGroupConfigTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct BattleGroupConfigTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for BattleGroupConfigTemplateTb<'a> { + type Inner = BattleGroupConfigTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> BattleGroupConfigTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + BattleGroupConfigTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args BattleGroupConfigTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = BattleGroupConfigTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(BattleGroupConfigTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for BattleGroupConfigTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct BattleGroupConfigTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for BattleGroupConfigTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + BattleGroupConfigTemplateTbArgs { + data: None, + } + } +} + +pub struct BattleGroupConfigTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> BattleGroupConfigTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(BattleGroupConfigTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> BattleGroupConfigTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + BattleGroupConfigTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for BattleGroupConfigTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("BattleGroupConfigTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} +pub enum MusicPlayerConfigTemplateTbOffset {} +#[derive(Copy, Clone, PartialEq)] + +pub struct MusicPlayerConfigTemplateTb<'a> { + pub _tab: flatbuffers::Table<'a>, +} + +impl<'a> flatbuffers::Follow<'a> for MusicPlayerConfigTemplateTb<'a> { + type Inner = MusicPlayerConfigTemplateTb<'a>; + #[inline] + unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { + Self { _tab: flatbuffers::Table::new(buf, loc) } + } +} + +impl<'a> MusicPlayerConfigTemplateTb<'a> { + pub const VT_DATA: flatbuffers::VOffsetT = 4; + + #[inline] + pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { + MusicPlayerConfigTemplateTb { _tab: table } + } + #[allow(unused_mut)] + pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>( + _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>, + args: &'args MusicPlayerConfigTemplateTbArgs<'args> + ) -> flatbuffers::WIPOffset> { + let mut builder = MusicPlayerConfigTemplateTbBuilder::new(_fbb); + if let Some(x) = args.data { builder.add_data(x); } + builder.finish() + } + + + #[inline] + pub fn data(&self) -> Option>>> { + // Safety: + // Created from valid Table for this object + // which contains a valid value in this slot + unsafe { self._tab.get::>>>(MusicPlayerConfigTemplateTb::VT_DATA, None)} + } +} + +impl flatbuffers::Verifiable for MusicPlayerConfigTemplateTb<'_> { + #[inline] + fn run_verifier( + v: &mut flatbuffers::Verifier, pos: usize + ) -> Result<(), flatbuffers::InvalidFlatbuffer> { + use self::flatbuffers::Verifiable; + v.visit_table(pos)? + .visit_field::>>>("data", Self::VT_DATA, false)? + .finish(); + Ok(()) + } +} +pub struct MusicPlayerConfigTemplateTbArgs<'a> { + pub data: Option>>>>, +} +impl<'a> Default for MusicPlayerConfigTemplateTbArgs<'a> { + #[inline] + fn default() -> Self { + MusicPlayerConfigTemplateTbArgs { + data: None, + } + } +} + +pub struct MusicPlayerConfigTemplateTbBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> { + fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, + start_: flatbuffers::WIPOffset, +} +impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> MusicPlayerConfigTemplateTbBuilder<'a, 'b, A> { + #[inline] + pub fn add_data(&mut self, data: flatbuffers::WIPOffset>>>) { + self.fbb_.push_slot_always::>(MusicPlayerConfigTemplateTb::VT_DATA, data); + } + #[inline] + pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> MusicPlayerConfigTemplateTbBuilder<'a, 'b, A> { + let start = _fbb.start_table(); + MusicPlayerConfigTemplateTbBuilder { + fbb_: _fbb, + start_: start, + } + } + #[inline] + pub fn finish(self) -> flatbuffers::WIPOffset> { + let o = self.fbb_.end_table(self.start_); + flatbuffers::WIPOffset::new(o.value()) + } +} + +impl core::fmt::Debug for MusicPlayerConfigTemplateTb<'_> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut ds = f.debug_struct("MusicPlayerConfigTemplateTb"); + ds.field("data", &self.data()); + ds.finish() + } +} diff --git a/crates/trigger-fileconfig/src/lib.rs b/crates/trigger-fileconfig/src/lib.rs new file mode 100644 index 0000000..d718f44 --- /dev/null +++ b/crates/trigger-fileconfig/src/lib.rs @@ -0,0 +1,54 @@ +#[allow(dead_code, unused_imports, unsafe_op_in_unsafe_fn)] +#[path = "../gen_flatbuffers/tables_generated.rs"] +mod data; +pub mod main_city_script; + +pub use blockfile::ArchiveFile; +pub use data::*; + +macro_rules! file_cfg { + ($($name:ident;)*) => { + ::paste::paste!{ + pub struct NapFileCfg<'file> { + $(pub [<$name:snake>]: $name<'file>,)* + }} + + impl<'file> NapFileCfg<'file> { + ::paste::paste!{ + pub fn new(archive_file: &'file ArchiveFile) -> Self { + Self { + $( + [<$name:snake>]: { + ::flatbuffers::root::<$name>(archive_file.open(::const_format::formatcp!("{}", ::xxhash_rust::const_xxh64::xxh64(stringify!([<$name:lower>]).as_bytes(), 0))).unwrap()).unwrap() + }, + )* + } + } + } + } + }; +} + +file_cfg! { + AvatarBaseTemplateTb; + WeaponTemplateTb; + EquipmentTemplateTb; + EquipmentSuitTemplateTb; + UnlockConfigTemplateTb; + PostGirlConfigTemplateTb; + ArchiveFileQuestTemplateTb; + ArchiveBattleQuestTemplateTb; + SectionConfigTemplateTb; + MainCityBGMConfigTemplateTb; + HollowBuffTemplateTb; + CafeConfigTemplateTb; + HollowConfigTemplateTb; + HollowQuestTemplateTb; + BattleGroupConfigTemplateTb; + MusicPlayerConfigTemplateTb; +} + +pub fn read_archive_file(buf: R) -> std::io::Result { + let raw_data = blockfile::unpack_blk_raw(buf)?; + ArchiveFile::from_raw(raw_data) +} diff --git a/crates/trigger-fileconfig/src/main_city_script.rs b/crates/trigger-fileconfig/src/main_city_script.rs new file mode 100644 index 0000000..f5c7f17 --- /dev/null +++ b/crates/trigger-fileconfig/src/main_city_script.rs @@ -0,0 +1,158 @@ +use std::collections::HashMap; + +use serde::Deserialize; + +#[derive(Deserialize)] +#[serde(tag = "$type")] +pub enum ConfigEventAction { + #[serde(rename = "Share.CActionCreateNPCCfg")] + ActionCreateNpcCfg(ActionCreateNpcCfg), + #[serde(rename = "Share.CActionChangeInteractCfg")] + ActionChangeInteractCfg(ActionChangeInteractCfg), + #[serde(rename = "Share.CActionSetMainCityObjectState")] + ActionSetMainCityObjectState(ActionSetMainCityObjectState), + #[serde(rename = "Share.CActionSwitchSection")] + ActionSwitchSection(ActionSwitchSection), + #[serde(rename = "Share.CActionOpenUI")] + ActionOpenUI(ActionOpenUI), +} + +#[derive(Deserialize, Debug)] +#[serde(rename_all = "PascalCase")] +pub struct ConfigInteractScale { + pub x: f64, + pub y: f64, + pub z: f64, +} + +#[derive(Deserialize, Debug)] +pub struct ActionCreateNpcCfg { + #[serde(rename = "ID")] + pub id: i32, + #[serde(rename = "TagID")] + pub tag_id: i32, +} + +#[derive(Deserialize, Debug)] +#[serde(rename_all = "PascalCase")] +pub struct ActionChangeInteractCfg { + #[serde(rename = "ID")] + pub id: u32, + #[serde(rename = "InteractID")] + pub interact_id: i32, + #[serde(rename = "TagIDs")] + pub tag_ids: Vec, + #[serde(deserialize_with = "deserialize_participators_map")] + pub participators: HashMap, + pub interact_shape: String, + pub interact_scale: ConfigInteractScale, + #[serde(default)] + pub section_listen_events: HashMap, +} + +#[derive(Deserialize, Debug)] +#[serde(rename_all = "PascalCase")] +pub struct ActionSetMainCityObjectState { + #[serde(rename = "ID")] + pub id: u32, + #[serde(rename = "ObjectState")] + #[serde(deserialize_with = "deserialize_i32_map")] + pub object_state: HashMap, +} + +#[derive(Deserialize, Debug)] +#[serde(rename_all = "PascalCase")] +pub struct ActionSwitchSection { + #[serde(rename = "SectionID")] + pub section_id: u32, + pub transform: String, + pub camera_x: u32, + pub camera_y: u32, +} + +#[derive(Deserialize, Debug)] +#[serde(rename_all = "PascalCase")] +pub struct ActionOpenUI { + #[serde(rename = "UI")] + pub ui: String, + pub args: i32, + #[serde(rename = "StoreTemplateID")] + pub store_template_id: i32, +} + +#[derive(Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct ConfigEvent { + #[serde(rename = "ID")] + #[serde(default)] + pub id: u32, + pub actions: Vec, +} + +#[derive(Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct SectionEventGraphConfig { + #[serde(rename = "ID")] + pub id: u32, + pub on_add: Vec, + pub on_enter: Vec, + pub events: HashMap, +} + +#[derive(Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct MainCitySectionConfig { + #[serde(rename = "ID")] + pub id: i32, + pub unity_scene_path: String, + pub born_transform: String, + pub section_progress: SectionEventGraphConfig, +} + +#[derive(Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct MainCityConfig { + #[serde(rename = "ID")] + pub id: u32, + #[serde(rename = "DefaultSectionID")] + pub default_section_id: u32, + pub sections: HashMap, +} + +fn deserialize_participators_map<'de, D>(deserializer: D) -> Result, D::Error> +where + D: serde::de::Deserializer<'de>, +{ + use serde::de; + let str_map = HashMap::<&str, String>::deserialize(deserializer)?; + + Ok(str_map + .into_iter() + .map(|(str_key, value)| match str_key.parse() { + Ok(int_key) => Ok((int_key, value)), + Err(_) => Err(de::Error::invalid_value( + de::Unexpected::Str(str_key), + &"u32", + )), + }) + .collect::, _>>()?) +} + +fn deserialize_i32_map<'de, D>(deserializer: D) -> Result, D::Error> +where + D: serde::de::Deserializer<'de>, +{ + use serde::de; + let str_map = HashMap::<&str, i32>::deserialize(deserializer)?; + + Ok(str_map + .into_iter() + .map(|(str_key, value)| match str_key.parse() { + Ok(int_key) => Ok((int_key, value)), + Err(_) => Err(de::Error::invalid_value( + de::Unexpected::Str(str_key), + &"i32", + )), + }) + .collect::, _>>()?) +} diff --git a/crates/trigger-logic/Cargo.toml b/crates/trigger-logic/Cargo.toml new file mode 100644 index 0000000..051224e --- /dev/null +++ b/crates/trigger-logic/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "trigger-logic" +edition = "2024" +version.workspace = true + +[dependencies] +num_enum.workspace = true +prost.workspace = true diff --git a/crates/trigger-logic/src/action_pb.rs b/crates/trigger-logic/src/action_pb.rs new file mode 100644 index 0000000..2c84839 --- /dev/null +++ b/crates/trigger-logic/src/action_pb.rs @@ -0,0 +1,25 @@ +pub use prost::Message as PbMessage; + +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ActionOpenUI { + #[prost(string, tag = "1")] + pub ui: ::prost::alloc::string::String, + #[prost(int32, tag = "2")] + pub args: i32, + #[prost(int32, tag = "4")] + pub store_template_id: i32, + #[prost(int32, tag = "5")] + pub npc_id: i32, +} + +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ActionSwitchSection { + #[prost(uint32, tag = "1")] + pub section: u32, + #[prost(string, tag = "2")] + pub transform_id: ::prost::alloc::string::String, + #[prost(uint32, tag = "3")] + pub camera_x: u32, + #[prost(uint32, tag = "4")] + pub camera_y: u32, +} diff --git a/crates/trigger-logic/src/item.rs b/crates/trigger-logic/src/item.rs new file mode 100644 index 0000000..6c24b6b --- /dev/null +++ b/crates/trigger-logic/src/item.rs @@ -0,0 +1,17 @@ +use num_enum::IntoPrimitive; + +#[derive(Debug, PartialEq, Eq, Clone, Copy, IntoPrimitive)] +#[repr(i32)] +pub enum ItemStatic { + HollowGold = 1, + FrontendGold = 10, + GameDiamond = 100, + RechargeDiamond = 101, + Energy = 501, +} + +impl From for u32 { + fn from(value: ItemStatic) -> Self { + i32::from(value) as u32 + } +} diff --git a/crates/trigger-logic/src/lib.rs b/crates/trigger-logic/src/lib.rs new file mode 100644 index 0000000..2fc856c --- /dev/null +++ b/crates/trigger-logic/src/lib.rs @@ -0,0 +1,4 @@ +pub mod action_pb; +pub mod item; +pub mod quest; +pub mod scene; diff --git a/crates/trigger-logic/src/quest.rs b/crates/trigger-logic/src/quest.rs new file mode 100644 index 0000000..d1e5482 --- /dev/null +++ b/crates/trigger-logic/src/quest.rs @@ -0,0 +1,44 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; + +#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy, IntoPrimitive, TryFromPrimitive)] +#[repr(i32)] +pub enum EQuestType { + ArchiveFile = 1, + HollowChallenge = 6, + ArchiveBattle = 7, + MainCity = 5, + Daily = 9, + DungeonInner = 2, + Knowledge = 8, + Hollow = 3, + Manual = 4, +} + +#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy, IntoPrimitive, TryFromPrimitive)] +#[repr(i32)] +pub enum EHollowQuestType { + AbyssS2Event = 25, + DifficutyBattle = 12, + SideQuest = 2, + Challenge = 5, + MainQuest = 1, + AbyssS2RoleChallenge = 22, + AbyssS2Story = 19, + AvatarSide = 7, + BossRushBattle = 14, + MainQuestChessboard = 21, + Common = 0, + ChallengeChaos = 6, + Urgent = 3, + HackerActivity = 16, + NormalBattle = 10, + TheGun = 18, + NestVeryHard = 15, + AbyssS2Period = 20, + PromoteBattle = 11, + World = 8, + EnumCount = 26, + RallyBattle = 13, + UrgentSupplement = 4, + Arpeggio = 17, +} diff --git a/crates/trigger-logic/src/scene.rs b/crates/trigger-logic/src/scene.rs new file mode 100644 index 0000000..0ca3ddf --- /dev/null +++ b/crates/trigger-logic/src/scene.rs @@ -0,0 +1,108 @@ +use num_enum::{FromPrimitive, IntoPrimitive, TryFromPrimitive}; + +#[derive(Debug, Default, Clone, PartialEq)] +pub struct Vector3f { + pub x: f64, + pub y: f64, + pub z: f64, +} + +#[derive(Debug, Default, Clone, PartialEq)] +pub struct Transform { + pub position: Vector3f, + pub rotation: Vector3f, +} + +#[derive(Debug, PartialEq, Eq, Clone, Copy, IntoPrimitive, TryFromPrimitive)] +#[repr(i16)] +pub enum ESceneType { + Hall = 1, + Hollow = 2, + Fight = 3, + Fresh = 4, + MultiFight = 5, + Rally = 7, +} + +#[derive(Debug, PartialEq, Eq, Clone, Copy, IntoPrimitive, TryFromPrimitive)] +#[repr(i16)] +pub enum EPackageType { + Fight = 1, + RogueLike = 2, + Player = 3, + DungeonAvatar = 4, +} + +#[derive(Debug, PartialEq, Eq, Clone, Copy, IntoPrimitive, TryFromPrimitive)] +#[repr(i32)] +pub enum EInteractTarget { + None = 0, + NPC = 1, + TriggerBox = 2, +} + +#[derive(Debug, PartialEq, Eq, Clone, Copy, IntoPrimitive, TryFromPrimitive)] +#[repr(i32)] +pub enum EEventGraphOwnerType { + None = 0, + Scene = 1, + Section = 2, + SceneUnit = 3, + Hollow = 4, +} + +#[derive(Default, Debug, PartialEq, Eq, Clone, Copy, IntoPrimitive, FromPrimitive)] +#[repr(u32)] +pub enum ELocalPlayType { + #[default] + Unknown = 0, + BossRushBattle = 218, + DualElite = 208, + RallyLongFight = 207, + HadalZoneBosschallenge = 224, + BossNestHardBattle = 220, + MapChallengeBattle = 291, + BangbooRoyale = 240, + AvatarDemoTrial = 213, + BossBattle = 210, + ArchiveLongFight = 212, + TargetShootingBattle = 294, + CoinBrushingBattle = 231, + ActivityCombatPause = 230, + BossLittleBattleLongfight = 215, + OperationBetaDemo = 216, + BigBossBattleLongfight = 217, + S2RogueBattle = 226, + LevelZero = 205, + HadalZone = 209, + ChessBoardBattle = 202, + TrainingRootTactics = 292, + TrainingRoom = 290, + PureHollowBattleLonghfight = 281, + BabelTower = 223, + MpBigBossBattle = 214, + MiniScapeShortBattle = 229, + HadalZoneAlivecount = 222, + GuideSpecial = 203, + OperationTeamCoop = 219, + BigBossBattle = 211, + ChessBoardLongfihgtBattle = 204, + BuddyTowerdefenseBattle = 227, + PureHollowBattleHardmode = 282, + MiniScapeBattle = 228, + DailyChallenge = 206, + PureHollowBattle = 280, + SideScrollingThegunBattle = 221, + ArchiveBattle = 201, + BangbooDreamRogueBattle = 293, +} + +impl From> for Vector3f { + fn from(value: Vec) -> Self { + Self { + x: value.get(0).copied().unwrap_or(0.0), + y: value.get(1).copied().unwrap_or(0.0), + z: value.get(2).copied().unwrap_or(0.0), + } + } +} diff --git a/crates/trigger-protobuf/Cargo.toml b/crates/trigger-protobuf/Cargo.toml new file mode 100644 index 0000000..344a92d --- /dev/null +++ b/crates/trigger-protobuf/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "trigger-protobuf" +edition = "2024" +version.workspace = true + +[dependencies] +prost.workspace = true +prost-types.workspace = true +trigger-protobuf-derive = { path = "trigger-protobuf-derive" } +trigger-encoding.workspace = true +trigger-protocol.workspace = true + +[build-dependencies] +prost-build.workspace = true +proc-macro2.workspace = true +syn.workspace = true +quote.workspace = true +prettyplease.workspace = true diff --git a/crates/trigger-protobuf/build.rs b/crates/trigger-protobuf/build.rs new file mode 100644 index 0000000..9ca64bc --- /dev/null +++ b/crates/trigger-protobuf/build.rs @@ -0,0 +1,385 @@ +use std::{ + collections::HashSet, + fs::{self, File}, + io::{BufRead, BufReader}, + path::Path, +}; + +use quote::{quote, ToTokens}; +use syn::{Field, GenericArgument, Item, PathArguments, Type, TypePath}; + +fn main() { + let proto_file = "nap.proto"; + if Path::new(&proto_file).exists() { + println!("cargo:rerun-if-changed={proto_file}"); + let _ = fs::create_dir("out/"); + + prost_build::Config::new() + .out_dir("out/") + .type_attribute(".", "#[derive(trigger_protobuf_derive::CmdID)]") + .type_attribute(".", "#[derive(trigger_protobuf_derive::XorFields)]") + .compile_protos(&[proto_file], &["."]) + .unwrap(); + + let pb_out = Path::new("out/_.rs"); + remove_obfuscated_messages(pb_out, Path::new("nap.proto")).unwrap(); + apply_message_attributes(pb_out).unwrap(); + impl_struct_conversions( + pb_out, + Path::new("../trigger-protocol/src/lib.rs"), + Path::new("out/protocol_map.rs"), + ) + .unwrap(); + } +} + +fn impl_struct_conversions( + protobuf_codegen_path: &Path, + protocol_structures_path: &Path, + output_path: &Path, +) -> std::io::Result<()> { + let pb_gen = syn::parse_file(&fs::read_to_string(protobuf_codegen_path)?).unwrap(); + let custom_structs = syn::parse_file(&fs::read_to_string(protocol_structures_path)?).unwrap(); + + let mut from_impls = proc_macro2::TokenStream::new(); + let mut pb_to_cp_unit_match_arms = proc_macro2::TokenStream::new(); + let mut cp_unit_to_pb_match_arms = proc_macro2::TokenStream::new(); + + for item in pb_gen.items.iter() { + let Item::Struct(pb) = item else { + continue; + }; + + let ident = &pb.ident; + + // if it has cmdid, then we want a PB <-> Common Protocol Unit conversion + if pb.attrs.iter().any(|attr| { + attr.meta + .path() + .get_ident() + .map(|i| i == "cmdid") + .unwrap_or(false) + // Should be also defined in list of custom Common Protocol structures + }) && custom_structs.items.iter().any(|st| { + if let Item::Struct(cst) = st { + &cst.ident == ident + } else { + false + } + }) { + pb_to_cp_unit_match_arms.extend(quote! { + #ident::CMD_ID => { + let mut pb_message = #ident::decode(pb)?; + pb_message.xor_fields(); + + let common_protocol_message = ::trigger_protocol::#ident::from(pb_message); + Ok(Some(common_protocol_message.into())) + } + }); + + cp_unit_to_pb_match_arms.extend(quote! { + ::trigger_protocol::#ident::CMD_ID => { + let common_protocol_message = ::trigger_protocol::#ident::decode(&mut ::std::io::Cursor::new(&unit.blob))?; + let mut pb_message = #ident::from(common_protocol_message); + pb_message.xor_fields(); + + Ok(Some((#ident::CMD_ID, pb_message.encode_to_vec()))) + } + }); + } + + let Some(Item::Struct(c_struct)) = custom_structs.items.iter().find(|i| { + if let Item::Struct(s) = i { + &s.ident == ident + } else { + false + } + }) else { + continue; + }; + + let mut assignments = proc_macro2::TokenStream::new(); + + pb + .fields + .iter() + .filter(|pb_field| c_struct.fields.iter().any(|c_field| c_field.ident == pb_field.ident)) + .map(|f| (f, f.ident.as_ref().unwrap())) + .for_each(|(f, ident)| { + if field_is_optional(f) { + assignments.extend(quote! { + #ident: value.#ident.map(|v| v.into()), + }); + } + else if field_is_vector(f) { + assignments.extend(quote! { + #ident: value.#ident.into_iter().map(|v| v.into()).collect(), + }); + } + else if field_is_hash_map(f) { + assignments.extend(quote! { + #ident: value.#ident.into_iter().map(|(k, v)| (k.into(), v.into())).collect(), + }); + } + else { + assignments.extend(quote! { + #ident: value.#ident.into(), + }); + } + }); + + from_impls.extend(quote! { + #[allow(unused)] + impl From<#ident> for ::trigger_protocol::#ident { + fn from(value: #ident) -> Self { + Self { + #assignments + ..Default::default() + } + } + } + + #[allow(unused)] + impl From<::trigger_protocol::#ident> for #ident { + fn from(value: ::trigger_protocol::#ident) -> Self { + Self { + #assignments + ..Default::default() + } + } + } + }); + } + + let generated_code = quote! { + pub fn pb_to_common_protocol_unit(pb_cmd_id: u16, pb: &[u8]) -> Result, crate::ProtobufDecodeError> { + match pb_cmd_id { + #pb_to_cp_unit_match_arms + _ => Ok(None), + } + } + + pub fn common_protocol_unit_to_pb(unit: &::trigger_protocol::util::ProtocolUnit) -> ::std::io::Result)>> { + use ::trigger_encoding::Decodeable; + use ::trigger_protocol::ClientCmdID; + + match unit.cmd_id { + #cp_unit_to_pb_match_arms + _ => Ok(None), + } + } + + #from_impls + }; + + std::fs::write( + output_path, + &prettyplease::unparse(&syn::parse2(generated_code).unwrap()), + )?; + + Ok(()) +} + +fn remove_obfuscated_messages(codegen_path: &Path, proto_path: &Path) -> std::io::Result<()> { + // Remove unused obfuscated messages to reduce compilation time + + let mut obfuscated_names = HashSet::new(); + + let proto_file = File::open(proto_path)?; + let reader = BufReader::new(proto_file); + + for line in reader.lines() { + let line = line?; + let name = if line.starts_with("message ") { + line.split(' ').nth(1).unwrap() + } else if line.contains('=') { + let split = line.trim().split('=').nth(0).unwrap().trim().split(' '); + split.last().unwrap() + } else { + continue; + }; + + // length=11 & uppercase => obfuscated name + if name.len() == 11 && !name.chars().fold(false, |b, ch| b || ch.is_lowercase()) { + obfuscated_names.insert(name.to_string()); + } + } + + let codegen = syn::parse_file(&std::fs::read_to_string(codegen_path).unwrap()).unwrap(); + let mut optimized = proc_macro2::TokenStream::new(); + + for item in codegen.items.iter() { + match item { + syn::Item::Struct(st) => { + let name = &st.ident; + let attrs = &st.attrs; + if obfuscated_names.contains(&name.to_string().to_uppercase()) { + continue; + } + + let mut struct_fields = proc_macro2::TokenStream::new(); + for field in st.fields.iter() { + if obfuscated_names + .contains(&field.ident.as_ref().unwrap().to_string().to_uppercase()) + { + continue; + } + + let ft = extract_type(&field.ty); + if !obfuscated_names.contains(&ft.to_uppercase()) { + struct_fields.extend(quote::quote! { + #field, + }); + } + } + + optimized.extend(quote::quote! { + #(#attrs)* + pub struct #name { + #struct_fields + } + }); + } + syn::Item::Mod(module) => { + if obfuscated_names.contains(&module.ident.to_string().to_uppercase()) { + continue; + } + + let mod_name = &module.ident; + let mut mod_items = proc_macro2::TokenStream::new(); + for item in module.content.as_ref().unwrap().1.iter() { + if let Item::Enum(en) = &item { + let attrs = &en.attrs; + let name = &en.ident; + let mut variants = Vec::new(); + for variant in en.variants.iter() { + let field = variant.fields.iter().next().unwrap(); + if !obfuscated_names.contains(&extract_type(&field.ty).to_uppercase()) { + variants.push(variant); + } + } + + mod_items.extend(quote::quote! { + #(#attrs)* + pub enum #name { + #(#variants),* + } + }); + } + } + + optimized.extend(quote::quote! { + pub mod #mod_name { + #mod_items + } + }); + } + _ => { + optimized.extend(item.to_token_stream()); + } + } + } + + std::fs::write( + codegen_path, + prettyplease::unparse(&syn::parse2(optimized).unwrap()), + )?; + + Ok(()) +} + +fn apply_message_attributes(path: &Path) -> std::io::Result<()> { + let file = File::open(path)?; + let reader = BufReader::new(file); + let mut output = Vec::new(); + + let mut cmd_id_attr = None; + for line in reader.lines() { + let line = line?; + if line.contains("xor const: ") { + if !line.contains("xor const: 0") { + output.push(make_xor_attr(&line).unwrap()); + } + } else if line.contains("CmdID: ") { + cmd_id_attr = Some(make_cmd_id_attr(&line).unwrap()); + } else { + output.push(line); + if let Some(attr) = cmd_id_attr.take() { + output.push(attr); + } + } + } + + fs::write(path, output.join("\n").as_bytes())?; + Ok(()) +} + +#[must_use] +fn field_is_optional(field: &Field) -> bool { + match &field.ty { + Type::Path(TypePath { path, .. }) => { + let last_segment = path.segments.last().unwrap(); + last_segment.ident == "Option" + } + _ => panic!("Unsupported field type"), + } +} + +#[must_use] +fn field_is_vector(field: &Field) -> bool { + match &field.ty { + Type::Path(TypePath { path, .. }) => { + let last_segment = path.segments.last().unwrap(); + last_segment.ident == "Vec" + } + _ => panic!("Unsupported field type"), + } +} + +#[must_use] +fn field_is_hash_map(field: &Field) -> bool { + match &field.ty { + Type::Path(TypePath { path, .. }) => { + let last_segment = path.segments.last().unwrap(); + last_segment.ident == "HashMap" + } + _ => panic!("Unsupported field type"), + } +} + +fn make_xor_attr(line: &str) -> Option { + let xor_value = line.split("xor const: ").nth(1)?.parse::().ok()?; + Some(format!(" #[xor({xor_value})]")) +} + +fn make_cmd_id_attr(line: &str) -> Option { + let cmd_id = line.split("CmdID: ").nth(1)?.parse::().ok()?; + Some(format!("#[cmdid({cmd_id})]")) +} + +#[must_use] +fn get_type_name(path: &syn::Path) -> String { + path.segments.last().unwrap().ident.to_string() +} + +#[must_use] +fn extract_type(ty: &Type) -> String { + match &ty { + Type::Path(TypePath { path, .. }) => { + let last_segment = path.segments.last().unwrap(); + match &last_segment.arguments { + PathArguments::AngleBracketed(args) => { + if let Some(GenericArgument::Type(Type::Path(TypePath { path, .. }))) = + args.args.last() + { + get_type_name(path) + } else { + get_type_name(path) + } + } + _ => get_type_name(path), + } + } + _ => panic!("Unsupported field type"), + } +} diff --git a/crates/trigger-protobuf/out/_.rs b/crates/trigger-protobuf/out/_.rs new file mode 100644 index 0000000..7b96f98 --- /dev/null +++ b/crates/trigger-protobuf/out/_.rs @@ -0,0 +1,31015 @@ +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4322)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct DrinkCafeScRsp { + #[xor(5787)] + #[prost(int32, tag = "8")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9793)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct InteractWithUnitCsReq { + /// VMP DETECTED + /// + #[xor(9313)] + #[prost(int32, tag = "5")] + pub interact_id: i32, + #[prost(enumeration = "InteractTarget", tag = "6")] + pub r#type: i32, + #[xor(2438)] + #[prost(int32, tag = "10")] + pub npc_tag_id: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7493)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EndBattleScRsp { + /// VMP DETECTED + /// + #[xor(1556)] + #[prost(int32, tag = "12")] + pub retcode: i32, + #[prost(message, optional, tag = "14")] + pub fight_settle: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DungeonInfo { + #[xor(8170)] + #[prost(uint32, tag = "138")] + pub quest_type: u32, + #[prost(message, optional, tag = "7")] + pub dungeon_equip_info: ::core::option::Option, + #[prost(message, repeated, tag = "15")] + pub avatar_list: ::prost::alloc::vec::Vec, + #[prost(message, optional, tag = "312")] + pub dungeon_quest_info: ::core::option::Option, + #[xor(13098)] + #[prost(uint32, tag = "3")] + pub quest_id: u32, + #[prost(message, repeated, tag = "361")] + pub buddy_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6242)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BattleReportCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9827)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetAvatarDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5841)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SavePosInMainCityCsReq { + #[xor(6622)] + #[prost(uint32, tag = "2")] + pub section_id: u32, + #[prost(message, optional, tag = "14")] + pub position: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1702)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ActiveHollowCheckPointCsReq { + /// VMP DETECTED + /// + #[prost(message, optional, tag = "10")] + pub check_point: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RamenData { + #[prost(uint32, repeated, tag = "10")] + pub unlock_ramen_list: ::prost::alloc::vec::Vec, + #[prost(bool, tag = "12")] + pub has_mystical_spice: bool, + #[xor(2238)] + #[prost(uint32, tag = "2")] + pub eat_ramen_times: u32, + #[xor(2172)] + #[prost(uint32, tag = "7")] + pub cur_ramen: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1437)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct DelNewRamenCsReq { + #[prost(bool, tag = "8")] + pub has_mystical_spice: bool, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6760)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct SwitchRoleCsReq { + #[prost(enumeration = "Ihdddedbkkh", tag = "2")] + pub r#type: i32, + #[xor(16176)] + #[prost(uint32, tag = "7")] + pub avatar_id: u32, + #[xor(5532)] + #[prost(uint32, tag = "8")] + pub control_avatar_id: u32, + #[xor(12728)] + #[prost(uint32, tag = "15")] + pub player_avatar_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4307)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetChatEmojiListScRsp { + #[xor(9852)] + #[prost(int32, tag = "4")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4227)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetAvatarDataScRsp { + #[prost(message, repeated, tag = "5")] + pub avatar_list: ::prost::alloc::vec::Vec, + #[xor(9440)] + #[prost(int32, tag = "15")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9052)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetWishlistDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2061)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetBattleEventInfoCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1747)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetEquipDataScRsp { + #[xor(12263)] + #[prost(int32, tag = "14")] + pub retcode: i32, + #[prost(message, repeated, tag = "9")] + pub equip_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5585)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct ReportUiLayoutPlatformCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8531)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetCollectMapCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6656)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct AbyssArpeggioGetDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7633)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetFriendListCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8500)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct RunEventGraphScRsp { + #[xor(10122)] + #[prost(int32, tag = "13")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct NewsStandData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8667)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetPrivateMessageDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Avatar { + #[prost(uint32, repeated, tag = "15")] + pub taken_rank_up_reward_list: ::prost::alloc::vec::Vec, + #[prost(bool, repeated, tag = "8")] + pub talent_switch_list: ::prost::alloc::vec::Vec, + #[xor(6791)] + #[prost(uint32, tag = "3")] + pub passive_skill_level: u32, + #[prost(message, repeated, tag = "12")] + pub dressed_equip_list: ::prost::alloc::vec::Vec, + #[xor(1321)] + #[prost(int64, tag = "10")] + pub first_get_time: i64, + #[prost(message, repeated, tag = "2")] + pub skill_type_level: ::prost::alloc::vec::Vec, + #[xor(3645)] + #[prost(uint32, tag = "13")] + pub id: u32, + #[xor(2538)] + #[prost(uint32, tag = "9")] + pub level: u32, + #[xor(513)] + #[prost(uint32, tag = "5")] + pub cur_weapon_uid: u32, + #[xor(13442)] + #[prost(uint32, tag = "1")] + pub rank: u32, + #[xor(3166)] + #[prost(uint32, tag = "7")] + pub unlocked_talent_num: u32, + #[xor(1442)] + #[prost(uint32, tag = "1155")] + pub avatar_skin_id: u32, + #[prost(enumeration = "AvatarShowWeaponType", tag = "11")] + pub show_weapon_type: i32, + #[xor(11761)] + #[prost(uint32, tag = "4")] + pub exp: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct HollowInfo { + #[prost(message, optional, tag = "505")] + pub hollow_statistics: ::core::option::Option, + #[xor(170)] + #[prost(uint32, tag = "11")] + pub hollow_quest_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BattleEventInfo {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(183)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetBabelTowerDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1996)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct ClickHollowSystemCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7453)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct BeginArchiveBattleQuestScRsp { + /// VMP DETECTED + /// + #[xor(6346)] + #[prost(uint32, tag = "5")] + pub quest_id: u32, + #[xor(2233)] + #[prost(int32, tag = "9")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1803)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetFishingContestDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6831)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetMiniscapeEntrustDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2708)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetCafeDataScRsp { + #[prost(message, optional, tag = "10")] + pub cafe_data: ::core::option::Option, + #[xor(4103)] + #[prost(int32, tag = "12")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6626)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetBattlePassDataScRsp { + #[xor(4165)] + #[prost(int32, tag = "8")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8186)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct EatRamenCsReq { + #[xor(3203)] + #[prost(int32, tag = "7")] + pub ramen: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4973)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetExplorationDataScRsp { + #[xor(10066)] + #[prost(int32, tag = "15")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9773)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetFriendListScRsp { + #[xor(7206)] + #[prost(int32, tag = "14")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9420)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GameLogReportCsReq { + #[prost(string, repeated, tag = "2")] + pub stack_trace: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[xor(6813)] + #[prost(uint32, tag = "1")] + pub log_report_type: u32, + #[prost(string, tag = "11")] + pub value: ::prost::alloc::string::String, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8454)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetVhsStoreDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7615)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetResourceDataScRsp { + #[xor(14980)] + #[prost(int32, tag = "12")] + pub retcode: i32, + #[prost(map = "uint32, message", tag = "10")] + pub auto_recovery_info: ::std::collections::HashMap, + #[prost(message, repeated, tag = "11")] + pub material_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LevelPerformInfo { + #[xor(13964)] + #[prost(uint32, tag = "14")] + pub event_graph_owner_uid: u32, + #[prost(string, tag = "15")] + pub time: ::prost::alloc::string::String, + #[prost(string, tag = "6")] + pub weather: ::prost::alloc::string::String, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RamenSync { + #[prost(bool, tag = "2")] + pub has_mystical_spice: bool, + #[prost(bool, tag = "11")] + pub is_full_update: bool, + #[xor(8476)] + #[prost(uint32, tag = "14")] + pub eat_ramen_times: u32, + #[xor(13290)] + #[prost(uint32, tag = "13")] + pub cur_ramen: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5713)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetPlayerMailsCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6313)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetOnlineFriendsListScRsp { + #[xor(203)] + #[prost(int32, tag = "14")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct HollowData { + #[prost(uint32, repeated, tag = "7")] + pub unlock_hollow_group_list: ::prost::alloc::vec::Vec, + #[prost(uint32, repeated, tag = "11")] + pub unlock_hollow_quest_list: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "8")] + pub hollow_info_list: ::prost::alloc::vec::Vec, + #[prost(uint32, repeated, tag = "13")] + pub unlock_hollow_id_list: ::prost::alloc::vec::Vec, + #[prost(uint32, repeated, tag = "6")] + pub hollow_group_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(3168)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetFashionStoreDataScRsp { + #[prost(message, optional, tag = "5")] + pub data: ::core::option::Option, + #[xor(14858)] + #[prost(int32, tag = "12")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(161)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetArcadeDataScRsp { + #[xor(7907)] + #[prost(int32, tag = "3")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(846)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct EnterWorldCsReq { + #[prost(bool, tag = "3")] + pub is_reenter: bool, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9897)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct UndressEquipmentCsReq { + #[prost(uint32, repeated, tag = "7")] + pub undress_index_list: ::prost::alloc::vec::Vec, + #[xor(5922)] + #[prost(uint32, tag = "6")] + pub avatar_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(3664)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetDisplayCaseDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2511)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PlayerOperationCsReq { + #[xor(7350)] + #[prost(int32, tag = "4")] + pub param: i32, + #[prost(bytes = "vec", tag = "2")] + pub data: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Transform { + #[prost(double, repeated, tag = "1")] + pub position: ::prost::alloc::vec::Vec, + #[prost(double, repeated, tag = "2")] + pub rotation: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DisplayItemGroup {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2180)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetHollowDataScRsp { + /// VMP DETECTED + /// + #[xor(16196)] + #[prost(int32, tag = "5")] + pub retcode: i32, + #[prost(message, optional, tag = "7")] + pub hollow_data: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PhotoWallNetworkData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4732)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetClientSystemsDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7308)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetCharacterQuestListScRsp { + #[xor(5101)] + #[prost(int32, tag = "11")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct LevelRewardInfo {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct HollowStatistics {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9036)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetCampIdleDataScRsp { + #[prost(message, optional, tag = "3")] + pub camp_idle_data: ::core::option::Option, + #[xor(8231)] + #[prost(int32, tag = "7")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9403)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetRewardBuffDataScRsp { + #[xor(4234)] + #[prost(int32, tag = "7")] + pub retcode: i32, + #[prost(message, optional, tag = "12")] + pub data: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct FreshSceneInfo {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2973)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RechargeGetItemListScRsp { + #[xor(14211)] + #[prost(int32, tag = "15")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6859)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EndBattleCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct MusicPlayerItem { + #[xor(2773)] + #[prost(uint32, tag = "10")] + pub id: u32, + #[xor(10372)] + #[prost(int64, tag = "11")] + pub seen_time: i64, + #[xor(14288)] + #[prost(int64, tag = "13")] + pub unlock_time: i64, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6302)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TalentSwitchCsReq { + #[prost(bool, repeated, tag = "14")] + pub talent_switch_list: ::prost::alloc::vec::Vec, + #[xor(8724)] + #[prost(uint32, tag = "13")] + pub avatar_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(151)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ReportBattleTeamCsReq { + #[prost(int32, repeated, tag = "6")] + pub avatar_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6837)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct PostEnterWorldCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(3772)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetResourceDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1649)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetPhotoWallDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2733)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetDailyChallengeDataScRsp { + #[prost(message, optional, tag = "2")] + pub data: ::core::option::Option, + #[xor(1900)] + #[prost(int32, tag = "5")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct Material { + #[xor(13478)] + #[prost(uint32, tag = "9")] + pub id: u32, + #[xor(11210)] + #[prost(int32, tag = "3")] + pub num: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AvatarDataPackage { + #[prost(message, repeated, tag = "3")] + pub equip_list: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "4")] + pub weapon_list: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "14")] + pub avatar_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct QuestCollection { + #[prost(uint32, repeated, tag = "15")] + pub finished_quest_id_list: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "4")] + pub quest_list: ::prost::alloc::vec::Vec, + #[xor(10761)] + #[prost(uint32, tag = "10")] + pub quest_type: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1703)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetCharacterQuestListCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(3654)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetTipsInfoCsReq { + #[xor(6467)] + #[prost(uint32, tag = "5")] + pub r#type: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9289)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetAvatarRecommendEquipCsReq { + #[xor(14521)] + #[prost(uint32, tag = "6")] + pub avatar_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(780)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BeginTrainingCourseBattleCsReq { + /// VMP DETECTED + /// + #[xor(10649)] + #[prost(uint32, tag = "5")] + pub buddy_id: u32, + #[xor(14127)] + #[prost(uint32, tag = "6")] + pub quest_id: u32, + #[prost(uint32, repeated, tag = "14")] + pub avatar_id_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5718)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct PerformTriggerScRsp { + #[xor(15470)] + #[prost(int64, tag = "9")] + pub perform_uid: i64, + #[xor(960)] + #[prost(int32, tag = "12")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9635)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetArchiveDataScRsp { + /// VMP DETECTED + /// + #[prost(message, optional, tag = "11")] + pub archive_data: ::core::option::Option, + #[xor(7773)] + #[prost(int32, tag = "14")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8379)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetArchiveDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PlayerDisplayData { + #[prost(message, optional, tag = "6")] + pub display_item_group: ::core::option::Option, + #[prost(message, optional, tag = "12")] + pub avatar_data_package: ::core::option::Option, + #[prost(message, optional, tag = "8")] + pub photo_wall_network_data: ::core::option::Option, + #[prost(string, tag = "4")] + pub signature: ::prost::alloc::string::String, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5403)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetRamenDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7585)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetBattlePassDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(726)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PlayerLoginScRsp { + #[xor(12862)] + #[prost(int32, tag = "4")] + pub retcode: i32, + #[xor(6070)] + #[prost(uint64, tag = "6")] + pub timestamp: u64, + #[prost(bool, tag = "12")] + pub lock: bool, + #[xor(7426)] + #[prost(int32, tag = "29")] + pub utc_offset: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6122)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetFairyDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MusicPlayerData { + #[prost(message, repeated, tag = "1")] + pub music_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(3845)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetCollectMapScRsp { + #[prost(message, optional, tag = "4")] + pub collect_map: ::core::option::Option, + #[xor(4400)] + #[prost(int32, tag = "9")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct EquipProperty { + #[xor(13351)] + #[prost(uint32, tag = "7")] + pub base_value: u32, + #[xor(14694)] + #[prost(uint32, tag = "9")] + pub key: u32, + #[xor(302)] + #[prost(uint32, tag = "5")] + pub add_value: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4628)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct FinishArchivePerformCsReq { + #[xor(16350)] + #[prost(uint32, tag = "11")] + pub quest_id: u32, + #[xor(16015)] + #[prost(uint32, tag = "6")] + pub sub_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ActionInfo { + #[prost(bytes = "vec", tag = "6")] + pub body: ::prost::alloc::vec::Vec, + #[prost(enumeration = "ActionType", tag = "15")] + pub action_type: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(606)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetPrivateMessageDataScRsp { + #[xor(13302)] + #[prost(int32, tag = "7")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct AvatarSkillLevel { + #[xor(1410)] + #[prost(uint32, tag = "10")] + pub skill_type: u32, + #[xor(16359)] + #[prost(uint32, tag = "3")] + pub level: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ClientSystemsData { + #[prost(message, optional, tag = "3")] + pub music_player_data: ::core::option::Option, + #[prost(message, optional, tag = "5")] + pub trashbin_hermit_data: ::core::option::Option, + #[prost(message, optional, tag = "11")] + pub post_girl_data: ::core::option::Option, + #[prost(message, optional, tag = "12")] + pub unlock_data: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8301)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct SetLanguageCsReq { + #[xor(1929)] + #[prost(uint32, tag = "7")] + pub language: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6984)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetJourneyDataScRsp { + #[prost(message, optional, tag = "11")] + pub data: ::core::option::Option, + #[xor(14875)] + #[prost(int32, tag = "15")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5512)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetTipsInfoScRsp { + #[xor(9765)] + #[prost(int32, tag = "4")] + pub retcode: i32, + #[xor(12677)] + #[prost(uint32, tag = "3")] + pub r#type: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9951)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetFashionStoreDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AvatarUnitInfo { + #[xor(7399)] + #[prost(uint32, tag = "15")] + pub avatar_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BuddyInfo { + #[xor(7321)] + #[prost(uint32, tag = "3")] + pub rank: u32, + #[xor(7017)] + #[prost(uint32, tag = "8")] + pub level: u32, + #[prost(uint32, repeated, tag = "4")] + pub taken_rank_up_reward_list: ::prost::alloc::vec::Vec, + #[xor(15143)] + #[prost(int64, tag = "2")] + pub first_get_time: i64, + #[xor(7293)] + #[prost(uint32, tag = "13")] + pub star: u32, + #[xor(7374)] + #[prost(uint32, tag = "1")] + pub id: u32, + #[xor(1498)] + #[prost(uint32, tag = "15")] + pub exp: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9958)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetNewsStandDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1987)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetPlayerTransactionScRsp { + #[prost(string, tag = "1")] + pub transaction: ::prost::alloc::string::String, + #[xor(3489)] + #[prost(int32, tag = "14")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(191)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetWebActivityDataScRsp { + #[xor(14505)] + #[prost(int32, tag = "3")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct AutoRecoveryInfo { + #[xor(549)] + #[prost(uint32, tag = "3")] + pub buy_times: u32, + #[xor(7702)] + #[prost(int64, tag = "12")] + pub last_recovery_timestamp: i64, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7210)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetBuddyDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(394)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetCampIdleDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8143)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetAuthkeyCsReq { + /// VMP DETECTED + /// + #[prost(string, tag = "1")] + pub auth_appid: ::prost::alloc::string::String, + #[xor(5781)] + #[prost(uint32, tag = "6")] + pub authkey_ver: u32, + #[xor(13506)] + #[prost(uint32, tag = "9")] + pub sign_type: u32, + #[xor(13730)] + #[prost(uint32, tag = "15")] + pub offline_verify_value: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(707)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetQuestionsAnswerGameDataScRsp { + #[xor(13408)] + #[prost(int32, tag = "2")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4441)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetRedDotListCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7172)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetHadalZoneDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5524)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct AbyssGetDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BuddyUnitInfo { + #[prost(enumeration = "BuddyTeamType", tag = "10")] + pub r#type: i32, + #[xor(12188)] + #[prost(uint32, tag = "15")] + pub buddy_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DungeonQuestInfo { + #[prost(uint32, repeated, tag = "14")] + pub inner_quest_id_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(3264)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetCafeDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7125)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PlayerGetTokenScRsp { + /// VMP DETECTED + /// + #[prost(string, tag = "2")] + pub sign: ::prost::alloc::string::String, + #[xor(10880)] + #[prost(int32, tag = "4")] + pub retcode: i32, + #[prost(string, tag = "9")] + pub server_rand_key: ::prost::alloc::string::String, + #[xor(12834)] + #[prost(uint32, tag = "13")] + pub uid: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8717)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct BattleReportScRsp { + #[xor(6077)] + #[prost(int32, tag = "14")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ItemSync { + #[prost(message, repeated, tag = "5")] + pub weapon_list: ::prost::alloc::vec::Vec, + #[prost(map = "uint32, message", tag = "7")] + pub auto_recovery_info: ::std::collections::HashMap, + #[prost(message, repeated, tag = "11")] + pub material_list: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "12")] + pub equip_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DungeonEquipInfo { + #[prost(message, repeated, tag = "3")] + pub avatar_list: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "15")] + pub weapon_list: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "8")] + pub buddy_list: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "10")] + pub equip_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1449)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetRidusGotBooDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1301)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DressEquipmentSuitCsReq { + /// VMP DETECTED + /// + #[prost(message, repeated, tag = "4")] + pub param_list: ::prost::alloc::vec::Vec, + #[xor(16222)] + #[prost(uint32, tag = "11")] + pub avatar_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RewardBuffData { + #[prost(message, repeated, tag = "15")] + pub reward_buff_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TrashbinHermitData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CollectMap {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5565)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetQuestionsAnswerGameDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PlayerBasicInfo { + #[xor(6536)] + #[prost(int64, tag = "9")] + pub last_enter_world_timestamp: i64, + #[xor(3590)] + #[prost(uint32, tag = "167")] + pub control_avatar_id: u32, + #[xor(5836)] + #[prost(uint32, tag = "3")] + pub avatar_id: u32, + #[xor(5587)] + #[prost(uint32, tag = "10")] + pub exp: u32, + #[xor(12073)] + #[prost(uint32, tag = "11")] + pub level: u32, + #[prost(string, tag = "5")] + pub nick_name: ::prost::alloc::string::String, + #[xor(12546)] + #[prost(uint32, tag = "14")] + pub player_avatar_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8286)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetPlayerTransactionCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4921)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetDailyChallengeDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1068)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct PerformTriggerCsReq { + #[xor(1459)] + #[prost(int32, tag = "9")] + pub perform_type: i32, + #[xor(10240)] + #[prost(int32, tag = "10")] + pub perform_id: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9983)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct DressEquipmentCsReq { + #[xor(11447)] + #[prost(uint32, tag = "11")] + pub equip_uid: u32, + #[xor(8984)] + #[prost(uint32, tag = "12")] + pub dress_index: u32, + #[xor(1983)] + #[prost(uint32, tag = "1")] + pub avatar_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8664)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct PlayerLogoutCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7435)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetGachaDataCsReq { + /// VMP DETECTED + /// + #[xor(13597)] + #[prost(uint32, tag = "11")] + pub gacha_type: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1978)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetJourneyDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7039)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct EnterSectionCompleteScRsp { + #[xor(10812)] + #[prost(int32, tag = "3")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6377)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetWebActivityDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4866)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetOnlineFriendsListCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(120)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetServerTimestampScRsp { + #[xor(4137)] + #[prost(uint64, tag = "7")] + pub timestamp: u64, + #[xor(15927)] + #[prost(int32, tag = "15")] + pub utc_offset: i32, + #[xor(6909)] + #[prost(int32, tag = "8")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(123)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetAuthkeyScRsp { + /// VMP DETECTED + /// + #[xor(7477)] + #[prost(int32, tag = "3")] + pub retcode: i32, + #[xor(12603)] + #[prost(uint32, tag = "4")] + pub authkey_ver: u32, + #[prost(string, tag = "9")] + pub authkey: ::prost::alloc::string::String, + #[prost(string, tag = "12")] + pub auth_appid: ::prost::alloc::string::String, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1075)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetShoppingMallInfoScRsp { + #[xor(4470)] + #[prost(int32, tag = "8")] + pub retcode: i32, + #[prost(message, optional, tag = "13")] + pub shopping_mall_info: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4092)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetAbyssRewardDataScRsp { + #[prost(message, optional, tag = "8")] + pub abyss_reward_data: ::core::option::Option, + #[xor(13321)] + #[prost(int32, tag = "10")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6973)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct PerformEndCsReq { + #[xor(13157)] + #[prost(int64, tag = "5")] + pub perform_uid: i64, + #[xor(4760)] + #[prost(int32, tag = "7")] + pub perform_type: i32, + #[xor(8269)] + #[prost(int32, tag = "10")] + pub perform_id: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1845)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetRedDotListScRsp { + #[xor(3663)] + #[prost(int32, tag = "9")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DailyChallengeData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9260)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetClientSystemsDataScRsp { + #[prost(message, optional, tag = "7")] + pub data: ::core::option::Option, + #[xor(3369)] + #[prost(int32, tag = "14")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8299)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct EnterWorldScRsp { + #[xor(8685)] + #[prost(int32, tag = "6")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct HallSceneInfo { + #[prost(message, repeated, tag = "1")] + pub scene_unit_list: ::prost::alloc::vec::Vec, + #[xor(11476)] + #[prost(uint32, tag = "1300")] + pub player_avatar_id: u32, + #[prost(string, tag = "185")] + pub transform_id: ::prost::alloc::string::String, + #[xor(8452)] + #[prost(uint32, tag = "75")] + pub day_of_week: u32, + #[xor(3553)] + #[prost(uint32, tag = "9")] + pub bgm_id: u32, + #[prost(message, optional, tag = "10")] + pub position: ::core::option::Option, + #[xor(2475)] + #[prost(uint32, tag = "15")] + pub time_of_day: u32, + #[xor(2840)] + #[prost(uint32, tag = "3")] + pub section_id: u32, + #[xor(12616)] + #[prost(uint32, tag = "1307")] + pub control_avatar_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1615)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetRamenDataScRsp { + #[prost(message, optional, tag = "14")] + pub ramen_data: ::core::option::Option, + #[xor(7981)] + #[prost(int32, tag = "15")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8851)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetWeaponDataScRsp { + #[xor(15765)] + #[prost(int32, tag = "4")] + pub retcode: i32, + #[prost(message, repeated, tag = "8")] + pub weapon_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct FightSettle { + #[prost(uint32, tag = "1")] + pub rank: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct VhsStoreData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7985)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetMiniscapeEntrustDataScRsp { + #[xor(2496)] + #[prost(int32, tag = "5")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6262)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetArcadeDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RallySceneInfo { + #[prost(message, optional, tag = "3")] + pub level_perform_info: ::core::option::Option, + #[prost(message, optional, tag = "10")] + pub cur_check_point: ::core::option::Option, + #[prost(message, optional, tag = "8")] + pub level_reward_info: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(3466)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetTrashbinHermitDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct DressEquipmentParam { + #[xor(14136)] + #[prost(uint32, tag = "9")] + pub equip_uid: u32, + #[xor(7158)] + #[prost(uint32, tag = "4")] + pub dress_index: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8033)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetVhsStoreDataScRsp { + #[xor(2722)] + #[prost(int32, tag = "5")] + pub retcode: i32, + #[prost(message, optional, tag = "13")] + pub data: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(903)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetActivityDataScRsp { + #[xor(2203)] + #[prost(int32, tag = "15")] + pub retcode: i32, + #[xor(3081)] + #[prost(int32, tag = "9")] + pub activity_type: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CafeSync { + #[prost(message, optional, tag = "8")] + pub cafe_data: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct QuestData { + #[prost(message, repeated, tag = "3")] + pub quest_collection_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct FightSceneInfo { + #[prost(enumeration = "Icddmmjcepd", tag = "12")] + pub perform_type: i32, + #[prost(message, optional, tag = "3")] + pub level_reward_info: ::core::option::Option, + #[prost(bool, tag = "8")] + pub end_hollow: bool, + #[prost(message, optional, tag = "9")] + pub level_perform_info: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SceneInfo { + #[xor(6598)] + #[prost(uint32, tag = "6")] + pub scene_type: u32, + #[xor(13212)] + #[prost(uint32, tag = "11")] + pub local_play_type: u32, + #[prost(message, optional, tag = "2")] + pub fresh_scene_info: ::core::option::Option, + #[prost(message, optional, tag = "9")] + pub hall_scene_info: ::core::option::Option, + #[prost(message, optional, tag = "13")] + pub rally_scene_info: ::core::option::Option, + #[xor(12925)] + #[prost(uint32, tag = "10")] + pub event_id: u32, + #[prost(message, optional, tag = "3")] + pub fight_scene_info: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1128)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetServerTimestampCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkbenchData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9797)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetRoleCardDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9329)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SavePlayerSystemSettingCsReq { + #[xor(8297)] + #[prost(uint32, tag = "8")] + pub r#type: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct UnlockData { + #[prost(int32, repeated, tag = "15")] + pub unlocked_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6384)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct PerformJumpCsReq { + #[xor(12728)] + #[prost(int64, tag = "3")] + pub perform_uid: i64, + #[xor(14335)] + #[prost(int32, tag = "7")] + pub perform_type: i32, + #[xor(781)] + #[prost(int32, tag = "10")] + pub perform_id: i32, + #[xor(12302)] + #[prost(int32, tag = "13")] + pub comic_index: i32, + #[xor(5344)] + #[prost(int32, tag = "15")] + pub furthest_chapter: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct QuestCondProgress { + #[prost(map = "string, message", tag = "1")] + pub public_variables: ::std::collections::HashMap< + ::prost::alloc::string::String, + PublicVariable, + >, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9012)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetQuestDataCsReq { + /// VMP DETECTED + /// + #[xor(4141)] + #[prost(uint32, tag = "1")] + pub quest_type: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9278)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetChatEmojiListCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct PostGirlItem { + #[xor(13004)] + #[prost(uint32, tag = "14")] + pub id: u32, + #[xor(5048)] + #[prost(int64, tag = "7")] + pub unlock_time: i64, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2326)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetQuestDataScRsp { + #[xor(1943)] + #[prost(uint32, tag = "4")] + pub quest_type: u32, + #[xor(10820)] + #[prost(int32, tag = "10")] + pub retcode: i32, + #[prost(message, optional, tag = "12")] + pub quest_data: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(558)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetHollowDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7852)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetMainCityRevivalDataScRsp { + #[prost(message, optional, tag = "1")] + pub main_city_revival_data: ::core::option::Option, + #[xor(10297)] + #[prost(int32, tag = "7")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1030)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PlayerSyncScNotify { + #[prost(message, optional, tag = "1")] + pub avatar_sync: ::core::option::Option, + #[prost(message, optional, tag = "3")] + pub cafe_sync: ::core::option::Option, + #[prost(message, optional, tag = "5")] + pub item_sync: ::core::option::Option, + #[prost(message, optional, tag = "6")] + pub ramen_sync: ::core::option::Option, + #[prost(message, optional, tag = "8")] + pub basic_info: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8331)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EnterSectionCsReq { + #[prost(string, tag = "5")] + pub transform_id: ::prost::alloc::string::String, + #[xor(12264)] + #[prost(uint32, tag = "6")] + pub tag: u32, + #[prost(enumeration = "EventGraphOwnerType", tag = "10")] + pub owner_type: i32, + #[xor(9501)] + #[prost(uint32, tag = "12")] + pub section_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5584)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EnterSceneScNotify { + #[prost(message, optional, tag = "5")] + pub dungeon_info: ::core::option::Option, + #[prost(message, optional, tag = "12")] + pub scene_info: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2270)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct AvatarPassiveSkillUnlockScRsp { + #[xor(14234)] + #[prost(int32, tag = "15")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4002)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetTrashbinHermitDataScRsp { + #[prost(message, optional, tag = "6")] + pub trashbin_hermit_data: ::core::option::Option, + #[xor(1859)] + #[prost(int32, tag = "13")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9626)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetWeaponDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1193)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct VideoGetInfoCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2241)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct VideoGetInfoScRsp { + /// VMP DETECTED + /// + #[prost(map = "uint32, uint64", tag = "11")] + pub video_key_map: ::std::collections::HashMap, + #[xor(2216)] + #[prost(int32, tag = "13")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5575)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct WeaponDressCsReq { + /// VMP DETECTED + /// + #[xor(6961)] + #[prost(uint32, tag = "9")] + pub avatar_id: u32, + #[xor(9241)] + #[prost(uint32, tag = "11")] + pub weapon_uid: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ArchiveData { + #[prost(message, repeated, tag = "9")] + pub videotaps_info: ::prost::alloc::vec::Vec, + #[prost(uint32, repeated, tag = "14")] + pub hollow_archive_id_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8987)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct EnterSectionCompleteCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1504)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PlayerLoginCsReq { + #[prost(string, tag = "9")] + pub resolution: ::prost::alloc::string::String, + #[xor(15075)] + #[prost(int32, tag = "14")] + pub language: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8095)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetFishingContestDataScRsp { + #[xor(13219)] + #[prost(int32, tag = "4")] + pub retcode: i32, + #[xor(8313)] + #[prost(uint32, tag = "1")] + pub level: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8410)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct KeepAliveNotify { + #[prost(bytes = "vec", tag = "7")] + pub data: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SceneUnitProtocolInfo { + #[xor(13474)] + #[prost(uint32, tag = "1")] + pub npc_id: u32, + #[prost(bool, tag = "4")] + pub is_interactable: bool, + #[prost(map = "uint32, message", tag = "11")] + pub interacts_info: ::std::collections::HashMap, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PublicVariable { + #[prost(uint32, tag = "1")] + pub r#type: u32, + #[prost(int64, tag = "3")] + pub var_int: i64, + #[prost(double, tag = "5")] + pub var_number: f64, + #[prost(string, tag = "6")] + pub var_str: ::prost::alloc::string::String, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9206)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct PlaySongCsReq { + #[xor(16373)] + #[prost(uint32, tag = "12")] + pub group_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5158)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct WorkbenchGetDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AvatarSync { + #[prost(message, repeated, tag = "9")] + pub avatar_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6109)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RunEventGraphCsReq { + #[xor(3423)] + #[prost(uint32, tag = "11")] + pub section_id: u32, + #[xor(851)] + #[prost(uint32, tag = "15")] + pub tag: u32, + #[xor(6548)] + #[prost(uint32, tag = "10")] + pub event_graph_uid: u32, + #[prost(enumeration = "EventGraphOwnerType", tag = "5")] + pub owner_type: i32, + #[xor(6438)] + #[prost(uint32, tag = "7")] + pub owner_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8663)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetMonthCardRewardListCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(15)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct RefreshSectionScRsp { + #[xor(12566)] + #[prost(int32, tag = "13")] + pub retcode: i32, + #[xor(14623)] + #[prost(uint32, tag = "8")] + pub refresh_status: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4432)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetBattleEventInfoScRsp { + #[prost(message, optional, tag = "6")] + pub event_info: ::core::option::Option, + #[xor(4330)] + #[prost(int32, tag = "13")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6663)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetWishlistDataScRsp { + #[xor(9090)] + #[prost(int32, tag = "5")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MainCityRevivalData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(721)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct LeaveCurSceneCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1963)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct UpdateEventGraphScNotify { + /// VMP DETECTED + /// + #[prost(enumeration = "EventGraphOwnerType", tag = "1")] + pub owner_type: i32, + #[prost(bool, tag = "2")] + pub is_event_success: bool, + #[xor(16291)] + #[prost(uint32, tag = "9")] + pub tag: u32, + #[xor(13866)] + #[prost(uint32, tag = "11")] + pub event_graph_owner_uid: u32, + #[prost(string, tag = "14")] + pub npc_interaction: ::prost::alloc::string::String, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ShoppingMallInfo {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6996)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetShoppingMallInfoCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CafeData { + #[prost(int32, repeated, tag = "10")] + pub unk_cafe_list: ::prost::alloc::vec::Vec, + #[xor(10710)] + #[prost(int32, tag = "9")] + pub cur_cafe_item: i32, + #[prost(int32, repeated, tag = "5")] + pub cafe_item_list: ::prost::alloc::vec::Vec, + #[xor(4809)] + #[prost(int32, tag = "11")] + pub today_drink_times: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6839)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetPlayerBasicInfoCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5604)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct DrinkCafeCsReq { + #[xor(12830)] + #[prost(int32, tag = "2")] + pub cafe_item_id: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(3828)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct SetMusicPlayerModeCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2009)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct EndNewbieCsReq { + #[xor(12888)] + #[prost(uint32, tag = "5")] + pub group_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Equip { + #[xor(8976)] + #[prost(uint32, tag = "7")] + pub exp: u32, + #[xor(12721)] + #[prost(uint32, tag = "1")] + pub star: u32, + #[prost(message, repeated, tag = "14")] + pub propertys: ::prost::alloc::vec::Vec, + #[xor(4575)] + #[prost(uint32, tag = "5")] + pub uid: u32, + #[xor(3106)] + #[prost(uint32, tag = "9")] + pub level: u32, + #[xor(4920)] + #[prost(uint32, tag = "2")] + pub id: u32, + #[prost(bool, tag = "10")] + pub lock: bool, + #[prost(message, repeated, tag = "13")] + pub sub_propertys: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4703)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct TriggerInteractCsReq { + #[xor(12234)] + #[prost(int32, tag = "5")] + pub interact_id: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct JourneyData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6418)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetFairyDataScRsp { + #[xor(15786)] + #[prost(int32, tag = "7")] + pub retcode: i32, + #[prost(message, optional, tag = "15")] + pub data: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4588)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetActivityDataCsReq { + #[xor(13968)] + #[prost(int32, tag = "10")] + pub activity_type: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RoleCardData { + #[prost(string, tag = "11")] + pub signature: ::prost::alloc::string::String, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5668)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetPlayerBasicInfoScRsp { + #[prost(message, optional, tag = "2")] + pub basic_info: ::core::option::Option, + #[xor(16164)] + #[prost(int32, tag = "3")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8930)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct RechargeGetItemListCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AbyssGroup { + #[xor(12303)] + #[prost(uint32, tag = "12")] + pub group: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(3880)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AbyssGetDataScRsp { + /// VMP DETECTED + /// + #[xor(12569)] + #[prost(int32, tag = "6")] + pub retcode: i32, + #[prost(message, optional, tag = "11")] + pub abyss_data: ::core::option::Option, + #[prost(message, repeated, tag = "12")] + pub abyss_group_list: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag = "15")] + pub abyss_dungeon_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct QuestInfo { + #[xor(11871)] + #[prost(uint32, tag = "4")] + pub id: u32, + #[xor(15047)] + #[prost(int64, tag = "11")] + pub unlock_time: i64, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5722)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SyncEventInfoScNotify { + #[xor(15731)] + #[prost(uint32, tag = "3")] + pub section_id: u32, + #[xor(1470)] + #[prost(uint32, tag = "7")] + pub tag: u32, + #[xor(10000)] + #[prost(uint32, tag = "9")] + pub event_graph_uid: u32, + #[prost(enumeration = "EventGraphOwnerType", tag = "8")] + pub owner_type: i32, + #[prost(string, tag = "859")] + pub npc_interaction: ::prost::alloc::string::String, + #[xor(15638)] + #[prost(uint32, tag = "1")] + pub owner_id: u32, + #[prost(message, repeated, tag = "10")] + pub action_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1241)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetRewardBuffDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1771)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetPlayerDisplayDataCsReq { + #[xor(12267)] + #[prost(uint32, tag = "9")] + pub tag: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(3863)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetRoleCardDataScRsp { + #[xor(8458)] + #[prost(int32, tag = "2")] + pub retcode: i32, + #[prost(message, optional, tag = "11")] + pub role_card_data: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AbyssDungeon { + #[xor(3904)] + #[prost(uint32, tag = "2")] + pub quest_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6806)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct StartHollowQuestCsReq { + /// VMP DETECTED + /// + #[prost(bool, tag = "1")] + pub is_story: bool, + #[prost(uint32, repeated, tag = "4")] + pub avatar_id_list: ::prost::alloc::vec::Vec, + #[xor(14899)] + #[prost(uint32, tag = "9")] + pub quest_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5710)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetRidusGotBooDataScRsp { + #[xor(5371)] + #[prost(int32, tag = "4")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1726)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct FinishArchivePerformScRsp { + #[xor(15997)] + #[prost(int32, tag = "10")] + pub retcode: i32, + #[xor(9683)] + #[prost(uint32, tag = "15")] + pub sub_id: u32, + #[xor(8210)] + #[prost(uint32, tag = "5")] + pub quest_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(1590)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct SceneTransitionCsReq { + #[xor(12663)] + #[prost(uint32, tag = "2")] + pub section_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CampIdleData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9852)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct EatRamenScRsp { + #[xor(6902)] + #[prost(int32, tag = "8")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct Weapon { + #[prost(bool, tag = "15")] + pub lock: bool, + #[xor(15983)] + #[prost(uint32, tag = "14")] + pub uid: u32, + #[xor(13646)] + #[prost(uint32, tag = "13")] + pub refine_level: u32, + #[xor(9962)] + #[prost(uint32, tag = "6")] + pub id: u32, + #[xor(11776)] + #[prost(uint32, tag = "2")] + pub exp: u32, + #[xor(265)] + #[prost(uint32, tag = "7")] + pub star: u32, + #[xor(3214)] + #[prost(uint32, tag = "10")] + pub level: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2212)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetExplorationDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2356)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct StartHollowQuestScRsp { + /// VMP DETECTED + /// + #[xor(15601)] + #[prost(uint32, tag = "4")] + pub quest_id: u32, + #[xor(5386)] + #[prost(int32, tag = "8")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AbyssData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(7227)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetAbyssRewardDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct DressedEquip { + #[xor(15943)] + #[prost(uint32, tag = "4")] + pub equip_uid: u32, + #[xor(15951)] + #[prost(uint32, tag = "3")] + pub index: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct RewardBuff {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct FashionStoreData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6137)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct RefreshSectionCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PostGirlData { + #[prost(message, repeated, tag = "1")] + pub post_girl_item_list: ::prost::alloc::vec::Vec, + #[prost(uint32, repeated, tag = "15")] + pub selected_post_girl_id_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(2399)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetNewsStandDataScRsp { + #[xor(5193)] + #[prost(int32, tag = "3")] + pub retcode: i32, + #[prost(message, optional, tag = "8")] + pub news_stand_data: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(814)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct WeaponUnDressCsReq { + #[xor(8630)] + #[prost(uint32, tag = "12")] + pub avatar_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct VideotapeInfo { + #[prost(bool, tag = "5")] + pub finished: bool, + #[xor(11367)] + #[prost(uint32, tag = "12")] + pub archive_file_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct FairyData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(9735)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PlayerGetTokenCsReq { + #[xor(10171)] + #[prost(uint32, tag = "1")] + pub uid: u32, + #[prost(string, tag = "5")] + pub token: ::prost::alloc::string::String, + #[xor(4806)] + #[prost(uint32, tag = "7")] + pub platform: u32, + #[xor(80)] + #[prost(uint32, tag = "8")] + pub rsa_ver: u32, + #[prost(string, tag = "9")] + pub device: ::prost::alloc::string::String, + #[prost(string, tag = "13")] + pub client_rand_key: ::prost::alloc::string::String, + #[prost(string, tag = "14")] + pub account_uid: ::prost::alloc::string::String, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct PacketHead { + #[prost(uint32, tag = "1")] + pub packet_id: u32, + #[prost(uint32, tag = "11")] + pub request_id: u32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(131)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetEquipDataCsReq {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(6255)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct GetMainCityRevivalDataCsReq { + #[xor(9210)] + #[prost(int32, tag = "6")] + pub land_id: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct InteractInfo { + #[prost(map = "uint32, string", tag = "2")] + pub participators: ::std::collections::HashMap, + #[prost(enumeration = "InteractTarget", repeated, tag = "7")] + pub interact_target_list: ::prost::alloc::vec::Vec, + #[prost(string, tag = "6")] + pub name: ::prost::alloc::string::String, + #[prost(double, tag = "9")] + pub scale_y: f64, + #[prost(double, tag = "1")] + pub scale_x: f64, + #[prost(double, tag = "4")] + pub scale_w: f64, + #[prost(double, tag = "11")] + pub scale_r: f64, + #[xor(7741)] + #[prost(int32, tag = "15")] + pub tag_id: i32, + #[prost(double, tag = "13")] + pub scale_z: f64, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(8388)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BeginArchiveBattleQuestCsReq { + #[xor(4136)] + #[prost(uint32, tag = "9")] + pub quest_id: u32, + #[xor(5782)] + #[prost(uint32, tag = "10")] + pub buddy_id: u32, + #[prost(bool, tag = "11")] + pub is_story: bool, + #[prost(uint32, repeated, tag = "15")] + pub avatar_id_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5019)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetPlayerDisplayDataScRsp { + #[xor(151)] + #[prost(int32, tag = "7")] + pub retcode: i32, + #[prost(message, optional, tag = "15")] + pub player_display_data: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4055)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WorkbenchGetDataScRsp { + #[prost(message, optional, tag = "3")] + pub workbench_data: ::core::option::Option, + #[xor(15613)] + #[prost(int32, tag = "13")] + pub retcode: i32, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AbyssRewardData {} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(4894)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetBuddyDataScRsp { + #[xor(5417)] + #[prost(int32, tag = "13")] + pub retcode: i32, + #[prost(message, repeated, tag = "12")] + pub buddy_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct HollowCheckPoint { + #[prost(message, optional, tag = "4")] + pub quest_cond_progress: ::core::option::Option, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5724)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct HollowDataRefreshCsReq { + #[prost(uint32, repeated, tag = "2")] + pub hollow_group_list: ::prost::alloc::vec::Vec, + #[prost(uint32, repeated, tag = "10")] + pub unlock_hollow_id_list: ::prost::alloc::vec::Vec, +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kngkckfbmed { + Kjojjkidkei = 0, +} +impl Kngkckfbmed { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kjojjkidkei => "KNGKCKFBMED_KJOJJKIDKEI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KNGKCKFBMED_KJOJJKIDKEI" => Some(Self::Kjojjkidkei), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ehabdpnehcd { + ModifyTimeSegmentTypeNone = 0, + ModifyTimeSegmentTypeModify = 1, + ModifyTimeSegmentTypeSave = 2, + ModifyTimeSegmentTypeReset = 4, + ModifyTimeSegmentTypeApply = 5, +} +impl Ehabdpnehcd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ModifyTimeSegmentTypeNone => { + "EHABDPNEHCD_MODIFY_TIME_SEGMENT_TYPE_NONE" + } + Self::ModifyTimeSegmentTypeModify => { + "EHABDPNEHCD_MODIFY_TIME_SEGMENT_TYPE_MODIFY" + } + Self::ModifyTimeSegmentTypeSave => { + "EHABDPNEHCD_MODIFY_TIME_SEGMENT_TYPE_SAVE" + } + Self::ModifyTimeSegmentTypeReset => { + "EHABDPNEHCD_MODIFY_TIME_SEGMENT_TYPE_RESET" + } + Self::ModifyTimeSegmentTypeApply => { + "EHABDPNEHCD_MODIFY_TIME_SEGMENT_TYPE_APPLY" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EHABDPNEHCD_MODIFY_TIME_SEGMENT_TYPE_NONE" => { + Some(Self::ModifyTimeSegmentTypeNone) + } + "EHABDPNEHCD_MODIFY_TIME_SEGMENT_TYPE_MODIFY" => { + Some(Self::ModifyTimeSegmentTypeModify) + } + "EHABDPNEHCD_MODIFY_TIME_SEGMENT_TYPE_SAVE" => { + Some(Self::ModifyTimeSegmentTypeSave) + } + "EHABDPNEHCD_MODIFY_TIME_SEGMENT_TYPE_RESET" => { + Some(Self::ModifyTimeSegmentTypeReset) + } + "EHABDPNEHCD_MODIFY_TIME_SEGMENT_TYPE_APPLY" => { + Some(Self::ModifyTimeSegmentTypeApply) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Faljkeldaca { + ActivityBubbleTypeNone = 0, + ActivityBubbleTypeMaincity = 2, + ActivityBubbleTypeSpecial = 3, +} +impl Faljkeldaca { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ActivityBubbleTypeNone => "FALJKELDACA_ACTIVITY_BUBBLE_TYPE_NONE", + Self::ActivityBubbleTypeMaincity => { + "FALJKELDACA_ACTIVITY_BUBBLE_TYPE_MAINCITY" + } + Self::ActivityBubbleTypeSpecial => "FALJKELDACA_ACTIVITY_BUBBLE_TYPE_SPECIAL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FALJKELDACA_ACTIVITY_BUBBLE_TYPE_NONE" => Some(Self::ActivityBubbleTypeNone), + "FALJKELDACA_ACTIVITY_BUBBLE_TYPE_MAINCITY" => { + Some(Self::ActivityBubbleTypeMaincity) + } + "FALJKELDACA_ACTIVITY_BUBBLE_TYPE_SPECIAL" => { + Some(Self::ActivityBubbleTypeSpecial) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kanijnpopja { + Dklpekkbagi = 0, + Mbfhifakkne = 1, + Ifcnncchjfk = 2, + Ndmbmdhlcdb = 3, + Fffoehilion = 4, +} +impl Kanijnpopja { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dklpekkbagi => "KANIJNPOPJA_DKLPEKKBAGI", + Self::Mbfhifakkne => "KANIJNPOPJA_MBFHIFAKKNE", + Self::Ifcnncchjfk => "KANIJNPOPJA_IFCNNCCHJFK", + Self::Ndmbmdhlcdb => "KANIJNPOPJA_NDMBMDHLCDB", + Self::Fffoehilion => "KANIJNPOPJA_FFFOEHILION", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KANIJNPOPJA_DKLPEKKBAGI" => Some(Self::Dklpekkbagi), + "KANIJNPOPJA_MBFHIFAKKNE" => Some(Self::Mbfhifakkne), + "KANIJNPOPJA_IFCNNCCHJFK" => Some(Self::Ifcnncchjfk), + "KANIJNPOPJA_NDMBMDHLCDB" => Some(Self::Ndmbmdhlcdb), + "KANIJNPOPJA_FFFOEHILION" => Some(Self::Fffoehilion), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ikgdjaddmoe { + ShowMaskAuto = 0, + ShowMaskTrue = 1, + ShowMaskFalse = 2, +} +impl Ikgdjaddmoe { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ShowMaskAuto => "IKGDJADDMOE_SHOW_MASK_AUTO", + Self::ShowMaskTrue => "IKGDJADDMOE_SHOW_MASK_TRUE", + Self::ShowMaskFalse => "IKGDJADDMOE_SHOW_MASK_FALSE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IKGDJADDMOE_SHOW_MASK_AUTO" => Some(Self::ShowMaskAuto), + "IKGDJADDMOE_SHOW_MASK_TRUE" => Some(Self::ShowMaskTrue), + "IKGDJADDMOE_SHOW_MASK_FALSE" => Some(Self::ShowMaskFalse), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Klijefjgolk { + Kmebfikoheg = 0, + Jhonddgfnhh = 1, +} +impl Klijefjgolk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kmebfikoheg => "KLIJEFJGOLK_KMEBFIKOHEG", + Self::Jhonddgfnhh => "KLIJEFJGOLK_JHONDDGFNHH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KLIJEFJGOLK_KMEBFIKOHEG" => Some(Self::Kmebfikoheg), + "KLIJEFJGOLK_JHONDDGFNHH" => Some(Self::Jhonddgfnhh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mekmpbchaep { + Dhbjbaeicpl = 0, + Hcklpemdlnp = 1, + Okcmlpklcbg = 2, +} +impl Mekmpbchaep { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dhbjbaeicpl => "MEKMPBCHAEP_DHBJBAEICPL", + Self::Hcklpemdlnp => "MEKMPBCHAEP_HCKLPEMDLNP", + Self::Okcmlpklcbg => "MEKMPBCHAEP_OKCMLPKLCBG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MEKMPBCHAEP_DHBJBAEICPL" => Some(Self::Dhbjbaeicpl), + "MEKMPBCHAEP_HCKLPEMDLNP" => Some(Self::Hcklpemdlnp), + "MEKMPBCHAEP_OKCMLPKLCBG" => Some(Self::Okcmlpklcbg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ghfemjfohjf { + Glndejkidcb = 0, +} +impl Ghfemjfohjf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Glndejkidcb => "GHFEMJFOHJF_GLNDEJKIDCB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GHFEMJFOHJF_GLNDEJKIDCB" => Some(Self::Glndejkidcb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fabcoenlcnb { + Fhcodickamk = 0, + Bdnkfgaaegn = 1, + Pojklokppbn = 2, +} +impl Fabcoenlcnb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fhcodickamk => "FABCOENLCNB_FHCODICKAMK", + Self::Bdnkfgaaegn => "FABCOENLCNB_BDNKFGAAEGN", + Self::Pojklokppbn => "FABCOENLCNB_POJKLOKPPBN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FABCOENLCNB_FHCODICKAMK" => Some(Self::Fhcodickamk), + "FABCOENLCNB_BDNKFGAAEGN" => Some(Self::Bdnkfgaaegn), + "FABCOENLCNB_POJKLOKPPBN" => Some(Self::Pojklokppbn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Omhilepnhae { + Goeegbkiaej = 0, + Iapemamoodc = 1, + Knmkcindcac = 2, + Iihcbodnpml = 3, + Gjachjicpdc = 4, +} +impl Omhilepnhae { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Goeegbkiaej => "OMHILEPNHAE_GOEEGBKIAEJ", + Self::Iapemamoodc => "OMHILEPNHAE_IAPEMAMOODC", + Self::Knmkcindcac => "OMHILEPNHAE_KNMKCINDCAC", + Self::Iihcbodnpml => "OMHILEPNHAE_IIHCBODNPML", + Self::Gjachjicpdc => "OMHILEPNHAE_GJACHJICPDC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OMHILEPNHAE_GOEEGBKIAEJ" => Some(Self::Goeegbkiaej), + "OMHILEPNHAE_IAPEMAMOODC" => Some(Self::Iapemamoodc), + "OMHILEPNHAE_KNMKCINDCAC" => Some(Self::Knmkcindcac), + "OMHILEPNHAE_IIHCBODNPML" => Some(Self::Iihcbodnpml), + "OMHILEPNHAE_GJACHJICPDC" => Some(Self::Gjachjicpdc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kmgfbibmiji { + HollowDialogStateNone = 0, + HollowDialogStateOpen = 1, + HollowDialogStateClose = 2, +} +impl Kmgfbibmiji { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowDialogStateNone => "KMGFBIBMIJI_HOLLOW_DIALOG_STATE_NONE", + Self::HollowDialogStateOpen => "KMGFBIBMIJI_HOLLOW_DIALOG_STATE_OPEN", + Self::HollowDialogStateClose => "KMGFBIBMIJI_HOLLOW_DIALOG_STATE_CLOSE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KMGFBIBMIJI_HOLLOW_DIALOG_STATE_NONE" => Some(Self::HollowDialogStateNone), + "KMGFBIBMIJI_HOLLOW_DIALOG_STATE_OPEN" => Some(Self::HollowDialogStateOpen), + "KMGFBIBMIJI_HOLLOW_DIALOG_STATE_CLOSE" => Some(Self::HollowDialogStateClose), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Opmjbpbmidl { + VhsFlowBuffNone = 0, + VhsFlowBuffPercent = 1, + VhsFlowBuffValue = 2, +} +impl Opmjbpbmidl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::VhsFlowBuffNone => "OPMJBPBMIDL_VHS_FLOW_BUFF_NONE", + Self::VhsFlowBuffPercent => "OPMJBPBMIDL_VHS_FLOW_BUFF_PERCENT", + Self::VhsFlowBuffValue => "OPMJBPBMIDL_VHS_FLOW_BUFF_VALUE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OPMJBPBMIDL_VHS_FLOW_BUFF_NONE" => Some(Self::VhsFlowBuffNone), + "OPMJBPBMIDL_VHS_FLOW_BUFF_PERCENT" => Some(Self::VhsFlowBuffPercent), + "OPMJBPBMIDL_VHS_FLOW_BUFF_VALUE" => Some(Self::VhsFlowBuffValue), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum ChessUiColor { + ChessUiColorNone = 0, + ChessUiColorWhite = 1, + ChessUiColorRed = 2, + ChessUiColorGrey = 3, +} +impl ChessUiColor { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ChessUiColorNone => "ChessUIColor_CHESS_UI_COLOR_NONE", + Self::ChessUiColorWhite => "ChessUIColor_CHESS_UI_COLOR_WHITE", + Self::ChessUiColorRed => "ChessUIColor_CHESS_UI_COLOR_RED", + Self::ChessUiColorGrey => "ChessUIColor_CHESS_UI_COLOR_GREY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ChessUIColor_CHESS_UI_COLOR_NONE" => Some(Self::ChessUiColorNone), + "ChessUIColor_CHESS_UI_COLOR_WHITE" => Some(Self::ChessUiColorWhite), + "ChessUIColor_CHESS_UI_COLOR_RED" => Some(Self::ChessUiColorRed), + "ChessUIColor_CHESS_UI_COLOR_GREY" => Some(Self::ChessUiColorGrey), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bhcehpckklf { + ConwayLifeGameLifeStateNone = 0, + ConwayLifeGameLifeStateLive = 1, + ConwayLifeGameLifeStateDie = 2, +} +impl Bhcehpckklf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ConwayLifeGameLifeStateNone => { + "BHCEHPCKKLF_CONWAY_LIFE_GAME_LIFE_STATE_NONE" + } + Self::ConwayLifeGameLifeStateLive => { + "BHCEHPCKKLF_CONWAY_LIFE_GAME_LIFE_STATE_LIVE" + } + Self::ConwayLifeGameLifeStateDie => { + "BHCEHPCKKLF_CONWAY_LIFE_GAME_LIFE_STATE_DIE" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BHCEHPCKKLF_CONWAY_LIFE_GAME_LIFE_STATE_NONE" => { + Some(Self::ConwayLifeGameLifeStateNone) + } + "BHCEHPCKKLF_CONWAY_LIFE_GAME_LIFE_STATE_LIVE" => { + Some(Self::ConwayLifeGameLifeStateLive) + } + "BHCEHPCKKLF_CONWAY_LIFE_GAME_LIFE_STATE_DIE" => { + Some(Self::ConwayLifeGameLifeStateDie) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Afamojagdcf { + HollowSearchNpcTypeNone = 0, + HollowSearchNpcTypeByPos = 1, + HollowSearchNpcTypeByBound = 2, + HollowSearchNpcTypeByIndex = 4, +} +impl Afamojagdcf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowSearchNpcTypeNone => "AFAMOJAGDCF_HOLLOW_SEARCH_NPC_TYPE_NONE", + Self::HollowSearchNpcTypeByPos => "AFAMOJAGDCF_HOLLOW_SEARCH_NPC_TYPE_BY_POS", + Self::HollowSearchNpcTypeByBound => { + "AFAMOJAGDCF_HOLLOW_SEARCH_NPC_TYPE_BY_BOUND" + } + Self::HollowSearchNpcTypeByIndex => { + "AFAMOJAGDCF_HOLLOW_SEARCH_NPC_TYPE_BY_INDEX" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AFAMOJAGDCF_HOLLOW_SEARCH_NPC_TYPE_NONE" => { + Some(Self::HollowSearchNpcTypeNone) + } + "AFAMOJAGDCF_HOLLOW_SEARCH_NPC_TYPE_BY_POS" => { + Some(Self::HollowSearchNpcTypeByPos) + } + "AFAMOJAGDCF_HOLLOW_SEARCH_NPC_TYPE_BY_BOUND" => { + Some(Self::HollowSearchNpcTypeByBound) + } + "AFAMOJAGDCF_HOLLOW_SEARCH_NPC_TYPE_BY_INDEX" => { + Some(Self::HollowSearchNpcTypeByIndex) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum AimRectColor { + AimRectColorNone = 0, + AimRectColorGreen = 1, + AimRectColorRed = 2, +} +impl AimRectColor { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::AimRectColorNone => "AimRectColor_AIM_RECT_COLOR_NONE", + Self::AimRectColorGreen => "AimRectColor_AIM_RECT_COLOR_GREEN", + Self::AimRectColorRed => "AimRectColor_AIM_RECT_COLOR_RED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AimRectColor_AIM_RECT_COLOR_NONE" => Some(Self::AimRectColorNone), + "AimRectColor_AIM_RECT_COLOR_GREEN" => Some(Self::AimRectColorGreen), + "AimRectColor_AIM_RECT_COLOR_RED" => Some(Self::AimRectColorRed), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nhjmjndeake { + HollowDestoryNpcTypeNone = 0, + HollowDestoryNpcTypeByPos = 1, + HollowDestoryNpcTypeByNpcUid = 2, +} +impl Nhjmjndeake { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowDestoryNpcTypeNone => "NHJMJNDEAKE_HOLLOW_DESTORY_NPC_TYPE_NONE", + Self::HollowDestoryNpcTypeByPos => { + "NHJMJNDEAKE_HOLLOW_DESTORY_NPC_TYPE_BY_POS" + } + Self::HollowDestoryNpcTypeByNpcUid => { + "NHJMJNDEAKE_HOLLOW_DESTORY_NPC_TYPE_BY_NPC_UID" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NHJMJNDEAKE_HOLLOW_DESTORY_NPC_TYPE_NONE" => { + Some(Self::HollowDestoryNpcTypeNone) + } + "NHJMJNDEAKE_HOLLOW_DESTORY_NPC_TYPE_BY_POS" => { + Some(Self::HollowDestoryNpcTypeByPos) + } + "NHJMJNDEAKE_HOLLOW_DESTORY_NPC_TYPE_BY_NPC_UID" => { + Some(Self::HollowDestoryNpcTypeByNpcUid) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cfnkclfndji { + Lnfimajlpeh = 0, +} +impl Cfnkclfndji { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lnfimajlpeh => "CFNKCLFNDJI_LNFIMAJLPEH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CFNKCLFNDJI_LNFIMAJLPEH" => Some(Self::Lnfimajlpeh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dgngdbnbhfb { + Gofjnmpfapa = 0, + Dlknkmdkbei = 1, +} +impl Dgngdbnbhfb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gofjnmpfapa => "DGNGDBNBHFB_GOFJNMPFAPA", + Self::Dlknkmdkbei => "DGNGDBNBHFB_DLKNKMDKBEI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DGNGDBNBHFB_GOFJNMPFAPA" => Some(Self::Gofjnmpfapa), + "DGNGDBNBHFB_DLKNKMDKBEI" => Some(Self::Dlknkmdkbei), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nmaofeafagh { + Aeplbinbgfg = 0, + Epcoadhgldk = 1, + Ieadcfmegdo = 2, + Mndinlhnfap = 3, + Cfokbcnaocn = 4, + Kgelibpbllo = 5, + Hjlmjkcncfo = 6, + Kdffbkdagfi = 7, +} +impl Nmaofeafagh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Aeplbinbgfg => "NMAOFEAFAGH_AEPLBINBGFG", + Self::Epcoadhgldk => "NMAOFEAFAGH_EPCOADHGLDK", + Self::Ieadcfmegdo => "NMAOFEAFAGH_IEADCFMEGDO", + Self::Mndinlhnfap => "NMAOFEAFAGH_MNDINLHNFAP", + Self::Cfokbcnaocn => "NMAOFEAFAGH_CFOKBCNAOCN", + Self::Kgelibpbllo => "NMAOFEAFAGH_KGELIBPBLLO", + Self::Hjlmjkcncfo => "NMAOFEAFAGH_HJLMJKCNCFO", + Self::Kdffbkdagfi => "NMAOFEAFAGH_KDFFBKDAGFI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NMAOFEAFAGH_AEPLBINBGFG" => Some(Self::Aeplbinbgfg), + "NMAOFEAFAGH_EPCOADHGLDK" => Some(Self::Epcoadhgldk), + "NMAOFEAFAGH_IEADCFMEGDO" => Some(Self::Ieadcfmegdo), + "NMAOFEAFAGH_MNDINLHNFAP" => Some(Self::Mndinlhnfap), + "NMAOFEAFAGH_CFOKBCNAOCN" => Some(Self::Cfokbcnaocn), + "NMAOFEAFAGH_KGELIBPBLLO" => Some(Self::Kgelibpbllo), + "NMAOFEAFAGH_HJLMJKCNCFO" => Some(Self::Hjlmjkcncfo), + "NMAOFEAFAGH_KDFFBKDAGFI" => Some(Self::Kdffbkdagfi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dnhklpcinai { + Aoopgdajikf = 0, + Opfbhhnfekf = 1, + Ajeokgpmkfi = 2, + Knfnbndgkdj = 3, +} +impl Dnhklpcinai { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Aoopgdajikf => "DNHKLPCINAI_AOOPGDAJIKF", + Self::Opfbhhnfekf => "DNHKLPCINAI_OPFBHHNFEKF", + Self::Ajeokgpmkfi => "DNHKLPCINAI_AJEOKGPMKFI", + Self::Knfnbndgkdj => "DNHKLPCINAI_KNFNBNDGKDJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DNHKLPCINAI_AOOPGDAJIKF" => Some(Self::Aoopgdajikf), + "DNHKLPCINAI_OPFBHHNFEKF" => Some(Self::Opfbhhnfekf), + "DNHKLPCINAI_AJEOKGPMKFI" => Some(Self::Ajeokgpmkfi), + "DNHKLPCINAI_KNFNBNDGKDJ" => Some(Self::Knfnbndgkdj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kkhohflgomm { + Mieoflpcalo = 0, +} +impl Kkhohflgomm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mieoflpcalo => "KKHOHFLGOMM_MIEOFLPCALO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KKHOHFLGOMM_MIEOFLPCALO" => Some(Self::Mieoflpcalo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kbpofdiimei { + CharacterModeBySlot = 0, + CharacterModeByRobotId = 1, + CharacterModeByAvatarId = 2, +} +impl Kbpofdiimei { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::CharacterModeBySlot => "KBPOFDIIMEI_CHARACTER_MODE_BY_SLOT", + Self::CharacterModeByRobotId => "KBPOFDIIMEI_CHARACTER_MODE_BY_ROBOT_ID", + Self::CharacterModeByAvatarId => "KBPOFDIIMEI_CHARACTER_MODE_BY_AVATAR_ID", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KBPOFDIIMEI_CHARACTER_MODE_BY_SLOT" => Some(Self::CharacterModeBySlot), + "KBPOFDIIMEI_CHARACTER_MODE_BY_ROBOT_ID" => { + Some(Self::CharacterModeByRobotId) + } + "KBPOFDIIMEI_CHARACTER_MODE_BY_AVATAR_ID" => { + Some(Self::CharacterModeByAvatarId) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mnideglcljk { + Ljloeoidapk = 0, + Bfnmcdakgia = 1, + Kohjgamlmpi = 2, + Nohjindanpa = 3, + Dkmbmmhobil = 4, +} +impl Mnideglcljk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ljloeoidapk => "MNIDEGLCLJK_LJLOEOIDAPK", + Self::Bfnmcdakgia => "MNIDEGLCLJK_BFNMCDAKGIA", + Self::Kohjgamlmpi => "MNIDEGLCLJK_KOHJGAMLMPI", + Self::Nohjindanpa => "MNIDEGLCLJK_NOHJINDANPA", + Self::Dkmbmmhobil => "MNIDEGLCLJK_DKMBMMHOBIL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MNIDEGLCLJK_LJLOEOIDAPK" => Some(Self::Ljloeoidapk), + "MNIDEGLCLJK_BFNMCDAKGIA" => Some(Self::Bfnmcdakgia), + "MNIDEGLCLJK_KOHJGAMLMPI" => Some(Self::Kohjgamlmpi), + "MNIDEGLCLJK_NOHJINDANPA" => Some(Self::Nohjindanpa), + "MNIDEGLCLJK_DKMBMMHOBIL" => Some(Self::Dkmbmmhobil), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dhohjfnfnca { + Pilboknehge = 0, + Nljbgaaghmn = 1, + Nnkjmnabcdm = 2, + Clakkpidoca = 3, + Dbdellcjaim = 4, + Plcdeineofk = 5, + Kaedcglickh = 6, +} +impl Dhohjfnfnca { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pilboknehge => "DHOHJFNFNCA_PILBOKNEHGE", + Self::Nljbgaaghmn => "DHOHJFNFNCA_NLJBGAAGHMN", + Self::Nnkjmnabcdm => "DHOHJFNFNCA_NNKJMNABCDM", + Self::Clakkpidoca => "DHOHJFNFNCA_CLAKKPIDOCA", + Self::Dbdellcjaim => "DHOHJFNFNCA_DBDELLCJAIM", + Self::Plcdeineofk => "DHOHJFNFNCA_PLCDEINEOFK", + Self::Kaedcglickh => "DHOHJFNFNCA_KAEDCGLICKH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DHOHJFNFNCA_PILBOKNEHGE" => Some(Self::Pilboknehge), + "DHOHJFNFNCA_NLJBGAAGHMN" => Some(Self::Nljbgaaghmn), + "DHOHJFNFNCA_NNKJMNABCDM" => Some(Self::Nnkjmnabcdm), + "DHOHJFNFNCA_CLAKKPIDOCA" => Some(Self::Clakkpidoca), + "DHOHJFNFNCA_DBDELLCJAIM" => Some(Self::Dbdellcjaim), + "DHOHJFNFNCA_PLCDEINEOFK" => Some(Self::Plcdeineofk), + "DHOHJFNFNCA_KAEDCGLICKH" => Some(Self::Kaedcglickh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ofhdfhmfloj { + Ehppndhhcbk = 0, + Mjhhpmcjcjn = 1, + Ojejbkpojcc = 2, + Bflegmlkojo = 3, +} +impl Ofhdfhmfloj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ehppndhhcbk => "OFHDFHMFLOJ_EHPPNDHHCBK", + Self::Mjhhpmcjcjn => "OFHDFHMFLOJ_MJHHPMCJCJN", + Self::Ojejbkpojcc => "OFHDFHMFLOJ_OJEJBKPOJCC", + Self::Bflegmlkojo => "OFHDFHMFLOJ_BFLEGMLKOJO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OFHDFHMFLOJ_EHPPNDHHCBK" => Some(Self::Ehppndhhcbk), + "OFHDFHMFLOJ_MJHHPMCJCJN" => Some(Self::Mjhhpmcjcjn), + "OFHDFHMFLOJ_OJEJBKPOJCC" => Some(Self::Ojejbkpojcc), + "OFHDFHMFLOJ_BFLEGMLKOJO" => Some(Self::Bflegmlkojo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bnddmpjmmbf { + ServerAbility = 0, + ClientAbility = 1, +} +impl Bnddmpjmmbf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ServerAbility => "BNDDMPJMMBF_SERVER_ABILITY", + Self::ClientAbility => "BNDDMPJMMBF_CLIENT_ABILITY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BNDDMPJMMBF_SERVER_ABILITY" => Some(Self::ServerAbility), + "BNDDMPJMMBF_CLIENT_ABILITY" => Some(Self::ClientAbility), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mmilelohfbl { + Pchdlbolpfp = 0, +} +impl Mmilelohfbl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pchdlbolpfp => "MMILELOHFBL_PCHDLBOLPFP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MMILELOHFBL_PCHDLBOLPFP" => Some(Self::Pchdlbolpfp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fmambbnlhic { + Daoddgdkkgb = 0, + Cfafidgdkff = 1, + Aakcobidhkg = 2, + Beeoadojadf = 3, + Fonfnkkfhpd = 4, +} +impl Fmambbnlhic { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Daoddgdkkgb => "FMAMBBNLHIC_DAODDGDKKGB", + Self::Cfafidgdkff => "FMAMBBNLHIC_CFAFIDGDKFF", + Self::Aakcobidhkg => "FMAMBBNLHIC_AAKCOBIDHKG", + Self::Beeoadojadf => "FMAMBBNLHIC_BEEOADOJADF", + Self::Fonfnkkfhpd => "FMAMBBNLHIC_FONFNKKFHPD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FMAMBBNLHIC_DAODDGDKKGB" => Some(Self::Daoddgdkkgb), + "FMAMBBNLHIC_CFAFIDGDKFF" => Some(Self::Cfafidgdkff), + "FMAMBBNLHIC_AAKCOBIDHKG" => Some(Self::Aakcobidhkg), + "FMAMBBNLHIC_BEEOADOJADF" => Some(Self::Beeoadojadf), + "FMAMBBNLHIC_FONFNKKFHPD" => Some(Self::Fonfnkkfhpd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lhagkoonhli { + QuestStatusUnlocked = 0, + QuestStateInprogress = 1, + QuestStateFinished = 2, + QuestStateClosed = 3, +} +impl Lhagkoonhli { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::QuestStatusUnlocked => "LHAGKOONHLI_QUEST_STATUS_UNLOCKED", + Self::QuestStateInprogress => "LHAGKOONHLI_QUEST_STATE_INPROGRESS", + Self::QuestStateFinished => "LHAGKOONHLI_QUEST_STATE_FINISHED", + Self::QuestStateClosed => "LHAGKOONHLI_QUEST_STATE_CLOSED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LHAGKOONHLI_QUEST_STATUS_UNLOCKED" => Some(Self::QuestStatusUnlocked), + "LHAGKOONHLI_QUEST_STATE_INPROGRESS" => Some(Self::QuestStateInprogress), + "LHAGKOONHLI_QUEST_STATE_FINISHED" => Some(Self::QuestStateFinished), + "LHAGKOONHLI_QUEST_STATE_CLOSED" => Some(Self::QuestStateClosed), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Afokpafpplc { + Hlblbikbece = 0, + Njmpnohalgg = 1, +} +impl Afokpafpplc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hlblbikbece => "AFOKPAFPPLC_HLBLBIKBECE", + Self::Njmpnohalgg => "AFOKPAFPPLC_NJMPNOHALGG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AFOKPAFPPLC_HLBLBIKBECE" => Some(Self::Hlblbikbece), + "AFOKPAFPPLC_NJMPNOHALGG" => Some(Self::Njmpnohalgg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hiahlcniehd { + Ibheaiaikoi = 0, + Inlmenjlkna = 1, + Albinjbfidn = 2, + Lpeggeaffho = 4, +} +impl Hiahlcniehd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ibheaiaikoi => "HIAHLCNIEHD_IBHEAIAIKOI", + Self::Inlmenjlkna => "HIAHLCNIEHD_INLMENJLKNA", + Self::Albinjbfidn => "HIAHLCNIEHD_ALBINJBFIDN", + Self::Lpeggeaffho => "HIAHLCNIEHD_LPEGGEAFFHO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HIAHLCNIEHD_IBHEAIAIKOI" => Some(Self::Ibheaiaikoi), + "HIAHLCNIEHD_INLMENJLKNA" => Some(Self::Inlmenjlkna), + "HIAHLCNIEHD_ALBINJBFIDN" => Some(Self::Albinjbfidn), + "HIAHLCNIEHD_LPEGGEAFFHO" => Some(Self::Lpeggeaffho), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Deebmmcgpbd { + Gmnmalcmlea = 0, + Bnninhbbfme = 1, + Mgilgibhlmi = 2, +} +impl Deebmmcgpbd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gmnmalcmlea => "DEEBMMCGPBD_GMNMALCMLEA", + Self::Bnninhbbfme => "DEEBMMCGPBD_BNNINHBBFME", + Self::Mgilgibhlmi => "DEEBMMCGPBD_MGILGIBHLMI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DEEBMMCGPBD_GMNMALCMLEA" => Some(Self::Gmnmalcmlea), + "DEEBMMCGPBD_BNNINHBBFME" => Some(Self::Bnninhbbfme), + "DEEBMMCGPBD_MGILGIBHLMI" => Some(Self::Mgilgibhlmi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pplacdhgmgh { + All = 0, + Core = 1, + Noncore = 2, +} +impl Pplacdhgmgh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::All => "PPLACDHGMGH_ALL", + Self::Core => "PPLACDHGMGH_CORE", + Self::Noncore => "PPLACDHGMGH_NONCORE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PPLACDHGMGH_ALL" => Some(Self::All), + "PPLACDHGMGH_CORE" => Some(Self::Core), + "PPLACDHGMGH_NONCORE" => Some(Self::Noncore), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hhhkbiomboj { + Oeicdaagifc = 0, +} +impl Hhhkbiomboj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Oeicdaagifc => "HHHKBIOMBOJ_OEICDAAGIFC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HHHKBIOMBOJ_OEICDAAGIFC" => Some(Self::Oeicdaagifc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hjghfjcnhil { + Aigmbnibhld = 0, + Cfbfdnpkchd = 1, +} +impl Hjghfjcnhil { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Aigmbnibhld => "HJGHFJCNHIL_AIGMBNIBHLD", + Self::Cfbfdnpkchd => "HJGHFJCNHIL_CFBFDNPKCHD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HJGHFJCNHIL_AIGMBNIBHLD" => Some(Self::Aigmbnibhld), + "HJGHFJCNHIL_CFBFDNPKCHD" => Some(Self::Cfbfdnpkchd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fcebonlcjoo { + Bemnkfafemg = 0, + Dlmildgojem = 1, + Djglgaoddjh = 2, + Nhgdefgioli = 3, + Niifnlhoaok = 4, + Lolbimfjknc = 5, + Glelpkkgkbf = 6, + Kigiaalheab = 7, + Kjodhoafajg = 8, + Edcppbbkofg = 9, +} +impl Fcebonlcjoo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bemnkfafemg => "FCEBONLCJOO_BEMNKFAFEMG", + Self::Dlmildgojem => "FCEBONLCJOO_DLMILDGOJEM", + Self::Djglgaoddjh => "FCEBONLCJOO_DJGLGAODDJH", + Self::Nhgdefgioli => "FCEBONLCJOO_NHGDEFGIOLI", + Self::Niifnlhoaok => "FCEBONLCJOO_NIIFNLHOAOK", + Self::Lolbimfjknc => "FCEBONLCJOO_LOLBIMFJKNC", + Self::Glelpkkgkbf => "FCEBONLCJOO_GLELPKKGKBF", + Self::Kigiaalheab => "FCEBONLCJOO_KIGIAALHEAB", + Self::Kjodhoafajg => "FCEBONLCJOO_KJODHOAFAJG", + Self::Edcppbbkofg => "FCEBONLCJOO_EDCPPBBKOFG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FCEBONLCJOO_BEMNKFAFEMG" => Some(Self::Bemnkfafemg), + "FCEBONLCJOO_DLMILDGOJEM" => Some(Self::Dlmildgojem), + "FCEBONLCJOO_DJGLGAODDJH" => Some(Self::Djglgaoddjh), + "FCEBONLCJOO_NHGDEFGIOLI" => Some(Self::Nhgdefgioli), + "FCEBONLCJOO_NIIFNLHOAOK" => Some(Self::Niifnlhoaok), + "FCEBONLCJOO_LOLBIMFJKNC" => Some(Self::Lolbimfjknc), + "FCEBONLCJOO_GLELPKKGKBF" => Some(Self::Glelpkkgkbf), + "FCEBONLCJOO_KIGIAALHEAB" => Some(Self::Kigiaalheab), + "FCEBONLCJOO_KJODHOAFAJG" => Some(Self::Kjodhoafajg), + "FCEBONLCJOO_EDCPPBBKOFG" => Some(Self::Edcppbbkofg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Akmiolpleji { + PredicateTypeNone = 0, + ByItemId = 1, + BySceneProperty = 2, + ByTarotCard = 3, + ByHollowLevel = 4, + ByJump = 5, + ByEmpty = 6, + ByAbility = 7, + ByChoiceServer = 8, + ByJumpServer = 9, + ByRandom = 10, + ByHollowVariable = 11, + ByCharacterState = 12, + ByOr = 13, + BySpecials = 14, + ByCurse = 15, + ByTarotCardGenre = 16, + ByCanGetItem = 17, + ByChallenge = 18, + ByEventState = 19, + ByDirection = 20, + ByMainCharacter = 21, + ByNot = 22, + ByCharacterType = 23, + ByAvatarId = 26, + ByVhsStoreMatchLevel = 27, + ByVhsStoreCompleteHistory = 28, + ByMainCityTime = 29, + ByMultipass = 30, + ByNpcNotHasQuest = 31, + ByCompareParam = 32, + ByPlayerLevel = 33, + ByPositionInRange = 34, + ByHollowNpcState = 35, + ByAfkState = 36, + ByControlCharacter = 37, + ByPartnerTrust = 38, + ByPartnerTrustLevel = 39, + ByHollowPosChangedReason = 40, + ByInteractVariable = 41, + ByAnd = 42, + ByDailyQuestState = 43, + ByGridType = 44, + ByFirstMeet = 45, + ByMainCityTimePeriod = 46, + ByHaveRested = 47, + ByActivityBubbleState = 48, + ByNewsstandUpdate = 49, + ByGuestRecommendSuccess = 50, + ByVhsStoreVhsId = 51, + ByVhsStoreTagLevel = 52, + ByTrashHaveNew = 53, + ByTrashEmpty = 54, + ByHollowNpcLeader = 55, + ByHollowProgress = 56, + ByStoryModeOn = 57, + ByHollowNpcUidExist = 58, + ByCompareQuestState = 59, + ByIndexInBound = 60, + ByCompareQuestFinishCount = 61, + ByNpcHp = 62, + ByPlayMiniGame = 63, + ByGridFinishState = 64, + ByTimeEvent = 65, + ByInterKnotState = 66, + ByIsLightAffected = 67, + ByLightType = 68, + ByPluginCollection = 69, + ByOwnedLightType = 70, + ByExecutionTarget = 71, + ByRepairZoneState = 72, + ByHollowEntrance = 73, + ByFirstInteract = 74, + ByFleaMarketState = 75, + ByHollowDialogState = 76, + ByCompareVec2 = 77, + ByPostState = 78, + ByTodayClosedQuest = 79, + ByBuddyId = 80, + ByEntityCategory = 81, + ByChessboardTag = 82, + ByHollowQuestType = 83, + ByCompareIntOr = 84, + ByCompareIntAnd = 85, + ByEntityType = 86, + ByEntityHasFunction = 87, + BySectionLayerType = 88, + ByEntityHasComponent = 89, + ByPartnerEvent = 90, + ByLiftStatus = 91, + ByRandomPlayRecommendResult = 92, + ByRpIncreasePrice = 93, + ByHaveCatName = 94, + BySection = 95, + ByCanModCatName = 96, + ByUnlockTarotCard = 97, + ByUnlockTarotCardGenre = 98, + ByLimboAvatarQuestFinish = 99, + ByIsFirstTurn = 100, + ByPopChoiceParam = 101, + ByIsMultiHollowOutFloor = 102, + ByIsHaveRamenBuff = 103, + ByIsQuestHistoryClosed = 104, + ByIsRamenEatLimitReached = 105, + ByCustomRet1 = 106, + ByCustomRet2 = 107, + ByCustomRet3 = 108, + ByCustomRet4 = 109, + ByCustomRet5 = 110, + ByMapSpecials = 1000, +} +impl Akmiolpleji { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::PredicateTypeNone => "AKMIOLPLEJI_PREDICATE_TYPE_NONE", + Self::ByItemId => "AKMIOLPLEJI_BY_ITEM_ID", + Self::BySceneProperty => "AKMIOLPLEJI_BY_SCENE_PROPERTY", + Self::ByTarotCard => "AKMIOLPLEJI_BY_TAROT_CARD", + Self::ByHollowLevel => "AKMIOLPLEJI_BY_HOLLOW_LEVEL", + Self::ByJump => "AKMIOLPLEJI_BY_JUMP", + Self::ByEmpty => "AKMIOLPLEJI_BY_EMPTY", + Self::ByAbility => "AKMIOLPLEJI_BY_ABILITY", + Self::ByChoiceServer => "AKMIOLPLEJI_BY_CHOICE_SERVER", + Self::ByJumpServer => "AKMIOLPLEJI_BY_JUMP_SERVER", + Self::ByRandom => "AKMIOLPLEJI_BY_RANDOM", + Self::ByHollowVariable => "AKMIOLPLEJI_BY_HOLLOW_VARIABLE", + Self::ByCharacterState => "AKMIOLPLEJI_BY_CHARACTER_STATE", + Self::ByOr => "AKMIOLPLEJI_BY_OR", + Self::BySpecials => "AKMIOLPLEJI_BY_SPECIALS", + Self::ByCurse => "AKMIOLPLEJI_BY_CURSE", + Self::ByTarotCardGenre => "AKMIOLPLEJI_BY_TAROT_CARD_GENRE", + Self::ByCanGetItem => "AKMIOLPLEJI_BY_CAN_GET_ITEM", + Self::ByChallenge => "AKMIOLPLEJI_BY_CHALLENGE", + Self::ByEventState => "AKMIOLPLEJI_BY_EVENT_STATE", + Self::ByDirection => "AKMIOLPLEJI_BY_DIRECTION", + Self::ByMainCharacter => "AKMIOLPLEJI_BY_MAIN_CHARACTER", + Self::ByNot => "AKMIOLPLEJI_BY_NOT", + Self::ByCharacterType => "AKMIOLPLEJI_BY_CHARACTER_TYPE", + Self::ByAvatarId => "AKMIOLPLEJI_BY_AVATAR_ID", + Self::ByVhsStoreMatchLevel => "AKMIOLPLEJI_BY_VHS_STORE_MATCH_LEVEL", + Self::ByVhsStoreCompleteHistory => { + "AKMIOLPLEJI_BY_VHS_STORE_COMPLETE_HISTORY" + } + Self::ByMainCityTime => "AKMIOLPLEJI_BY_MAIN_CITY_TIME", + Self::ByMultipass => "AKMIOLPLEJI_BY_MULTIPASS", + Self::ByNpcNotHasQuest => "AKMIOLPLEJI_BY_NPC_NOT_HAS_QUEST", + Self::ByCompareParam => "AKMIOLPLEJI_BY_COMPARE_PARAM", + Self::ByPlayerLevel => "AKMIOLPLEJI_BY_PLAYER_LEVEL", + Self::ByPositionInRange => "AKMIOLPLEJI_BY_POSITION_IN_RANGE", + Self::ByHollowNpcState => "AKMIOLPLEJI_BY_HOLLOW_NPC_STATE", + Self::ByAfkState => "AKMIOLPLEJI_BY_AFK_STATE", + Self::ByControlCharacter => "AKMIOLPLEJI_BY_CONTROL_CHARACTER", + Self::ByPartnerTrust => "AKMIOLPLEJI_BY_PARTNER_TRUST", + Self::ByPartnerTrustLevel => "AKMIOLPLEJI_BY_PARTNER_TRUST_LEVEL", + Self::ByHollowPosChangedReason => "AKMIOLPLEJI_BY_HOLLOW_POS_CHANGED_REASON", + Self::ByInteractVariable => "AKMIOLPLEJI_BY_INTERACT_VARIABLE", + Self::ByAnd => "AKMIOLPLEJI_BY_AND", + Self::ByDailyQuestState => "AKMIOLPLEJI_BY_DAILY_QUEST_STATE", + Self::ByGridType => "AKMIOLPLEJI_BY_GRID_TYPE", + Self::ByFirstMeet => "AKMIOLPLEJI_BY_FIRST_MEET", + Self::ByMainCityTimePeriod => "AKMIOLPLEJI_BY_MAIN_CITY_TIME_PERIOD", + Self::ByHaveRested => "AKMIOLPLEJI_BY_HAVE_RESTED", + Self::ByActivityBubbleState => "AKMIOLPLEJI_BY_ACTIVITY_BUBBLE_STATE", + Self::ByNewsstandUpdate => "AKMIOLPLEJI_BY_NEWSSTAND_UPDATE", + Self::ByGuestRecommendSuccess => "AKMIOLPLEJI_BY_GUEST_RECOMMEND_SUCCESS", + Self::ByVhsStoreVhsId => "AKMIOLPLEJI_BY_VHS_STORE_VHS_ID", + Self::ByVhsStoreTagLevel => "AKMIOLPLEJI_BY_VHS_STORE_TAG_LEVEL", + Self::ByTrashHaveNew => "AKMIOLPLEJI_BY_TRASH_HAVE_NEW", + Self::ByTrashEmpty => "AKMIOLPLEJI_BY_TRASH_EMPTY", + Self::ByHollowNpcLeader => "AKMIOLPLEJI_BY_HOLLOW_NPC_LEADER", + Self::ByHollowProgress => "AKMIOLPLEJI_BY_HOLLOW_PROGRESS", + Self::ByStoryModeOn => "AKMIOLPLEJI_BY_STORY_MODE_ON", + Self::ByHollowNpcUidExist => "AKMIOLPLEJI_BY_HOLLOW_NPC_UID_EXIST", + Self::ByCompareQuestState => "AKMIOLPLEJI_BY_COMPARE_QUEST_STATE", + Self::ByIndexInBound => "AKMIOLPLEJI_BY_INDEX_IN_BOUND", + Self::ByCompareQuestFinishCount => { + "AKMIOLPLEJI_BY_COMPARE_QUEST_FINISH_COUNT" + } + Self::ByNpcHp => "AKMIOLPLEJI_BY_NPC_HP", + Self::ByPlayMiniGame => "AKMIOLPLEJI_BY_PLAY_MINI_GAME", + Self::ByGridFinishState => "AKMIOLPLEJI_BY_GRID_FINISH_STATE", + Self::ByTimeEvent => "AKMIOLPLEJI_BY_TIME_EVENT", + Self::ByInterKnotState => "AKMIOLPLEJI_BY_INTER_KNOT_STATE", + Self::ByIsLightAffected => "AKMIOLPLEJI_BY_IS_LIGHT_AFFECTED", + Self::ByLightType => "AKMIOLPLEJI_BY_LIGHT_TYPE", + Self::ByPluginCollection => "AKMIOLPLEJI_BY_PLUGIN_COLLECTION", + Self::ByOwnedLightType => "AKMIOLPLEJI_BY_OWNED_LIGHT_TYPE", + Self::ByExecutionTarget => "AKMIOLPLEJI_BY_EXECUTION_TARGET", + Self::ByRepairZoneState => "AKMIOLPLEJI_BY_REPAIR_ZONE_STATE", + Self::ByHollowEntrance => "AKMIOLPLEJI_BY_HOLLOW_ENTRANCE", + Self::ByFirstInteract => "AKMIOLPLEJI_BY_FIRST_INTERACT", + Self::ByFleaMarketState => "AKMIOLPLEJI_BY_FLEA_MARKET_STATE", + Self::ByHollowDialogState => "AKMIOLPLEJI_BY_HOLLOW_DIALOG_STATE", + Self::ByCompareVec2 => "AKMIOLPLEJI_BY_COMPARE_VEC2", + Self::ByPostState => "AKMIOLPLEJI_BY_POST_STATE", + Self::ByTodayClosedQuest => "AKMIOLPLEJI_BY_TODAY_CLOSED_QUEST", + Self::ByBuddyId => "AKMIOLPLEJI_BY_BUDDY_ID", + Self::ByEntityCategory => "AKMIOLPLEJI_BY_ENTITY_CATEGORY", + Self::ByChessboardTag => "AKMIOLPLEJI_BY_CHESSBOARD_TAG", + Self::ByHollowQuestType => "AKMIOLPLEJI_BY_HOLLOW_QUEST_TYPE", + Self::ByCompareIntOr => "AKMIOLPLEJI_BY_COMPARE_INT_OR", + Self::ByCompareIntAnd => "AKMIOLPLEJI_BY_COMPARE_INT_AND", + Self::ByEntityType => "AKMIOLPLEJI_BY_ENTITY_TYPE", + Self::ByEntityHasFunction => "AKMIOLPLEJI_BY_ENTITY_HAS_FUNCTION", + Self::BySectionLayerType => "AKMIOLPLEJI_BY_SECTION_LAYER_TYPE", + Self::ByEntityHasComponent => "AKMIOLPLEJI_BY_ENTITY_HAS_COMPONENT", + Self::ByPartnerEvent => "AKMIOLPLEJI_BY_PARTNER_EVENT", + Self::ByLiftStatus => "AKMIOLPLEJI_BY_LIFT_STATUS", + Self::ByRandomPlayRecommendResult => { + "AKMIOLPLEJI_BY_RANDOM_PLAY_RECOMMEND_RESULT" + } + Self::ByRpIncreasePrice => "AKMIOLPLEJI_BY_RP_INCREASE_PRICE", + Self::ByHaveCatName => "AKMIOLPLEJI_BY_HAVE_CAT_NAME", + Self::BySection => "AKMIOLPLEJI_BY_SECTION", + Self::ByCanModCatName => "AKMIOLPLEJI_BY_CAN_MOD_CAT_NAME", + Self::ByUnlockTarotCard => "AKMIOLPLEJI_BY_UNLOCK_TAROT_CARD", + Self::ByUnlockTarotCardGenre => "AKMIOLPLEJI_BY_UNLOCK_TAROT_CARD_GENRE", + Self::ByLimboAvatarQuestFinish => "AKMIOLPLEJI_BY_LIMBO_AVATAR_QUEST_FINISH", + Self::ByIsFirstTurn => "AKMIOLPLEJI_BY_IS_FIRST_TURN", + Self::ByPopChoiceParam => "AKMIOLPLEJI_BY_POP_CHOICE_PARAM", + Self::ByIsMultiHollowOutFloor => "AKMIOLPLEJI_BY_IS_MULTI_HOLLOW_OUT_FLOOR", + Self::ByIsHaveRamenBuff => "AKMIOLPLEJI_BY_IS_HAVE_RAMEN_BUFF", + Self::ByIsQuestHistoryClosed => "AKMIOLPLEJI_BY_IS_QUEST_HISTORY_CLOSED", + Self::ByIsRamenEatLimitReached => "AKMIOLPLEJI_BY_IS_RAMEN_EAT_LIMIT_REACHED", + Self::ByCustomRet1 => "AKMIOLPLEJI_BY_CUSTOM_RET1", + Self::ByCustomRet2 => "AKMIOLPLEJI_BY_CUSTOM_RET2", + Self::ByCustomRet3 => "AKMIOLPLEJI_BY_CUSTOM_RET3", + Self::ByCustomRet4 => "AKMIOLPLEJI_BY_CUSTOM_RET4", + Self::ByCustomRet5 => "AKMIOLPLEJI_BY_CUSTOM_RET5", + Self::ByMapSpecials => "AKMIOLPLEJI_BY_MAP_SPECIALS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AKMIOLPLEJI_PREDICATE_TYPE_NONE" => Some(Self::PredicateTypeNone), + "AKMIOLPLEJI_BY_ITEM_ID" => Some(Self::ByItemId), + "AKMIOLPLEJI_BY_SCENE_PROPERTY" => Some(Self::BySceneProperty), + "AKMIOLPLEJI_BY_TAROT_CARD" => Some(Self::ByTarotCard), + "AKMIOLPLEJI_BY_HOLLOW_LEVEL" => Some(Self::ByHollowLevel), + "AKMIOLPLEJI_BY_JUMP" => Some(Self::ByJump), + "AKMIOLPLEJI_BY_EMPTY" => Some(Self::ByEmpty), + "AKMIOLPLEJI_BY_ABILITY" => Some(Self::ByAbility), + "AKMIOLPLEJI_BY_CHOICE_SERVER" => Some(Self::ByChoiceServer), + "AKMIOLPLEJI_BY_JUMP_SERVER" => Some(Self::ByJumpServer), + "AKMIOLPLEJI_BY_RANDOM" => Some(Self::ByRandom), + "AKMIOLPLEJI_BY_HOLLOW_VARIABLE" => Some(Self::ByHollowVariable), + "AKMIOLPLEJI_BY_CHARACTER_STATE" => Some(Self::ByCharacterState), + "AKMIOLPLEJI_BY_OR" => Some(Self::ByOr), + "AKMIOLPLEJI_BY_SPECIALS" => Some(Self::BySpecials), + "AKMIOLPLEJI_BY_CURSE" => Some(Self::ByCurse), + "AKMIOLPLEJI_BY_TAROT_CARD_GENRE" => Some(Self::ByTarotCardGenre), + "AKMIOLPLEJI_BY_CAN_GET_ITEM" => Some(Self::ByCanGetItem), + "AKMIOLPLEJI_BY_CHALLENGE" => Some(Self::ByChallenge), + "AKMIOLPLEJI_BY_EVENT_STATE" => Some(Self::ByEventState), + "AKMIOLPLEJI_BY_DIRECTION" => Some(Self::ByDirection), + "AKMIOLPLEJI_BY_MAIN_CHARACTER" => Some(Self::ByMainCharacter), + "AKMIOLPLEJI_BY_NOT" => Some(Self::ByNot), + "AKMIOLPLEJI_BY_CHARACTER_TYPE" => Some(Self::ByCharacterType), + "AKMIOLPLEJI_BY_AVATAR_ID" => Some(Self::ByAvatarId), + "AKMIOLPLEJI_BY_VHS_STORE_MATCH_LEVEL" => Some(Self::ByVhsStoreMatchLevel), + "AKMIOLPLEJI_BY_VHS_STORE_COMPLETE_HISTORY" => { + Some(Self::ByVhsStoreCompleteHistory) + } + "AKMIOLPLEJI_BY_MAIN_CITY_TIME" => Some(Self::ByMainCityTime), + "AKMIOLPLEJI_BY_MULTIPASS" => Some(Self::ByMultipass), + "AKMIOLPLEJI_BY_NPC_NOT_HAS_QUEST" => Some(Self::ByNpcNotHasQuest), + "AKMIOLPLEJI_BY_COMPARE_PARAM" => Some(Self::ByCompareParam), + "AKMIOLPLEJI_BY_PLAYER_LEVEL" => Some(Self::ByPlayerLevel), + "AKMIOLPLEJI_BY_POSITION_IN_RANGE" => Some(Self::ByPositionInRange), + "AKMIOLPLEJI_BY_HOLLOW_NPC_STATE" => Some(Self::ByHollowNpcState), + "AKMIOLPLEJI_BY_AFK_STATE" => Some(Self::ByAfkState), + "AKMIOLPLEJI_BY_CONTROL_CHARACTER" => Some(Self::ByControlCharacter), + "AKMIOLPLEJI_BY_PARTNER_TRUST" => Some(Self::ByPartnerTrust), + "AKMIOLPLEJI_BY_PARTNER_TRUST_LEVEL" => Some(Self::ByPartnerTrustLevel), + "AKMIOLPLEJI_BY_HOLLOW_POS_CHANGED_REASON" => { + Some(Self::ByHollowPosChangedReason) + } + "AKMIOLPLEJI_BY_INTERACT_VARIABLE" => Some(Self::ByInteractVariable), + "AKMIOLPLEJI_BY_AND" => Some(Self::ByAnd), + "AKMIOLPLEJI_BY_DAILY_QUEST_STATE" => Some(Self::ByDailyQuestState), + "AKMIOLPLEJI_BY_GRID_TYPE" => Some(Self::ByGridType), + "AKMIOLPLEJI_BY_FIRST_MEET" => Some(Self::ByFirstMeet), + "AKMIOLPLEJI_BY_MAIN_CITY_TIME_PERIOD" => Some(Self::ByMainCityTimePeriod), + "AKMIOLPLEJI_BY_HAVE_RESTED" => Some(Self::ByHaveRested), + "AKMIOLPLEJI_BY_ACTIVITY_BUBBLE_STATE" => Some(Self::ByActivityBubbleState), + "AKMIOLPLEJI_BY_NEWSSTAND_UPDATE" => Some(Self::ByNewsstandUpdate), + "AKMIOLPLEJI_BY_GUEST_RECOMMEND_SUCCESS" => { + Some(Self::ByGuestRecommendSuccess) + } + "AKMIOLPLEJI_BY_VHS_STORE_VHS_ID" => Some(Self::ByVhsStoreVhsId), + "AKMIOLPLEJI_BY_VHS_STORE_TAG_LEVEL" => Some(Self::ByVhsStoreTagLevel), + "AKMIOLPLEJI_BY_TRASH_HAVE_NEW" => Some(Self::ByTrashHaveNew), + "AKMIOLPLEJI_BY_TRASH_EMPTY" => Some(Self::ByTrashEmpty), + "AKMIOLPLEJI_BY_HOLLOW_NPC_LEADER" => Some(Self::ByHollowNpcLeader), + "AKMIOLPLEJI_BY_HOLLOW_PROGRESS" => Some(Self::ByHollowProgress), + "AKMIOLPLEJI_BY_STORY_MODE_ON" => Some(Self::ByStoryModeOn), + "AKMIOLPLEJI_BY_HOLLOW_NPC_UID_EXIST" => Some(Self::ByHollowNpcUidExist), + "AKMIOLPLEJI_BY_COMPARE_QUEST_STATE" => Some(Self::ByCompareQuestState), + "AKMIOLPLEJI_BY_INDEX_IN_BOUND" => Some(Self::ByIndexInBound), + "AKMIOLPLEJI_BY_COMPARE_QUEST_FINISH_COUNT" => { + Some(Self::ByCompareQuestFinishCount) + } + "AKMIOLPLEJI_BY_NPC_HP" => Some(Self::ByNpcHp), + "AKMIOLPLEJI_BY_PLAY_MINI_GAME" => Some(Self::ByPlayMiniGame), + "AKMIOLPLEJI_BY_GRID_FINISH_STATE" => Some(Self::ByGridFinishState), + "AKMIOLPLEJI_BY_TIME_EVENT" => Some(Self::ByTimeEvent), + "AKMIOLPLEJI_BY_INTER_KNOT_STATE" => Some(Self::ByInterKnotState), + "AKMIOLPLEJI_BY_IS_LIGHT_AFFECTED" => Some(Self::ByIsLightAffected), + "AKMIOLPLEJI_BY_LIGHT_TYPE" => Some(Self::ByLightType), + "AKMIOLPLEJI_BY_PLUGIN_COLLECTION" => Some(Self::ByPluginCollection), + "AKMIOLPLEJI_BY_OWNED_LIGHT_TYPE" => Some(Self::ByOwnedLightType), + "AKMIOLPLEJI_BY_EXECUTION_TARGET" => Some(Self::ByExecutionTarget), + "AKMIOLPLEJI_BY_REPAIR_ZONE_STATE" => Some(Self::ByRepairZoneState), + "AKMIOLPLEJI_BY_HOLLOW_ENTRANCE" => Some(Self::ByHollowEntrance), + "AKMIOLPLEJI_BY_FIRST_INTERACT" => Some(Self::ByFirstInteract), + "AKMIOLPLEJI_BY_FLEA_MARKET_STATE" => Some(Self::ByFleaMarketState), + "AKMIOLPLEJI_BY_HOLLOW_DIALOG_STATE" => Some(Self::ByHollowDialogState), + "AKMIOLPLEJI_BY_COMPARE_VEC2" => Some(Self::ByCompareVec2), + "AKMIOLPLEJI_BY_POST_STATE" => Some(Self::ByPostState), + "AKMIOLPLEJI_BY_TODAY_CLOSED_QUEST" => Some(Self::ByTodayClosedQuest), + "AKMIOLPLEJI_BY_BUDDY_ID" => Some(Self::ByBuddyId), + "AKMIOLPLEJI_BY_ENTITY_CATEGORY" => Some(Self::ByEntityCategory), + "AKMIOLPLEJI_BY_CHESSBOARD_TAG" => Some(Self::ByChessboardTag), + "AKMIOLPLEJI_BY_HOLLOW_QUEST_TYPE" => Some(Self::ByHollowQuestType), + "AKMIOLPLEJI_BY_COMPARE_INT_OR" => Some(Self::ByCompareIntOr), + "AKMIOLPLEJI_BY_COMPARE_INT_AND" => Some(Self::ByCompareIntAnd), + "AKMIOLPLEJI_BY_ENTITY_TYPE" => Some(Self::ByEntityType), + "AKMIOLPLEJI_BY_ENTITY_HAS_FUNCTION" => Some(Self::ByEntityHasFunction), + "AKMIOLPLEJI_BY_SECTION_LAYER_TYPE" => Some(Self::BySectionLayerType), + "AKMIOLPLEJI_BY_ENTITY_HAS_COMPONENT" => Some(Self::ByEntityHasComponent), + "AKMIOLPLEJI_BY_PARTNER_EVENT" => Some(Self::ByPartnerEvent), + "AKMIOLPLEJI_BY_LIFT_STATUS" => Some(Self::ByLiftStatus), + "AKMIOLPLEJI_BY_RANDOM_PLAY_RECOMMEND_RESULT" => { + Some(Self::ByRandomPlayRecommendResult) + } + "AKMIOLPLEJI_BY_RP_INCREASE_PRICE" => Some(Self::ByRpIncreasePrice), + "AKMIOLPLEJI_BY_HAVE_CAT_NAME" => Some(Self::ByHaveCatName), + "AKMIOLPLEJI_BY_SECTION" => Some(Self::BySection), + "AKMIOLPLEJI_BY_CAN_MOD_CAT_NAME" => Some(Self::ByCanModCatName), + "AKMIOLPLEJI_BY_UNLOCK_TAROT_CARD" => Some(Self::ByUnlockTarotCard), + "AKMIOLPLEJI_BY_UNLOCK_TAROT_CARD_GENRE" => { + Some(Self::ByUnlockTarotCardGenre) + } + "AKMIOLPLEJI_BY_LIMBO_AVATAR_QUEST_FINISH" => { + Some(Self::ByLimboAvatarQuestFinish) + } + "AKMIOLPLEJI_BY_IS_FIRST_TURN" => Some(Self::ByIsFirstTurn), + "AKMIOLPLEJI_BY_POP_CHOICE_PARAM" => Some(Self::ByPopChoiceParam), + "AKMIOLPLEJI_BY_IS_MULTI_HOLLOW_OUT_FLOOR" => { + Some(Self::ByIsMultiHollowOutFloor) + } + "AKMIOLPLEJI_BY_IS_HAVE_RAMEN_BUFF" => Some(Self::ByIsHaveRamenBuff), + "AKMIOLPLEJI_BY_IS_QUEST_HISTORY_CLOSED" => { + Some(Self::ByIsQuestHistoryClosed) + } + "AKMIOLPLEJI_BY_IS_RAMEN_EAT_LIMIT_REACHED" => { + Some(Self::ByIsRamenEatLimitReached) + } + "AKMIOLPLEJI_BY_CUSTOM_RET1" => Some(Self::ByCustomRet1), + "AKMIOLPLEJI_BY_CUSTOM_RET2" => Some(Self::ByCustomRet2), + "AKMIOLPLEJI_BY_CUSTOM_RET3" => Some(Self::ByCustomRet3), + "AKMIOLPLEJI_BY_CUSTOM_RET4" => Some(Self::ByCustomRet4), + "AKMIOLPLEJI_BY_CUSTOM_RET5" => Some(Self::ByCustomRet5), + "AKMIOLPLEJI_BY_MAP_SPECIALS" => Some(Self::ByMapSpecials), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hmfinbdldii { + Aipahpdckka = 0, + Llmbdifgaaj = 1, + Bhbcikfdene = 2, +} +impl Hmfinbdldii { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Aipahpdckka => "HMFINBDLDII_AIPAHPDCKKA", + Self::Llmbdifgaaj => "HMFINBDLDII_LLMBDIFGAAJ", + Self::Bhbcikfdene => "HMFINBDLDII_BHBCIKFDENE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HMFINBDLDII_AIPAHPDCKKA" => Some(Self::Aipahpdckka), + "HMFINBDLDII_LLMBDIFGAAJ" => Some(Self::Llmbdifgaaj), + "HMFINBDLDII_BHBCIKFDENE" => Some(Self::Bhbcikfdene), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Aikffhpkgkk { + Iaocmhnmmho = 0, + Fkfopbeaacf = 1, + Dghdojallph = 2, + Gcpljeokmhl = 3, + Goigbjnkdpa = 4, + Jcmjgibcali = 5, + Dfahlfnfadm = 6, + Nhiigapbkom = 7, + Kpllmooknpm = 8, +} +impl Aikffhpkgkk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Iaocmhnmmho => "AIKFFHPKGKK_IAOCMHNMMHO", + Self::Fkfopbeaacf => "AIKFFHPKGKK_FKFOPBEAACF", + Self::Dghdojallph => "AIKFFHPKGKK_DGHDOJALLPH", + Self::Gcpljeokmhl => "AIKFFHPKGKK_GCPLJEOKMHL", + Self::Goigbjnkdpa => "AIKFFHPKGKK_GOIGBJNKDPA", + Self::Jcmjgibcali => "AIKFFHPKGKK_JCMJGIBCALI", + Self::Dfahlfnfadm => "AIKFFHPKGKK_DFAHLFNFADM", + Self::Nhiigapbkom => "AIKFFHPKGKK_NHIIGAPBKOM", + Self::Kpllmooknpm => "AIKFFHPKGKK_KPLLMOOKNPM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AIKFFHPKGKK_IAOCMHNMMHO" => Some(Self::Iaocmhnmmho), + "AIKFFHPKGKK_FKFOPBEAACF" => Some(Self::Fkfopbeaacf), + "AIKFFHPKGKK_DGHDOJALLPH" => Some(Self::Dghdojallph), + "AIKFFHPKGKK_GCPLJEOKMHL" => Some(Self::Gcpljeokmhl), + "AIKFFHPKGKK_GOIGBJNKDPA" => Some(Self::Goigbjnkdpa), + "AIKFFHPKGKK_JCMJGIBCALI" => Some(Self::Jcmjgibcali), + "AIKFFHPKGKK_DFAHLFNFADM" => Some(Self::Dfahlfnfadm), + "AIKFFHPKGKK_NHIIGAPBKOM" => Some(Self::Nhiigapbkom), + "AIKFFHPKGKK_KPLLMOOKNPM" => Some(Self::Kpllmooknpm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nammdjdjboi { + Jilmogcadge = 0, + Mcnbhjbbnfh = 1, +} +impl Nammdjdjboi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jilmogcadge => "NAMMDJDJBOI_JILMOGCADGE", + Self::Mcnbhjbbnfh => "NAMMDJDJBOI_MCNBHJBBNFH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NAMMDJDJBOI_JILMOGCADGE" => Some(Self::Jilmogcadge), + "NAMMDJDJBOI_MCNBHJBBNFH" => Some(Self::Mcnbhjbbnfh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ackpapifbie { + TargetTypeNone = 0, + TargetTypeEvent = 1, + TargetTypeNpc = 2, +} +impl Ackpapifbie { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::TargetTypeNone => "ACKPAPIFBIE_TARGET_TYPE_NONE", + Self::TargetTypeEvent => "ACKPAPIFBIE_TARGET_TYPE_EVENT", + Self::TargetTypeNpc => "ACKPAPIFBIE_TARGET_TYPE_NPC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ACKPAPIFBIE_TARGET_TYPE_NONE" => Some(Self::TargetTypeNone), + "ACKPAPIFBIE_TARGET_TYPE_EVENT" => Some(Self::TargetTypeEvent), + "ACKPAPIFBIE_TARGET_TYPE_NPC" => Some(Self::TargetTypeNpc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nicnmdlcpmh { + MphEntityTypeNone = 0, + MphEntityTypePlayer = 1, + MphEntityTypeNpc = 2, + MphEntityTypeGrid = 3, + MphEntityTypeSection = 4, +} +impl Nicnmdlcpmh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::MphEntityTypeNone => "NICNMDLCPMH_MPH_ENTITY_TYPE_NONE", + Self::MphEntityTypePlayer => "NICNMDLCPMH_MPH_ENTITY_TYPE_PLAYER", + Self::MphEntityTypeNpc => "NICNMDLCPMH_MPH_ENTITY_TYPE_NPC", + Self::MphEntityTypeGrid => "NICNMDLCPMH_MPH_ENTITY_TYPE_GRID", + Self::MphEntityTypeSection => "NICNMDLCPMH_MPH_ENTITY_TYPE_SECTION", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NICNMDLCPMH_MPH_ENTITY_TYPE_NONE" => Some(Self::MphEntityTypeNone), + "NICNMDLCPMH_MPH_ENTITY_TYPE_PLAYER" => Some(Self::MphEntityTypePlayer), + "NICNMDLCPMH_MPH_ENTITY_TYPE_NPC" => Some(Self::MphEntityTypeNpc), + "NICNMDLCPMH_MPH_ENTITY_TYPE_GRID" => Some(Self::MphEntityTypeGrid), + "NICNMDLCPMH_MPH_ENTITY_TYPE_SECTION" => Some(Self::MphEntityTypeSection), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Aefomohbjpc { + Fkkcbhjjopb = 0, + Ghajjkjmfdn = 1, +} +impl Aefomohbjpc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fkkcbhjjopb => "AEFOMOHBJPC_FKKCBHJJOPB", + Self::Ghajjkjmfdn => "AEFOMOHBJPC_GHAJJKJMFDN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AEFOMOHBJPC_FKKCBHJJOPB" => Some(Self::Fkkcbhjjopb), + "AEFOMOHBJPC_GHAJJKJMFDN" => Some(Self::Ghajjkjmfdn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dcmnendmgjo { + Gaaffoledgk = 0, + Dijkpoeojcn = 1, + Anlfbbbemjo = 2, + Lmcaaekgflb = 3, +} +impl Dcmnendmgjo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gaaffoledgk => "DCMNENDMGJO_GAAFFOLEDGK", + Self::Dijkpoeojcn => "DCMNENDMGJO_DIJKPOEOJCN", + Self::Anlfbbbemjo => "DCMNENDMGJO_ANLFBBBEMJO", + Self::Lmcaaekgflb => "DCMNENDMGJO_LMCAAEKGFLB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DCMNENDMGJO_GAAFFOLEDGK" => Some(Self::Gaaffoledgk), + "DCMNENDMGJO_DIJKPOEOJCN" => Some(Self::Dijkpoeojcn), + "DCMNENDMGJO_ANLFBBBEMJO" => Some(Self::Anlfbbbemjo), + "DCMNENDMGJO_LMCAAEKGFLB" => Some(Self::Lmcaaekgflb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kgfkhiakkpd { + Bpeljenhpph = 0, +} +impl Kgfkhiakkpd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bpeljenhpph => "KGFKHIAKKPD_BPELJENHPPH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KGFKHIAKKPD_BPELJENHPPH" => Some(Self::Bpeljenhpph), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Anpepkjkfff { + Mfpocghdnel = 0, + Bbnlgddhnel = 1, + Lafmjbjhjpo = 2, + Fcbomnjhglj = 3, + Eodbicjpaeo = 4, + Bnkneaiipef = 5, + Jfdoaldfkek = 6, + Jgpbglgicph = 7, + Fmbepibonon = 8, +} +impl Anpepkjkfff { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mfpocghdnel => "ANPEPKJKFFF_MFPOCGHDNEL", + Self::Bbnlgddhnel => "ANPEPKJKFFF_BBNLGDDHNEL", + Self::Lafmjbjhjpo => "ANPEPKJKFFF_LAFMJBJHJPO", + Self::Fcbomnjhglj => "ANPEPKJKFFF_FCBOMNJHGLJ", + Self::Eodbicjpaeo => "ANPEPKJKFFF_EODBICJPAEO", + Self::Bnkneaiipef => "ANPEPKJKFFF_BNKNEAIIPEF", + Self::Jfdoaldfkek => "ANPEPKJKFFF_JFDOALDFKEK", + Self::Jgpbglgicph => "ANPEPKJKFFF_JGPBGLGICPH", + Self::Fmbepibonon => "ANPEPKJKFFF_FMBEPIBONON", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ANPEPKJKFFF_MFPOCGHDNEL" => Some(Self::Mfpocghdnel), + "ANPEPKJKFFF_BBNLGDDHNEL" => Some(Self::Bbnlgddhnel), + "ANPEPKJKFFF_LAFMJBJHJPO" => Some(Self::Lafmjbjhjpo), + "ANPEPKJKFFF_FCBOMNJHGLJ" => Some(Self::Fcbomnjhglj), + "ANPEPKJKFFF_EODBICJPAEO" => Some(Self::Eodbicjpaeo), + "ANPEPKJKFFF_BNKNEAIIPEF" => Some(Self::Bnkneaiipef), + "ANPEPKJKFFF_JFDOALDFKEK" => Some(Self::Jfdoaldfkek), + "ANPEPKJKFFF_JGPBGLGICPH" => Some(Self::Jgpbglgicph), + "ANPEPKJKFFF_FMBEPIBONON" => Some(Self::Fmbepibonon), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mkaacfjakjk { + Hpfbilomfcj = 0, +} +impl Mkaacfjakjk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hpfbilomfcj => "MKAACFJAKJK_HPFBILOMFCJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MKAACFJAKJK_HPFBILOMFCJ" => Some(Self::Hpfbilomfcj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Clfgompndhf { + Jibmepihjjf = 0, + Koimommjmca = 1, + Enkpodcngof = 2, + Akcnegebelo = 3, +} +impl Clfgompndhf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jibmepihjjf => "CLFGOMPNDHF_JIBMEPIHJJF", + Self::Koimommjmca => "CLFGOMPNDHF_KOIMOMMJMCA", + Self::Enkpodcngof => "CLFGOMPNDHF_ENKPODCNGOF", + Self::Akcnegebelo => "CLFGOMPNDHF_AKCNEGEBELO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CLFGOMPNDHF_JIBMEPIHJJF" => Some(Self::Jibmepihjjf), + "CLFGOMPNDHF_KOIMOMMJMCA" => Some(Self::Koimommjmca), + "CLFGOMPNDHF_ENKPODCNGOF" => Some(Self::Enkpodcngof), + "CLFGOMPNDHF_AKCNEGEBELO" => Some(Self::Akcnegebelo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pepgdjbhdap { + Hakncmkgdkj = 0, + Pbihpcpehbo = 1, + Ihbbigdkbhf = 2, + Cfcglblblei = 3, +} +impl Pepgdjbhdap { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hakncmkgdkj => "PEPGDJBHDAP_HAKNCMKGDKJ", + Self::Pbihpcpehbo => "PEPGDJBHDAP_PBIHPCPEHBO", + Self::Ihbbigdkbhf => "PEPGDJBHDAP_IHBBIGDKBHF", + Self::Cfcglblblei => "PEPGDJBHDAP_CFCGLBLBLEI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PEPGDJBHDAP_HAKNCMKGDKJ" => Some(Self::Hakncmkgdkj), + "PEPGDJBHDAP_PBIHPCPEHBO" => Some(Self::Pbihpcpehbo), + "PEPGDJBHDAP_IHBBIGDKBHF" => Some(Self::Ihbbigdkbhf), + "PEPGDJBHDAP_CFCGLBLBLEI" => Some(Self::Cfcglblblei), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Aceafijbdeb { + PerformBubble = 0, + PerformDelay = 1, + PerformImmediately = 2, + PerformExplosion = 3, +} +impl Aceafijbdeb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::PerformBubble => "ACEAFIJBDEB_PERFORM_BUBBLE", + Self::PerformDelay => "ACEAFIJBDEB_PERFORM_DELAY", + Self::PerformImmediately => "ACEAFIJBDEB_PERFORM_IMMEDIATELY", + Self::PerformExplosion => "ACEAFIJBDEB_PERFORM_EXPLOSION", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ACEAFIJBDEB_PERFORM_BUBBLE" => Some(Self::PerformBubble), + "ACEAFIJBDEB_PERFORM_DELAY" => Some(Self::PerformDelay), + "ACEAFIJBDEB_PERFORM_IMMEDIATELY" => Some(Self::PerformImmediately), + "ACEAFIJBDEB_PERFORM_EXPLOSION" => Some(Self::PerformExplosion), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pmjjckkamfi { + Hdinpnhlgkd = 0, + Ejkckpbcbcd = 1, + Gljbedehgbf = 2, + Kpfioehmodh = 3, + Pblhfflinif = 4, +} +impl Pmjjckkamfi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hdinpnhlgkd => "PMJJCKKAMFI_HDINPNHLGKD", + Self::Ejkckpbcbcd => "PMJJCKKAMFI_EJKCKPBCBCD", + Self::Gljbedehgbf => "PMJJCKKAMFI_GLJBEDEHGBF", + Self::Kpfioehmodh => "PMJJCKKAMFI_KPFIOEHMODH", + Self::Pblhfflinif => "PMJJCKKAMFI_PBLHFFLINIF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PMJJCKKAMFI_HDINPNHLGKD" => Some(Self::Hdinpnhlgkd), + "PMJJCKKAMFI_EJKCKPBCBCD" => Some(Self::Ejkckpbcbcd), + "PMJJCKKAMFI_GLJBEDEHGBF" => Some(Self::Gljbedehgbf), + "PMJJCKKAMFI_KPFIOEHMODH" => Some(Self::Kpfioehmodh), + "PMJJCKKAMFI_PBLHFFLINIF" => Some(Self::Pblhfflinif), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Anmcndjkbab { + Npicchpmoik = 0, + Loaghhegccn = 1, + Ambpnfahllo = 2, + Lmnbpjlknke = 3, +} +impl Anmcndjkbab { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Npicchpmoik => "ANMCNDJKBAB_NPICCHPMOIK", + Self::Loaghhegccn => "ANMCNDJKBAB_LOAGHHEGCCN", + Self::Ambpnfahllo => "ANMCNDJKBAB_AMBPNFAHLLO", + Self::Lmnbpjlknke => "ANMCNDJKBAB_LMNBPJLKNKE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ANMCNDJKBAB_NPICCHPMOIK" => Some(Self::Npicchpmoik), + "ANMCNDJKBAB_LOAGHHEGCCN" => Some(Self::Loaghhegccn), + "ANMCNDJKBAB_AMBPNFAHLLO" => Some(Self::Ambpnfahllo), + "ANMCNDJKBAB_LMNBPJLKNKE" => Some(Self::Lmnbpjlknke), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mcknooagjjm { + Nailfckpemf = 0, + Eijlijmbhcf = 1, + Fbhblecmnnj = 2, + Fhallohbnfe = 3, + Egefpcaccfh = 4, + Bmlmkkgjpbb = 5, +} +impl Mcknooagjjm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nailfckpemf => "MCKNOOAGJJM_NAILFCKPEMF", + Self::Eijlijmbhcf => "MCKNOOAGJJM_EIJLIJMBHCF", + Self::Fbhblecmnnj => "MCKNOOAGJJM_FBHBLECMNNJ", + Self::Fhallohbnfe => "MCKNOOAGJJM_FHALLOHBNFE", + Self::Egefpcaccfh => "MCKNOOAGJJM_EGEFPCACCFH", + Self::Bmlmkkgjpbb => "MCKNOOAGJJM_BMLMKKGJPBB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MCKNOOAGJJM_NAILFCKPEMF" => Some(Self::Nailfckpemf), + "MCKNOOAGJJM_EIJLIJMBHCF" => Some(Self::Eijlijmbhcf), + "MCKNOOAGJJM_FBHBLECMNNJ" => Some(Self::Fbhblecmnnj), + "MCKNOOAGJJM_FHALLOHBNFE" => Some(Self::Fhallohbnfe), + "MCKNOOAGJJM_EGEFPCACCFH" => Some(Self::Egefpcaccfh), + "MCKNOOAGJJM_BMLMKKGJPBB" => Some(Self::Bmlmkkgjpbb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mkicppbglge { + Eocpnkfdokj = 0, + Hcgpdolpmib = 1, + Kmcbpiohego = 2, + Ebemaolpfnh = 3, + Olofbafgmkg = 4, + Ophjdmahalb = 5, + Ejamialeppj = 6, +} +impl Mkicppbglge { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Eocpnkfdokj => "MKICPPBGLGE_EOCPNKFDOKJ", + Self::Hcgpdolpmib => "MKICPPBGLGE_HCGPDOLPMIB", + Self::Kmcbpiohego => "MKICPPBGLGE_KMCBPIOHEGO", + Self::Ebemaolpfnh => "MKICPPBGLGE_EBEMAOLPFNH", + Self::Olofbafgmkg => "MKICPPBGLGE_OLOFBAFGMKG", + Self::Ophjdmahalb => "MKICPPBGLGE_OPHJDMAHALB", + Self::Ejamialeppj => "MKICPPBGLGE_EJAMIALEPPJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MKICPPBGLGE_EOCPNKFDOKJ" => Some(Self::Eocpnkfdokj), + "MKICPPBGLGE_HCGPDOLPMIB" => Some(Self::Hcgpdolpmib), + "MKICPPBGLGE_KMCBPIOHEGO" => Some(Self::Kmcbpiohego), + "MKICPPBGLGE_EBEMAOLPFNH" => Some(Self::Ebemaolpfnh), + "MKICPPBGLGE_OLOFBAFGMKG" => Some(Self::Olofbafgmkg), + "MKICPPBGLGE_OPHJDMAHALB" => Some(Self::Ophjdmahalb), + "MKICPPBGLGE_EJAMIALEPPJ" => Some(Self::Ejamialeppj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Aicjohpmfel { + Ifjejaephhi = 0, + Filkidpmpli = 1, +} +impl Aicjohpmfel { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ifjejaephhi => "AICJOHPMFEL_IFJEJAEPHHI", + Self::Filkidpmpli => "AICJOHPMFEL_FILKIDPMPLI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AICJOHPMFEL_IFJEJAEPHHI" => Some(Self::Ifjejaephhi), + "AICJOHPMFEL_FILKIDPMPLI" => Some(Self::Filkidpmpli), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Oobkhlochoi { + BattleTagDefault = 0, + BattleTagNormal = 1, + BattleTagChallenge = 2, + BattleTagGoldenBuddy = 3, + BattleTagChallengeOccupy = 4, + BattleTagBonus = 5, + BattleTagNormalDoubleElite = 6, + BattleTagNormalEvolveElite = 7, + BattleTagNormalBigCheese = 8, + BattleTagNormalBossElite = 9, + BattleTagNormalBigCheeseElite = 10, + BattleTagNormalDoubleBoss = 11, + BattleTagNormalEvolveBoss = 12, +} +impl Oobkhlochoi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::BattleTagDefault => "OOBKHLOCHOI_BATTLE_TAG_DEFAULT", + Self::BattleTagNormal => "OOBKHLOCHOI_BATTLE_TAG_NORMAL", + Self::BattleTagChallenge => "OOBKHLOCHOI_BATTLE_TAG_CHALLENGE", + Self::BattleTagGoldenBuddy => "OOBKHLOCHOI_BATTLE_TAG_GOLDEN_BUDDY", + Self::BattleTagChallengeOccupy => "OOBKHLOCHOI_BATTLE_TAG_CHALLENGE_OCCUPY", + Self::BattleTagBonus => "OOBKHLOCHOI_BATTLE_TAG_BONUS", + Self::BattleTagNormalDoubleElite => { + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_DOUBLE_ELITE" + } + Self::BattleTagNormalEvolveElite => { + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_EVOLVE_ELITE" + } + Self::BattleTagNormalBigCheese => "OOBKHLOCHOI_BATTLE_TAG_NORMAL_BIG_CHEESE", + Self::BattleTagNormalBossElite => "OOBKHLOCHOI_BATTLE_TAG_NORMAL_BOSS_ELITE", + Self::BattleTagNormalBigCheeseElite => { + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_BIG_CHEESE_ELITE" + } + Self::BattleTagNormalDoubleBoss => { + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_DOUBLE_BOSS" + } + Self::BattleTagNormalEvolveBoss => { + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_EVOLVE_BOSS" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OOBKHLOCHOI_BATTLE_TAG_DEFAULT" => Some(Self::BattleTagDefault), + "OOBKHLOCHOI_BATTLE_TAG_NORMAL" => Some(Self::BattleTagNormal), + "OOBKHLOCHOI_BATTLE_TAG_CHALLENGE" => Some(Self::BattleTagChallenge), + "OOBKHLOCHOI_BATTLE_TAG_GOLDEN_BUDDY" => Some(Self::BattleTagGoldenBuddy), + "OOBKHLOCHOI_BATTLE_TAG_CHALLENGE_OCCUPY" => { + Some(Self::BattleTagChallengeOccupy) + } + "OOBKHLOCHOI_BATTLE_TAG_BONUS" => Some(Self::BattleTagBonus), + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_DOUBLE_ELITE" => { + Some(Self::BattleTagNormalDoubleElite) + } + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_EVOLVE_ELITE" => { + Some(Self::BattleTagNormalEvolveElite) + } + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_BIG_CHEESE" => { + Some(Self::BattleTagNormalBigCheese) + } + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_BOSS_ELITE" => { + Some(Self::BattleTagNormalBossElite) + } + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_BIG_CHEESE_ELITE" => { + Some(Self::BattleTagNormalBigCheeseElite) + } + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_DOUBLE_BOSS" => { + Some(Self::BattleTagNormalDoubleBoss) + } + "OOBKHLOCHOI_BATTLE_TAG_NORMAL_EVOLVE_BOSS" => { + Some(Self::BattleTagNormalEvolveBoss) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Idipighfblp { + Ejhojbkndbm = 0, + Ohbdlifjcbg = 1, +} +impl Idipighfblp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ejhojbkndbm => "IDIPIGHFBLP_EJHOJBKNDBM", + Self::Ohbdlifjcbg => "IDIPIGHFBLP_OHBDLIFJCBG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IDIPIGHFBLP_EJHOJBKNDBM" => Some(Self::Ejhojbkndbm), + "IDIPIGHFBLP_OHBDLIFJCBG" => Some(Self::Ohbdlifjcbg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pmdfnfgjpea { + HollowShopShowTypeNormal = 0, + HollowShopShowTypeByGroup = 1, +} +impl Pmdfnfgjpea { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowShopShowTypeNormal => "PMDFNFGJPEA_HOLLOW_SHOP_SHOW_TYPE_NORMAL", + Self::HollowShopShowTypeByGroup => { + "PMDFNFGJPEA_HOLLOW_SHOP_SHOW_TYPE_BY_GROUP" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PMDFNFGJPEA_HOLLOW_SHOP_SHOW_TYPE_NORMAL" => { + Some(Self::HollowShopShowTypeNormal) + } + "PMDFNFGJPEA_HOLLOW_SHOP_SHOW_TYPE_BY_GROUP" => { + Some(Self::HollowShopShowTypeByGroup) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Iipfmioacai { + Bdngjfbhegb = 0, + Afhheflpfmn = 1, + Goadloifjhg = 2, + Egdcnlbkbkn = 3, + Kkhclmajpeo = 4, + Fddeopjgbil = 5, + Hheeijiabmb = 6, + Nogiehlheaa = 7, + Milhnnejkbc = 8, + Oapplkinfap = 9, + Ihnapjapapd = 10, +} +impl Iipfmioacai { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bdngjfbhegb => "IIPFMIOACAI_BDNGJFBHEGB", + Self::Afhheflpfmn => "IIPFMIOACAI_AFHHEFLPFMN", + Self::Goadloifjhg => "IIPFMIOACAI_GOADLOIFJHG", + Self::Egdcnlbkbkn => "IIPFMIOACAI_EGDCNLBKBKN", + Self::Kkhclmajpeo => "IIPFMIOACAI_KKHCLMAJPEO", + Self::Fddeopjgbil => "IIPFMIOACAI_FDDEOPJGBIL", + Self::Hheeijiabmb => "IIPFMIOACAI_HHEEIJIABMB", + Self::Nogiehlheaa => "IIPFMIOACAI_NOGIEHLHEAA", + Self::Milhnnejkbc => "IIPFMIOACAI_MILHNNEJKBC", + Self::Oapplkinfap => "IIPFMIOACAI_OAPPLKINFAP", + Self::Ihnapjapapd => "IIPFMIOACAI_IHNAPJAPAPD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IIPFMIOACAI_BDNGJFBHEGB" => Some(Self::Bdngjfbhegb), + "IIPFMIOACAI_AFHHEFLPFMN" => Some(Self::Afhheflpfmn), + "IIPFMIOACAI_GOADLOIFJHG" => Some(Self::Goadloifjhg), + "IIPFMIOACAI_EGDCNLBKBKN" => Some(Self::Egdcnlbkbkn), + "IIPFMIOACAI_KKHCLMAJPEO" => Some(Self::Kkhclmajpeo), + "IIPFMIOACAI_FDDEOPJGBIL" => Some(Self::Fddeopjgbil), + "IIPFMIOACAI_HHEEIJIABMB" => Some(Self::Hheeijiabmb), + "IIPFMIOACAI_NOGIEHLHEAA" => Some(Self::Nogiehlheaa), + "IIPFMIOACAI_MILHNNEJKBC" => Some(Self::Milhnnejkbc), + "IIPFMIOACAI_OAPPLKINFAP" => Some(Self::Oapplkinfap), + "IIPFMIOACAI_IHNAPJAPAPD" => Some(Self::Ihnapjapapd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cjcmohfncem { + Fhblmnlapng = 0, + Fficflndigl = 1, + Dnejbbdeann = 2, + Jnpokaiegdh = 3, + Nlfahcfbanc = 4, + Khnciecckdk = 5, + Jbpglpancdl = 6, + Lefiemacfmh = 7, +} +impl Cjcmohfncem { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fhblmnlapng => "CJCMOHFNCEM_FHBLMNLAPNG", + Self::Fficflndigl => "CJCMOHFNCEM_FFICFLNDIGL", + Self::Dnejbbdeann => "CJCMOHFNCEM_DNEJBBDEANN", + Self::Jnpokaiegdh => "CJCMOHFNCEM_JNPOKAIEGDH", + Self::Nlfahcfbanc => "CJCMOHFNCEM_NLFAHCFBANC", + Self::Khnciecckdk => "CJCMOHFNCEM_KHNCIECCKDK", + Self::Jbpglpancdl => "CJCMOHFNCEM_JBPGLPANCDL", + Self::Lefiemacfmh => "CJCMOHFNCEM_LEFIEMACFMH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CJCMOHFNCEM_FHBLMNLAPNG" => Some(Self::Fhblmnlapng), + "CJCMOHFNCEM_FFICFLNDIGL" => Some(Self::Fficflndigl), + "CJCMOHFNCEM_DNEJBBDEANN" => Some(Self::Dnejbbdeann), + "CJCMOHFNCEM_JNPOKAIEGDH" => Some(Self::Jnpokaiegdh), + "CJCMOHFNCEM_NLFAHCFBANC" => Some(Self::Nlfahcfbanc), + "CJCMOHFNCEM_KHNCIECCKDK" => Some(Self::Khnciecckdk), + "CJCMOHFNCEM_JBPGLPANCDL" => Some(Self::Jbpglpancdl), + "CJCMOHFNCEM_LEFIEMACFMH" => Some(Self::Lefiemacfmh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hiakfdnfeee { + Adophdgdkcc = 0, + Gblkccoockp = 1, + Ckjbbhmbhok = 2, + Kfglppimbij = 3, + Bbadkcgpdhh = 4, + Djlakdjlomh = 5, +} +impl Hiakfdnfeee { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Adophdgdkcc => "HIAKFDNFEEE_ADOPHDGDKCC", + Self::Gblkccoockp => "HIAKFDNFEEE_GBLKCCOOCKP", + Self::Ckjbbhmbhok => "HIAKFDNFEEE_CKJBBHMBHOK", + Self::Kfglppimbij => "HIAKFDNFEEE_KFGLPPIMBIJ", + Self::Bbadkcgpdhh => "HIAKFDNFEEE_BBADKCGPDHH", + Self::Djlakdjlomh => "HIAKFDNFEEE_DJLAKDJLOMH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HIAKFDNFEEE_ADOPHDGDKCC" => Some(Self::Adophdgdkcc), + "HIAKFDNFEEE_GBLKCCOOCKP" => Some(Self::Gblkccoockp), + "HIAKFDNFEEE_CKJBBHMBHOK" => Some(Self::Ckjbbhmbhok), + "HIAKFDNFEEE_KFGLPPIMBIJ" => Some(Self::Kfglppimbij), + "HIAKFDNFEEE_BBADKCGPDHH" => Some(Self::Bbadkcgpdhh), + "HIAKFDNFEEE_DJLAKDJLOMH" => Some(Self::Djlakdjlomh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gadcedihkag { + Hioefjlmodf = 0, + Ojhdfgjifje = 1, +} +impl Gadcedihkag { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hioefjlmodf => "GADCEDIHKAG_HIOEFJLMODF", + Self::Ojhdfgjifje => "GADCEDIHKAG_OJHDFGJIFJE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GADCEDIHKAG_HIOEFJLMODF" => Some(Self::Hioefjlmodf), + "GADCEDIHKAG_OJHDFGJIFJE" => Some(Self::Ojhdfgjifje), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Epjddbgljgl { + Diogkmhkeaf = 0, +} +impl Epjddbgljgl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Diogkmhkeaf => "EPJDDBGLJGL_DIOGKMHKEAF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EPJDDBGLJGL_DIOGKMHKEAF" => Some(Self::Diogkmhkeaf), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hpbggcmccoe { + Gffcdhcpcgl = 0, + Khcppaningk = 1, + Hgnjenjkdlg = 2, + Ecnpbfggmpp = 3, + Jfaklomefle = 4, + Dffloibnngg = 5, + Iejoohamllm = 6, + Ancakacbfop = 7, + Bcalihkikan = 8, + Geiameniean = 9, + Emgcnlgnlbe = 10, + Dknjfagcdkp = 11, + Mofoendlian = 12, + Cjmdecipkmk = 13, +} +impl Hpbggcmccoe { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gffcdhcpcgl => "HPBGGCMCCOE_GFFCDHCPCGL", + Self::Khcppaningk => "HPBGGCMCCOE_KHCPPANINGK", + Self::Hgnjenjkdlg => "HPBGGCMCCOE_HGNJENJKDLG", + Self::Ecnpbfggmpp => "HPBGGCMCCOE_ECNPBFGGMPP", + Self::Jfaklomefle => "HPBGGCMCCOE_JFAKLOMEFLE", + Self::Dffloibnngg => "HPBGGCMCCOE_DFFLOIBNNGG", + Self::Iejoohamllm => "HPBGGCMCCOE_IEJOOHAMLLM", + Self::Ancakacbfop => "HPBGGCMCCOE_ANCAKACBFOP", + Self::Bcalihkikan => "HPBGGCMCCOE_BCALIHKIKAN", + Self::Geiameniean => "HPBGGCMCCOE_GEIAMENIEAN", + Self::Emgcnlgnlbe => "HPBGGCMCCOE_EMGCNLGNLBE", + Self::Dknjfagcdkp => "HPBGGCMCCOE_DKNJFAGCDKP", + Self::Mofoendlian => "HPBGGCMCCOE_MOFOENDLIAN", + Self::Cjmdecipkmk => "HPBGGCMCCOE_CJMDECIPKMK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HPBGGCMCCOE_GFFCDHCPCGL" => Some(Self::Gffcdhcpcgl), + "HPBGGCMCCOE_KHCPPANINGK" => Some(Self::Khcppaningk), + "HPBGGCMCCOE_HGNJENJKDLG" => Some(Self::Hgnjenjkdlg), + "HPBGGCMCCOE_ECNPBFGGMPP" => Some(Self::Ecnpbfggmpp), + "HPBGGCMCCOE_JFAKLOMEFLE" => Some(Self::Jfaklomefle), + "HPBGGCMCCOE_DFFLOIBNNGG" => Some(Self::Dffloibnngg), + "HPBGGCMCCOE_IEJOOHAMLLM" => Some(Self::Iejoohamllm), + "HPBGGCMCCOE_ANCAKACBFOP" => Some(Self::Ancakacbfop), + "HPBGGCMCCOE_BCALIHKIKAN" => Some(Self::Bcalihkikan), + "HPBGGCMCCOE_GEIAMENIEAN" => Some(Self::Geiameniean), + "HPBGGCMCCOE_EMGCNLGNLBE" => Some(Self::Emgcnlgnlbe), + "HPBGGCMCCOE_DKNJFAGCDKP" => Some(Self::Dknjfagcdkp), + "HPBGGCMCCOE_MOFOENDLIAN" => Some(Self::Mofoendlian), + "HPBGGCMCCOE_CJMDECIPKMK" => Some(Self::Cjmdecipkmk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pljkhhadhga { + RepairIconTypeNone = 0, + RepairIconTypeTb = 3, + RepairIconTypeRt = 5, + RepairIconTypeBr = 6, + RepairIconTypeBrt = 7, + RepairIconTypeTl = 9, + RepairIconTypeLb = 10, + RepairIconTypeTlb = 11, + RepairIconTypeLr = 12, + RepairIconTypeTlr = 13, + RepairIconTypeLbr = 14, + RepairIconTypeFull = 15, +} +impl Pljkhhadhga { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::RepairIconTypeNone => "PLJKHHADHGA_REPAIR_ICON_TYPE_NONE", + Self::RepairIconTypeTb => "PLJKHHADHGA_REPAIR_ICON_TYPE_TB", + Self::RepairIconTypeRt => "PLJKHHADHGA_REPAIR_ICON_TYPE_RT", + Self::RepairIconTypeBr => "PLJKHHADHGA_REPAIR_ICON_TYPE_BR", + Self::RepairIconTypeBrt => "PLJKHHADHGA_REPAIR_ICON_TYPE_BRT", + Self::RepairIconTypeTl => "PLJKHHADHGA_REPAIR_ICON_TYPE_TL", + Self::RepairIconTypeLb => "PLJKHHADHGA_REPAIR_ICON_TYPE_LB", + Self::RepairIconTypeTlb => "PLJKHHADHGA_REPAIR_ICON_TYPE_TLB", + Self::RepairIconTypeLr => "PLJKHHADHGA_REPAIR_ICON_TYPE_LR", + Self::RepairIconTypeTlr => "PLJKHHADHGA_REPAIR_ICON_TYPE_TLR", + Self::RepairIconTypeLbr => "PLJKHHADHGA_REPAIR_ICON_TYPE_LBR", + Self::RepairIconTypeFull => "PLJKHHADHGA_REPAIR_ICON_TYPE_FULL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PLJKHHADHGA_REPAIR_ICON_TYPE_NONE" => Some(Self::RepairIconTypeNone), + "PLJKHHADHGA_REPAIR_ICON_TYPE_TB" => Some(Self::RepairIconTypeTb), + "PLJKHHADHGA_REPAIR_ICON_TYPE_RT" => Some(Self::RepairIconTypeRt), + "PLJKHHADHGA_REPAIR_ICON_TYPE_BR" => Some(Self::RepairIconTypeBr), + "PLJKHHADHGA_REPAIR_ICON_TYPE_BRT" => Some(Self::RepairIconTypeBrt), + "PLJKHHADHGA_REPAIR_ICON_TYPE_TL" => Some(Self::RepairIconTypeTl), + "PLJKHHADHGA_REPAIR_ICON_TYPE_LB" => Some(Self::RepairIconTypeLb), + "PLJKHHADHGA_REPAIR_ICON_TYPE_TLB" => Some(Self::RepairIconTypeTlb), + "PLJKHHADHGA_REPAIR_ICON_TYPE_LR" => Some(Self::RepairIconTypeLr), + "PLJKHHADHGA_REPAIR_ICON_TYPE_TLR" => Some(Self::RepairIconTypeTlr), + "PLJKHHADHGA_REPAIR_ICON_TYPE_LBR" => Some(Self::RepairIconTypeLbr), + "PLJKHHADHGA_REPAIR_ICON_TYPE_FULL" => Some(Self::RepairIconTypeFull), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ikhiiabcnec { + Djepfogcmhi = 0, + Ldneijlpdgg = 1, + Phflolddmek = 2, +} +impl Ikhiiabcnec { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Djepfogcmhi => "IKHIIABCNEC_DJEPFOGCMHI", + Self::Ldneijlpdgg => "IKHIIABCNEC_LDNEIJLPDGG", + Self::Phflolddmek => "IKHIIABCNEC_PHFLOLDDMEK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IKHIIABCNEC_DJEPFOGCMHI" => Some(Self::Djepfogcmhi), + "IKHIIABCNEC_LDNEIJLPDGG" => Some(Self::Ldneijlpdgg), + "IKHIIABCNEC_PHFLOLDDMEK" => Some(Self::Phflolddmek), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bjblhkijalm { + Mappidobnoc = 0, + Lalphhpekfm = 1, + Hdplhnfepja = 2, +} +impl Bjblhkijalm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mappidobnoc => "BJBLHKIJALM_MAPPIDOBNOC", + Self::Lalphhpekfm => "BJBLHKIJALM_LALPHHPEKFM", + Self::Hdplhnfepja => "BJBLHKIJALM_HDPLHNFEPJA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BJBLHKIJALM_MAPPIDOBNOC" => Some(Self::Mappidobnoc), + "BJBLHKIJALM_LALPHHPEKFM" => Some(Self::Lalphhpekfm), + "BJBLHKIJALM_HDPLHNFEPJA" => Some(Self::Hdplhnfepja), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ilcbgempbog { + Iimhomkmfdk = 0, +} +impl Ilcbgempbog { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Iimhomkmfdk => "ILCBGEMPBOG_IIMHOMKMFDK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ILCBGEMPBOG_IIMHOMKMFDK" => Some(Self::Iimhomkmfdk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cdilahbgjjc { + Lajebkjmolo = 0, + Hcgoimljakb = 1, +} +impl Cdilahbgjjc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lajebkjmolo => "CDILAHBGJJC_LAJEBKJMOLO", + Self::Hcgoimljakb => "CDILAHBGJJC_HCGOIMLJAKB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CDILAHBGJJC_LAJEBKJMOLO" => Some(Self::Lajebkjmolo), + "CDILAHBGJJC_HCGOIMLJAKB" => Some(Self::Hcgoimljakb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kppkfafkkgd { + Akajaaighfm = 0, +} +impl Kppkfafkkgd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Akajaaighfm => "KPPKFAFKKGD_AKAJAAIGHFM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KPPKFAFKKGD_AKAJAAIGHFM" => Some(Self::Akajaaighfm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fggpnaabhon { + Cefnjgainjb = 0, + Ddbpjalbpjf = 1, + Ninjfmpamof = 2, +} +impl Fggpnaabhon { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cefnjgainjb => "FGGPNAABHON_CEFNJGAINJB", + Self::Ddbpjalbpjf => "FGGPNAABHON_DDBPJALBPJF", + Self::Ninjfmpamof => "FGGPNAABHON_NINJFMPAMOF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FGGPNAABHON_CEFNJGAINJB" => Some(Self::Cefnjgainjb), + "FGGPNAABHON_DDBPJALBPJF" => Some(Self::Ddbpjalbpjf), + "FGGPNAABHON_NINJFMPAMOF" => Some(Self::Ninjfmpamof), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jgonmdakfad { + AddCharacterModeByRobotId = 0, + AddCharacterModeByPlayer = 1, +} +impl Jgonmdakfad { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::AddCharacterModeByRobotId => { + "JGONMDAKFAD_ADD_CHARACTER_MODE_BY_ROBOT_ID" + } + Self::AddCharacterModeByPlayer => "JGONMDAKFAD_ADD_CHARACTER_MODE_BY_PLAYER", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JGONMDAKFAD_ADD_CHARACTER_MODE_BY_ROBOT_ID" => { + Some(Self::AddCharacterModeByRobotId) + } + "JGONMDAKFAD_ADD_CHARACTER_MODE_BY_PLAYER" => { + Some(Self::AddCharacterModeByPlayer) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum InteractTarget { + AamedmdghknHggpimnjbad = 0, + AamedmdghknLgjhbgodkbg = 1, + AamedmdghknCgonehjjdaa = 2, +} +impl InteractTarget { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::AamedmdghknHggpimnjbad => "AAMEDMDGHKN_HGGPIMNJBAD", + Self::AamedmdghknLgjhbgodkbg => "AAMEDMDGHKN_LGJHBGODKBG", + Self::AamedmdghknCgonehjjdaa => "AAMEDMDGHKN_CGONEHJJDAA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AAMEDMDGHKN_HGGPIMNJBAD" => Some(Self::AamedmdghknHggpimnjbad), + "AAMEDMDGHKN_LGJHBGODKBG" => Some(Self::AamedmdghknLgjhbgodkbg), + "AAMEDMDGHKN_CGONEHJJDAA" => Some(Self::AamedmdghknCgonehjjdaa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kpcpaijnadh { + ScriptHollowQuestTypeNone = 0, + ScriptHollowQuestTypeMain = 1, + ScriptHollowQuestTypeSide = 2, + ScriptHollowQuestTypeUrgent = 3, + ScriptHollowQuestTypeChallenge = 5, + ScriptHollowQuestTypeHollowZero = 6, + ScriptHollowQuestTypeSideAvatar = 7, + ScriptHollowQuestTypeBigWorld = 8, + ScriptHollowQuestTypeWeeklyBattle = 9, + ScriptHollowQuestTypeOnlyBattle = 10, + ScriptHollowQuestTypeWorldLevel = 11, + ScriptHollowQuestTypeHardMode = 12, +} +impl Kpcpaijnadh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ScriptHollowQuestTypeNone => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_NONE" + } + Self::ScriptHollowQuestTypeMain => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_MAIN" + } + Self::ScriptHollowQuestTypeSide => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_SIDE" + } + Self::ScriptHollowQuestTypeUrgent => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_URGENT" + } + Self::ScriptHollowQuestTypeChallenge => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_CHALLENGE" + } + Self::ScriptHollowQuestTypeHollowZero => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_HOLLOW_ZERO" + } + Self::ScriptHollowQuestTypeSideAvatar => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_SIDE_AVATAR" + } + Self::ScriptHollowQuestTypeBigWorld => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_BIG_WORLD" + } + Self::ScriptHollowQuestTypeWeeklyBattle => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_WEEKLY_BATTLE" + } + Self::ScriptHollowQuestTypeOnlyBattle => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_ONLY_BATTLE" + } + Self::ScriptHollowQuestTypeWorldLevel => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_WORLD_LEVEL" + } + Self::ScriptHollowQuestTypeHardMode => { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_HARD_MODE" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_NONE" => { + Some(Self::ScriptHollowQuestTypeNone) + } + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_MAIN" => { + Some(Self::ScriptHollowQuestTypeMain) + } + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_SIDE" => { + Some(Self::ScriptHollowQuestTypeSide) + } + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_URGENT" => { + Some(Self::ScriptHollowQuestTypeUrgent) + } + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_CHALLENGE" => { + Some(Self::ScriptHollowQuestTypeChallenge) + } + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_HOLLOW_ZERO" => { + Some(Self::ScriptHollowQuestTypeHollowZero) + } + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_SIDE_AVATAR" => { + Some(Self::ScriptHollowQuestTypeSideAvatar) + } + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_BIG_WORLD" => { + Some(Self::ScriptHollowQuestTypeBigWorld) + } + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_WEEKLY_BATTLE" => { + Some(Self::ScriptHollowQuestTypeWeeklyBattle) + } + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_ONLY_BATTLE" => { + Some(Self::ScriptHollowQuestTypeOnlyBattle) + } + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_WORLD_LEVEL" => { + Some(Self::ScriptHollowQuestTypeWorldLevel) + } + "KPCPAIJNADH_SCRIPT_HOLLOW_QUEST_TYPE_HARD_MODE" => { + Some(Self::ScriptHollowQuestTypeHardMode) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Npninnimkdj { + Cgnhejnpnhj = 0, + Nkbpddohgge = 1, +} +impl Npninnimkdj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cgnhejnpnhj => "NPNINNIMKDJ_CGNHEJNPNHJ", + Self::Nkbpddohgge => "NPNINNIMKDJ_NKBPDDOHGGE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NPNINNIMKDJ_CGNHEJNPNHJ" => Some(Self::Cgnhejnpnhj), + "NPNINNIMKDJ_NKBPDDOHGGE" => Some(Self::Nkbpddohgge), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ncnjalpnjji { + Iolngdaljhh = 0, + Kinjljgbbil = 1, + Iajnlkfbgjf = 2, + Enagaahhjmo = 3, + Mjppojikjkk = 4, + Djiaeeebhcj = 5, +} +impl Ncnjalpnjji { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Iolngdaljhh => "NCNJALPNJJI_IOLNGDALJHH", + Self::Kinjljgbbil => "NCNJALPNJJI_KINJLJGBBIL", + Self::Iajnlkfbgjf => "NCNJALPNJJI_IAJNLKFBGJF", + Self::Enagaahhjmo => "NCNJALPNJJI_ENAGAAHHJMO", + Self::Mjppojikjkk => "NCNJALPNJJI_MJPPOJIKJKK", + Self::Djiaeeebhcj => "NCNJALPNJJI_DJIAEEEBHCJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NCNJALPNJJI_IOLNGDALJHH" => Some(Self::Iolngdaljhh), + "NCNJALPNJJI_KINJLJGBBIL" => Some(Self::Kinjljgbbil), + "NCNJALPNJJI_IAJNLKFBGJF" => Some(Self::Iajnlkfbgjf), + "NCNJALPNJJI_ENAGAAHHJMO" => Some(Self::Enagaahhjmo), + "NCNJALPNJJI_MJPPOJIKJKK" => Some(Self::Mjppojikjkk), + "NCNJALPNJJI_DJIAEEEBHCJ" => Some(Self::Djiaeeebhcj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ebhcigibaog { + Bnklkkngcbg = 0, + Nnlbcaobdaa = 1, + Hemdofkomlj = 2, + Lakginnhdbp = 3, + Dnngflnepne = 4, + Fahpnjaddnm = 5, + Cfedjekabfh = 6, + Eknhninblkb = 7, +} +impl Ebhcigibaog { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bnklkkngcbg => "EBHCIGIBAOG_BNKLKKNGCBG", + Self::Nnlbcaobdaa => "EBHCIGIBAOG_NNLBCAOBDAA", + Self::Hemdofkomlj => "EBHCIGIBAOG_HEMDOFKOMLJ", + Self::Lakginnhdbp => "EBHCIGIBAOG_LAKGINNHDBP", + Self::Dnngflnepne => "EBHCIGIBAOG_DNNGFLNEPNE", + Self::Fahpnjaddnm => "EBHCIGIBAOG_FAHPNJADDNM", + Self::Cfedjekabfh => "EBHCIGIBAOG_CFEDJEKABFH", + Self::Eknhninblkb => "EBHCIGIBAOG_EKNHNINBLKB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EBHCIGIBAOG_BNKLKKNGCBG" => Some(Self::Bnklkkngcbg), + "EBHCIGIBAOG_NNLBCAOBDAA" => Some(Self::Nnlbcaobdaa), + "EBHCIGIBAOG_HEMDOFKOMLJ" => Some(Self::Hemdofkomlj), + "EBHCIGIBAOG_LAKGINNHDBP" => Some(Self::Lakginnhdbp), + "EBHCIGIBAOG_DNNGFLNEPNE" => Some(Self::Dnngflnepne), + "EBHCIGIBAOG_FAHPNJADDNM" => Some(Self::Fahpnjaddnm), + "EBHCIGIBAOG_CFEDJEKABFH" => Some(Self::Cfedjekabfh), + "EBHCIGIBAOG_EKNHNINBLKB" => Some(Self::Eknhninblkb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum PostEffectType { + PostEffectTypeNone = 0, + Glitch = 1, + VignetteEffect = 2, + ScreenEffect = 3, + RadialBlur = 4, + ColorAdjustments = 5, +} +impl PostEffectType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::PostEffectTypeNone => "PostEffectType_POST_EFFECT_TYPE_NONE", + Self::Glitch => "PostEffectType_GLITCH", + Self::VignetteEffect => "PostEffectType_VIGNETTE_EFFECT", + Self::ScreenEffect => "PostEffectType_SCREEN_EFFECT", + Self::RadialBlur => "PostEffectType_RADIAL_BLUR", + Self::ColorAdjustments => "PostEffectType_COLOR_ADJUSTMENTS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PostEffectType_POST_EFFECT_TYPE_NONE" => Some(Self::PostEffectTypeNone), + "PostEffectType_GLITCH" => Some(Self::Glitch), + "PostEffectType_VIGNETTE_EFFECT" => Some(Self::VignetteEffect), + "PostEffectType_SCREEN_EFFECT" => Some(Self::ScreenEffect), + "PostEffectType_RADIAL_BLUR" => Some(Self::RadialBlur), + "PostEffectType_COLOR_ADJUSTMENTS" => Some(Self::ColorAdjustments), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ongaoieljde { + Mojklhpehmd = 0, + Mpcnpnndihc = 1, + Pijpjmhjodg = 2, + Ekefpfpbcma = 3, + Ekhjhjhfmii = 4, + Odhbdnfjebf = 5, + Nmhehidofpd = 6, +} +impl Ongaoieljde { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mojklhpehmd => "ONGAOIELJDE_MOJKLHPEHMD", + Self::Mpcnpnndihc => "ONGAOIELJDE_MPCNPNNDIHC", + Self::Pijpjmhjodg => "ONGAOIELJDE_PIJPJMHJODG", + Self::Ekefpfpbcma => "ONGAOIELJDE_EKEFPFPBCMA", + Self::Ekhjhjhfmii => "ONGAOIELJDE_EKHJHJHFMII", + Self::Odhbdnfjebf => "ONGAOIELJDE_ODHBDNFJEBF", + Self::Nmhehidofpd => "ONGAOIELJDE_NMHEHIDOFPD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ONGAOIELJDE_MOJKLHPEHMD" => Some(Self::Mojklhpehmd), + "ONGAOIELJDE_MPCNPNNDIHC" => Some(Self::Mpcnpnndihc), + "ONGAOIELJDE_PIJPJMHJODG" => Some(Self::Pijpjmhjodg), + "ONGAOIELJDE_EKEFPFPBCMA" => Some(Self::Ekefpfpbcma), + "ONGAOIELJDE_EKHJHJHFMII" => Some(Self::Ekhjhjhfmii), + "ONGAOIELJDE_ODHBDNFJEBF" => Some(Self::Odhbdnfjebf), + "ONGAOIELJDE_NMHEHIDOFPD" => Some(Self::Nmhehidofpd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Idbngboahhc { + Jomcfkhhalk = 0, + Fdpfhkcinbd = 1, + Hhfglfgamal = 2, + Flppmnooali = 3, + Dfgigoeiacn = 4, + Endipmggfno = 5, +} +impl Idbngboahhc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jomcfkhhalk => "IDBNGBOAHHC_JOMCFKHHALK", + Self::Fdpfhkcinbd => "IDBNGBOAHHC_FDPFHKCINBD", + Self::Hhfglfgamal => "IDBNGBOAHHC_HHFGLFGAMAL", + Self::Flppmnooali => "IDBNGBOAHHC_FLPPMNOOALI", + Self::Dfgigoeiacn => "IDBNGBOAHHC_DFGIGOEIACN", + Self::Endipmggfno => "IDBNGBOAHHC_ENDIPMGGFNO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IDBNGBOAHHC_JOMCFKHHALK" => Some(Self::Jomcfkhhalk), + "IDBNGBOAHHC_FDPFHKCINBD" => Some(Self::Fdpfhkcinbd), + "IDBNGBOAHHC_HHFGLFGAMAL" => Some(Self::Hhfglfgamal), + "IDBNGBOAHHC_FLPPMNOOALI" => Some(Self::Flppmnooali), + "IDBNGBOAHHC_DFGIGOEIACN" => Some(Self::Dfgigoeiacn), + "IDBNGBOAHHC_ENDIPMGGFNO" => Some(Self::Endipmggfno), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Djgifhkmfmf { + Hcijlciiiep = 0, + Cfhmaekoail = 1, + Kepdfnkldnh = 2, +} +impl Djgifhkmfmf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hcijlciiiep => "DJGIFHKMFMF_HCIJLCIIIEP", + Self::Cfhmaekoail => "DJGIFHKMFMF_CFHMAEKOAIL", + Self::Kepdfnkldnh => "DJGIFHKMFMF_KEPDFNKLDNH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DJGIFHKMFMF_HCIJLCIIIEP" => Some(Self::Hcijlciiiep), + "DJGIFHKMFMF_CFHMAEKOAIL" => Some(Self::Cfhmaekoail), + "DJGIFHKMFMF_KEPDFNKLDNH" => Some(Self::Kepdfnkldnh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ecjehepdjmo { + Kebdaioeild = 0, + Eeecncbplcg = 1, + Ibneoedddpk = 2, + Gimacofoaip = 3, + Cipfaiffnge = 4, + Nappgfkpoga = 5, +} +impl Ecjehepdjmo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kebdaioeild => "ECJEHEPDJMO_KEBDAIOEILD", + Self::Eeecncbplcg => "ECJEHEPDJMO_EEECNCBPLCG", + Self::Ibneoedddpk => "ECJEHEPDJMO_IBNEOEDDDPK", + Self::Gimacofoaip => "ECJEHEPDJMO_GIMACOFOAIP", + Self::Cipfaiffnge => "ECJEHEPDJMO_CIPFAIFFNGE", + Self::Nappgfkpoga => "ECJEHEPDJMO_NAPPGFKPOGA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ECJEHEPDJMO_KEBDAIOEILD" => Some(Self::Kebdaioeild), + "ECJEHEPDJMO_EEECNCBPLCG" => Some(Self::Eeecncbplcg), + "ECJEHEPDJMO_IBNEOEDDDPK" => Some(Self::Ibneoedddpk), + "ECJEHEPDJMO_GIMACOFOAIP" => Some(Self::Gimacofoaip), + "ECJEHEPDJMO_CIPFAIFFNGE" => Some(Self::Cipfaiffnge), + "ECJEHEPDJMO_NAPPGFKPOGA" => Some(Self::Nappgfkpoga), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jlknopjbode { + ListVariableTypeNone = 0, + ListVariableTypeInt = 1, + ListVariableTypeString = 2, + ListVariableTypeVector2 = 3, +} +impl Jlknopjbode { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ListVariableTypeNone => "JLKNOPJBODE_LIST_VARIABLE_TYPE_NONE", + Self::ListVariableTypeInt => "JLKNOPJBODE_LIST_VARIABLE_TYPE_INT", + Self::ListVariableTypeString => "JLKNOPJBODE_LIST_VARIABLE_TYPE_STRING", + Self::ListVariableTypeVector2 => "JLKNOPJBODE_LIST_VARIABLE_TYPE_VECTOR2", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JLKNOPJBODE_LIST_VARIABLE_TYPE_NONE" => Some(Self::ListVariableTypeNone), + "JLKNOPJBODE_LIST_VARIABLE_TYPE_INT" => Some(Self::ListVariableTypeInt), + "JLKNOPJBODE_LIST_VARIABLE_TYPE_STRING" => Some(Self::ListVariableTypeString), + "JLKNOPJBODE_LIST_VARIABLE_TYPE_VECTOR2" => { + Some(Self::ListVariableTypeVector2) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hhdfpgfhppc { + LayerTypeNone = 0, + HollowOut = 1, + NonHollowOut = 2, + MultiHollowOut = 3, +} +impl Hhdfpgfhppc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::LayerTypeNone => "HHDFPGFHPPC_LAYER_TYPE_NONE", + Self::HollowOut => "HHDFPGFHPPC_HOLLOW_OUT", + Self::NonHollowOut => "HHDFPGFHPPC_NON_HOLLOW_OUT", + Self::MultiHollowOut => "HHDFPGFHPPC_MULTI_HOLLOW_OUT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HHDFPGFHPPC_LAYER_TYPE_NONE" => Some(Self::LayerTypeNone), + "HHDFPGFHPPC_HOLLOW_OUT" => Some(Self::HollowOut), + "HHDFPGFHPPC_NON_HOLLOW_OUT" => Some(Self::NonHollowOut), + "HHDFPGFHPPC_MULTI_HOLLOW_OUT" => Some(Self::MultiHollowOut), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ilbcholfpno { + Ckohlebpcel = 0, +} +impl Ilbcholfpno { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ckohlebpcel => "ILBCHOLFPNO_CKOHLEBPCEL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ILBCHOLFPNO_CKOHLEBPCEL" => Some(Self::Ckohlebpcel), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ehghjdklbbb { + Dfefbpaekkf = 0, + Aihicmiclhl = 1, + Jgllaloiikm = 2, + Onddcnineka = 4, + Eghmkdkkfmj = 8, +} +impl Ehghjdklbbb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dfefbpaekkf => "EHGHJDKLBBB_DFEFBPAEKKF", + Self::Aihicmiclhl => "EHGHJDKLBBB_AIHICMICLHL", + Self::Jgllaloiikm => "EHGHJDKLBBB_JGLLALOIIKM", + Self::Onddcnineka => "EHGHJDKLBBB_ONDDCNINEKA", + Self::Eghmkdkkfmj => "EHGHJDKLBBB_EGHMKDKKFMJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EHGHJDKLBBB_DFEFBPAEKKF" => Some(Self::Dfefbpaekkf), + "EHGHJDKLBBB_AIHICMICLHL" => Some(Self::Aihicmiclhl), + "EHGHJDKLBBB_JGLLALOIIKM" => Some(Self::Jgllaloiikm), + "EHGHJDKLBBB_ONDDCNINEKA" => Some(Self::Onddcnineka), + "EHGHJDKLBBB_EGHMKDKKFMJ" => Some(Self::Eghmkdkkfmj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dfggnlenhmh { + Nfjfohjfdlc = 0, + Dmlihgbdbmk = 1, +} +impl Dfggnlenhmh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nfjfohjfdlc => "DFGGNLENHMH_NFJFOHJFDLC", + Self::Dmlihgbdbmk => "DFGGNLENHMH_DMLIHGBDBMK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DFGGNLENHMH_NFJFOHJFDLC" => Some(Self::Nfjfohjfdlc), + "DFGGNLENHMH_DMLIHGBDBMK" => Some(Self::Dmlihgbdbmk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Facabkjenmi { + Jilpiegfgcj = 0, + Bnlfeklkbii = 1, + Bgocbmidgnk = 2, + Pkkfncdonia = 3, + Bnajndldcpl = 4, + Eejpmfpejia = 5, + Bnbladgfbbd = 6, + Efnfbifkihl = 7, + Dlghhncflno = 8, + Epdidjenkln = 100, + Fbfimeeoeif = 101, + Gmfbfgbjehe = 102, + Icamoeelbdc = 103, + Acjgailimol = 104, + Nminjcjjihh = 105, + Macigpkgond = 106, + Hgjdojafhfl = 107, + Ahobdhmfllb = 108, + Pkkccaiobhe = 109, +} +impl Facabkjenmi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jilpiegfgcj => "FACABKJENMI_JILPIEGFGCJ", + Self::Bnlfeklkbii => "FACABKJENMI_BNLFEKLKBII", + Self::Bgocbmidgnk => "FACABKJENMI_BGOCBMIDGNK", + Self::Pkkfncdonia => "FACABKJENMI_PKKFNCDONIA", + Self::Bnajndldcpl => "FACABKJENMI_BNAJNDLDCPL", + Self::Eejpmfpejia => "FACABKJENMI_EEJPMFPEJIA", + Self::Bnbladgfbbd => "FACABKJENMI_BNBLADGFBBD", + Self::Efnfbifkihl => "FACABKJENMI_EFNFBIFKIHL", + Self::Dlghhncflno => "FACABKJENMI_DLGHHNCFLNO", + Self::Epdidjenkln => "FACABKJENMI_EPDIDJENKLN", + Self::Fbfimeeoeif => "FACABKJENMI_FBFIMEEOEIF", + Self::Gmfbfgbjehe => "FACABKJENMI_GMFBFGBJEHE", + Self::Icamoeelbdc => "FACABKJENMI_ICAMOEELBDC", + Self::Acjgailimol => "FACABKJENMI_ACJGAILIMOL", + Self::Nminjcjjihh => "FACABKJENMI_NMINJCJJIHH", + Self::Macigpkgond => "FACABKJENMI_MACIGPKGOND", + Self::Hgjdojafhfl => "FACABKJENMI_HGJDOJAFHFL", + Self::Ahobdhmfllb => "FACABKJENMI_AHOBDHMFLLB", + Self::Pkkccaiobhe => "FACABKJENMI_PKKCCAIOBHE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FACABKJENMI_JILPIEGFGCJ" => Some(Self::Jilpiegfgcj), + "FACABKJENMI_BNLFEKLKBII" => Some(Self::Bnlfeklkbii), + "FACABKJENMI_BGOCBMIDGNK" => Some(Self::Bgocbmidgnk), + "FACABKJENMI_PKKFNCDONIA" => Some(Self::Pkkfncdonia), + "FACABKJENMI_BNAJNDLDCPL" => Some(Self::Bnajndldcpl), + "FACABKJENMI_EEJPMFPEJIA" => Some(Self::Eejpmfpejia), + "FACABKJENMI_BNBLADGFBBD" => Some(Self::Bnbladgfbbd), + "FACABKJENMI_EFNFBIFKIHL" => Some(Self::Efnfbifkihl), + "FACABKJENMI_DLGHHNCFLNO" => Some(Self::Dlghhncflno), + "FACABKJENMI_EPDIDJENKLN" => Some(Self::Epdidjenkln), + "FACABKJENMI_FBFIMEEOEIF" => Some(Self::Fbfimeeoeif), + "FACABKJENMI_GMFBFGBJEHE" => Some(Self::Gmfbfgbjehe), + "FACABKJENMI_ICAMOEELBDC" => Some(Self::Icamoeelbdc), + "FACABKJENMI_ACJGAILIMOL" => Some(Self::Acjgailimol), + "FACABKJENMI_NMINJCJJIHH" => Some(Self::Nminjcjjihh), + "FACABKJENMI_MACIGPKGOND" => Some(Self::Macigpkgond), + "FACABKJENMI_HGJDOJAFHFL" => Some(Self::Hgjdojafhfl), + "FACABKJENMI_AHOBDHMFLLB" => Some(Self::Ahobdhmfllb), + "FACABKJENMI_PKKCCAIOBHE" => Some(Self::Pkkccaiobhe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Oomklpfgpmm { + Gfngmdjfmde = 0, + Kfdolkmgcel = 1, + Engmcaincim = 2, +} +impl Oomklpfgpmm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gfngmdjfmde => "OOMKLPFGPMM_GFNGMDJFMDE", + Self::Kfdolkmgcel => "OOMKLPFGPMM_KFDOLKMGCEL", + Self::Engmcaincim => "OOMKLPFGPMM_ENGMCAINCIM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OOMKLPFGPMM_GFNGMDJFMDE" => Some(Self::Gfngmdjfmde), + "OOMKLPFGPMM_KFDOLKMGCEL" => Some(Self::Kfdolkmgcel), + "OOMKLPFGPMM_ENGMCAINCIM" => Some(Self::Engmcaincim), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ffkemlahdff { + Pnbhiljfmcm = 0, + Lkjdnmfdjlp = 1, + Kfmmegdmcfl = 2, + Pnbikcnaejh = 3, + Ogoekddojif = 4, +} +impl Ffkemlahdff { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pnbhiljfmcm => "FFKEMLAHDFF_PNBHILJFMCM", + Self::Lkjdnmfdjlp => "FFKEMLAHDFF_LKJDNMFDJLP", + Self::Kfmmegdmcfl => "FFKEMLAHDFF_KFMMEGDMCFL", + Self::Pnbikcnaejh => "FFKEMLAHDFF_PNBIKCNAEJH", + Self::Ogoekddojif => "FFKEMLAHDFF_OGOEKDDOJIF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FFKEMLAHDFF_PNBHILJFMCM" => Some(Self::Pnbhiljfmcm), + "FFKEMLAHDFF_LKJDNMFDJLP" => Some(Self::Lkjdnmfdjlp), + "FFKEMLAHDFF_KFMMEGDMCFL" => Some(Self::Kfmmegdmcfl), + "FFKEMLAHDFF_PNBIKCNAEJH" => Some(Self::Pnbikcnaejh), + "FFKEMLAHDFF_OGOEKDDOJIF" => Some(Self::Ogoekddojif), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lmnnachndam { + Card = 0, + HollowItem = 6, +} +impl Lmnnachndam { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Card => "LMNNACHNDAM_CARD", + Self::HollowItem => "LMNNACHNDAM_HOLLOW_ITEM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LMNNACHNDAM_CARD" => Some(Self::Card), + "LMNNACHNDAM_HOLLOW_ITEM" => Some(Self::HollowItem), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ilbkoogigck { + Ipphijcbjcb = 0, + Lfgkibafkpg = 1, + Keooifmapfe = 2, +} +impl Ilbkoogigck { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ipphijcbjcb => "ILBKOOGIGCK_IPPHIJCBJCB", + Self::Lfgkibafkpg => "ILBKOOGIGCK_LFGKIBAFKPG", + Self::Keooifmapfe => "ILBKOOGIGCK_KEOOIFMAPFE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ILBKOOGIGCK_IPPHIJCBJCB" => Some(Self::Ipphijcbjcb), + "ILBKOOGIGCK_LFGKIBAFKPG" => Some(Self::Lfgkibafkpg), + "ILBKOOGIGCK_KEOOIFMAPFE" => Some(Self::Keooifmapfe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Npagfpdlcdp { + Hgookmfmdpe = 0, + Anellcpelni = 1, + Hjgoegkcjff = 2, + Fkdgebbjbno = 3, + Oeodgfkiblh = 4, + Jlphhhcohfn = 5, + Lidfoakpdlh = 6, + Clckmobcfhd = 7, +} +impl Npagfpdlcdp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hgookmfmdpe => "NPAGFPDLCDP_HGOOKMFMDPE", + Self::Anellcpelni => "NPAGFPDLCDP_ANELLCPELNI", + Self::Hjgoegkcjff => "NPAGFPDLCDP_HJGOEGKCJFF", + Self::Fkdgebbjbno => "NPAGFPDLCDP_FKDGEBBJBNO", + Self::Oeodgfkiblh => "NPAGFPDLCDP_OEODGFKIBLH", + Self::Jlphhhcohfn => "NPAGFPDLCDP_JLPHHHCOHFN", + Self::Lidfoakpdlh => "NPAGFPDLCDP_LIDFOAKPDLH", + Self::Clckmobcfhd => "NPAGFPDLCDP_CLCKMOBCFHD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NPAGFPDLCDP_HGOOKMFMDPE" => Some(Self::Hgookmfmdpe), + "NPAGFPDLCDP_ANELLCPELNI" => Some(Self::Anellcpelni), + "NPAGFPDLCDP_HJGOEGKCJFF" => Some(Self::Hjgoegkcjff), + "NPAGFPDLCDP_FKDGEBBJBNO" => Some(Self::Fkdgebbjbno), + "NPAGFPDLCDP_OEODGFKIBLH" => Some(Self::Oeodgfkiblh), + "NPAGFPDLCDP_JLPHHHCOHFN" => Some(Self::Jlphhhcohfn), + "NPAGFPDLCDP_LIDFOAKPDLH" => Some(Self::Lidfoakpdlh), + "NPAGFPDLCDP_CLCKMOBCFHD" => Some(Self::Clckmobcfhd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ebmapglpkia { + Efpiagoalpn = 0, + Bbeenmclbgo = 2, + Lppfoiiibal = 3, + Ibnhlickogo = 4, + Bpigkjcppgk = 5, +} +impl Ebmapglpkia { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Efpiagoalpn => "EBMAPGLPKIA_EFPIAGOALPN", + Self::Bbeenmclbgo => "EBMAPGLPKIA_BBEENMCLBGO", + Self::Lppfoiiibal => "EBMAPGLPKIA_LPPFOIIIBAL", + Self::Ibnhlickogo => "EBMAPGLPKIA_IBNHLICKOGO", + Self::Bpigkjcppgk => "EBMAPGLPKIA_BPIGKJCPPGK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EBMAPGLPKIA_EFPIAGOALPN" => Some(Self::Efpiagoalpn), + "EBMAPGLPKIA_BBEENMCLBGO" => Some(Self::Bbeenmclbgo), + "EBMAPGLPKIA_LPPFOIIIBAL" => Some(Self::Lppfoiiibal), + "EBMAPGLPKIA_IBNHLICKOGO" => Some(Self::Ibnhlickogo), + "EBMAPGLPKIA_BPIGKJCPPGK" => Some(Self::Bpigkjcppgk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cohiflbijge { + Oijaihgopki = 0, + Inealmnjmld = 1, +} +impl Cohiflbijge { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Oijaihgopki => "COHIFLBIJGE_OIJAIHGOPKI", + Self::Inealmnjmld => "COHIFLBIJGE_INEALMNJMLD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "COHIFLBIJGE_OIJAIHGOPKI" => Some(Self::Oijaihgopki), + "COHIFLBIJGE_INEALMNJMLD" => Some(Self::Inealmnjmld), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ocbjakcmhml { + Hihffjbkdbe = 0, +} +impl Ocbjakcmhml { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hihffjbkdbe => "OCBJAKCMHML_HIHFFJBKDBE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OCBJAKCMHML_HIHFFJBKDBE" => Some(Self::Hihffjbkdbe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hnhkheeaiel { + Dpjahcelaok = 0, + Mdljppembna = 1, + Ajiecocdjkb = 2, +} +impl Hnhkheeaiel { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dpjahcelaok => "HNHKHEEAIEL_DPJAHCELAOK", + Self::Mdljppembna => "HNHKHEEAIEL_MDLJPPEMBNA", + Self::Ajiecocdjkb => "HNHKHEEAIEL_AJIECOCDJKB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HNHKHEEAIEL_DPJAHCELAOK" => Some(Self::Dpjahcelaok), + "HNHKHEEAIEL_MDLJPPEMBNA" => Some(Self::Mdljppembna), + "HNHKHEEAIEL_AJIECOCDJKB" => Some(Self::Ajiecocdjkb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cobbodapeek { + Piphiopidkk = 0, + Kggeegjmjbl = 1, + Pdkdgoppblj = 2, + Hhkhagdhnkh = 3, + Cpcacmliifk = 4, + Okdgkjfdike = 5, + Pabclfdakog = 6, +} +impl Cobbodapeek { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Piphiopidkk => "COBBODAPEEK_PIPHIOPIDKK", + Self::Kggeegjmjbl => "COBBODAPEEK_KGGEEGJMJBL", + Self::Pdkdgoppblj => "COBBODAPEEK_PDKDGOPPBLJ", + Self::Hhkhagdhnkh => "COBBODAPEEK_HHKHAGDHNKH", + Self::Cpcacmliifk => "COBBODAPEEK_CPCACMLIIFK", + Self::Okdgkjfdike => "COBBODAPEEK_OKDGKJFDIKE", + Self::Pabclfdakog => "COBBODAPEEK_PABCLFDAKOG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "COBBODAPEEK_PIPHIOPIDKK" => Some(Self::Piphiopidkk), + "COBBODAPEEK_KGGEEGJMJBL" => Some(Self::Kggeegjmjbl), + "COBBODAPEEK_PDKDGOPPBLJ" => Some(Self::Pdkdgoppblj), + "COBBODAPEEK_HHKHAGDHNKH" => Some(Self::Hhkhagdhnkh), + "COBBODAPEEK_CPCACMLIIFK" => Some(Self::Cpcacmliifk), + "COBBODAPEEK_OKDGKJFDIKE" => Some(Self::Okdgkjfdike), + "COBBODAPEEK_PABCLFDAKOG" => Some(Self::Pabclfdakog), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Anfnbfkllbj { + Jmibfpicooa = 0, + Hnpbdadfpbh = 1, + Fealdmnjphc = 2, + Aiacpfigphk = 3, + Ohibaomnpoc = 4, +} +impl Anfnbfkllbj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jmibfpicooa => "ANFNBFKLLBJ_JMIBFPICOOA", + Self::Hnpbdadfpbh => "ANFNBFKLLBJ_HNPBDADFPBH", + Self::Fealdmnjphc => "ANFNBFKLLBJ_FEALDMNJPHC", + Self::Aiacpfigphk => "ANFNBFKLLBJ_AIACPFIGPHK", + Self::Ohibaomnpoc => "ANFNBFKLLBJ_OHIBAOMNPOC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ANFNBFKLLBJ_JMIBFPICOOA" => Some(Self::Jmibfpicooa), + "ANFNBFKLLBJ_HNPBDADFPBH" => Some(Self::Hnpbdadfpbh), + "ANFNBFKLLBJ_FEALDMNJPHC" => Some(Self::Fealdmnjphc), + "ANFNBFKLLBJ_AIACPFIGPHK" => Some(Self::Aiacpfigphk), + "ANFNBFKLLBJ_OHIBAOMNPOC" => Some(Self::Ohibaomnpoc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Looikkhbemc { + Chjknlljldh = 0, + Hjepakibgdn = 1, +} +impl Looikkhbemc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Chjknlljldh => "LOOIKKHBEMC_CHJKNLLJLDH", + Self::Hjepakibgdn => "LOOIKKHBEMC_HJEPAKIBGDN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LOOIKKHBEMC_CHJKNLLJLDH" => Some(Self::Chjknlljldh), + "LOOIKKHBEMC_HJEPAKIBGDN" => Some(Self::Hjepakibgdn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mbokepeockj { + ActivityBubbleStateNone = 0, + ActivityBubbleStateProcess = 1, + ActivityBubbleStateReward = 2, + ActivityBubbleStateNew = 3, +} +impl Mbokepeockj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ActivityBubbleStateNone => "MBOKEPEOCKJ_ACTIVITY_BUBBLE_STATE_NONE", + Self::ActivityBubbleStateProcess => { + "MBOKEPEOCKJ_ACTIVITY_BUBBLE_STATE_PROCESS" + } + Self::ActivityBubbleStateReward => "MBOKEPEOCKJ_ACTIVITY_BUBBLE_STATE_REWARD", + Self::ActivityBubbleStateNew => "MBOKEPEOCKJ_ACTIVITY_BUBBLE_STATE_NEW", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MBOKEPEOCKJ_ACTIVITY_BUBBLE_STATE_NONE" => { + Some(Self::ActivityBubbleStateNone) + } + "MBOKEPEOCKJ_ACTIVITY_BUBBLE_STATE_PROCESS" => { + Some(Self::ActivityBubbleStateProcess) + } + "MBOKEPEOCKJ_ACTIVITY_BUBBLE_STATE_REWARD" => { + Some(Self::ActivityBubbleStateReward) + } + "MBOKEPEOCKJ_ACTIVITY_BUBBLE_STATE_NEW" => Some(Self::ActivityBubbleStateNew), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pocnnhcbpnc { + Kgmnfaaopmd = 0, + Jbhmnjfdpnc = 1, + Hfgjifioigg = 2, + Jgjhhdemiel = 3, + Dkmgcekjjlb = 4, + Aencpoegodl = 5, +} +impl Pocnnhcbpnc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kgmnfaaopmd => "POCNNHCBPNC_KGMNFAAOPMD", + Self::Jbhmnjfdpnc => "POCNNHCBPNC_JBHMNJFDPNC", + Self::Hfgjifioigg => "POCNNHCBPNC_HFGJIFIOIGG", + Self::Jgjhhdemiel => "POCNNHCBPNC_JGJHHDEMIEL", + Self::Dkmgcekjjlb => "POCNNHCBPNC_DKMGCEKJJLB", + Self::Aencpoegodl => "POCNNHCBPNC_AENCPOEGODL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "POCNNHCBPNC_KGMNFAAOPMD" => Some(Self::Kgmnfaaopmd), + "POCNNHCBPNC_JBHMNJFDPNC" => Some(Self::Jbhmnjfdpnc), + "POCNNHCBPNC_HFGJIFIOIGG" => Some(Self::Hfgjifioigg), + "POCNNHCBPNC_JGJHHDEMIEL" => Some(Self::Jgjhhdemiel), + "POCNNHCBPNC_DKMGCEKJJLB" => Some(Self::Dkmgcekjjlb), + "POCNNHCBPNC_AENCPOEGODL" => Some(Self::Aencpoegodl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bcbfjikmaao { + Ajoclgjgdpd = 0, + Hlmipgifhcg = 1, + Omfcmkodfej = 2, +} +impl Bcbfjikmaao { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ajoclgjgdpd => "BCBFJIKMAAO_AJOCLGJGDPD", + Self::Hlmipgifhcg => "BCBFJIKMAAO_HLMIPGIFHCG", + Self::Omfcmkodfej => "BCBFJIKMAAO_OMFCMKODFEJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BCBFJIKMAAO_AJOCLGJGDPD" => Some(Self::Ajoclgjgdpd), + "BCBFJIKMAAO_HLMIPGIFHCG" => Some(Self::Hlmipgifhcg), + "BCBFJIKMAAO_OMFCMKODFEJ" => Some(Self::Omfcmkodfej), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Faghiiplpfo { + Oachacmkolj = 0, + Jnfckbgbohp = 1, + Ahcaooijojb = 2, +} +impl Faghiiplpfo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Oachacmkolj => "FAGHIIPLPFO_OACHACMKOLJ", + Self::Jnfckbgbohp => "FAGHIIPLPFO_JNFCKBGBOHP", + Self::Ahcaooijojb => "FAGHIIPLPFO_AHCAOOIJOJB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FAGHIIPLPFO_OACHACMKOLJ" => Some(Self::Oachacmkolj), + "FAGHIIPLPFO_JNFCKBGBOHP" => Some(Self::Jnfckbgbohp), + "FAGHIIPLPFO_AHCAOOIJOJB" => Some(Self::Ahcaooijojb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Oagplkmgold { + Fkjkcidcfbj = 0, + Enlppmabbbk = 1, + Mfbdfjgppmo = 2, +} +impl Oagplkmgold { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fkjkcidcfbj => "OAGPLKMGOLD_FKJKCIDCFBJ", + Self::Enlppmabbbk => "OAGPLKMGOLD_ENLPPMABBBK", + Self::Mfbdfjgppmo => "OAGPLKMGOLD_MFBDFJGPPMO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OAGPLKMGOLD_FKJKCIDCFBJ" => Some(Self::Fkjkcidcfbj), + "OAGPLKMGOLD_ENLPPMABBBK" => Some(Self::Enlppmabbbk), + "OAGPLKMGOLD_MFBDFJGPPMO" => Some(Self::Mfbdfjgppmo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kjlfiflbjkd { + Cahjpcibnhl = 0, +} +impl Kjlfiflbjkd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cahjpcibnhl => "KJLFIFLBJKD_CAHJPCIBNHL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KJLFIFLBJKD_CAHJPCIBNHL" => Some(Self::Cahjpcibnhl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nmeibaigppo { + Ipgppfdnkab = 0, + Gfalbcebmpe = 1, + Nninkfofnhe = 2, + Bedfhkjdiap = 3, +} +impl Nmeibaigppo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ipgppfdnkab => "NMEIBAIGPPO_IPGPPFDNKAB", + Self::Gfalbcebmpe => "NMEIBAIGPPO_GFALBCEBMPE", + Self::Nninkfofnhe => "NMEIBAIGPPO_NNINKFOFNHE", + Self::Bedfhkjdiap => "NMEIBAIGPPO_BEDFHKJDIAP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NMEIBAIGPPO_IPGPPFDNKAB" => Some(Self::Ipgppfdnkab), + "NMEIBAIGPPO_GFALBCEBMPE" => Some(Self::Gfalbcebmpe), + "NMEIBAIGPPO_NNINKFOFNHE" => Some(Self::Nninkfofnhe), + "NMEIBAIGPPO_BEDFHKJDIAP" => Some(Self::Bedfhkjdiap), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lefbafaajhf { + Jbjffogkabc = 0, +} +impl Lefbafaajhf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jbjffogkabc => "LEFBAFAAJHF_JBJFFOGKABC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LEFBAFAAJHF_JBJFFOGKABC" => Some(Self::Jbjffogkabc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nppgcedpkfl { + Nkpajmjnaed = 0, + Nhkgebcjhoj = 1, + Bbmhpkceckn = 2, + Jjoiipdpaae = 3, + Ogbdfonlpbi = 4, + Ohfgdjofbef = 5, +} +impl Nppgcedpkfl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nkpajmjnaed => "NPPGCEDPKFL_NKPAJMJNAED", + Self::Nhkgebcjhoj => "NPPGCEDPKFL_NHKGEBCJHOJ", + Self::Bbmhpkceckn => "NPPGCEDPKFL_BBMHPKCECKN", + Self::Jjoiipdpaae => "NPPGCEDPKFL_JJOIIPDPAAE", + Self::Ogbdfonlpbi => "NPPGCEDPKFL_OGBDFONLPBI", + Self::Ohfgdjofbef => "NPPGCEDPKFL_OHFGDJOFBEF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NPPGCEDPKFL_NKPAJMJNAED" => Some(Self::Nkpajmjnaed), + "NPPGCEDPKFL_NHKGEBCJHOJ" => Some(Self::Nhkgebcjhoj), + "NPPGCEDPKFL_BBMHPKCECKN" => Some(Self::Bbmhpkceckn), + "NPPGCEDPKFL_JJOIIPDPAAE" => Some(Self::Jjoiipdpaae), + "NPPGCEDPKFL_OGBDFONLPBI" => Some(Self::Ogbdfonlpbi), + "NPPGCEDPKFL_OHFGDJOFBEF" => Some(Self::Ohfgdjofbef), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fmjkkdiedob { + Ilefkgmnheh = 0, + Mkabaoadnnp = 1, + Gonpohlljbg = 2, + Bbcddmkicao = 3, + Nkgkgogidlo = 4, + Abihfghcfkp = 5, + Hbmioojlbih = 6, + Phhlehcljmc = 7, +} +impl Fmjkkdiedob { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ilefkgmnheh => "FMJKKDIEDOB_ILEFKGMNHEH", + Self::Mkabaoadnnp => "FMJKKDIEDOB_MKABAOADNNP", + Self::Gonpohlljbg => "FMJKKDIEDOB_GONPOHLLJBG", + Self::Bbcddmkicao => "FMJKKDIEDOB_BBCDDMKICAO", + Self::Nkgkgogidlo => "FMJKKDIEDOB_NKGKGOGIDLO", + Self::Abihfghcfkp => "FMJKKDIEDOB_ABIHFGHCFKP", + Self::Hbmioojlbih => "FMJKKDIEDOB_HBMIOOJLBIH", + Self::Phhlehcljmc => "FMJKKDIEDOB_PHHLEHCLJMC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FMJKKDIEDOB_ILEFKGMNHEH" => Some(Self::Ilefkgmnheh), + "FMJKKDIEDOB_MKABAOADNNP" => Some(Self::Mkabaoadnnp), + "FMJKKDIEDOB_GONPOHLLJBG" => Some(Self::Gonpohlljbg), + "FMJKKDIEDOB_BBCDDMKICAO" => Some(Self::Bbcddmkicao), + "FMJKKDIEDOB_NKGKGOGIDLO" => Some(Self::Nkgkgogidlo), + "FMJKKDIEDOB_ABIHFGHCFKP" => Some(Self::Abihfghcfkp), + "FMJKKDIEDOB_HBMIOOJLBIH" => Some(Self::Hbmioojlbih), + "FMJKKDIEDOB_PHHLEHCLJMC" => Some(Self::Phhlehcljmc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fcigojgmbhg { + ChangeCharacterModeByAvatarId = 0, + ChangeCharacterModeByPos = 2, + ChangeCharacterModeByRandom = 3, + ChangeCharacterModeByRobotId = 4, +} +impl Fcigojgmbhg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ChangeCharacterModeByAvatarId => { + "FCIGOJGMBHG_CHANGE_CHARACTER_MODE_BY_AVATAR_ID" + } + Self::ChangeCharacterModeByPos => "FCIGOJGMBHG_CHANGE_CHARACTER_MODE_BY_POS", + Self::ChangeCharacterModeByRandom => { + "FCIGOJGMBHG_CHANGE_CHARACTER_MODE_BY_RANDOM" + } + Self::ChangeCharacterModeByRobotId => { + "FCIGOJGMBHG_CHANGE_CHARACTER_MODE_BY_ROBOT_ID" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FCIGOJGMBHG_CHANGE_CHARACTER_MODE_BY_AVATAR_ID" => { + Some(Self::ChangeCharacterModeByAvatarId) + } + "FCIGOJGMBHG_CHANGE_CHARACTER_MODE_BY_POS" => { + Some(Self::ChangeCharacterModeByPos) + } + "FCIGOJGMBHG_CHANGE_CHARACTER_MODE_BY_RANDOM" => { + Some(Self::ChangeCharacterModeByRandom) + } + "FCIGOJGMBHG_CHANGE_CHARACTER_MODE_BY_ROBOT_ID" => { + Some(Self::ChangeCharacterModeByRobotId) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ofbamghjdeg { + Lakdpgganhk = 0, + Jdomagkhojn = 1, + Djmmlggchij = 2, + Jckdiphckfb = 3, + Pekdgpdkpgj = 4, +} +impl Ofbamghjdeg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lakdpgganhk => "OFBAMGHJDEG_LAKDPGGANHK", + Self::Jdomagkhojn => "OFBAMGHJDEG_JDOMAGKHOJN", + Self::Djmmlggchij => "OFBAMGHJDEG_DJMMLGGCHIJ", + Self::Jckdiphckfb => "OFBAMGHJDEG_JCKDIPHCKFB", + Self::Pekdgpdkpgj => "OFBAMGHJDEG_PEKDGPDKPGJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OFBAMGHJDEG_LAKDPGGANHK" => Some(Self::Lakdpgganhk), + "OFBAMGHJDEG_JDOMAGKHOJN" => Some(Self::Jdomagkhojn), + "OFBAMGHJDEG_DJMMLGGCHIJ" => Some(Self::Djmmlggchij), + "OFBAMGHJDEG_JCKDIPHCKFB" => Some(Self::Jckdiphckfb), + "OFBAMGHJDEG_PEKDGPDKPGJ" => Some(Self::Pekdgpdkpgj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Afkngomjaon { + Aoepieohahc = 0, + Ecejbeeddkj = 1, +} +impl Afkngomjaon { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Aoepieohahc => "AFKNGOMJAON_AOEPIEOHAHC", + Self::Ecejbeeddkj => "AFKNGOMJAON_ECEJBEEDDKJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AFKNGOMJAON_AOEPIEOHAHC" => Some(Self::Aoepieohahc), + "AFKNGOMJAON_ECEJBEEDDKJ" => Some(Self::Ecejbeeddkj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Imnemghafao { + GuestStatusNone = 0, + GuestStatusSuccess = 1, + GuestStatusFail = 2, + GuestStatusCloseQuest = 3, +} +impl Imnemghafao { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::GuestStatusNone => "IMNEMGHAFAO_GUEST_STATUS_NONE", + Self::GuestStatusSuccess => "IMNEMGHAFAO_GUEST_STATUS_SUCCESS", + Self::GuestStatusFail => "IMNEMGHAFAO_GUEST_STATUS_FAIL", + Self::GuestStatusCloseQuest => "IMNEMGHAFAO_GUEST_STATUS_CLOSE_QUEST", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IMNEMGHAFAO_GUEST_STATUS_NONE" => Some(Self::GuestStatusNone), + "IMNEMGHAFAO_GUEST_STATUS_SUCCESS" => Some(Self::GuestStatusSuccess), + "IMNEMGHAFAO_GUEST_STATUS_FAIL" => Some(Self::GuestStatusFail), + "IMNEMGHAFAO_GUEST_STATUS_CLOSE_QUEST" => Some(Self::GuestStatusCloseQuest), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pppdjkbiicl { + Dnddidiigjm = 0, +} +impl Pppdjkbiicl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dnddidiigjm => "PPPDJKBIICL_DNDDIDIIGJM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PPPDJKBIICL_DNDDIDIIGJM" => Some(Self::Dnddidiigjm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nnlblknhfgl { + Ikdkkeljjgd = 0, + Andeiakkpco = 1, + Nijgdhfdpdm = 2, +} +impl Nnlblknhfgl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ikdkkeljjgd => "NNLBLKNHFGL_IKDKKELJJGD", + Self::Andeiakkpco => "NNLBLKNHFGL_ANDEIAKKPCO", + Self::Nijgdhfdpdm => "NNLBLKNHFGL_NIJGDHFDPDM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NNLBLKNHFGL_IKDKKELJJGD" => Some(Self::Ikdkkeljjgd), + "NNLBLKNHFGL_ANDEIAKKPCO" => Some(Self::Andeiakkpco), + "NNLBLKNHFGL_NIJGDHFDPDM" => Some(Self::Nijgdhfdpdm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fcbdoiomndl { + None = 0, + Avatar = 10, + Monster = 11, + Summonee = 12, + Buddy = 13, + DropItem = 14, + SceneObject = 15, + MoveObject = 16, + DynamicObject = 17, +} +impl Fcbdoiomndl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::None => "FCBDOIOMNDL_None", + Self::Avatar => "FCBDOIOMNDL_Avatar", + Self::Monster => "FCBDOIOMNDL_Monster", + Self::Summonee => "FCBDOIOMNDL_Summonee", + Self::Buddy => "FCBDOIOMNDL_Buddy", + Self::DropItem => "FCBDOIOMNDL_DropItem", + Self::SceneObject => "FCBDOIOMNDL_SceneObject", + Self::MoveObject => "FCBDOIOMNDL_MoveObject", + Self::DynamicObject => "FCBDOIOMNDL_DynamicObject", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FCBDOIOMNDL_None" => Some(Self::None), + "FCBDOIOMNDL_Avatar" => Some(Self::Avatar), + "FCBDOIOMNDL_Monster" => Some(Self::Monster), + "FCBDOIOMNDL_Summonee" => Some(Self::Summonee), + "FCBDOIOMNDL_Buddy" => Some(Self::Buddy), + "FCBDOIOMNDL_DropItem" => Some(Self::DropItem), + "FCBDOIOMNDL_SceneObject" => Some(Self::SceneObject), + "FCBDOIOMNDL_MoveObject" => Some(Self::MoveObject), + "FCBDOIOMNDL_DynamicObject" => Some(Self::DynamicObject), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lfggameaefb { + Omckcmpgjjb = 0, +} +impl Lfggameaefb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Omckcmpgjjb => "LFGGAMEAEFB_OMCKCMPGJJB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LFGGAMEAEFB_OMCKCMPGJJB" => Some(Self::Omckcmpgjjb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dbjomdnnlno { + Pmiidmkiiog = 0, +} +impl Dbjomdnnlno { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pmiidmkiiog => "DBJOMDNNLNO_PMIIDMKIIOG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DBJOMDNNLNO_PMIIDMKIIOG" => Some(Self::Pmiidmkiiog), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Iieklabkefk { + Lkodjlfpjkp = 0, +} +impl Iieklabkefk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lkodjlfpjkp => "IIEKLABKEFK_LKODJLFPJKP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IIEKLABKEFK_LKODJLFPJKP" => Some(Self::Lkodjlfpjkp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hhghojdnldn { + Ooopdnplgkd = 0, + Difganbcfoa = 1, + Hibjhhmfobp = 2, + Hdmaclcpjpf = 3, + Dcedgjhdaif = 4, +} +impl Hhghojdnldn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ooopdnplgkd => "HHGHOJDNLDN_OOOPDNPLGKD", + Self::Difganbcfoa => "HHGHOJDNLDN_DIFGANBCFOA", + Self::Hibjhhmfobp => "HHGHOJDNLDN_HIBJHHMFOBP", + Self::Hdmaclcpjpf => "HHGHOJDNLDN_HDMACLCPJPF", + Self::Dcedgjhdaif => "HHGHOJDNLDN_DCEDGJHDAIF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HHGHOJDNLDN_OOOPDNPLGKD" => Some(Self::Ooopdnplgkd), + "HHGHOJDNLDN_DIFGANBCFOA" => Some(Self::Difganbcfoa), + "HHGHOJDNLDN_HIBJHHMFOBP" => Some(Self::Hibjhhmfobp), + "HHGHOJDNLDN_HDMACLCPJPF" => Some(Self::Hdmaclcpjpf), + "HHGHOJDNLDN_DCEDGJHDAIF" => Some(Self::Dcedgjhdaif), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hmlebkimgho { + ActionRunTypeNone = 0, + Client = 1, + Server = 2, +} +impl Hmlebkimgho { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ActionRunTypeNone => "HMLEBKIMGHO_ACTION_RUN_TYPE_NONE", + Self::Client => "HMLEBKIMGHO_CLIENT", + Self::Server => "HMLEBKIMGHO_SERVER", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HMLEBKIMGHO_ACTION_RUN_TYPE_NONE" => Some(Self::ActionRunTypeNone), + "HMLEBKIMGHO_CLIENT" => Some(Self::Client), + "HMLEBKIMGHO_SERVER" => Some(Self::Server), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Oagkennlkpd { + Aladpcmfobg = 0, + Debchpplooi = 1, + Plhlnmjgmmp = 2, + Cngfpbbidle = 3, +} +impl Oagkennlkpd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Aladpcmfobg => "OAGKENNLKPD_ALADPCMFOBG", + Self::Debchpplooi => "OAGKENNLKPD_DEBCHPPLOOI", + Self::Plhlnmjgmmp => "OAGKENNLKPD_PLHLNMJGMMP", + Self::Cngfpbbidle => "OAGKENNLKPD_CNGFPBBIDLE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OAGKENNLKPD_ALADPCMFOBG" => Some(Self::Aladpcmfobg), + "OAGKENNLKPD_DEBCHPPLOOI" => Some(Self::Debchpplooi), + "OAGKENNLKPD_PLHLNMJGMMP" => Some(Self::Plhlnmjgmmp), + "OAGKENNLKPD_CNGFPBBIDLE" => Some(Self::Cngfpbbidle), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Iibbbifibch { + ScriptBuddyTypeAll = 0, + ScriptBuddyTypeBattle = 1, + ScriptBuddyTypeSupport = 2, +} +impl Iibbbifibch { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ScriptBuddyTypeAll => "IIBBBIFIBCH_SCRIPT_BUDDY_TYPE_ALL", + Self::ScriptBuddyTypeBattle => "IIBBBIFIBCH_SCRIPT_BUDDY_TYPE_BATTLE", + Self::ScriptBuddyTypeSupport => "IIBBBIFIBCH_SCRIPT_BUDDY_TYPE_SUPPORT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IIBBBIFIBCH_SCRIPT_BUDDY_TYPE_ALL" => Some(Self::ScriptBuddyTypeAll), + "IIBBBIFIBCH_SCRIPT_BUDDY_TYPE_BATTLE" => Some(Self::ScriptBuddyTypeBattle), + "IIBBBIFIBCH_SCRIPT_BUDDY_TYPE_SUPPORT" => Some(Self::ScriptBuddyTypeSupport), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jjikmooeoln { + RpRecommendResultNone = 0, + RpRecommendResultSucc = 1, + RpRecommendResultFail = 2, +} +impl Jjikmooeoln { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::RpRecommendResultNone => "JJIKMOOEOLN_RP_RECOMMEND_RESULT_NONE", + Self::RpRecommendResultSucc => "JJIKMOOEOLN_RP_RECOMMEND_RESULT_SUCC", + Self::RpRecommendResultFail => "JJIKMOOEOLN_RP_RECOMMEND_RESULT_FAIL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JJIKMOOEOLN_RP_RECOMMEND_RESULT_NONE" => Some(Self::RpRecommendResultNone), + "JJIKMOOEOLN_RP_RECOMMEND_RESULT_SUCC" => Some(Self::RpRecommendResultSucc), + "JJIKMOOEOLN_RP_RECOMMEND_RESULT_FAIL" => Some(Self::RpRecommendResultFail), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Plifgifmijn { + Obfickdnpno = 0, + Hlmdhidikbb = 1, +} +impl Plifgifmijn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Obfickdnpno => "PLIFGIFMIJN_OBFICKDNPNO", + Self::Hlmdhidikbb => "PLIFGIFMIJN_HLMDHIDIKBB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PLIFGIFMIJN_OBFICKDNPNO" => Some(Self::Obfickdnpno), + "PLIFGIFMIJN_HLMDHIDIKBB" => Some(Self::Hlmdhidikbb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ijoigijenec { + Onheincalie = 0, + Ggpohnecifb = 1, + Apoacccknpa = 3, +} +impl Ijoigijenec { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Onheincalie => "IJOIGIJENEC_ONHEINCALIE", + Self::Ggpohnecifb => "IJOIGIJENEC_GGPOHNECIFB", + Self::Apoacccknpa => "IJOIGIJENEC_APOACCCKNPA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IJOIGIJENEC_ONHEINCALIE" => Some(Self::Onheincalie), + "IJOIGIJENEC_GGPOHNECIFB" => Some(Self::Ggpohnecifb), + "IJOIGIJENEC_APOACCCKNPA" => Some(Self::Apoacccknpa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Aaajhkodlga { + Dghmdicdiee = 0, + Akhaomfmhpf = 1, + Onafgjbmfpd = 2, + Gfnceiamako = 3, + Pngicjbpgpp = 4, + Ghbgjbbjmgk = 5, + Nheeihohbjp = 6, + Packdcdoopi = 7, + Eidjjppnnng = 8, + Ahaoggjiggn = 9, + Iiebikcjcpk = 10, + Bokloeoibka = 11, + Dlbipafdlcn = 12, +} +impl Aaajhkodlga { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dghmdicdiee => "AAAJHKODLGA_DGHMDICDIEE", + Self::Akhaomfmhpf => "AAAJHKODLGA_AKHAOMFMHPF", + Self::Onafgjbmfpd => "AAAJHKODLGA_ONAFGJBMFPD", + Self::Gfnceiamako => "AAAJHKODLGA_GFNCEIAMAKO", + Self::Pngicjbpgpp => "AAAJHKODLGA_PNGICJBPGPP", + Self::Ghbgjbbjmgk => "AAAJHKODLGA_GHBGJBBJMGK", + Self::Nheeihohbjp => "AAAJHKODLGA_NHEEIHOHBJP", + Self::Packdcdoopi => "AAAJHKODLGA_PACKDCDOOPI", + Self::Eidjjppnnng => "AAAJHKODLGA_EIDJJPPNNNG", + Self::Ahaoggjiggn => "AAAJHKODLGA_AHAOGGJIGGN", + Self::Iiebikcjcpk => "AAAJHKODLGA_IIEBIKCJCPK", + Self::Bokloeoibka => "AAAJHKODLGA_BOKLOEOIBKA", + Self::Dlbipafdlcn => "AAAJHKODLGA_DLBIPAFDLCN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AAAJHKODLGA_DGHMDICDIEE" => Some(Self::Dghmdicdiee), + "AAAJHKODLGA_AKHAOMFMHPF" => Some(Self::Akhaomfmhpf), + "AAAJHKODLGA_ONAFGJBMFPD" => Some(Self::Onafgjbmfpd), + "AAAJHKODLGA_GFNCEIAMAKO" => Some(Self::Gfnceiamako), + "AAAJHKODLGA_PNGICJBPGPP" => Some(Self::Pngicjbpgpp), + "AAAJHKODLGA_GHBGJBBJMGK" => Some(Self::Ghbgjbbjmgk), + "AAAJHKODLGA_NHEEIHOHBJP" => Some(Self::Nheeihohbjp), + "AAAJHKODLGA_PACKDCDOOPI" => Some(Self::Packdcdoopi), + "AAAJHKODLGA_EIDJJPPNNNG" => Some(Self::Eidjjppnnng), + "AAAJHKODLGA_AHAOGGJIGGN" => Some(Self::Ahaoggjiggn), + "AAAJHKODLGA_IIEBIKCJCPK" => Some(Self::Iiebikcjcpk), + "AAAJHKODLGA_BOKLOEOIBKA" => Some(Self::Bokloeoibka), + "AAAJHKODLGA_DLBIPAFDLCN" => Some(Self::Dlbipafdlcn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Opbhpeigfli { + ChessboardPerformModeNone = 0, + ChessboardPerformModeOpen = 1, + ChessboardPerformModeClose = 2, + ChessboardPerformModeBlock = 3, + ChessboardPerformModeUnblock = 4, +} +impl Opbhpeigfli { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ChessboardPerformModeNone => "OPBHPEIGFLI_CHESSBOARD_PERFORM_MODE_NONE", + Self::ChessboardPerformModeOpen => "OPBHPEIGFLI_CHESSBOARD_PERFORM_MODE_OPEN", + Self::ChessboardPerformModeClose => { + "OPBHPEIGFLI_CHESSBOARD_PERFORM_MODE_CLOSE" + } + Self::ChessboardPerformModeBlock => { + "OPBHPEIGFLI_CHESSBOARD_PERFORM_MODE_BLOCK" + } + Self::ChessboardPerformModeUnblock => { + "OPBHPEIGFLI_CHESSBOARD_PERFORM_MODE_UNBLOCK" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OPBHPEIGFLI_CHESSBOARD_PERFORM_MODE_NONE" => { + Some(Self::ChessboardPerformModeNone) + } + "OPBHPEIGFLI_CHESSBOARD_PERFORM_MODE_OPEN" => { + Some(Self::ChessboardPerformModeOpen) + } + "OPBHPEIGFLI_CHESSBOARD_PERFORM_MODE_CLOSE" => { + Some(Self::ChessboardPerformModeClose) + } + "OPBHPEIGFLI_CHESSBOARD_PERFORM_MODE_BLOCK" => { + Some(Self::ChessboardPerformModeBlock) + } + "OPBHPEIGFLI_CHESSBOARD_PERFORM_MODE_UNBLOCK" => { + Some(Self::ChessboardPerformModeUnblock) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Okeapcicmma { + Minphpffclg = 0, + Peideoicmik = 10010, + Dmbihmfehbb = 10012, +} +impl Okeapcicmma { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Minphpffclg => "OKEAPCICMMA_MINPHPFFCLG", + Self::Peideoicmik => "OKEAPCICMMA_PEIDEOICMIK", + Self::Dmbihmfehbb => "OKEAPCICMMA_DMBIHMFEHBB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OKEAPCICMMA_MINPHPFFCLG" => Some(Self::Minphpffclg), + "OKEAPCICMMA_PEIDEOICMIK" => Some(Self::Peideoicmik), + "OKEAPCICMMA_DMBIHMFEHBB" => Some(Self::Dmbihmfehbb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Alcemkgonnl { + Eafbikgiipc = 0, + Aanginhmmci = 1, + Onmkmgkdgbh = 2, +} +impl Alcemkgonnl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Eafbikgiipc => "ALCEMKGONNL_EAFBIKGIIPC", + Self::Aanginhmmci => "ALCEMKGONNL_AANGINHMMCI", + Self::Onmkmgkdgbh => "ALCEMKGONNL_ONMKMGKDGBH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ALCEMKGONNL_EAFBIKGIIPC" => Some(Self::Eafbikgiipc), + "ALCEMKGONNL_AANGINHMMCI" => Some(Self::Aanginhmmci), + "ALCEMKGONNL_ONMKMGKDGBH" => Some(Self::Onmkmgkdgbh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Goicpkhggde { + Ahdhgoacnak = 0, +} +impl Goicpkhggde { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ahdhgoacnak => "GOICPKHGGDE_AHDHGOACNAK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GOICPKHGGDE_AHDHGOACNAK" => Some(Self::Ahdhgoacnak), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Onhikjfjbbg { + Kopbekdlgoc = 0, + Lkepcdeajhn = 1, + Ccdgmmhfhli = 2, +} +impl Onhikjfjbbg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kopbekdlgoc => "ONHIKJFJBBG_KOPBEKDLGOC", + Self::Lkepcdeajhn => "ONHIKJFJBBG_LKEPCDEAJHN", + Self::Ccdgmmhfhli => "ONHIKJFJBBG_CCDGMMHFHLI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ONHIKJFJBBG_KOPBEKDLGOC" => Some(Self::Kopbekdlgoc), + "ONHIKJFJBBG_LKEPCDEAJHN" => Some(Self::Lkepcdeajhn), + "ONHIKJFJBBG_CCDGMMHFHLI" => Some(Self::Ccdgmmhfhli), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Flahbklbeea { + Fmbmlmikfnd = 0, + Lccnbkijgmo = 1, +} +impl Flahbklbeea { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fmbmlmikfnd => "FLAHBKLBEEA_FMBMLMIKFND", + Self::Lccnbkijgmo => "FLAHBKLBEEA_LCCNBKIJGMO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FLAHBKLBEEA_FMBMLMIKFND" => Some(Self::Fmbmlmikfnd), + "FLAHBKLBEEA_LCCNBKIJGMO" => Some(Self::Lccnbkijgmo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Npdickjplog { + Mcpobljdmbl = 0, + Laefpomjbab = 1, + Bmhnklgnoan = 2, + Gpgjodajnlj = 3, +} +impl Npdickjplog { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mcpobljdmbl => "NPDICKJPLOG_MCPOBLJDMBL", + Self::Laefpomjbab => "NPDICKJPLOG_LAEFPOMJBAB", + Self::Bmhnklgnoan => "NPDICKJPLOG_BMHNKLGNOAN", + Self::Gpgjodajnlj => "NPDICKJPLOG_GPGJODAJNLJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NPDICKJPLOG_MCPOBLJDMBL" => Some(Self::Mcpobljdmbl), + "NPDICKJPLOG_LAEFPOMJBAB" => Some(Self::Laefpomjbab), + "NPDICKJPLOG_BMHNKLGNOAN" => Some(Self::Bmhnklgnoan), + "NPDICKJPLOG_GPGJODAJNLJ" => Some(Self::Gpgjodajnlj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cjjcinaplma { + PostStateNotUnlock = 0, + PostStateUnlock = 1, + PostStateRead = 2, + PostStateReply = 3, + PostStateInfoUnlock = 4, + PostStateInfoRead = 5, +} +impl Cjjcinaplma { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::PostStateNotUnlock => "CJJCINAPLMA_POST_STATE_NOT_UNLOCK", + Self::PostStateUnlock => "CJJCINAPLMA_POST_STATE_UNLOCK", + Self::PostStateRead => "CJJCINAPLMA_POST_STATE_READ", + Self::PostStateReply => "CJJCINAPLMA_POST_STATE_REPLY", + Self::PostStateInfoUnlock => "CJJCINAPLMA_POST_STATE_INFO_UNLOCK", + Self::PostStateInfoRead => "CJJCINAPLMA_POST_STATE_INFO_READ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CJJCINAPLMA_POST_STATE_NOT_UNLOCK" => Some(Self::PostStateNotUnlock), + "CJJCINAPLMA_POST_STATE_UNLOCK" => Some(Self::PostStateUnlock), + "CJJCINAPLMA_POST_STATE_READ" => Some(Self::PostStateRead), + "CJJCINAPLMA_POST_STATE_REPLY" => Some(Self::PostStateReply), + "CJJCINAPLMA_POST_STATE_INFO_UNLOCK" => Some(Self::PostStateInfoUnlock), + "CJJCINAPLMA_POST_STATE_INFO_READ" => Some(Self::PostStateInfoRead), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gfgommkbcmd { + OptionIconStateNone = 0, + OptionIconStateAdd = 1, + OptionIconStateReplace = 2, + OptionIconStateReduce = 3, +} +impl Gfgommkbcmd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::OptionIconStateNone => "GFGOMMKBCMD_OPTION_ICON_STATE_NONE", + Self::OptionIconStateAdd => "GFGOMMKBCMD_OPTION_ICON_STATE_ADD", + Self::OptionIconStateReplace => "GFGOMMKBCMD_OPTION_ICON_STATE_REPLACE", + Self::OptionIconStateReduce => "GFGOMMKBCMD_OPTION_ICON_STATE_REDUCE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GFGOMMKBCMD_OPTION_ICON_STATE_NONE" => Some(Self::OptionIconStateNone), + "GFGOMMKBCMD_OPTION_ICON_STATE_ADD" => Some(Self::OptionIconStateAdd), + "GFGOMMKBCMD_OPTION_ICON_STATE_REPLACE" => Some(Self::OptionIconStateReplace), + "GFGOMMKBCMD_OPTION_ICON_STATE_REDUCE" => Some(Self::OptionIconStateReduce), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lnfpdgjoecc { + Ogeniogndfh = 0, + Aaamkooaaag = 1, + Okjhedccjfp = 2, + Gnbphcnlcgd = 3, + Pgmacmpfgnn = 4, +} +impl Lnfpdgjoecc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ogeniogndfh => "LNFPDGJOECC_OGENIOGNDFH", + Self::Aaamkooaaag => "LNFPDGJOECC_AAAMKOOAAAG", + Self::Okjhedccjfp => "LNFPDGJOECC_OKJHEDCCJFP", + Self::Gnbphcnlcgd => "LNFPDGJOECC_GNBPHCNLCGD", + Self::Pgmacmpfgnn => "LNFPDGJOECC_PGMACMPFGNN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LNFPDGJOECC_OGENIOGNDFH" => Some(Self::Ogeniogndfh), + "LNFPDGJOECC_AAAMKOOAAAG" => Some(Self::Aaamkooaaag), + "LNFPDGJOECC_OKJHEDCCJFP" => Some(Self::Okjhedccjfp), + "LNFPDGJOECC_GNBPHCNLCGD" => Some(Self::Gnbphcnlcgd), + "LNFPDGJOECC_PGMACMPFGNN" => Some(Self::Pgmacmpfgnn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pkhkdnmmldi { + Jbpfmmhklhj = 0, + Ffgdibbmohj = 1, + Aghmbajakki = 2, + Habcgmbhhaa = 3, +} +impl Pkhkdnmmldi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jbpfmmhklhj => "PKHKDNMMLDI_JBPFMMHKLHJ", + Self::Ffgdibbmohj => "PKHKDNMMLDI_FFGDIBBMOHJ", + Self::Aghmbajakki => "PKHKDNMMLDI_AGHMBAJAKKI", + Self::Habcgmbhhaa => "PKHKDNMMLDI_HABCGMBHHAA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PKHKDNMMLDI_JBPFMMHKLHJ" => Some(Self::Jbpfmmhklhj), + "PKHKDNMMLDI_FFGDIBBMOHJ" => Some(Self::Ffgdibbmohj), + "PKHKDNMMLDI_AGHMBAJAKKI" => Some(Self::Aghmbajakki), + "PKHKDNMMLDI_HABCGMBHHAA" => Some(Self::Habcgmbhhaa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Loafoagcfdk { + Eccimhidfee = 0, + Fklindaljkb = 1, + Ngmliojpnpe = 2, + Bjigibocljp = 3, +} +impl Loafoagcfdk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Eccimhidfee => "LOAFOAGCFDK_ECCIMHIDFEE", + Self::Fklindaljkb => "LOAFOAGCFDK_FKLINDALJKB", + Self::Ngmliojpnpe => "LOAFOAGCFDK_NGMLIOJPNPE", + Self::Bjigibocljp => "LOAFOAGCFDK_BJIGIBOCLJP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LOAFOAGCFDK_ECCIMHIDFEE" => Some(Self::Eccimhidfee), + "LOAFOAGCFDK_FKLINDALJKB" => Some(Self::Fklindaljkb), + "LOAFOAGCFDK_NGMLIOJPNPE" => Some(Self::Ngmliojpnpe), + "LOAFOAGCFDK_BJIGIBOCLJP" => Some(Self::Bjigibocljp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hkfofddmgoo { + Eolaklallkm = 0, + Dfglgmocgff = 1, + Apgojnbcjpa = 2, + Pjpplhoofnl = 3, +} +impl Hkfofddmgoo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Eolaklallkm => "HKFOFDDMGOO_EOLAKLALLKM", + Self::Dfglgmocgff => "HKFOFDDMGOO_DFGLGMOCGFF", + Self::Apgojnbcjpa => "HKFOFDDMGOO_APGOJNBCJPA", + Self::Pjpplhoofnl => "HKFOFDDMGOO_PJPPLHOOFNL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HKFOFDDMGOO_EOLAKLALLKM" => Some(Self::Eolaklallkm), + "HKFOFDDMGOO_DFGLGMOCGFF" => Some(Self::Dfglgmocgff), + "HKFOFDDMGOO_APGOJNBCJPA" => Some(Self::Apgojnbcjpa), + "HKFOFDDMGOO_PJPPLHOOFNL" => Some(Self::Pjpplhoofnl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dpjmcabpgcg { + Ejihghopfch = 0, +} +impl Dpjmcabpgcg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ejihghopfch => "DPJMCABPGCG_EJIHGHOPFCH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DPJMCABPGCG_EJIHGHOPFCH" => Some(Self::Ejihghopfch), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pmgifblpmpm { + Mehnledapha = 0, + Ggmnghcjpgo = 1, + Coklcfmdnda = 2, + Dfmcimfnpnd = 3, + Fbcfbjaflfa = 4, + Cbhoadkihgn = 5, + Cijfbhkjild = 6, + Loiiakngkef = 7, + Kmcoifbmopc = 8, + Chplfmjpaec = 9, + Jmoljdclkhg = 11, + Ecnlbeodlmb = 12, + Icaimkpmkeh = 19, + Haaogkdlgih = 20, + Eiciphchcmn = 21, + Nmmfjhhnbgc = 22, +} +impl Pmgifblpmpm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mehnledapha => "PMGIFBLPMPM_MEHNLEDAPHA", + Self::Ggmnghcjpgo => "PMGIFBLPMPM_GGMNGHCJPGO", + Self::Coklcfmdnda => "PMGIFBLPMPM_COKLCFMDNDA", + Self::Dfmcimfnpnd => "PMGIFBLPMPM_DFMCIMFNPND", + Self::Fbcfbjaflfa => "PMGIFBLPMPM_FBCFBJAFLFA", + Self::Cbhoadkihgn => "PMGIFBLPMPM_CBHOADKIHGN", + Self::Cijfbhkjild => "PMGIFBLPMPM_CIJFBHKJILD", + Self::Loiiakngkef => "PMGIFBLPMPM_LOIIAKNGKEF", + Self::Kmcoifbmopc => "PMGIFBLPMPM_KMCOIFBMOPC", + Self::Chplfmjpaec => "PMGIFBLPMPM_CHPLFMJPAEC", + Self::Jmoljdclkhg => "PMGIFBLPMPM_JMOLJDCLKHG", + Self::Ecnlbeodlmb => "PMGIFBLPMPM_ECNLBEODLMB", + Self::Icaimkpmkeh => "PMGIFBLPMPM_ICAIMKPMKEH", + Self::Haaogkdlgih => "PMGIFBLPMPM_HAAOGKDLGIH", + Self::Eiciphchcmn => "PMGIFBLPMPM_EICIPHCHCMN", + Self::Nmmfjhhnbgc => "PMGIFBLPMPM_NMMFJHHNBGC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PMGIFBLPMPM_MEHNLEDAPHA" => Some(Self::Mehnledapha), + "PMGIFBLPMPM_GGMNGHCJPGO" => Some(Self::Ggmnghcjpgo), + "PMGIFBLPMPM_COKLCFMDNDA" => Some(Self::Coklcfmdnda), + "PMGIFBLPMPM_DFMCIMFNPND" => Some(Self::Dfmcimfnpnd), + "PMGIFBLPMPM_FBCFBJAFLFA" => Some(Self::Fbcfbjaflfa), + "PMGIFBLPMPM_CBHOADKIHGN" => Some(Self::Cbhoadkihgn), + "PMGIFBLPMPM_CIJFBHKJILD" => Some(Self::Cijfbhkjild), + "PMGIFBLPMPM_LOIIAKNGKEF" => Some(Self::Loiiakngkef), + "PMGIFBLPMPM_KMCOIFBMOPC" => Some(Self::Kmcoifbmopc), + "PMGIFBLPMPM_CHPLFMJPAEC" => Some(Self::Chplfmjpaec), + "PMGIFBLPMPM_JMOLJDCLKHG" => Some(Self::Jmoljdclkhg), + "PMGIFBLPMPM_ECNLBEODLMB" => Some(Self::Ecnlbeodlmb), + "PMGIFBLPMPM_ICAIMKPMKEH" => Some(Self::Icaimkpmkeh), + "PMGIFBLPMPM_HAAOGKDLGIH" => Some(Self::Haaogkdlgih), + "PMGIFBLPMPM_EICIPHCHCMN" => Some(Self::Eiciphchcmn), + "PMGIFBLPMPM_NMMFJHHNBGC" => Some(Self::Nmmfjhhnbgc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Famaikfjkfo { + Aagcakiiaid = 0, + Eoglilnnhhb = 1, + Dkfdllkobhg = 2, + Cbphpjlnpin = 3, + Maeffkddlbd = 4, + Akhldpoicgk = 5, + Iofofddhjdc = 6, + Iceoolfdjjb = 7, + Mbdefbjgihh = 8, + Daogklpgedc = 9, + Miakgfonjgi = 10, +} +impl Famaikfjkfo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Aagcakiiaid => "FAMAIKFJKFO_AAGCAKIIAID", + Self::Eoglilnnhhb => "FAMAIKFJKFO_EOGLILNNHHB", + Self::Dkfdllkobhg => "FAMAIKFJKFO_DKFDLLKOBHG", + Self::Cbphpjlnpin => "FAMAIKFJKFO_CBPHPJLNPIN", + Self::Maeffkddlbd => "FAMAIKFJKFO_MAEFFKDDLBD", + Self::Akhldpoicgk => "FAMAIKFJKFO_AKHLDPOICGK", + Self::Iofofddhjdc => "FAMAIKFJKFO_IOFOFDDHJDC", + Self::Iceoolfdjjb => "FAMAIKFJKFO_ICEOOLFDJJB", + Self::Mbdefbjgihh => "FAMAIKFJKFO_MBDEFBJGIHH", + Self::Daogklpgedc => "FAMAIKFJKFO_DAOGKLPGEDC", + Self::Miakgfonjgi => "FAMAIKFJKFO_MIAKGFONJGI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FAMAIKFJKFO_AAGCAKIIAID" => Some(Self::Aagcakiiaid), + "FAMAIKFJKFO_EOGLILNNHHB" => Some(Self::Eoglilnnhhb), + "FAMAIKFJKFO_DKFDLLKOBHG" => Some(Self::Dkfdllkobhg), + "FAMAIKFJKFO_CBPHPJLNPIN" => Some(Self::Cbphpjlnpin), + "FAMAIKFJKFO_MAEFFKDDLBD" => Some(Self::Maeffkddlbd), + "FAMAIKFJKFO_AKHLDPOICGK" => Some(Self::Akhldpoicgk), + "FAMAIKFJKFO_IOFOFDDHJDC" => Some(Self::Iofofddhjdc), + "FAMAIKFJKFO_ICEOOLFDJJB" => Some(Self::Iceoolfdjjb), + "FAMAIKFJKFO_MBDEFBJGIHH" => Some(Self::Mbdefbjgihh), + "FAMAIKFJKFO_DAOGKLPGEDC" => Some(Self::Daogklpgedc), + "FAMAIKFJKFO_MIAKGFONJGI" => Some(Self::Miakgfonjgi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cgceiegfnlb { + Nabgholiilc = 0, + Accbnjmfpid = 1, +} +impl Cgceiegfnlb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nabgholiilc => "CGCEIEGFNLB_NABGHOLIILC", + Self::Accbnjmfpid => "CGCEIEGFNLB_ACCBNJMFPID", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CGCEIEGFNLB_NABGHOLIILC" => Some(Self::Nabgholiilc), + "CGCEIEGFNLB_ACCBNJMFPID" => Some(Self::Accbnjmfpid), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jemndpmcfbk { + Diiedbkfnii = 0, + Deijinekild = 1, + Mdjdbaklond = 2, +} +impl Jemndpmcfbk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Diiedbkfnii => "JEMNDPMCFBK_DIIEDBKFNII", + Self::Deijinekild => "JEMNDPMCFBK_DEIJINEKILD", + Self::Mdjdbaklond => "JEMNDPMCFBK_MDJDBAKLOND", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JEMNDPMCFBK_DIIEDBKFNII" => Some(Self::Diiedbkfnii), + "JEMNDPMCFBK_DEIJINEKILD" => Some(Self::Deijinekild), + "JEMNDPMCFBK_MDJDBAKLOND" => Some(Self::Mdjdbaklond), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Conmceejmgh { + Pnbogojcgnf = 0, +} +impl Conmceejmgh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pnbogojcgnf => "CONMCEEJMGH_PNBOGOJCGNF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CONMCEEJMGH_PNBOGOJCGNF" => Some(Self::Pnbogojcgnf), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bkphdinojem { + Mcmfhlohdni = 0, + Aedjnnjicjp = 1, + Nfdakocgpbh = 2, + Jhmoggdijco = 3, + Onkinkplago = 6, + Kejhplegjdl = 7, + Dmjkbkppbdo = 8, + Fdemfpjkien = 9, + Ljkbkbmhmld = 10, + Doceimpmkbf = 11, + Ddedjadiofh = 12, + Mkmjpneadde = 13, + Plbioamhcni = 14, + Omjodgfbmom = 15, + Lkeejibkdll = 16, + Mlikjapiiml = 17, + Eigpicjmide = 18, + Lbgonepimoc = 19, +} +impl Bkphdinojem { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mcmfhlohdni => "BKPHDINOJEM_MCMFHLOHDNI", + Self::Aedjnnjicjp => "BKPHDINOJEM_AEDJNNJICJP", + Self::Nfdakocgpbh => "BKPHDINOJEM_NFDAKOCGPBH", + Self::Jhmoggdijco => "BKPHDINOJEM_JHMOGGDIJCO", + Self::Onkinkplago => "BKPHDINOJEM_ONKINKPLAGO", + Self::Kejhplegjdl => "BKPHDINOJEM_KEJHPLEGJDL", + Self::Dmjkbkppbdo => "BKPHDINOJEM_DMJKBKPPBDO", + Self::Fdemfpjkien => "BKPHDINOJEM_FDEMFPJKIEN", + Self::Ljkbkbmhmld => "BKPHDINOJEM_LJKBKBMHMLD", + Self::Doceimpmkbf => "BKPHDINOJEM_DOCEIMPMKBF", + Self::Ddedjadiofh => "BKPHDINOJEM_DDEDJADIOFH", + Self::Mkmjpneadde => "BKPHDINOJEM_MKMJPNEADDE", + Self::Plbioamhcni => "BKPHDINOJEM_PLBIOAMHCNI", + Self::Omjodgfbmom => "BKPHDINOJEM_OMJODGFBMOM", + Self::Lkeejibkdll => "BKPHDINOJEM_LKEEJIBKDLL", + Self::Mlikjapiiml => "BKPHDINOJEM_MLIKJAPIIML", + Self::Eigpicjmide => "BKPHDINOJEM_EIGPICJMIDE", + Self::Lbgonepimoc => "BKPHDINOJEM_LBGONEPIMOC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BKPHDINOJEM_MCMFHLOHDNI" => Some(Self::Mcmfhlohdni), + "BKPHDINOJEM_AEDJNNJICJP" => Some(Self::Aedjnnjicjp), + "BKPHDINOJEM_NFDAKOCGPBH" => Some(Self::Nfdakocgpbh), + "BKPHDINOJEM_JHMOGGDIJCO" => Some(Self::Jhmoggdijco), + "BKPHDINOJEM_ONKINKPLAGO" => Some(Self::Onkinkplago), + "BKPHDINOJEM_KEJHPLEGJDL" => Some(Self::Kejhplegjdl), + "BKPHDINOJEM_DMJKBKPPBDO" => Some(Self::Dmjkbkppbdo), + "BKPHDINOJEM_FDEMFPJKIEN" => Some(Self::Fdemfpjkien), + "BKPHDINOJEM_LJKBKBMHMLD" => Some(Self::Ljkbkbmhmld), + "BKPHDINOJEM_DOCEIMPMKBF" => Some(Self::Doceimpmkbf), + "BKPHDINOJEM_DDEDJADIOFH" => Some(Self::Ddedjadiofh), + "BKPHDINOJEM_MKMJPNEADDE" => Some(Self::Mkmjpneadde), + "BKPHDINOJEM_PLBIOAMHCNI" => Some(Self::Plbioamhcni), + "BKPHDINOJEM_OMJODGFBMOM" => Some(Self::Omjodgfbmom), + "BKPHDINOJEM_LKEEJIBKDLL" => Some(Self::Lkeejibkdll), + "BKPHDINOJEM_MLIKJAPIIML" => Some(Self::Mlikjapiiml), + "BKPHDINOJEM_EIGPICJMIDE" => Some(Self::Eigpicjmide), + "BKPHDINOJEM_LBGONEPIMOC" => Some(Self::Lbgonepimoc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eceljfiehjg { + Kjgogdfgimm = 0, + Njgghbhddmc = 1, + Hcdbgfoilhj = 2, + Fljdbeidgnn = 3, + Aljblmcigbd = 4, +} +impl Eceljfiehjg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kjgogdfgimm => "ECELJFIEHJG_KJGOGDFGIMM", + Self::Njgghbhddmc => "ECELJFIEHJG_NJGGHBHDDMC", + Self::Hcdbgfoilhj => "ECELJFIEHJG_HCDBGFOILHJ", + Self::Fljdbeidgnn => "ECELJFIEHJG_FLJDBEIDGNN", + Self::Aljblmcigbd => "ECELJFIEHJG_ALJBLMCIGBD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ECELJFIEHJG_KJGOGDFGIMM" => Some(Self::Kjgogdfgimm), + "ECELJFIEHJG_NJGGHBHDDMC" => Some(Self::Njgghbhddmc), + "ECELJFIEHJG_HCDBGFOILHJ" => Some(Self::Hcdbgfoilhj), + "ECELJFIEHJG_FLJDBEIDGNN" => Some(Self::Fljdbeidgnn), + "ECELJFIEHJG_ALJBLMCIGBD" => Some(Self::Aljblmcigbd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Djnkcciejia { + ModifyTimeRewindTypeNone = 0, + ModifyTimeRewindTypeInsert = 1, + ModifyTimeRewindTypeRemove = 2, + ModifyTimeRewindTypeModify = 3, +} +impl Djnkcciejia { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ModifyTimeRewindTypeNone => "DJNKCCIEJIA_MODIFY_TIME_REWIND_TYPE_NONE", + Self::ModifyTimeRewindTypeInsert => { + "DJNKCCIEJIA_MODIFY_TIME_REWIND_TYPE_INSERT" + } + Self::ModifyTimeRewindTypeRemove => { + "DJNKCCIEJIA_MODIFY_TIME_REWIND_TYPE_REMOVE" + } + Self::ModifyTimeRewindTypeModify => { + "DJNKCCIEJIA_MODIFY_TIME_REWIND_TYPE_MODIFY" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DJNKCCIEJIA_MODIFY_TIME_REWIND_TYPE_NONE" => { + Some(Self::ModifyTimeRewindTypeNone) + } + "DJNKCCIEJIA_MODIFY_TIME_REWIND_TYPE_INSERT" => { + Some(Self::ModifyTimeRewindTypeInsert) + } + "DJNKCCIEJIA_MODIFY_TIME_REWIND_TYPE_REMOVE" => { + Some(Self::ModifyTimeRewindTypeRemove) + } + "DJNKCCIEJIA_MODIFY_TIME_REWIND_TYPE_MODIFY" => { + Some(Self::ModifyTimeRewindTypeModify) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Iaplhmpmlag { + Ppekhdlfiho = 0, + Inhmjkdnhcf = 1, + Fokkhalaegl = 2, +} +impl Iaplhmpmlag { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ppekhdlfiho => "IAPLHMPMLAG_PPEKHDLFIHO", + Self::Inhmjkdnhcf => "IAPLHMPMLAG_INHMJKDNHCF", + Self::Fokkhalaegl => "IAPLHMPMLAG_FOKKHALAEGL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IAPLHMPMLAG_PPEKHDLFIHO" => Some(Self::Ppekhdlfiho), + "IAPLHMPMLAG_INHMJKDNHCF" => Some(Self::Inhmjkdnhcf), + "IAPLHMPMLAG_FOKKHALAEGL" => Some(Self::Fokkhalaegl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lpbacloplgc { + None = 0, + Avatar = 7, + Monster = 8, + Gadget = 9, + Npc = 10, +} +impl Lpbacloplgc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::None => "LPBACLOPLGC_None", + Self::Avatar => "LPBACLOPLGC_Avatar", + Self::Monster => "LPBACLOPLGC_Monster", + Self::Gadget => "LPBACLOPLGC_Gadget", + Self::Npc => "LPBACLOPLGC_Npc", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LPBACLOPLGC_None" => Some(Self::None), + "LPBACLOPLGC_Avatar" => Some(Self::Avatar), + "LPBACLOPLGC_Monster" => Some(Self::Monster), + "LPBACLOPLGC_Gadget" => Some(Self::Gadget), + "LPBACLOPLGC_Npc" => Some(Self::Npc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dolmimbikck { + CrossShaped = 0, + ManhattanSquare = 1, + Square = 2, +} +impl Dolmimbikck { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::CrossShaped => "DOLMIMBIKCK_CROSS_SHAPED", + Self::ManhattanSquare => "DOLMIMBIKCK_MANHATTAN_SQUARE", + Self::Square => "DOLMIMBIKCK_SQUARE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DOLMIMBIKCK_CROSS_SHAPED" => Some(Self::CrossShaped), + "DOLMIMBIKCK_MANHATTAN_SQUARE" => Some(Self::ManhattanSquare), + "DOLMIMBIKCK_SQUARE" => Some(Self::Square), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Aloijkcdagb { + VarTypeNone = 0, + VarTypeInt = 1, + VarTypeString = 2, + VarTypeVector2 = 3, + VarTypeListInt = 4, + VarTypeListString = 5, + VarTypeListVector2 = 6, +} +impl Aloijkcdagb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::VarTypeNone => "ALOIJKCDAGB_VAR_TYPE_NONE", + Self::VarTypeInt => "ALOIJKCDAGB_VAR_TYPE_INT", + Self::VarTypeString => "ALOIJKCDAGB_VAR_TYPE_STRING", + Self::VarTypeVector2 => "ALOIJKCDAGB_VAR_TYPE_VECTOR2", + Self::VarTypeListInt => "ALOIJKCDAGB_VAR_TYPE_LIST_INT", + Self::VarTypeListString => "ALOIJKCDAGB_VAR_TYPE_LIST_STRING", + Self::VarTypeListVector2 => "ALOIJKCDAGB_VAR_TYPE_LIST_VECTOR2", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ALOIJKCDAGB_VAR_TYPE_NONE" => Some(Self::VarTypeNone), + "ALOIJKCDAGB_VAR_TYPE_INT" => Some(Self::VarTypeInt), + "ALOIJKCDAGB_VAR_TYPE_STRING" => Some(Self::VarTypeString), + "ALOIJKCDAGB_VAR_TYPE_VECTOR2" => Some(Self::VarTypeVector2), + "ALOIJKCDAGB_VAR_TYPE_LIST_INT" => Some(Self::VarTypeListInt), + "ALOIJKCDAGB_VAR_TYPE_LIST_STRING" => Some(Self::VarTypeListString), + "ALOIJKCDAGB_VAR_TYPE_LIST_VECTOR2" => Some(Self::VarTypeListVector2), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gjcandgangp { + Eabmbdhfakf = 0, + Cpkcmnplenc = 1, + Kihfdjokbhn = 2, +} +impl Gjcandgangp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Eabmbdhfakf => "GJCANDGANGP_EABMBDHFAKF", + Self::Cpkcmnplenc => "GJCANDGANGP_CPKCMNPLENC", + Self::Kihfdjokbhn => "GJCANDGANGP_KIHFDJOKBHN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GJCANDGANGP_EABMBDHFAKF" => Some(Self::Eabmbdhfakf), + "GJCANDGANGP_CPKCMNPLENC" => Some(Self::Cpkcmnplenc), + "GJCANDGANGP_KIHFDJOKBHN" => Some(Self::Kihfdjokbhn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mfbihepdeoc { + Mdgebajglpd = 0, + Ionbokgoonm = 1, + Jkafahbcaia = 2, + Daejmgpbgdj = 3, +} +impl Mfbihepdeoc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mdgebajglpd => "MFBIHEPDEOC_MDGEBAJGLPD", + Self::Ionbokgoonm => "MFBIHEPDEOC_IONBOKGOONM", + Self::Jkafahbcaia => "MFBIHEPDEOC_JKAFAHBCAIA", + Self::Daejmgpbgdj => "MFBIHEPDEOC_DAEJMGPBGDJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MFBIHEPDEOC_MDGEBAJGLPD" => Some(Self::Mdgebajglpd), + "MFBIHEPDEOC_IONBOKGOONM" => Some(Self::Ionbokgoonm), + "MFBIHEPDEOC_JKAFAHBCAIA" => Some(Self::Jkafahbcaia), + "MFBIHEPDEOC_DAEJMGPBGDJ" => Some(Self::Daejmgpbgdj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eagfnfccpke { + Ijbdainlnpp = 0, + Feoceahcgpc = 1, +} +impl Eagfnfccpke { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ijbdainlnpp => "EAGFNFCCPKE_IJBDAINLNPP", + Self::Feoceahcgpc => "EAGFNFCCPKE_FEOCEAHCGPC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EAGFNFCCPKE_IJBDAINLNPP" => Some(Self::Ijbdainlnpp), + "EAGFNFCCPKE_FEOCEAHCGPC" => Some(Self::Feoceahcgpc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bgcdfepndgj { + BubbleInsertTypeNone = 0, + BubbleInsertTypeBegin = 1, + EbubbleInsertTypeNd = 2, + DbubbleInsertTypeUration = 3, +} +impl Bgcdfepndgj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::BubbleInsertTypeNone => "BGCDFEPNDGJ_BUBBLE_INSERT_TYPE_NONE", + Self::BubbleInsertTypeBegin => "BGCDFEPNDGJ_BUBBLE_INSERT_TYPE_BEGIN", + Self::EbubbleInsertTypeNd => "BGCDFEPNDGJ_EBUBBLE_INSERT_TYPE_ND", + Self::DbubbleInsertTypeUration => "BGCDFEPNDGJ_DBUBBLE_INSERT_TYPE_URATION", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BGCDFEPNDGJ_BUBBLE_INSERT_TYPE_NONE" => Some(Self::BubbleInsertTypeNone), + "BGCDFEPNDGJ_BUBBLE_INSERT_TYPE_BEGIN" => Some(Self::BubbleInsertTypeBegin), + "BGCDFEPNDGJ_EBUBBLE_INSERT_TYPE_ND" => Some(Self::EbubbleInsertTypeNd), + "BGCDFEPNDGJ_DBUBBLE_INSERT_TYPE_URATION" => { + Some(Self::DbubbleInsertTypeUration) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ohbbidejpmk { + OptionsModeNormal = 0, + OptionsModeSelectByGroup = 1, + OptionsModeRandomByNum = 2, + OptionsModeRandomByDepth = 3, +} +impl Ohbbidejpmk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::OptionsModeNormal => "OHBBIDEJPMK_OPTIONS_MODE_NORMAL", + Self::OptionsModeSelectByGroup => "OHBBIDEJPMK_OPTIONS_MODE_SELECT_BY_GROUP", + Self::OptionsModeRandomByNum => "OHBBIDEJPMK_OPTIONS_MODE_RANDOM_BY_NUM", + Self::OptionsModeRandomByDepth => "OHBBIDEJPMK_OPTIONS_MODE_RANDOM_BY_DEPTH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OHBBIDEJPMK_OPTIONS_MODE_NORMAL" => Some(Self::OptionsModeNormal), + "OHBBIDEJPMK_OPTIONS_MODE_SELECT_BY_GROUP" => { + Some(Self::OptionsModeSelectByGroup) + } + "OHBBIDEJPMK_OPTIONS_MODE_RANDOM_BY_NUM" => { + Some(Self::OptionsModeRandomByNum) + } + "OHBBIDEJPMK_OPTIONS_MODE_RANDOM_BY_DEPTH" => { + Some(Self::OptionsModeRandomByDepth) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kmmddbcmmdm { + Adigkdboine = 0, + Mkffpiipnkc = 1, + Gfdlicdnpcm = 2, + Fegohnhfnjk = 3, +} +impl Kmmddbcmmdm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Adigkdboine => "KMMDDBCMMDM_ADIGKDBOINE", + Self::Mkffpiipnkc => "KMMDDBCMMDM_MKFFPIIPNKC", + Self::Gfdlicdnpcm => "KMMDDBCMMDM_GFDLICDNPCM", + Self::Fegohnhfnjk => "KMMDDBCMMDM_FEGOHNHFNJK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KMMDDBCMMDM_ADIGKDBOINE" => Some(Self::Adigkdboine), + "KMMDDBCMMDM_MKFFPIIPNKC" => Some(Self::Mkffpiipnkc), + "KMMDDBCMMDM_GFDLICDNPCM" => Some(Self::Gfdlicdnpcm), + "KMMDDBCMMDM_FEGOHNHFNJK" => Some(Self::Fegohnhfnjk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ecnhggggjjd { + Mdebfokdlpc = 0, + Bcdpiahdbgf = 1, +} +impl Ecnhggggjjd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mdebfokdlpc => "ECNHGGGGJJD_MDEBFOKDLPC", + Self::Bcdpiahdbgf => "ECNHGGGGJJD_BCDPIAHDBGF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ECNHGGGGJJD_MDEBFOKDLPC" => Some(Self::Mdebfokdlpc), + "ECNHGGGGJJD_BCDPIAHDBGF" => Some(Self::Bcdpiahdbgf), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lkcpfgimamm { + EghmChooseGridTypeNone = 0, + EghmChooseGridTypeContinue = 1, + EghmChooseGridTypeDiscrete = 2, +} +impl Lkcpfgimamm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::EghmChooseGridTypeNone => "LKCPFGIMAMM_EGHM_CHOOSE_GRID_TYPE_NONE", + Self::EghmChooseGridTypeContinue => { + "LKCPFGIMAMM_EGHM_CHOOSE_GRID_TYPE_CONTINUE" + } + Self::EghmChooseGridTypeDiscrete => { + "LKCPFGIMAMM_EGHM_CHOOSE_GRID_TYPE_DISCRETE" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LKCPFGIMAMM_EGHM_CHOOSE_GRID_TYPE_NONE" => { + Some(Self::EghmChooseGridTypeNone) + } + "LKCPFGIMAMM_EGHM_CHOOSE_GRID_TYPE_CONTINUE" => { + Some(Self::EghmChooseGridTypeContinue) + } + "LKCPFGIMAMM_EGHM_CHOOSE_GRID_TYPE_DISCRETE" => { + Some(Self::EghmChooseGridTypeDiscrete) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hjoeaogkddi { + Pohfmcmnagi = 0, + Laokoiighnk = 1, + Ampldbbnnmc = 2, + Lceflhfmkmp = 3, + Jcpggmfehfb = 4, + Iejhojmcibe = 5, + Dknkelldeed = 6, + Glfefdolhec = 7, + Jlaaelbnfog = 8, + Phachcbaooh = 9, + Ajechieenob = 10, + Bjncagjpfab = 11, + Ijmmingipii = 12, +} +impl Hjoeaogkddi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pohfmcmnagi => "HJOEAOGKDDI_POHFMCMNAGI", + Self::Laokoiighnk => "HJOEAOGKDDI_LAOKOIIGHNK", + Self::Ampldbbnnmc => "HJOEAOGKDDI_AMPLDBBNNMC", + Self::Lceflhfmkmp => "HJOEAOGKDDI_LCEFLHFMKMP", + Self::Jcpggmfehfb => "HJOEAOGKDDI_JCPGGMFEHFB", + Self::Iejhojmcibe => "HJOEAOGKDDI_IEJHOJMCIBE", + Self::Dknkelldeed => "HJOEAOGKDDI_DKNKELLDEED", + Self::Glfefdolhec => "HJOEAOGKDDI_GLFEFDOLHEC", + Self::Jlaaelbnfog => "HJOEAOGKDDI_JLAAELBNFOG", + Self::Phachcbaooh => "HJOEAOGKDDI_PHACHCBAOOH", + Self::Ajechieenob => "HJOEAOGKDDI_AJECHIEENOB", + Self::Bjncagjpfab => "HJOEAOGKDDI_BJNCAGJPFAB", + Self::Ijmmingipii => "HJOEAOGKDDI_IJMMINGIPII", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HJOEAOGKDDI_POHFMCMNAGI" => Some(Self::Pohfmcmnagi), + "HJOEAOGKDDI_LAOKOIIGHNK" => Some(Self::Laokoiighnk), + "HJOEAOGKDDI_AMPLDBBNNMC" => Some(Self::Ampldbbnnmc), + "HJOEAOGKDDI_LCEFLHFMKMP" => Some(Self::Lceflhfmkmp), + "HJOEAOGKDDI_JCPGGMFEHFB" => Some(Self::Jcpggmfehfb), + "HJOEAOGKDDI_IEJHOJMCIBE" => Some(Self::Iejhojmcibe), + "HJOEAOGKDDI_DKNKELLDEED" => Some(Self::Dknkelldeed), + "HJOEAOGKDDI_GLFEFDOLHEC" => Some(Self::Glfefdolhec), + "HJOEAOGKDDI_JLAAELBNFOG" => Some(Self::Jlaaelbnfog), + "HJOEAOGKDDI_PHACHCBAOOH" => Some(Self::Phachcbaooh), + "HJOEAOGKDDI_AJECHIEENOB" => Some(Self::Ajechieenob), + "HJOEAOGKDDI_BJNCAGJPFAB" => Some(Self::Bjncagjpfab), + "HJOEAOGKDDI_IJMMINGIPII" => Some(Self::Ijmmingipii), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bhdmohbcobb { + Ojoggckcekh = 0, + Bmkppbkgggi = 1, + Egiiocfogdd = 2, + Akdhcdomfmp = 3, + Nelmcmlhndb = 4, + Oikcofcjgfi = 5, + Lfeebcfeifk = 6, + Jpkihcngbgc = 7, +} +impl Bhdmohbcobb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ojoggckcekh => "BHDMOHBCOBB_OJOGGCKCEKH", + Self::Bmkppbkgggi => "BHDMOHBCOBB_BMKPPBKGGGI", + Self::Egiiocfogdd => "BHDMOHBCOBB_EGIIOCFOGDD", + Self::Akdhcdomfmp => "BHDMOHBCOBB_AKDHCDOMFMP", + Self::Nelmcmlhndb => "BHDMOHBCOBB_NELMCMLHNDB", + Self::Oikcofcjgfi => "BHDMOHBCOBB_OIKCOFCJGFI", + Self::Lfeebcfeifk => "BHDMOHBCOBB_LFEEBCFEIFK", + Self::Jpkihcngbgc => "BHDMOHBCOBB_JPKIHCNGBGC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BHDMOHBCOBB_OJOGGCKCEKH" => Some(Self::Ojoggckcekh), + "BHDMOHBCOBB_BMKPPBKGGGI" => Some(Self::Bmkppbkgggi), + "BHDMOHBCOBB_EGIIOCFOGDD" => Some(Self::Egiiocfogdd), + "BHDMOHBCOBB_AKDHCDOMFMP" => Some(Self::Akdhcdomfmp), + "BHDMOHBCOBB_NELMCMLHNDB" => Some(Self::Nelmcmlhndb), + "BHDMOHBCOBB_OIKCOFCJGFI" => Some(Self::Oikcofcjgfi), + "BHDMOHBCOBB_LFEEBCFEIFK" => Some(Self::Lfeebcfeifk), + "BHDMOHBCOBB_JPKIHCNGBGC" => Some(Self::Jpkihcngbgc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Elflcjlcopj { + Caiojamgopn = 0, + Fpihknlnchg = 1, + Ihbbigdkbhf = 2, + Cfcglblblei = 3, +} +impl Elflcjlcopj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Caiojamgopn => "ELFLCJLCOPJ_CAIOJAMGOPN", + Self::Fpihknlnchg => "ELFLCJLCOPJ_FPIHKNLNCHG", + Self::Ihbbigdkbhf => "ELFLCJLCOPJ_IHBBIGDKBHF", + Self::Cfcglblblei => "ELFLCJLCOPJ_CFCGLBLBLEI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ELFLCJLCOPJ_CAIOJAMGOPN" => Some(Self::Caiojamgopn), + "ELFLCJLCOPJ_FPIHKNLNCHG" => Some(Self::Fpihknlnchg), + "ELFLCJLCOPJ_IHBBIGDKBHF" => Some(Self::Ihbbigdkbhf), + "ELFLCJLCOPJ_CFCGLBLBLEI" => Some(Self::Cfcglblblei), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Njmbjdbjhdl { + Leemfbcjnjl = 0, + Aglcjoajjod = 1, + Dfdldgoakhb = 2, +} +impl Njmbjdbjhdl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Leemfbcjnjl => "NJMBJDBJHDL_LEEMFBCJNJL", + Self::Aglcjoajjod => "NJMBJDBJHDL_AGLCJOAJJOD", + Self::Dfdldgoakhb => "NJMBJDBJHDL_DFDLDGOAKHB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NJMBJDBJHDL_LEEMFBCJNJL" => Some(Self::Leemfbcjnjl), + "NJMBJDBJHDL_AGLCJOAJJOD" => Some(Self::Aglcjoajjod), + "NJMBJDBJHDL_DFDLDGOAKHB" => Some(Self::Dfdldgoakhb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Giffdbhmheg { + Fopnnokhkhn = 0, + Knbaegipnel = 99, + Mgnefjgmidc = 100, + Egnpnaapaaf = 199, + Mppihcjgpfn = 200, + Lipkjjoiebe = 299, + Ihcieofhljg = 300, + Obocdjdeimp = 399, + Amhfjnfhjoo = 400, + Mlildnpnhno = 549, + Dcpimcoaeml = 550, + Dffppfgpbcf = 699, + Ijlmdkgkpkc = 700, + Naoiffjjlel = 799, + Pbodkaefnbc = 800, + Bpmjajpbccj = 849, + Mnafhhnnekc = 850, + Hleefjmjhhc = 899, + Nnlfpidnndl = 900, + Npdbejbfgan = 949, + Jhepfkhkeoe = 950, + Pdennfegplp = 999, + Demdmignmed = 1000, + Jhfddpblblp = 1049, + Fbiibhjljln = 1050, + Ojhbaopgegd = 1149, + Pflmcfkblja = 1150, + Oiglmncdmpe = 1249, + Laapdjpppha = 1250, + Oajalkbnfbe = 1299, + Ijjkpipadhl = 1300, + Fngbdahfaod = 1399, + Bddilgkflag = 1450, + Cnackmcclkk = 1499, + Hjcgegiafmn = 1500, + Fdglkokllpk = 1599, + Jfmkecelnib = 1600, + Jeacplfeeif = 1619, + Bclljgopgob = 1620, + Fggkpmibicj = 1699, + Nnbfoecnoen = 1700, + Nfijpgjjcln = 1899, + Ffbbmenjgmj = 1900, + Bjgdlbhghbn = 1949, + Jbceohoanjp = 1950, + Lpcomhhpijl = 1999, + Bjnnpnnlbnh = 2000, + Cpbpidfdldd = 2049, + Jecmpijbjbj = 2050, + Efpnbadonei = 2099, + Bmpnilmifao = 2100, + Kdocohkdfip = 2119, + Ljgaoiimcgo = 2200, + Lbabpimpeon = 2219, + Baibegnpfjd = 2220, + Cnhpcanejob = 2399, + Mhpilkjfleo = 2400, + Femeifbpfhm = 2449, + Bhbkjholnpe = 2450, + Npdgmecfjbb = 2499, + Lpihjfpnole = 2500, + Lnijboidpof = 2549, + Hnpkgnadjeh = 2550, + Kabjofpgicd = 2579, + Ianbhhfnmim = 2580, + Ifildjajggl = 2799, + Ocgdcnagleo = 2800, + Eakioclanoe = 2829, + Iiefhipedba = 2830, + Lcdlibmhnje = 2869, + Kjdppmehejj = 2870, + Cddmggikmod = 2929, + Hcknikmmdpp = 2930, + Dnjdnkkghgo = 2999, + Aofmbmfkepg = 3000, + Nllodafeabc = 3099, + Pgkdamplnee = 3100, + Ghnjbpondkp = 3129, + Fepkmmflhib = 3130, + Iikfbnjhbmj = 3159, + Plhpgflklcj = 3160, + Hiljfolbefj = 3259, + Fegffnafeap = 3260, + Ihbbcaknbob = 3359, + Pbcmnblpcjb = 3360, + Olhhcmpmede = 3399, + Pchdbhemgka = 3400, + Dckmbfofclf = 3449, + Cmkepegakfj = 3450, + Jdifcmhhhnb = 3499, + Pnnbakcchlc = 3500, + Ffjecahefkl = 3529, + Lpobedhakbc = 3530, + Ahcgfhglmmg = 3549, + Boagkcphaeh = 3550, + Mbhgbcdchog = 3569, + Ooblonbobae = 3570, + Nkodfnkedbp = 3589, + Jokjcakhmjm = 3590, + Fecdjelenck = 3699, + Kdjgimlcalk = 3700, + Kdhahhkbbko = 3799, + Onifinmacip = 3800, + Fhljgcomjlf = 3810, + Lcpdinjkaia = 3811, + Kplapmchefn = 3840, + Bmpincaickj = 3841, + Dogbfekehmg = 3859, + Mbdfmmiokaf = 3860, + Andbenjcekh = 3879, + Olinalkleel = 3880, + Gjlnlfiagph = 3899, + Jpaonadhinj = 3900, + Afgmonlidkb = 3979, + Ghdjnjhjoie = 4000, + Cemicgfjlia = 4099, + Cafehchiefl = 4100, + Bjiaodppkcj = 4199, + Ihigjlfobfd = 4200, + Kpbmmcbjlpc = 4299, + Bddlajlmhkm = 4300, + Bflggkibhfm = 4399, + Jgepoodemcm = 4400, + Mihdbgiiojk = 4499, + Oflligkjbgp = 4500, + Fagfdankjfi = 4599, + Kninlncglmi = 4600, + Mkphelaifac = 4649, + Dbncoceamem = 4700, + Pioekagmlbb = 4799, + Iomhpnpfjnh = 5000, + Mdhjfnpnjlo = 6999, + Iicijdiihfi = 7000, + Adfabklpelj = 7050, + Gbhcfmgpdhm = 7051, + Fooiajdhpeg = 7099, + Cipajofdcak = 7100, + Mienljllico = 7149, + Nackbaonkoe = 10000, + Oabgffjkfnp = 10099, + Bogiodplnbm = 10100, + Celfpjidfem = 10199, + Pdgpcpdofib = 10200, + Famgghmlmhf = 10299, + Ecgmedkldeb = 10300, + Jnocaaaefap = 10399, + Mccihjbgfdm = 10400, + Amejobnccdm = 10499, + Nnpmpeoakck = 10500, + Oikpdfanlml = 10599, + Blaokdjmmhi = 10600, + Djeckggechh = 10799, + Bddbccgjgbi = 10800, + Gempaemjdbh = 10899, + Bdhodnoohcc = 10900, + Dkclkffhbil = 10999, + Jamafhippbg = 11000, + Annflgaghpb = 11049, + Okpepihjjah = 11050, + Knepbgjlnmo = 11099, + Emampflkepg = 11100, + Beifpnhddpo = 11149, + Bhlgbfopkif = 11150, + Mefdocmagpc = 11299, + Popfbbemdof = 11400, + Feifkadcdma = 11499, + Agnaoejojln = 11500, + Hcokeanahlf = 11549, + Fhegfemaogh = 11550, + Lfeippbfemb = 11649, +} +impl Giffdbhmheg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fopnnokhkhn => "GIFFDBHMHEG_FOPNNOKHKHN", + Self::Knbaegipnel => "GIFFDBHMHEG_KNBAEGIPNEL", + Self::Mgnefjgmidc => "GIFFDBHMHEG_MGNEFJGMIDC", + Self::Egnpnaapaaf => "GIFFDBHMHEG_EGNPNAAPAAF", + Self::Mppihcjgpfn => "GIFFDBHMHEG_MPPIHCJGPFN", + Self::Lipkjjoiebe => "GIFFDBHMHEG_LIPKJJOIEBE", + Self::Ihcieofhljg => "GIFFDBHMHEG_IHCIEOFHLJG", + Self::Obocdjdeimp => "GIFFDBHMHEG_OBOCDJDEIMP", + Self::Amhfjnfhjoo => "GIFFDBHMHEG_AMHFJNFHJOO", + Self::Mlildnpnhno => "GIFFDBHMHEG_MLILDNPNHNO", + Self::Dcpimcoaeml => "GIFFDBHMHEG_DCPIMCOAEML", + Self::Dffppfgpbcf => "GIFFDBHMHEG_DFFPPFGPBCF", + Self::Ijlmdkgkpkc => "GIFFDBHMHEG_IJLMDKGKPKC", + Self::Naoiffjjlel => "GIFFDBHMHEG_NAOIFFJJLEL", + Self::Pbodkaefnbc => "GIFFDBHMHEG_PBODKAEFNBC", + Self::Bpmjajpbccj => "GIFFDBHMHEG_BPMJAJPBCCJ", + Self::Mnafhhnnekc => "GIFFDBHMHEG_MNAFHHNNEKC", + Self::Hleefjmjhhc => "GIFFDBHMHEG_HLEEFJMJHHC", + Self::Nnlfpidnndl => "GIFFDBHMHEG_NNLFPIDNNDL", + Self::Npdbejbfgan => "GIFFDBHMHEG_NPDBEJBFGAN", + Self::Jhepfkhkeoe => "GIFFDBHMHEG_JHEPFKHKEOE", + Self::Pdennfegplp => "GIFFDBHMHEG_PDENNFEGPLP", + Self::Demdmignmed => "GIFFDBHMHEG_DEMDMIGNMED", + Self::Jhfddpblblp => "GIFFDBHMHEG_JHFDDPBLBLP", + Self::Fbiibhjljln => "GIFFDBHMHEG_FBIIBHJLJLN", + Self::Ojhbaopgegd => "GIFFDBHMHEG_OJHBAOPGEGD", + Self::Pflmcfkblja => "GIFFDBHMHEG_PFLMCFKBLJA", + Self::Oiglmncdmpe => "GIFFDBHMHEG_OIGLMNCDMPE", + Self::Laapdjpppha => "GIFFDBHMHEG_LAAPDJPPPHA", + Self::Oajalkbnfbe => "GIFFDBHMHEG_OAJALKBNFBE", + Self::Ijjkpipadhl => "GIFFDBHMHEG_IJJKPIPADHL", + Self::Fngbdahfaod => "GIFFDBHMHEG_FNGBDAHFAOD", + Self::Bddilgkflag => "GIFFDBHMHEG_BDDILGKFLAG", + Self::Cnackmcclkk => "GIFFDBHMHEG_CNACKMCCLKK", + Self::Hjcgegiafmn => "GIFFDBHMHEG_HJCGEGIAFMN", + Self::Fdglkokllpk => "GIFFDBHMHEG_FDGLKOKLLPK", + Self::Jfmkecelnib => "GIFFDBHMHEG_JFMKECELNIB", + Self::Jeacplfeeif => "GIFFDBHMHEG_JEACPLFEEIF", + Self::Bclljgopgob => "GIFFDBHMHEG_BCLLJGOPGOB", + Self::Fggkpmibicj => "GIFFDBHMHEG_FGGKPMIBICJ", + Self::Nnbfoecnoen => "GIFFDBHMHEG_NNBFOECNOEN", + Self::Nfijpgjjcln => "GIFFDBHMHEG_NFIJPGJJCLN", + Self::Ffbbmenjgmj => "GIFFDBHMHEG_FFBBMENJGMJ", + Self::Bjgdlbhghbn => "GIFFDBHMHEG_BJGDLBHGHBN", + Self::Jbceohoanjp => "GIFFDBHMHEG_JBCEOHOANJP", + Self::Lpcomhhpijl => "GIFFDBHMHEG_LPCOMHHPIJL", + Self::Bjnnpnnlbnh => "GIFFDBHMHEG_BJNNPNNLBNH", + Self::Cpbpidfdldd => "GIFFDBHMHEG_CPBPIDFDLDD", + Self::Jecmpijbjbj => "GIFFDBHMHEG_JECMPIJBJBJ", + Self::Efpnbadonei => "GIFFDBHMHEG_EFPNBADONEI", + Self::Bmpnilmifao => "GIFFDBHMHEG_BMPNILMIFAO", + Self::Kdocohkdfip => "GIFFDBHMHEG_KDOCOHKDFIP", + Self::Ljgaoiimcgo => "GIFFDBHMHEG_LJGAOIIMCGO", + Self::Lbabpimpeon => "GIFFDBHMHEG_LBABPIMPEON", + Self::Baibegnpfjd => "GIFFDBHMHEG_BAIBEGNPFJD", + Self::Cnhpcanejob => "GIFFDBHMHEG_CNHPCANEJOB", + Self::Mhpilkjfleo => "GIFFDBHMHEG_MHPILKJFLEO", + Self::Femeifbpfhm => "GIFFDBHMHEG_FEMEIFBPFHM", + Self::Bhbkjholnpe => "GIFFDBHMHEG_BHBKJHOLNPE", + Self::Npdgmecfjbb => "GIFFDBHMHEG_NPDGMECFJBB", + Self::Lpihjfpnole => "GIFFDBHMHEG_LPIHJFPNOLE", + Self::Lnijboidpof => "GIFFDBHMHEG_LNIJBOIDPOF", + Self::Hnpkgnadjeh => "GIFFDBHMHEG_HNPKGNADJEH", + Self::Kabjofpgicd => "GIFFDBHMHEG_KABJOFPGICD", + Self::Ianbhhfnmim => "GIFFDBHMHEG_IANBHHFNMIM", + Self::Ifildjajggl => "GIFFDBHMHEG_IFILDJAJGGL", + Self::Ocgdcnagleo => "GIFFDBHMHEG_OCGDCNAGLEO", + Self::Eakioclanoe => "GIFFDBHMHEG_EAKIOCLANOE", + Self::Iiefhipedba => "GIFFDBHMHEG_IIEFHIPEDBA", + Self::Lcdlibmhnje => "GIFFDBHMHEG_LCDLIBMHNJE", + Self::Kjdppmehejj => "GIFFDBHMHEG_KJDPPMEHEJJ", + Self::Cddmggikmod => "GIFFDBHMHEG_CDDMGGIKMOD", + Self::Hcknikmmdpp => "GIFFDBHMHEG_HCKNIKMMDPP", + Self::Dnjdnkkghgo => "GIFFDBHMHEG_DNJDNKKGHGO", + Self::Aofmbmfkepg => "GIFFDBHMHEG_AOFMBMFKEPG", + Self::Nllodafeabc => "GIFFDBHMHEG_NLLODAFEABC", + Self::Pgkdamplnee => "GIFFDBHMHEG_PGKDAMPLNEE", + Self::Ghnjbpondkp => "GIFFDBHMHEG_GHNJBPONDKP", + Self::Fepkmmflhib => "GIFFDBHMHEG_FEPKMMFLHIB", + Self::Iikfbnjhbmj => "GIFFDBHMHEG_IIKFBNJHBMJ", + Self::Plhpgflklcj => "GIFFDBHMHEG_PLHPGFLKLCJ", + Self::Hiljfolbefj => "GIFFDBHMHEG_HILJFOLBEFJ", + Self::Fegffnafeap => "GIFFDBHMHEG_FEGFFNAFEAP", + Self::Ihbbcaknbob => "GIFFDBHMHEG_IHBBCAKNBOB", + Self::Pbcmnblpcjb => "GIFFDBHMHEG_PBCMNBLPCJB", + Self::Olhhcmpmede => "GIFFDBHMHEG_OLHHCMPMEDE", + Self::Pchdbhemgka => "GIFFDBHMHEG_PCHDBHEMGKA", + Self::Dckmbfofclf => "GIFFDBHMHEG_DCKMBFOFCLF", + Self::Cmkepegakfj => "GIFFDBHMHEG_CMKEPEGAKFJ", + Self::Jdifcmhhhnb => "GIFFDBHMHEG_JDIFCMHHHNB", + Self::Pnnbakcchlc => "GIFFDBHMHEG_PNNBAKCCHLC", + Self::Ffjecahefkl => "GIFFDBHMHEG_FFJECAHEFKL", + Self::Lpobedhakbc => "GIFFDBHMHEG_LPOBEDHAKBC", + Self::Ahcgfhglmmg => "GIFFDBHMHEG_AHCGFHGLMMG", + Self::Boagkcphaeh => "GIFFDBHMHEG_BOAGKCPHAEH", + Self::Mbhgbcdchog => "GIFFDBHMHEG_MBHGBCDCHOG", + Self::Ooblonbobae => "GIFFDBHMHEG_OOBLONBOBAE", + Self::Nkodfnkedbp => "GIFFDBHMHEG_NKODFNKEDBP", + Self::Jokjcakhmjm => "GIFFDBHMHEG_JOKJCAKHMJM", + Self::Fecdjelenck => "GIFFDBHMHEG_FECDJELENCK", + Self::Kdjgimlcalk => "GIFFDBHMHEG_KDJGIMLCALK", + Self::Kdhahhkbbko => "GIFFDBHMHEG_KDHAHHKBBKO", + Self::Onifinmacip => "GIFFDBHMHEG_ONIFINMACIP", + Self::Fhljgcomjlf => "GIFFDBHMHEG_FHLJGCOMJLF", + Self::Lcpdinjkaia => "GIFFDBHMHEG_LCPDINJKAIA", + Self::Kplapmchefn => "GIFFDBHMHEG_KPLAPMCHEFN", + Self::Bmpincaickj => "GIFFDBHMHEG_BMPINCAICKJ", + Self::Dogbfekehmg => "GIFFDBHMHEG_DOGBFEKEHMG", + Self::Mbdfmmiokaf => "GIFFDBHMHEG_MBDFMMIOKAF", + Self::Andbenjcekh => "GIFFDBHMHEG_ANDBENJCEKH", + Self::Olinalkleel => "GIFFDBHMHEG_OLINALKLEEL", + Self::Gjlnlfiagph => "GIFFDBHMHEG_GJLNLFIAGPH", + Self::Jpaonadhinj => "GIFFDBHMHEG_JPAONADHINJ", + Self::Afgmonlidkb => "GIFFDBHMHEG_AFGMONLIDKB", + Self::Ghdjnjhjoie => "GIFFDBHMHEG_GHDJNJHJOIE", + Self::Cemicgfjlia => "GIFFDBHMHEG_CEMICGFJLIA", + Self::Cafehchiefl => "GIFFDBHMHEG_CAFEHCHIEFL", + Self::Bjiaodppkcj => "GIFFDBHMHEG_BJIAODPPKCJ", + Self::Ihigjlfobfd => "GIFFDBHMHEG_IHIGJLFOBFD", + Self::Kpbmmcbjlpc => "GIFFDBHMHEG_KPBMMCBJLPC", + Self::Bddlajlmhkm => "GIFFDBHMHEG_BDDLAJLMHKM", + Self::Bflggkibhfm => "GIFFDBHMHEG_BFLGGKIBHFM", + Self::Jgepoodemcm => "GIFFDBHMHEG_JGEPOODEMCM", + Self::Mihdbgiiojk => "GIFFDBHMHEG_MIHDBGIIOJK", + Self::Oflligkjbgp => "GIFFDBHMHEG_OFLLIGKJBGP", + Self::Fagfdankjfi => "GIFFDBHMHEG_FAGFDANKJFI", + Self::Kninlncglmi => "GIFFDBHMHEG_KNINLNCGLMI", + Self::Mkphelaifac => "GIFFDBHMHEG_MKPHELAIFAC", + Self::Dbncoceamem => "GIFFDBHMHEG_DBNCOCEAMEM", + Self::Pioekagmlbb => "GIFFDBHMHEG_PIOEKAGMLBB", + Self::Iomhpnpfjnh => "GIFFDBHMHEG_IOMHPNPFJNH", + Self::Mdhjfnpnjlo => "GIFFDBHMHEG_MDHJFNPNJLO", + Self::Iicijdiihfi => "GIFFDBHMHEG_IICIJDIIHFI", + Self::Adfabklpelj => "GIFFDBHMHEG_ADFABKLPELJ", + Self::Gbhcfmgpdhm => "GIFFDBHMHEG_GBHCFMGPDHM", + Self::Fooiajdhpeg => "GIFFDBHMHEG_FOOIAJDHPEG", + Self::Cipajofdcak => "GIFFDBHMHEG_CIPAJOFDCAK", + Self::Mienljllico => "GIFFDBHMHEG_MIENLJLLICO", + Self::Nackbaonkoe => "GIFFDBHMHEG_NACKBAONKOE", + Self::Oabgffjkfnp => "GIFFDBHMHEG_OABGFFJKFNP", + Self::Bogiodplnbm => "GIFFDBHMHEG_BOGIODPLNBM", + Self::Celfpjidfem => "GIFFDBHMHEG_CELFPJIDFEM", + Self::Pdgpcpdofib => "GIFFDBHMHEG_PDGPCPDOFIB", + Self::Famgghmlmhf => "GIFFDBHMHEG_FAMGGHMLMHF", + Self::Ecgmedkldeb => "GIFFDBHMHEG_ECGMEDKLDEB", + Self::Jnocaaaefap => "GIFFDBHMHEG_JNOCAAAEFAP", + Self::Mccihjbgfdm => "GIFFDBHMHEG_MCCIHJBGFDM", + Self::Amejobnccdm => "GIFFDBHMHEG_AMEJOBNCCDM", + Self::Nnpmpeoakck => "GIFFDBHMHEG_NNPMPEOAKCK", + Self::Oikpdfanlml => "GIFFDBHMHEG_OIKPDFANLML", + Self::Blaokdjmmhi => "GIFFDBHMHEG_BLAOKDJMMHI", + Self::Djeckggechh => "GIFFDBHMHEG_DJECKGGECHH", + Self::Bddbccgjgbi => "GIFFDBHMHEG_BDDBCCGJGBI", + Self::Gempaemjdbh => "GIFFDBHMHEG_GEMPAEMJDBH", + Self::Bdhodnoohcc => "GIFFDBHMHEG_BDHODNOOHCC", + Self::Dkclkffhbil => "GIFFDBHMHEG_DKCLKFFHBIL", + Self::Jamafhippbg => "GIFFDBHMHEG_JAMAFHIPPBG", + Self::Annflgaghpb => "GIFFDBHMHEG_ANNFLGAGHPB", + Self::Okpepihjjah => "GIFFDBHMHEG_OKPEPIHJJAH", + Self::Knepbgjlnmo => "GIFFDBHMHEG_KNEPBGJLNMO", + Self::Emampflkepg => "GIFFDBHMHEG_EMAMPFLKEPG", + Self::Beifpnhddpo => "GIFFDBHMHEG_BEIFPNHDDPO", + Self::Bhlgbfopkif => "GIFFDBHMHEG_BHLGBFOPKIF", + Self::Mefdocmagpc => "GIFFDBHMHEG_MEFDOCMAGPC", + Self::Popfbbemdof => "GIFFDBHMHEG_POPFBBEMDOF", + Self::Feifkadcdma => "GIFFDBHMHEG_FEIFKADCDMA", + Self::Agnaoejojln => "GIFFDBHMHEG_AGNAOEJOJLN", + Self::Hcokeanahlf => "GIFFDBHMHEG_HCOKEANAHLF", + Self::Fhegfemaogh => "GIFFDBHMHEG_FHEGFEMAOGH", + Self::Lfeippbfemb => "GIFFDBHMHEG_LFEIPPBFEMB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GIFFDBHMHEG_FOPNNOKHKHN" => Some(Self::Fopnnokhkhn), + "GIFFDBHMHEG_KNBAEGIPNEL" => Some(Self::Knbaegipnel), + "GIFFDBHMHEG_MGNEFJGMIDC" => Some(Self::Mgnefjgmidc), + "GIFFDBHMHEG_EGNPNAAPAAF" => Some(Self::Egnpnaapaaf), + "GIFFDBHMHEG_MPPIHCJGPFN" => Some(Self::Mppihcjgpfn), + "GIFFDBHMHEG_LIPKJJOIEBE" => Some(Self::Lipkjjoiebe), + "GIFFDBHMHEG_IHCIEOFHLJG" => Some(Self::Ihcieofhljg), + "GIFFDBHMHEG_OBOCDJDEIMP" => Some(Self::Obocdjdeimp), + "GIFFDBHMHEG_AMHFJNFHJOO" => Some(Self::Amhfjnfhjoo), + "GIFFDBHMHEG_MLILDNPNHNO" => Some(Self::Mlildnpnhno), + "GIFFDBHMHEG_DCPIMCOAEML" => Some(Self::Dcpimcoaeml), + "GIFFDBHMHEG_DFFPPFGPBCF" => Some(Self::Dffppfgpbcf), + "GIFFDBHMHEG_IJLMDKGKPKC" => Some(Self::Ijlmdkgkpkc), + "GIFFDBHMHEG_NAOIFFJJLEL" => Some(Self::Naoiffjjlel), + "GIFFDBHMHEG_PBODKAEFNBC" => Some(Self::Pbodkaefnbc), + "GIFFDBHMHEG_BPMJAJPBCCJ" => Some(Self::Bpmjajpbccj), + "GIFFDBHMHEG_MNAFHHNNEKC" => Some(Self::Mnafhhnnekc), + "GIFFDBHMHEG_HLEEFJMJHHC" => Some(Self::Hleefjmjhhc), + "GIFFDBHMHEG_NNLFPIDNNDL" => Some(Self::Nnlfpidnndl), + "GIFFDBHMHEG_NPDBEJBFGAN" => Some(Self::Npdbejbfgan), + "GIFFDBHMHEG_JHEPFKHKEOE" => Some(Self::Jhepfkhkeoe), + "GIFFDBHMHEG_PDENNFEGPLP" => Some(Self::Pdennfegplp), + "GIFFDBHMHEG_DEMDMIGNMED" => Some(Self::Demdmignmed), + "GIFFDBHMHEG_JHFDDPBLBLP" => Some(Self::Jhfddpblblp), + "GIFFDBHMHEG_FBIIBHJLJLN" => Some(Self::Fbiibhjljln), + "GIFFDBHMHEG_OJHBAOPGEGD" => Some(Self::Ojhbaopgegd), + "GIFFDBHMHEG_PFLMCFKBLJA" => Some(Self::Pflmcfkblja), + "GIFFDBHMHEG_OIGLMNCDMPE" => Some(Self::Oiglmncdmpe), + "GIFFDBHMHEG_LAAPDJPPPHA" => Some(Self::Laapdjpppha), + "GIFFDBHMHEG_OAJALKBNFBE" => Some(Self::Oajalkbnfbe), + "GIFFDBHMHEG_IJJKPIPADHL" => Some(Self::Ijjkpipadhl), + "GIFFDBHMHEG_FNGBDAHFAOD" => Some(Self::Fngbdahfaod), + "GIFFDBHMHEG_BDDILGKFLAG" => Some(Self::Bddilgkflag), + "GIFFDBHMHEG_CNACKMCCLKK" => Some(Self::Cnackmcclkk), + "GIFFDBHMHEG_HJCGEGIAFMN" => Some(Self::Hjcgegiafmn), + "GIFFDBHMHEG_FDGLKOKLLPK" => Some(Self::Fdglkokllpk), + "GIFFDBHMHEG_JFMKECELNIB" => Some(Self::Jfmkecelnib), + "GIFFDBHMHEG_JEACPLFEEIF" => Some(Self::Jeacplfeeif), + "GIFFDBHMHEG_BCLLJGOPGOB" => Some(Self::Bclljgopgob), + "GIFFDBHMHEG_FGGKPMIBICJ" => Some(Self::Fggkpmibicj), + "GIFFDBHMHEG_NNBFOECNOEN" => Some(Self::Nnbfoecnoen), + "GIFFDBHMHEG_NFIJPGJJCLN" => Some(Self::Nfijpgjjcln), + "GIFFDBHMHEG_FFBBMENJGMJ" => Some(Self::Ffbbmenjgmj), + "GIFFDBHMHEG_BJGDLBHGHBN" => Some(Self::Bjgdlbhghbn), + "GIFFDBHMHEG_JBCEOHOANJP" => Some(Self::Jbceohoanjp), + "GIFFDBHMHEG_LPCOMHHPIJL" => Some(Self::Lpcomhhpijl), + "GIFFDBHMHEG_BJNNPNNLBNH" => Some(Self::Bjnnpnnlbnh), + "GIFFDBHMHEG_CPBPIDFDLDD" => Some(Self::Cpbpidfdldd), + "GIFFDBHMHEG_JECMPIJBJBJ" => Some(Self::Jecmpijbjbj), + "GIFFDBHMHEG_EFPNBADONEI" => Some(Self::Efpnbadonei), + "GIFFDBHMHEG_BMPNILMIFAO" => Some(Self::Bmpnilmifao), + "GIFFDBHMHEG_KDOCOHKDFIP" => Some(Self::Kdocohkdfip), + "GIFFDBHMHEG_LJGAOIIMCGO" => Some(Self::Ljgaoiimcgo), + "GIFFDBHMHEG_LBABPIMPEON" => Some(Self::Lbabpimpeon), + "GIFFDBHMHEG_BAIBEGNPFJD" => Some(Self::Baibegnpfjd), + "GIFFDBHMHEG_CNHPCANEJOB" => Some(Self::Cnhpcanejob), + "GIFFDBHMHEG_MHPILKJFLEO" => Some(Self::Mhpilkjfleo), + "GIFFDBHMHEG_FEMEIFBPFHM" => Some(Self::Femeifbpfhm), + "GIFFDBHMHEG_BHBKJHOLNPE" => Some(Self::Bhbkjholnpe), + "GIFFDBHMHEG_NPDGMECFJBB" => Some(Self::Npdgmecfjbb), + "GIFFDBHMHEG_LPIHJFPNOLE" => Some(Self::Lpihjfpnole), + "GIFFDBHMHEG_LNIJBOIDPOF" => Some(Self::Lnijboidpof), + "GIFFDBHMHEG_HNPKGNADJEH" => Some(Self::Hnpkgnadjeh), + "GIFFDBHMHEG_KABJOFPGICD" => Some(Self::Kabjofpgicd), + "GIFFDBHMHEG_IANBHHFNMIM" => Some(Self::Ianbhhfnmim), + "GIFFDBHMHEG_IFILDJAJGGL" => Some(Self::Ifildjajggl), + "GIFFDBHMHEG_OCGDCNAGLEO" => Some(Self::Ocgdcnagleo), + "GIFFDBHMHEG_EAKIOCLANOE" => Some(Self::Eakioclanoe), + "GIFFDBHMHEG_IIEFHIPEDBA" => Some(Self::Iiefhipedba), + "GIFFDBHMHEG_LCDLIBMHNJE" => Some(Self::Lcdlibmhnje), + "GIFFDBHMHEG_KJDPPMEHEJJ" => Some(Self::Kjdppmehejj), + "GIFFDBHMHEG_CDDMGGIKMOD" => Some(Self::Cddmggikmod), + "GIFFDBHMHEG_HCKNIKMMDPP" => Some(Self::Hcknikmmdpp), + "GIFFDBHMHEG_DNJDNKKGHGO" => Some(Self::Dnjdnkkghgo), + "GIFFDBHMHEG_AOFMBMFKEPG" => Some(Self::Aofmbmfkepg), + "GIFFDBHMHEG_NLLODAFEABC" => Some(Self::Nllodafeabc), + "GIFFDBHMHEG_PGKDAMPLNEE" => Some(Self::Pgkdamplnee), + "GIFFDBHMHEG_GHNJBPONDKP" => Some(Self::Ghnjbpondkp), + "GIFFDBHMHEG_FEPKMMFLHIB" => Some(Self::Fepkmmflhib), + "GIFFDBHMHEG_IIKFBNJHBMJ" => Some(Self::Iikfbnjhbmj), + "GIFFDBHMHEG_PLHPGFLKLCJ" => Some(Self::Plhpgflklcj), + "GIFFDBHMHEG_HILJFOLBEFJ" => Some(Self::Hiljfolbefj), + "GIFFDBHMHEG_FEGFFNAFEAP" => Some(Self::Fegffnafeap), + "GIFFDBHMHEG_IHBBCAKNBOB" => Some(Self::Ihbbcaknbob), + "GIFFDBHMHEG_PBCMNBLPCJB" => Some(Self::Pbcmnblpcjb), + "GIFFDBHMHEG_OLHHCMPMEDE" => Some(Self::Olhhcmpmede), + "GIFFDBHMHEG_PCHDBHEMGKA" => Some(Self::Pchdbhemgka), + "GIFFDBHMHEG_DCKMBFOFCLF" => Some(Self::Dckmbfofclf), + "GIFFDBHMHEG_CMKEPEGAKFJ" => Some(Self::Cmkepegakfj), + "GIFFDBHMHEG_JDIFCMHHHNB" => Some(Self::Jdifcmhhhnb), + "GIFFDBHMHEG_PNNBAKCCHLC" => Some(Self::Pnnbakcchlc), + "GIFFDBHMHEG_FFJECAHEFKL" => Some(Self::Ffjecahefkl), + "GIFFDBHMHEG_LPOBEDHAKBC" => Some(Self::Lpobedhakbc), + "GIFFDBHMHEG_AHCGFHGLMMG" => Some(Self::Ahcgfhglmmg), + "GIFFDBHMHEG_BOAGKCPHAEH" => Some(Self::Boagkcphaeh), + "GIFFDBHMHEG_MBHGBCDCHOG" => Some(Self::Mbhgbcdchog), + "GIFFDBHMHEG_OOBLONBOBAE" => Some(Self::Ooblonbobae), + "GIFFDBHMHEG_NKODFNKEDBP" => Some(Self::Nkodfnkedbp), + "GIFFDBHMHEG_JOKJCAKHMJM" => Some(Self::Jokjcakhmjm), + "GIFFDBHMHEG_FECDJELENCK" => Some(Self::Fecdjelenck), + "GIFFDBHMHEG_KDJGIMLCALK" => Some(Self::Kdjgimlcalk), + "GIFFDBHMHEG_KDHAHHKBBKO" => Some(Self::Kdhahhkbbko), + "GIFFDBHMHEG_ONIFINMACIP" => Some(Self::Onifinmacip), + "GIFFDBHMHEG_FHLJGCOMJLF" => Some(Self::Fhljgcomjlf), + "GIFFDBHMHEG_LCPDINJKAIA" => Some(Self::Lcpdinjkaia), + "GIFFDBHMHEG_KPLAPMCHEFN" => Some(Self::Kplapmchefn), + "GIFFDBHMHEG_BMPINCAICKJ" => Some(Self::Bmpincaickj), + "GIFFDBHMHEG_DOGBFEKEHMG" => Some(Self::Dogbfekehmg), + "GIFFDBHMHEG_MBDFMMIOKAF" => Some(Self::Mbdfmmiokaf), + "GIFFDBHMHEG_ANDBENJCEKH" => Some(Self::Andbenjcekh), + "GIFFDBHMHEG_OLINALKLEEL" => Some(Self::Olinalkleel), + "GIFFDBHMHEG_GJLNLFIAGPH" => Some(Self::Gjlnlfiagph), + "GIFFDBHMHEG_JPAONADHINJ" => Some(Self::Jpaonadhinj), + "GIFFDBHMHEG_AFGMONLIDKB" => Some(Self::Afgmonlidkb), + "GIFFDBHMHEG_GHDJNJHJOIE" => Some(Self::Ghdjnjhjoie), + "GIFFDBHMHEG_CEMICGFJLIA" => Some(Self::Cemicgfjlia), + "GIFFDBHMHEG_CAFEHCHIEFL" => Some(Self::Cafehchiefl), + "GIFFDBHMHEG_BJIAODPPKCJ" => Some(Self::Bjiaodppkcj), + "GIFFDBHMHEG_IHIGJLFOBFD" => Some(Self::Ihigjlfobfd), + "GIFFDBHMHEG_KPBMMCBJLPC" => Some(Self::Kpbmmcbjlpc), + "GIFFDBHMHEG_BDDLAJLMHKM" => Some(Self::Bddlajlmhkm), + "GIFFDBHMHEG_BFLGGKIBHFM" => Some(Self::Bflggkibhfm), + "GIFFDBHMHEG_JGEPOODEMCM" => Some(Self::Jgepoodemcm), + "GIFFDBHMHEG_MIHDBGIIOJK" => Some(Self::Mihdbgiiojk), + "GIFFDBHMHEG_OFLLIGKJBGP" => Some(Self::Oflligkjbgp), + "GIFFDBHMHEG_FAGFDANKJFI" => Some(Self::Fagfdankjfi), + "GIFFDBHMHEG_KNINLNCGLMI" => Some(Self::Kninlncglmi), + "GIFFDBHMHEG_MKPHELAIFAC" => Some(Self::Mkphelaifac), + "GIFFDBHMHEG_DBNCOCEAMEM" => Some(Self::Dbncoceamem), + "GIFFDBHMHEG_PIOEKAGMLBB" => Some(Self::Pioekagmlbb), + "GIFFDBHMHEG_IOMHPNPFJNH" => Some(Self::Iomhpnpfjnh), + "GIFFDBHMHEG_MDHJFNPNJLO" => Some(Self::Mdhjfnpnjlo), + "GIFFDBHMHEG_IICIJDIIHFI" => Some(Self::Iicijdiihfi), + "GIFFDBHMHEG_ADFABKLPELJ" => Some(Self::Adfabklpelj), + "GIFFDBHMHEG_GBHCFMGPDHM" => Some(Self::Gbhcfmgpdhm), + "GIFFDBHMHEG_FOOIAJDHPEG" => Some(Self::Fooiajdhpeg), + "GIFFDBHMHEG_CIPAJOFDCAK" => Some(Self::Cipajofdcak), + "GIFFDBHMHEG_MIENLJLLICO" => Some(Self::Mienljllico), + "GIFFDBHMHEG_NACKBAONKOE" => Some(Self::Nackbaonkoe), + "GIFFDBHMHEG_OABGFFJKFNP" => Some(Self::Oabgffjkfnp), + "GIFFDBHMHEG_BOGIODPLNBM" => Some(Self::Bogiodplnbm), + "GIFFDBHMHEG_CELFPJIDFEM" => Some(Self::Celfpjidfem), + "GIFFDBHMHEG_PDGPCPDOFIB" => Some(Self::Pdgpcpdofib), + "GIFFDBHMHEG_FAMGGHMLMHF" => Some(Self::Famgghmlmhf), + "GIFFDBHMHEG_ECGMEDKLDEB" => Some(Self::Ecgmedkldeb), + "GIFFDBHMHEG_JNOCAAAEFAP" => Some(Self::Jnocaaaefap), + "GIFFDBHMHEG_MCCIHJBGFDM" => Some(Self::Mccihjbgfdm), + "GIFFDBHMHEG_AMEJOBNCCDM" => Some(Self::Amejobnccdm), + "GIFFDBHMHEG_NNPMPEOAKCK" => Some(Self::Nnpmpeoakck), + "GIFFDBHMHEG_OIKPDFANLML" => Some(Self::Oikpdfanlml), + "GIFFDBHMHEG_BLAOKDJMMHI" => Some(Self::Blaokdjmmhi), + "GIFFDBHMHEG_DJECKGGECHH" => Some(Self::Djeckggechh), + "GIFFDBHMHEG_BDDBCCGJGBI" => Some(Self::Bddbccgjgbi), + "GIFFDBHMHEG_GEMPAEMJDBH" => Some(Self::Gempaemjdbh), + "GIFFDBHMHEG_BDHODNOOHCC" => Some(Self::Bdhodnoohcc), + "GIFFDBHMHEG_DKCLKFFHBIL" => Some(Self::Dkclkffhbil), + "GIFFDBHMHEG_JAMAFHIPPBG" => Some(Self::Jamafhippbg), + "GIFFDBHMHEG_ANNFLGAGHPB" => Some(Self::Annflgaghpb), + "GIFFDBHMHEG_OKPEPIHJJAH" => Some(Self::Okpepihjjah), + "GIFFDBHMHEG_KNEPBGJLNMO" => Some(Self::Knepbgjlnmo), + "GIFFDBHMHEG_EMAMPFLKEPG" => Some(Self::Emampflkepg), + "GIFFDBHMHEG_BEIFPNHDDPO" => Some(Self::Beifpnhddpo), + "GIFFDBHMHEG_BHLGBFOPKIF" => Some(Self::Bhlgbfopkif), + "GIFFDBHMHEG_MEFDOCMAGPC" => Some(Self::Mefdocmagpc), + "GIFFDBHMHEG_POPFBBEMDOF" => Some(Self::Popfbbemdof), + "GIFFDBHMHEG_FEIFKADCDMA" => Some(Self::Feifkadcdma), + "GIFFDBHMHEG_AGNAOEJOJLN" => Some(Self::Agnaoejojln), + "GIFFDBHMHEG_HCOKEANAHLF" => Some(Self::Hcokeanahlf), + "GIFFDBHMHEG_FHEGFEMAOGH" => Some(Self::Fhegfemaogh), + "GIFFDBHMHEG_LFEIPPBFEMB" => Some(Self::Lfeippbfemb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gjobdclbgli { + HollowBattleEventTypeDefault = 0, + HollowBattleEventTypeNormal = 1, + HollowBattleEventTypeElite = 2, + HollowBattleEventTypeBoss = 3, + HollowBattleEventTypeLevelEnd = 4, + HollowBattleEventTypeLevelFin = 5, +} +impl Gjobdclbgli { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowBattleEventTypeDefault => { + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_DEFAULT" + } + Self::HollowBattleEventTypeNormal => { + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_NORMAL" + } + Self::HollowBattleEventTypeElite => { + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_ELITE" + } + Self::HollowBattleEventTypeBoss => { + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_BOSS" + } + Self::HollowBattleEventTypeLevelEnd => { + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_LEVEL_END" + } + Self::HollowBattleEventTypeLevelFin => { + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_LEVEL_FIN" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_DEFAULT" => { + Some(Self::HollowBattleEventTypeDefault) + } + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_NORMAL" => { + Some(Self::HollowBattleEventTypeNormal) + } + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_ELITE" => { + Some(Self::HollowBattleEventTypeElite) + } + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_BOSS" => { + Some(Self::HollowBattleEventTypeBoss) + } + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_LEVEL_END" => { + Some(Self::HollowBattleEventTypeLevelEnd) + } + "GJOBDCLBGLI_HOLLOW_BATTLE_EVENT_TYPE_LEVEL_FIN" => { + Some(Self::HollowBattleEventTypeLevelFin) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bmomkmmgeaj { + Begeemmdknm = 0, + Ipiibcjaamj = 1, + Dnfogldpcjg = 2, + Ihpnpfelncl = 3, + Iekplgkneod = 5, + Oncoiomdlpi = 6, + Gbpkhbahbnb = 7, + Fjglpkpiilh = 8, + Iiallagkkkm = 9, + Mfjbgjknfgc = 10, + Kibnfoeicdk = 11, + Kijfajaommo = 12, + Gcpeebpneda = 13, + Pedpfgjenmb = 14, + Hgkmnmehhkg = 15, + Jbcgkeejgkd = 16, + Cihpeodkbib = 17, + Igofegeippd = 18, + Mohemieokne = 19, + Efmbpegjach = 20, + Dgaccndllbi = 21, + Jolkbdonjim = 22, + Ahbjheciplp = 23, + Cnfifkeabje = 24, + Bjmcdedmkcf = 25, +} +impl Bmomkmmgeaj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Begeemmdknm => "BMOMKMMGEAJ_BEGEEMMDKNM", + Self::Ipiibcjaamj => "BMOMKMMGEAJ_IPIIBCJAAMJ", + Self::Dnfogldpcjg => "BMOMKMMGEAJ_DNFOGLDPCJG", + Self::Ihpnpfelncl => "BMOMKMMGEAJ_IHPNPFELNCL", + Self::Iekplgkneod => "BMOMKMMGEAJ_IEKPLGKNEOD", + Self::Oncoiomdlpi => "BMOMKMMGEAJ_ONCOIOMDLPI", + Self::Gbpkhbahbnb => "BMOMKMMGEAJ_GBPKHBAHBNB", + Self::Fjglpkpiilh => "BMOMKMMGEAJ_FJGLPKPIILH", + Self::Iiallagkkkm => "BMOMKMMGEAJ_IIALLAGKKKM", + Self::Mfjbgjknfgc => "BMOMKMMGEAJ_MFJBGJKNFGC", + Self::Kibnfoeicdk => "BMOMKMMGEAJ_KIBNFOEICDK", + Self::Kijfajaommo => "BMOMKMMGEAJ_KIJFAJAOMMO", + Self::Gcpeebpneda => "BMOMKMMGEAJ_GCPEEBPNEDA", + Self::Pedpfgjenmb => "BMOMKMMGEAJ_PEDPFGJENMB", + Self::Hgkmnmehhkg => "BMOMKMMGEAJ_HGKMNMEHHKG", + Self::Jbcgkeejgkd => "BMOMKMMGEAJ_JBCGKEEJGKD", + Self::Cihpeodkbib => "BMOMKMMGEAJ_CIHPEODKBIB", + Self::Igofegeippd => "BMOMKMMGEAJ_IGOFEGEIPPD", + Self::Mohemieokne => "BMOMKMMGEAJ_MOHEMIEOKNE", + Self::Efmbpegjach => "BMOMKMMGEAJ_EFMBPEGJACH", + Self::Dgaccndllbi => "BMOMKMMGEAJ_DGACCNDLLBI", + Self::Jolkbdonjim => "BMOMKMMGEAJ_JOLKBDONJIM", + Self::Ahbjheciplp => "BMOMKMMGEAJ_AHBJHECIPLP", + Self::Cnfifkeabje => "BMOMKMMGEAJ_CNFIFKEABJE", + Self::Bjmcdedmkcf => "BMOMKMMGEAJ_BJMCDEDMKCF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BMOMKMMGEAJ_BEGEEMMDKNM" => Some(Self::Begeemmdknm), + "BMOMKMMGEAJ_IPIIBCJAAMJ" => Some(Self::Ipiibcjaamj), + "BMOMKMMGEAJ_DNFOGLDPCJG" => Some(Self::Dnfogldpcjg), + "BMOMKMMGEAJ_IHPNPFELNCL" => Some(Self::Ihpnpfelncl), + "BMOMKMMGEAJ_IEKPLGKNEOD" => Some(Self::Iekplgkneod), + "BMOMKMMGEAJ_ONCOIOMDLPI" => Some(Self::Oncoiomdlpi), + "BMOMKMMGEAJ_GBPKHBAHBNB" => Some(Self::Gbpkhbahbnb), + "BMOMKMMGEAJ_FJGLPKPIILH" => Some(Self::Fjglpkpiilh), + "BMOMKMMGEAJ_IIALLAGKKKM" => Some(Self::Iiallagkkkm), + "BMOMKMMGEAJ_MFJBGJKNFGC" => Some(Self::Mfjbgjknfgc), + "BMOMKMMGEAJ_KIBNFOEICDK" => Some(Self::Kibnfoeicdk), + "BMOMKMMGEAJ_KIJFAJAOMMO" => Some(Self::Kijfajaommo), + "BMOMKMMGEAJ_GCPEEBPNEDA" => Some(Self::Gcpeebpneda), + "BMOMKMMGEAJ_PEDPFGJENMB" => Some(Self::Pedpfgjenmb), + "BMOMKMMGEAJ_HGKMNMEHHKG" => Some(Self::Hgkmnmehhkg), + "BMOMKMMGEAJ_JBCGKEEJGKD" => Some(Self::Jbcgkeejgkd), + "BMOMKMMGEAJ_CIHPEODKBIB" => Some(Self::Cihpeodkbib), + "BMOMKMMGEAJ_IGOFEGEIPPD" => Some(Self::Igofegeippd), + "BMOMKMMGEAJ_MOHEMIEOKNE" => Some(Self::Mohemieokne), + "BMOMKMMGEAJ_EFMBPEGJACH" => Some(Self::Efmbpegjach), + "BMOMKMMGEAJ_DGACCNDLLBI" => Some(Self::Dgaccndllbi), + "BMOMKMMGEAJ_JOLKBDONJIM" => Some(Self::Jolkbdonjim), + "BMOMKMMGEAJ_AHBJHECIPLP" => Some(Self::Ahbjheciplp), + "BMOMKMMGEAJ_CNFIFKEABJE" => Some(Self::Cnfifkeabje), + "BMOMKMMGEAJ_BJMCDEDMKCF" => Some(Self::Bjmcdedmkcf), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Imnaggkinkh { + TypeOfGetListNone = 0, + TypeOfGetListLen = 1, + TypeOfGetListItem = 2, + TypeOfGetListPop = 3, + TypeOfGetListCount = 4, + TypeOfGetListMax = 5, + TypeOfGetListMin = 6, + TypeOfGetListClip = 7, +} +impl Imnaggkinkh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::TypeOfGetListNone => "IMNAGGKINKH_TYPE_OF_GET_LIST_NONE", + Self::TypeOfGetListLen => "IMNAGGKINKH_TYPE_OF_GET_LIST_LEN", + Self::TypeOfGetListItem => "IMNAGGKINKH_TYPE_OF_GET_LIST_ITEM", + Self::TypeOfGetListPop => "IMNAGGKINKH_TYPE_OF_GET_LIST_POP", + Self::TypeOfGetListCount => "IMNAGGKINKH_TYPE_OF_GET_LIST_COUNT", + Self::TypeOfGetListMax => "IMNAGGKINKH_TYPE_OF_GET_LIST_MAX", + Self::TypeOfGetListMin => "IMNAGGKINKH_TYPE_OF_GET_LIST_MIN", + Self::TypeOfGetListClip => "IMNAGGKINKH_TYPE_OF_GET_LIST_CLIP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IMNAGGKINKH_TYPE_OF_GET_LIST_NONE" => Some(Self::TypeOfGetListNone), + "IMNAGGKINKH_TYPE_OF_GET_LIST_LEN" => Some(Self::TypeOfGetListLen), + "IMNAGGKINKH_TYPE_OF_GET_LIST_ITEM" => Some(Self::TypeOfGetListItem), + "IMNAGGKINKH_TYPE_OF_GET_LIST_POP" => Some(Self::TypeOfGetListPop), + "IMNAGGKINKH_TYPE_OF_GET_LIST_COUNT" => Some(Self::TypeOfGetListCount), + "IMNAGGKINKH_TYPE_OF_GET_LIST_MAX" => Some(Self::TypeOfGetListMax), + "IMNAGGKINKH_TYPE_OF_GET_LIST_MIN" => Some(Self::TypeOfGetListMin), + "IMNAGGKINKH_TYPE_OF_GET_LIST_CLIP" => Some(Self::TypeOfGetListClip), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kmhjfpmjpjj { + Ebcmhghfkja = 0, + Pkfcfbcoblb = 1, +} +impl Kmhjfpmjpjj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ebcmhghfkja => "KMHJFPMJPJJ_EBCMHGHFKJA", + Self::Pkfcfbcoblb => "KMHJFPMJPJJ_PKFCFBCOBLB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KMHJFPMJPJJ_EBCMHGHFKJA" => Some(Self::Ebcmhghfkja), + "KMHJFPMJPJJ_PKFCFBCOBLB" => Some(Self::Pkfcfbcoblb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Coigfieehej { + Ochpkllbhak = 0, + Gnjaboginkh = 1, + Flinbfgkpfd = 2, + Jnllkhokodg = 3, +} +impl Coigfieehej { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ochpkllbhak => "COIGFIEEHEJ_OCHPKLLBHAK", + Self::Gnjaboginkh => "COIGFIEEHEJ_GNJABOGINKH", + Self::Flinbfgkpfd => "COIGFIEEHEJ_FLINBFGKPFD", + Self::Jnllkhokodg => "COIGFIEEHEJ_JNLLKHOKODG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "COIGFIEEHEJ_OCHPKLLBHAK" => Some(Self::Ochpkllbhak), + "COIGFIEEHEJ_GNJABOGINKH" => Some(Self::Gnjaboginkh), + "COIGFIEEHEJ_FLINBFGKPFD" => Some(Self::Flinbfgkpfd), + "COIGFIEEHEJ_JNLLKHOKODG" => Some(Self::Jnllkhokodg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Afokclmlbmj { + Onjdjdaekol = 0, + Pehkaopmecl = 1, + Nakenpimfnh = 2, + Kgibkbakall = 3, + Iediedefpen = 4, + Pkhmnmbhchi = 5, + Oklmlkojcfe = 6, + Bbhkieolkog = 7, + Ehbcpajohac = 8, + Ndffmhgbjcl = 9, + Ijidaocedde = 10, + Aifkibajppl = 11, + Jgegoljfooc = 12, + Lfjnmaacnah = 13, + Bdonhjicejb = 14, + Aeacohppmhp = 15, + Cdlmfngiang = 16, + Gkohfpegpcd = 17, + Bkldlcijpbe = 18, + Lajboknengd = 19, + Fdkoibbcapb = 20, + Cacnhaiddmc = 21, + Ohgfoklnnce = 22, + Lhnfncbchkn = 23, + Dlhilkhboko = 24, + Omdgfjbhjai = 25, + Ekgpkmoenhl = 26, + Jkliepmcchh = 27, + Fmpkibdnpna = 28, + Mlejninhamj = 29, + Jgkikojicjh = 30, + Jlngcncgdgn = 31, + Iogpiigcmia = 32, + Opkdjhmnidf = 33, + Fieagalioeg = 34, + Jbkbpbmidll = 35, + Ofpifnhkkae = 36, + Lbjmmooikmp = 37, + Gbchkggalce = 38, + Pgjcgpoopab = 39, + Lnhecjmljbg = 40, + Almkdbmahde = 41, + Pambofkpmbe = 42, + Mmkpbpjhmfn = 43, + Omdckobmfgf = 44, + Hombgpbdjbc = 45, + Pbeiaffpedc = 46, + Hjhcaopegdc = 47, + Gekbakdggmf = 48, + Ilfdioghgfe = 49, + Gjigeihdncj = 50, + Pbbcdhooibf = 51, + Jacbjiopoed = 52, + Ndmmidannef = 53, + Pffeedmlkgf = 54, + Chfaoikijkc = 55, + Iijmkblfhbf = 56, + Ghlggmhikod = 57, + Hjpbhjgdpci = 58, +} +impl Afokclmlbmj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Onjdjdaekol => "AFOKCLMLBMJ_ONJDJDAEKOL", + Self::Pehkaopmecl => "AFOKCLMLBMJ_PEHKAOPMECL", + Self::Nakenpimfnh => "AFOKCLMLBMJ_NAKENPIMFNH", + Self::Kgibkbakall => "AFOKCLMLBMJ_KGIBKBAKALL", + Self::Iediedefpen => "AFOKCLMLBMJ_IEDIEDEFPEN", + Self::Pkhmnmbhchi => "AFOKCLMLBMJ_PKHMNMBHCHI", + Self::Oklmlkojcfe => "AFOKCLMLBMJ_OKLMLKOJCFE", + Self::Bbhkieolkog => "AFOKCLMLBMJ_BBHKIEOLKOG", + Self::Ehbcpajohac => "AFOKCLMLBMJ_EHBCPAJOHAC", + Self::Ndffmhgbjcl => "AFOKCLMLBMJ_NDFFMHGBJCL", + Self::Ijidaocedde => "AFOKCLMLBMJ_IJIDAOCEDDE", + Self::Aifkibajppl => "AFOKCLMLBMJ_AIFKIBAJPPL", + Self::Jgegoljfooc => "AFOKCLMLBMJ_JGEGOLJFOOC", + Self::Lfjnmaacnah => "AFOKCLMLBMJ_LFJNMAACNAH", + Self::Bdonhjicejb => "AFOKCLMLBMJ_BDONHJICEJB", + Self::Aeacohppmhp => "AFOKCLMLBMJ_AEACOHPPMHP", + Self::Cdlmfngiang => "AFOKCLMLBMJ_CDLMFNGIANG", + Self::Gkohfpegpcd => "AFOKCLMLBMJ_GKOHFPEGPCD", + Self::Bkldlcijpbe => "AFOKCLMLBMJ_BKLDLCIJPBE", + Self::Lajboknengd => "AFOKCLMLBMJ_LAJBOKNENGD", + Self::Fdkoibbcapb => "AFOKCLMLBMJ_FDKOIBBCAPB", + Self::Cacnhaiddmc => "AFOKCLMLBMJ_CACNHAIDDMC", + Self::Ohgfoklnnce => "AFOKCLMLBMJ_OHGFOKLNNCE", + Self::Lhnfncbchkn => "AFOKCLMLBMJ_LHNFNCBCHKN", + Self::Dlhilkhboko => "AFOKCLMLBMJ_DLHILKHBOKO", + Self::Omdgfjbhjai => "AFOKCLMLBMJ_OMDGFJBHJAI", + Self::Ekgpkmoenhl => "AFOKCLMLBMJ_EKGPKMOENHL", + Self::Jkliepmcchh => "AFOKCLMLBMJ_JKLIEPMCCHH", + Self::Fmpkibdnpna => "AFOKCLMLBMJ_FMPKIBDNPNA", + Self::Mlejninhamj => "AFOKCLMLBMJ_MLEJNINHAMJ", + Self::Jgkikojicjh => "AFOKCLMLBMJ_JGKIKOJICJH", + Self::Jlngcncgdgn => "AFOKCLMLBMJ_JLNGCNCGDGN", + Self::Iogpiigcmia => "AFOKCLMLBMJ_IOGPIIGCMIA", + Self::Opkdjhmnidf => "AFOKCLMLBMJ_OPKDJHMNIDF", + Self::Fieagalioeg => "AFOKCLMLBMJ_FIEAGALIOEG", + Self::Jbkbpbmidll => "AFOKCLMLBMJ_JBKBPBMIDLL", + Self::Ofpifnhkkae => "AFOKCLMLBMJ_OFPIFNHKKAE", + Self::Lbjmmooikmp => "AFOKCLMLBMJ_LBJMMOOIKMP", + Self::Gbchkggalce => "AFOKCLMLBMJ_GBCHKGGALCE", + Self::Pgjcgpoopab => "AFOKCLMLBMJ_PGJCGPOOPAB", + Self::Lnhecjmljbg => "AFOKCLMLBMJ_LNHECJMLJBG", + Self::Almkdbmahde => "AFOKCLMLBMJ_ALMKDBMAHDE", + Self::Pambofkpmbe => "AFOKCLMLBMJ_PAMBOFKPMBE", + Self::Mmkpbpjhmfn => "AFOKCLMLBMJ_MMKPBPJHMFN", + Self::Omdckobmfgf => "AFOKCLMLBMJ_OMDCKOBMFGF", + Self::Hombgpbdjbc => "AFOKCLMLBMJ_HOMBGPBDJBC", + Self::Pbeiaffpedc => "AFOKCLMLBMJ_PBEIAFFPEDC", + Self::Hjhcaopegdc => "AFOKCLMLBMJ_HJHCAOPEGDC", + Self::Gekbakdggmf => "AFOKCLMLBMJ_GEKBAKDGGMF", + Self::Ilfdioghgfe => "AFOKCLMLBMJ_ILFDIOGHGFE", + Self::Gjigeihdncj => "AFOKCLMLBMJ_GJIGEIHDNCJ", + Self::Pbbcdhooibf => "AFOKCLMLBMJ_PBBCDHOOIBF", + Self::Jacbjiopoed => "AFOKCLMLBMJ_JACBJIOPOED", + Self::Ndmmidannef => "AFOKCLMLBMJ_NDMMIDANNEF", + Self::Pffeedmlkgf => "AFOKCLMLBMJ_PFFEEDMLKGF", + Self::Chfaoikijkc => "AFOKCLMLBMJ_CHFAOIKIJKC", + Self::Iijmkblfhbf => "AFOKCLMLBMJ_IIJMKBLFHBF", + Self::Ghlggmhikod => "AFOKCLMLBMJ_GHLGGMHIKOD", + Self::Hjpbhjgdpci => "AFOKCLMLBMJ_HJPBHJGDPCI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AFOKCLMLBMJ_ONJDJDAEKOL" => Some(Self::Onjdjdaekol), + "AFOKCLMLBMJ_PEHKAOPMECL" => Some(Self::Pehkaopmecl), + "AFOKCLMLBMJ_NAKENPIMFNH" => Some(Self::Nakenpimfnh), + "AFOKCLMLBMJ_KGIBKBAKALL" => Some(Self::Kgibkbakall), + "AFOKCLMLBMJ_IEDIEDEFPEN" => Some(Self::Iediedefpen), + "AFOKCLMLBMJ_PKHMNMBHCHI" => Some(Self::Pkhmnmbhchi), + "AFOKCLMLBMJ_OKLMLKOJCFE" => Some(Self::Oklmlkojcfe), + "AFOKCLMLBMJ_BBHKIEOLKOG" => Some(Self::Bbhkieolkog), + "AFOKCLMLBMJ_EHBCPAJOHAC" => Some(Self::Ehbcpajohac), + "AFOKCLMLBMJ_NDFFMHGBJCL" => Some(Self::Ndffmhgbjcl), + "AFOKCLMLBMJ_IJIDAOCEDDE" => Some(Self::Ijidaocedde), + "AFOKCLMLBMJ_AIFKIBAJPPL" => Some(Self::Aifkibajppl), + "AFOKCLMLBMJ_JGEGOLJFOOC" => Some(Self::Jgegoljfooc), + "AFOKCLMLBMJ_LFJNMAACNAH" => Some(Self::Lfjnmaacnah), + "AFOKCLMLBMJ_BDONHJICEJB" => Some(Self::Bdonhjicejb), + "AFOKCLMLBMJ_AEACOHPPMHP" => Some(Self::Aeacohppmhp), + "AFOKCLMLBMJ_CDLMFNGIANG" => Some(Self::Cdlmfngiang), + "AFOKCLMLBMJ_GKOHFPEGPCD" => Some(Self::Gkohfpegpcd), + "AFOKCLMLBMJ_BKLDLCIJPBE" => Some(Self::Bkldlcijpbe), + "AFOKCLMLBMJ_LAJBOKNENGD" => Some(Self::Lajboknengd), + "AFOKCLMLBMJ_FDKOIBBCAPB" => Some(Self::Fdkoibbcapb), + "AFOKCLMLBMJ_CACNHAIDDMC" => Some(Self::Cacnhaiddmc), + "AFOKCLMLBMJ_OHGFOKLNNCE" => Some(Self::Ohgfoklnnce), + "AFOKCLMLBMJ_LHNFNCBCHKN" => Some(Self::Lhnfncbchkn), + "AFOKCLMLBMJ_DLHILKHBOKO" => Some(Self::Dlhilkhboko), + "AFOKCLMLBMJ_OMDGFJBHJAI" => Some(Self::Omdgfjbhjai), + "AFOKCLMLBMJ_EKGPKMOENHL" => Some(Self::Ekgpkmoenhl), + "AFOKCLMLBMJ_JKLIEPMCCHH" => Some(Self::Jkliepmcchh), + "AFOKCLMLBMJ_FMPKIBDNPNA" => Some(Self::Fmpkibdnpna), + "AFOKCLMLBMJ_MLEJNINHAMJ" => Some(Self::Mlejninhamj), + "AFOKCLMLBMJ_JGKIKOJICJH" => Some(Self::Jgkikojicjh), + "AFOKCLMLBMJ_JLNGCNCGDGN" => Some(Self::Jlngcncgdgn), + "AFOKCLMLBMJ_IOGPIIGCMIA" => Some(Self::Iogpiigcmia), + "AFOKCLMLBMJ_OPKDJHMNIDF" => Some(Self::Opkdjhmnidf), + "AFOKCLMLBMJ_FIEAGALIOEG" => Some(Self::Fieagalioeg), + "AFOKCLMLBMJ_JBKBPBMIDLL" => Some(Self::Jbkbpbmidll), + "AFOKCLMLBMJ_OFPIFNHKKAE" => Some(Self::Ofpifnhkkae), + "AFOKCLMLBMJ_LBJMMOOIKMP" => Some(Self::Lbjmmooikmp), + "AFOKCLMLBMJ_GBCHKGGALCE" => Some(Self::Gbchkggalce), + "AFOKCLMLBMJ_PGJCGPOOPAB" => Some(Self::Pgjcgpoopab), + "AFOKCLMLBMJ_LNHECJMLJBG" => Some(Self::Lnhecjmljbg), + "AFOKCLMLBMJ_ALMKDBMAHDE" => Some(Self::Almkdbmahde), + "AFOKCLMLBMJ_PAMBOFKPMBE" => Some(Self::Pambofkpmbe), + "AFOKCLMLBMJ_MMKPBPJHMFN" => Some(Self::Mmkpbpjhmfn), + "AFOKCLMLBMJ_OMDCKOBMFGF" => Some(Self::Omdckobmfgf), + "AFOKCLMLBMJ_HOMBGPBDJBC" => Some(Self::Hombgpbdjbc), + "AFOKCLMLBMJ_PBEIAFFPEDC" => Some(Self::Pbeiaffpedc), + "AFOKCLMLBMJ_HJHCAOPEGDC" => Some(Self::Hjhcaopegdc), + "AFOKCLMLBMJ_GEKBAKDGGMF" => Some(Self::Gekbakdggmf), + "AFOKCLMLBMJ_ILFDIOGHGFE" => Some(Self::Ilfdioghgfe), + "AFOKCLMLBMJ_GJIGEIHDNCJ" => Some(Self::Gjigeihdncj), + "AFOKCLMLBMJ_PBBCDHOOIBF" => Some(Self::Pbbcdhooibf), + "AFOKCLMLBMJ_JACBJIOPOED" => Some(Self::Jacbjiopoed), + "AFOKCLMLBMJ_NDMMIDANNEF" => Some(Self::Ndmmidannef), + "AFOKCLMLBMJ_PFFEEDMLKGF" => Some(Self::Pffeedmlkgf), + "AFOKCLMLBMJ_CHFAOIKIJKC" => Some(Self::Chfaoikijkc), + "AFOKCLMLBMJ_IIJMKBLFHBF" => Some(Self::Iijmkblfhbf), + "AFOKCLMLBMJ_GHLGGMHIKOD" => Some(Self::Ghlggmhikod), + "AFOKCLMLBMJ_HJPBHJGDPCI" => Some(Self::Hjpbhjgdpci), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mfgcbglmlpn { + Neklkpakclj = 0, +} +impl Mfgcbglmlpn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Neklkpakclj => "MFGCBGLMLPN_NEKLKPAKCLJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MFGCBGLMLPN_NEKLKPAKCLJ" => Some(Self::Neklkpakclj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cmjhbecaigf { + Cenenchnebn = 0, + Modjccfleof = 1, + Fnklcdcpaoa = 2, + Eafchcdejbp = 3, + Ddnfmnfleef = 4, + Ajoobionkdk = 5, +} +impl Cmjhbecaigf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cenenchnebn => "CMJHBECAIGF_CENENCHNEBN", + Self::Modjccfleof => "CMJHBECAIGF_MODJCCFLEOF", + Self::Fnklcdcpaoa => "CMJHBECAIGF_FNKLCDCPAOA", + Self::Eafchcdejbp => "CMJHBECAIGF_EAFCHCDEJBP", + Self::Ddnfmnfleef => "CMJHBECAIGF_DDNFMNFLEEF", + Self::Ajoobionkdk => "CMJHBECAIGF_AJOOBIONKDK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CMJHBECAIGF_CENENCHNEBN" => Some(Self::Cenenchnebn), + "CMJHBECAIGF_MODJCCFLEOF" => Some(Self::Modjccfleof), + "CMJHBECAIGF_FNKLCDCPAOA" => Some(Self::Fnklcdcpaoa), + "CMJHBECAIGF_EAFCHCDEJBP" => Some(Self::Eafchcdejbp), + "CMJHBECAIGF_DDNFMNFLEEF" => Some(Self::Ddnfmnfleef), + "CMJHBECAIGF_AJOOBIONKDK" => Some(Self::Ajoobionkdk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum EndHollowMiniGameType { + EndHollowMiniGameTypeNone = 0, + EndHollowMiniGameTypeFail = 1, + EndHollowMiniGameTypeSucc = 2, + EndHollowMiniGameTypeRebegin = 3, + EndHollowMiniGameTypeGiveUp = 4, +} +impl EndHollowMiniGameType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::EndHollowMiniGameTypeNone => { + "EndHollowMiniGameType_END_HOLLOW_MINI_GAME_TYPE_NONE" + } + Self::EndHollowMiniGameTypeFail => { + "EndHollowMiniGameType_END_HOLLOW_MINI_GAME_TYPE_FAIL" + } + Self::EndHollowMiniGameTypeSucc => { + "EndHollowMiniGameType_END_HOLLOW_MINI_GAME_TYPE_SUCC" + } + Self::EndHollowMiniGameTypeRebegin => { + "EndHollowMiniGameType_END_HOLLOW_MINI_GAME_TYPE_REBEGIN" + } + Self::EndHollowMiniGameTypeGiveUp => { + "EndHollowMiniGameType_END_HOLLOW_MINI_GAME_TYPE_GIVE_UP" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EndHollowMiniGameType_END_HOLLOW_MINI_GAME_TYPE_NONE" => { + Some(Self::EndHollowMiniGameTypeNone) + } + "EndHollowMiniGameType_END_HOLLOW_MINI_GAME_TYPE_FAIL" => { + Some(Self::EndHollowMiniGameTypeFail) + } + "EndHollowMiniGameType_END_HOLLOW_MINI_GAME_TYPE_SUCC" => { + Some(Self::EndHollowMiniGameTypeSucc) + } + "EndHollowMiniGameType_END_HOLLOW_MINI_GAME_TYPE_REBEGIN" => { + Some(Self::EndHollowMiniGameTypeRebegin) + } + "EndHollowMiniGameType_END_HOLLOW_MINI_GAME_TYPE_GIVE_UP" => { + Some(Self::EndHollowMiniGameTypeGiveUp) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Plphgmajpjj { + Bdhhkeiepho = 0, + Beinnbifgmj = 1, +} +impl Plphgmajpjj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bdhhkeiepho => "PLPHGMAJPJJ_BDHHKEIEPHO", + Self::Beinnbifgmj => "PLPHGMAJPJJ_BEINNBIFGMJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PLPHGMAJPJJ_BDHHKEIEPHO" => Some(Self::Bdhhkeiepho), + "PLPHGMAJPJJ_BEINNBIFGMJ" => Some(Self::Beinnbifgmj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Blegacggfgg { + Iilbfimgcco = 0, + Ndkmbcojhna = 1, +} +impl Blegacggfgg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Iilbfimgcco => "BLEGACGGFGG_IILBFIMGCCO", + Self::Ndkmbcojhna => "BLEGACGGFGG_NDKMBCOJHNA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BLEGACGGFGG_IILBFIMGCCO" => Some(Self::Iilbfimgcco), + "BLEGACGGFGG_NDKMBCOJHNA" => Some(Self::Ndkmbcojhna), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pgofjbdboal { + Xy2Index = 0, + Index2Xy = 1, +} +impl Pgofjbdboal { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Xy2Index => "PGOFJBDBOAL_XY_2_INDEX", + Self::Index2Xy => "PGOFJBDBOAL_INDEX_2_XY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PGOFJBDBOAL_XY_2_INDEX" => Some(Self::Xy2Index), + "PGOFJBDBOAL_INDEX_2_XY" => Some(Self::Index2Xy), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jbjnfkggbko { + EghmHandleChosenGridsNone = 0, + EghmHandleChosenGridsAddToPool = 1, + EghmHandleChosenGridsRemoveFromPool = 2, + EghmHandleChosenGridsKeepInPool = 3, +} +impl Jbjnfkggbko { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::EghmHandleChosenGridsNone => { + "JBJNFKGGBKO_EGHM_HANDLE_CHOSEN_GRIDS_NONE" + } + Self::EghmHandleChosenGridsAddToPool => { + "JBJNFKGGBKO_EGHM_HANDLE_CHOSEN_GRIDS_ADD_TO_POOL" + } + Self::EghmHandleChosenGridsRemoveFromPool => { + "JBJNFKGGBKO_EGHM_HANDLE_CHOSEN_GRIDS_REMOVE_FROM_POOL" + } + Self::EghmHandleChosenGridsKeepInPool => { + "JBJNFKGGBKO_EGHM_HANDLE_CHOSEN_GRIDS_KEEP_IN_POOL" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JBJNFKGGBKO_EGHM_HANDLE_CHOSEN_GRIDS_NONE" => { + Some(Self::EghmHandleChosenGridsNone) + } + "JBJNFKGGBKO_EGHM_HANDLE_CHOSEN_GRIDS_ADD_TO_POOL" => { + Some(Self::EghmHandleChosenGridsAddToPool) + } + "JBJNFKGGBKO_EGHM_HANDLE_CHOSEN_GRIDS_REMOVE_FROM_POOL" => { + Some(Self::EghmHandleChosenGridsRemoveFromPool) + } + "JBJNFKGGBKO_EGHM_HANDLE_CHOSEN_GRIDS_KEEP_IN_POOL" => { + Some(Self::EghmHandleChosenGridsKeepInPool) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ganilnhahdl { + Ibjjodokndm = 0, + Goaegammjme = 1, +} +impl Ganilnhahdl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ibjjodokndm => "GANILNHAHDL_IBJJODOKNDM", + Self::Goaegammjme => "GANILNHAHDL_GOAEGAMMJME", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GANILNHAHDL_IBJJODOKNDM" => Some(Self::Ibjjodokndm), + "GANILNHAHDL_GOAEGAMMJME" => Some(Self::Goaegammjme), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dcmfddjljff { + Khlebnjcpkn = 0, +} +impl Dcmfddjljff { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Khlebnjcpkn => "DCMFDDJLJFF_KHLEBNJCPKN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DCMFDDJLJFF_KHLEBNJCPKN" => Some(Self::Khlebnjcpkn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Oalbiblbgnm { + MphComponentTypeNone = 0, + MphIdComponent = 1, + MphPosComponent = 2, + MphPlayerComponent = 3, + MphMapComponent = 4, + MphGridComponent = 5, + MphGridStateComponent = 6, + MphSectionComponent = 7, +} +impl Oalbiblbgnm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::MphComponentTypeNone => "OALBIBLBGNM_MPH_COMPONENT_TYPE_NONE", + Self::MphIdComponent => "OALBIBLBGNM_MPH_ID_COMPONENT", + Self::MphPosComponent => "OALBIBLBGNM_MPH_POS_COMPONENT", + Self::MphPlayerComponent => "OALBIBLBGNM_MPH_PLAYER_COMPONENT", + Self::MphMapComponent => "OALBIBLBGNM_MPH_MAP_COMPONENT", + Self::MphGridComponent => "OALBIBLBGNM_MPH_GRID_COMPONENT", + Self::MphGridStateComponent => "OALBIBLBGNM_MPH_GRID_STATE_COMPONENT", + Self::MphSectionComponent => "OALBIBLBGNM_MPH_SECTION_COMPONENT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OALBIBLBGNM_MPH_COMPONENT_TYPE_NONE" => Some(Self::MphComponentTypeNone), + "OALBIBLBGNM_MPH_ID_COMPONENT" => Some(Self::MphIdComponent), + "OALBIBLBGNM_MPH_POS_COMPONENT" => Some(Self::MphPosComponent), + "OALBIBLBGNM_MPH_PLAYER_COMPONENT" => Some(Self::MphPlayerComponent), + "OALBIBLBGNM_MPH_MAP_COMPONENT" => Some(Self::MphMapComponent), + "OALBIBLBGNM_MPH_GRID_COMPONENT" => Some(Self::MphGridComponent), + "OALBIBLBGNM_MPH_GRID_STATE_COMPONENT" => Some(Self::MphGridStateComponent), + "OALBIBLBGNM_MPH_SECTION_COMPONENT" => Some(Self::MphSectionComponent), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gdecngolake { + Mnkcflfaocm = 0, + Pdpkadmpdfe = 1, + Danpjgdffkd = 2, + Jniiibfcfko = 3, + Fgbbnmonfbe = 4, + Ppnfbbckmge = 5, +} +impl Gdecngolake { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mnkcflfaocm => "GDECNGOLAKE_MNKCFLFAOCM", + Self::Pdpkadmpdfe => "GDECNGOLAKE_PDPKADMPDFE", + Self::Danpjgdffkd => "GDECNGOLAKE_DANPJGDFFKD", + Self::Jniiibfcfko => "GDECNGOLAKE_JNIIIBFCFKO", + Self::Fgbbnmonfbe => "GDECNGOLAKE_FGBBNMONFBE", + Self::Ppnfbbckmge => "GDECNGOLAKE_PPNFBBCKMGE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GDECNGOLAKE_MNKCFLFAOCM" => Some(Self::Mnkcflfaocm), + "GDECNGOLAKE_PDPKADMPDFE" => Some(Self::Pdpkadmpdfe), + "GDECNGOLAKE_DANPJGDFFKD" => Some(Self::Danpjgdffkd), + "GDECNGOLAKE_JNIIIBFCFKO" => Some(Self::Jniiibfcfko), + "GDECNGOLAKE_FGBBNMONFBE" => Some(Self::Fgbbnmonfbe), + "GDECNGOLAKE_PPNFBBCKMGE" => Some(Self::Ppnfbbckmge), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pcinkdafaom { + CameraPositionTypeNone = 0, + CameraPositionTypeBound = 1, + CameraPositionTypePosition = 2, + CameraPositionTypeReturn = 3, +} +impl Pcinkdafaom { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::CameraPositionTypeNone => "PCINKDAFAOM_CAMERA_POSITION_TYPE_NONE", + Self::CameraPositionTypeBound => "PCINKDAFAOM_CAMERA_POSITION_TYPE_BOUND", + Self::CameraPositionTypePosition => { + "PCINKDAFAOM_CAMERA_POSITION_TYPE_POSITION" + } + Self::CameraPositionTypeReturn => "PCINKDAFAOM_CAMERA_POSITION_TYPE_RETURN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PCINKDAFAOM_CAMERA_POSITION_TYPE_NONE" => Some(Self::CameraPositionTypeNone), + "PCINKDAFAOM_CAMERA_POSITION_TYPE_BOUND" => { + Some(Self::CameraPositionTypeBound) + } + "PCINKDAFAOM_CAMERA_POSITION_TYPE_POSITION" => { + Some(Self::CameraPositionTypePosition) + } + "PCINKDAFAOM_CAMERA_POSITION_TYPE_RETURN" => { + Some(Self::CameraPositionTypeReturn) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jhjhbpmmpnd { + Jhmpopdmkko = 0, + Pogkndgohbl = 1, +} +impl Jhjhbpmmpnd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jhmpopdmkko => "JHJHBPMMPND_JHMPOPDMKKO", + Self::Pogkndgohbl => "JHJHBPMMPND_POGKNDGOHBL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JHJHBPMMPND_JHMPOPDMKKO" => Some(Self::Jhmpopdmkko), + "JHJHBPMMPND_POGKNDGOHBL" => Some(Self::Pogkndgohbl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum ActionType { + DdnfkdodognActionTypeNone = 0, + DdnfkdodognWaitSeconds = 1, + DdnfkdodognLogText = 2, + DdnfkdodognWait = 3, + DdnfkdodognLog = 4, + DdnfkdodognOpenUi = 5, + DdnfkdodognSwitchSection = 6, + DdnfkdodognAnimCtrlerParam = 7, + DdnfkdodognShowTip = 8, + DdnfkdodognShowPopWindow = 9, + DdnfkdodognWalkFarAway = 10, + DdnfkdodognOpenDialogHollow = 12, + DdnfkdodognCloseDialogHollow = 13, + DdnfkdodognPlayAnimHollow = 14, + DdnfkdodognCameraStretch = 15, + DdnfkdodognCameraMove = 16, + DdnfkdodognCameraMoveV2 = 17, + DdnfkdodognShowTipHollow = 18, + DdnfkdodognShowPopWindowHollow = 19, + DdnfkdodognPlayPostEffect = 20, + DdnfkdodognEnterHollowQuest = 21, + DdnfkdodognEnterArchiveFileQuest = 22, + DdnfkdodognPreset = 23, + DdnfkdodognBlackMask = 24, + DdnfkdodognPlaySound = 25, + DdnfkdodognCloseTip = 26, + DdnfkdodognReconectChessboard = 27, + DdnfkdodognHollowSetSwitchEffect = 28, + DdnfkdodognOutDoor = 29, + DdnfkdodognFreezeChessboardCamera = 30, + DdnfkdodognShowVhsStoreLevelTips = 31, + DdnfkdodognInteractNpcWithAnim = 32, + DdnfkdodognChangeHollowBg = 33, + DdnfkdodognTrashGachaGetData = 34, + DdnfkdodognTrashGacha = 35, + DdnfkdodognShowQuestTip = 36, + DdnfkdodognTeleportUi = 37, + DdnfkdodognCameraActive = 38, + DdnfkdodognCameraReset = 39, + DdnfkdodognCreateFc = 40, + DdnfkdodognBehaviourFc = 41, + DdnfkdodognSendEventFc = 42, + DdnfkdodognReadFcBlackBoardData = 43, + DdnfkdodognWriteFcBlackBoardData = 44, + DdnfkdodognChangeSoundState = 45, + DdnfkdodognAfkHollow = 46, + DdnfkdodognSwitchBigTv = 49, + DdnfkdodognTriggerInteract = 52, + DdnfkdodognStopAnim = 53, + DdnfkdodognGetTrust = 54, + DdnfkdodognPlayDialogAnim = 56, + DdnfkdodognUnfreezeChessboardCamera = 57, + DdnfkdodognWaitTipsEnd = 58, + DdnfkdodognBeginTutorialGuide = 59, + DdnfkdodognFocusCamera = 60, + DdnfkdodognUnlockClue = 61, + DdnfkdodognAvatarTipsSwitch = 62, + DdnfkdodognFinishRescue = 63, + DdnfkdodognPlayTvEffect = 64, + DdnfkdodognSetInteractPoint = 65, + DdnfkdodognHideMainCityUi = 66, + DdnfkdodognChatCamera = 67, + DdnfkdodognCreateClientEntity = 68, + DdnfkdodognSetNpcVisibleClient = 69, + DdnfkdodognGachaItemPerform = 70, + DdnfkdodognSetMessageClient = 71, + DdnfkdodognModMainCityTimeClient = 72, + DdnfkdodognModifyLightLevelPerform = 73, + DdnfkdodognSetPosition = 74, + DdnfkdodognSetChessboardPerformMode = 75, + DdnfkdodognTransition = 76, + DdnfkdodognWaitUntilUiClose = 77, + DdnfkdodognWaitTransitionEnd = 78, + DdnfkdodognCloseUi = 79, + DdnfkdodognQuitPhoto = 80, + DdnfkdodognShowTeleportUi = 81, + DdnfkdodognModifyCameraTargetSection = 82, + DdnfkdodognCameraBackToPlayer = 83, + DdnfkdodognResetSceneObj = 84, + DdnfkdodognManualAccelerate = 85, + DdnfkdodognBreakNavigate = 86, + DdnfkdodognShowExitButtonNew = 88, + DdnfkdodognShowBottomTipHollow = 89, + DdnfkdodognShowChapterTip = 90, + DdnfkdodognEnterDungeonQuest = 91, + DdnfkdodognDownloadFullResource = 92, + DdnfkdodognAreaTips = 93, + DdnfkdodognClientPerform = 94, + DdnfkdodognShowItem = 95, + DdnfkdodognSwitchOva = 96, + DdnfkdodognSetLiftStatus = 97, + DdnfkdodognAreaCameraModify = 98, + DdnfkdodognTriggerPerformBehavior = 99, + DdnfkdodognSwitchAtmosphere = 100, + DdnfkdodognModifyLightDiffusionPoints = 101, + DdnfkdodognModCatName = 102, + DdnfkdodognOpenUiGame = 103, + DdnfkdodognOpenDialogHollowV2 = 104, + DdnfkdodognPlayDialogAnimV2 = 105, + DdnfkdodognCloseDialogHollowV2 = 106, + DdnfkdodognBreakDialogAnimV2 = 107, + DdnfkdodognWaitAnimEnd = 108, + DdnfkdodognPlayAnimSequence = 109, + DdnfkdodognEndOverlordfeastGame = 110, + DdnfkdodognPlayAimSequence = 111, + DdnfkdodognClientSwitchDelay = 112, + DdnfkdodognBeginPhoto = 113, + DdnfkdodognChessboardGameHenshin = 114, + DdnfkdodognSwitchGuiseAvatar = 115, + DdnfkdodognIf = 1001, + DdnfkdodognStartLoop = 1002, + DdnfkdodognEndLoop = 1003, + DdnfkdodognCallFunction = 1004, + DdnfkdodognReturn = 1005, + DdnfkdodognResetEvent = 1006, + DdnfkdodognAddItem = 1007, + DdnfkdodognSetVariable = 1008, + DdnfkdodognSetConditionProgress = 1009, + DdnfkdodognRandomVariableValue = 1010, + DdnfkdodognListSpecialOpt = 1011, + DdnfkdodognFinishQuest = 1012, + DdnfkdodognRandomWithWeight = 1013, + DdnfkdodognPerform = 1014, + DdnfkdodognReward = 1015, + DdnfkdodognSetList = 1016, + DdnfkdodognGetList = 1017, + DdnfkdodognStartAction = 1018, + DdnfkdodognSetString = 1019, + DdnfkdodognSendCustomEventTracking = 1020, + DdnfkdodognEmptyAction = 1021, + DdnfkdodognSetVector2 = 1022, + DdnfkdodognSwitch = 1023, + DdnfkdodognSwitchCompareInt = 1024, + DdnfkdodognDraw = 1025, + DdnfkdodognSetVec2List = 1026, + DdnfkdodognGetVec2List = 1027, + DdnfkdodognCallFunctionV2 = 1028, + DdnfkdodognEnterHollowShop = 2001, + DdnfkdodognMakeChoice = 2002, + DdnfkdodognModifySceneProperty = 2003, + DdnfkdodognFinishEvent = 2004, + DdnfkdodognTriggerBattle = 2005, + DdnfkdodognAverageAvatarHp = 2006, + DdnfkdodognRemoveCard = 2007, + DdnfkdodognDropPool = 2009, + DdnfkdodognTransfer = 2011, + DdnfkdodognFinishHollow = 2012, + DdnfkdodognRandomItemCard = 2014, + DdnfkdodognEventModification = 2015, + DdnfkdodognChangeAvatarState = 2016, + DdnfkdodognDropPack = 2017, + DdnfkdodognSetMapState = 2018, + DdnfkdodognDropCurse = 2019, + DdnfkdodognLogHollow = 2020, + DdnfkdodognDropCard = 2021, + DdnfkdodognChangeHollowEventWeight = 2022, + DdnfkdodognRemoveCurse = 2023, + DdnfkdodognHideNode = 2024, + DdnfkdodognSetChallenge = 2025, + DdnfkdodognDropChallengeId = 2026, + DdnfkdodognGetAvatarInfo = 2027, + DdnfkdodognSetHollowItem = 2028, + DdnfkdodognChangeCharacter = 2029, + DdnfkdodognNewHollow = 2030, + DdnfkdodognSlotMachine = 2033, + DdnfkdodognSetHollowBlackOut = 2034, + DdnfkdodognFinishBlackOut = 2035, + DdnfkdodognSetHollowSystemState = 2036, + DdnfkdodognAddCharacter = 2037, + DdnfkdodognLockCurse = 2038, + DdnfkdodognHollowDistance = 2039, + DdnfkdodognPushBack = 2040, + DdnfkdodognApplyAbility = 2041, + DdnfkdodognRemoveAbility = 2042, + DdnfkdodognRandomBattleId = 2044, + DdnfkdodognGetIndexByFilter = 2046, + DdnfkdodognSetBattleType = 2048, + DdnfkdodognGetPosition = 2049, + DdnfkdodognStartMiniGame = 2050, + DdnfkdodognSetHollowItemSlot = 2051, + DdnfkdodognGetHollowItem = 2052, + DdnfkdodognSearchGrid = 2053, + DdnfkdodognSetNpcState = 2054, + DdnfkdodognGetNpcInstanceId = 2055, + DdnfkdodognDestoryNpc = 2056, + DdnfkdodognAddCharacterAbyss = 2057, + DdnfkdodognChangeCharacterAbyss = 2058, + DdnfkdodognGetCharacterPoolAbyss = 2059, + DdnfkdodognAbyssDropCharacterPool = 2060, + DdnfkdodognGetLeaderOfHollowNpc = 2061, + DdnfkdodognSetLeaderOfHollowNpc = 2062, + DdnfkdodognUpdateSaveNpcNum = 2063, + DdnfkdodognPushWithDirection = 2064, + DdnfkdodognHollowNpcFindPath = 2065, + DdnfkdodognHollowNpcMove = 2066, + DdnfkdodognNewChessboard = 2067, + DdnfkdodognGoToNextLayer = 2068, + DdnfkdodognGoToChessboard = 2069, + DdnfkdodognGetPreChessboard = 2070, + DdnfkdodognTriggerHollowNpcBehavior = 2071, + DdnfkdodognShowLayerResult = 2072, + DdnfkdodognHenshin = 2073, + DdnfkdodognCreateHollowNpc = 2074, + DdnfkdodognDropChessboardId = 2075, + DdnfkdodognMakeDialogChoice = 2076, + DdnfkdodognGetEventId = 2077, + DdnfkdodognCountDropPool = 2078, + DdnfkdodognMakeItemChoice = 2079, + DdnfkdodognHpActHollow = 2080, + DdnfkdodognBanHollowEvent = 2081, + DdnfkdodognCoordinateTransform = 2082, + DdnfkdodognRegisterVariableCondition = 2083, + DdnfkdodognOnOffCategory = 2084, + DdnfkdodognResetBigTvSnapshot = 2087, + DdnfkdodognBigTvSupportSnapshot = 2088, + DdnfkdodognSetEventIcon = 2089, + DdnfkdodognGetAnimSheetId = 2090, + DdnfkdodognHollowNpcHenshin = 2091, + DdnfkdodognHollowNpcTransfer = 2092, + DdnfkdodognBindBigTv = 2093, + DdnfkdodognMoveNpcToSection = 2098, + DdnfkdodognGetNpcId = 2099, + DdnfkdodognSearchHollowNpc = 2100, + DdnfkdodognBoom = 2101, + DdnfkdodognTriggerHollowEvent = 2102, + DdnfkdodognBreakDialogAnim = 2103, + DdnfkdodognMoveBigTv = 2104, + DdnfkdodognSetNextLayerChessboardId = 2105, + DdnfkdodognGetBossBattleEvent = 2106, + DdnfkdodognCreateHollowSnake = 2107, + DdnfkdodognSetGridStaminaState = 2108, + DdnfkdodognDisplayBigTvChessboard = 2109, + DdnfkdodognSplitHollowSnake = 2110, + DdnfkdodognGetHollowSnakeInfo = 2111, + DdnfkdodognModifyHollowSnake = 2112, + DdnfkdodognChangeHollowNpcApperance = 2113, + DdnfkdodognOpenBigTvSokobanGame = 2114, + DdnfkdodognSetInterconnectedStoryEvent = 2115, + DdnfkdodognHollowNpcImitate = 2116, + DdnfkdodognTriggerHollowNpcEarlyAct = 2117, + DdnfkdodognGetAvatarByTag = 2118, + DdnfkdodognSetBattleTypeAbyss = 2119, + DdnfkdodognRemoveEventIdFromRandomPool = 2120, + DdnfkdodognRecycleHollowItem = 2121, + DdnfkdodognCopyEvent = 2122, + DdnfkdodognBanCharacter = 2123, + DdnfkdodognRemoveCharacter = 2124, + DdnfkdodognSetNpcAttr = 2125, + DdnfkdodognGetNpcAttr = 2126, + DdnfkdodognHitNpc = 2127, + DdnfkdodognGetPlayerHollowMovePath = 2128, + DdnfkdodognGetBigTvIndex = 2129, + DdnfkdodognClearNpc = 2130, + DdnfkdodognSaveMiniSnapshot = 2131, + DdnfkdodognGetPossessHollowItem = 2132, + DdnfkdodognResetHollowLineQuest = 2133, + DdnfkdodognModifyLightLevel = 2134, + DdnfkdodognGetLightLevel = 2135, + DdnfkdodognAddHollowLight = 2136, + DdnfkdodognRemoveHollowLight = 2137, + DdnfkdodognModifyChessboardPlugin = 2138, + DdnfkdodognGetLightUid = 2139, + DdnfkdodognNewBoom = 2140, + DdnfkdodognSetEntityParam = 2141, + DdnfkdodognGetEntityParam = 2142, + DdnfkdodognRepairZone = 2143, + DdnfkdodognPushRepairZone = 2144, + DdnfkdodognSetInnerWorldMapState = 2145, + DdnfkdodognListConvert = 2146, + DdnfkdodognAbyssGetBattleEvent = 2147, + DdnfkdodognTriggerEntityBasicBehavior = 2148, + DdnfkdodognTriggerEntityMove = 2149, + DdnfkdodognTriggerEntityTransfer = 2150, + DdnfkdodognTriggerEntityInteract = 2151, + DdnfkdodognUpgradeCard = 2152, + DdnfkdodognNewTimeRewind = 2153, + DdnfkdodognEnterTimeRewind = 2154, + DdnfkdodognInitTimeSegment = 2155, + DdnfkdodognModifyTimeSegment = 2156, + DdnfkdodognModifyTimeRewind = 2157, + DdnfkdodognGetTimeRewindInfo = 2158, + DdnfkdodognFinishKeySegment = 2159, + DdnfkdodognActivateGridInSegment = 2160, + DdnfkdodognCountCardPool = 2161, + DdnfkdodognMakeBangbooChoice = 2162, + DdnfkdodognChangeBangbooChoice = 2163, + DdnfkdodognTriggerEntityScript = 2164, + DdnfkdodognAddStressPunishCurse = 2165, + DdnfkdodognPopupTip = 2166, + DdnfkdodognHideHollowEntity = 2167, + DdnfkdodognGetEntityPriorityList = 2168, + DdnfkdodognChessUiController = 2169, + DdnfkdodognGetEntityPriority = 2170, + DdnfkdodognCreateEntity = 2171, + DdnfkdodognDestroyEntityByUid = 2172, + DdnfkdodognInteractWithEntity = 2173, + DdnfkdodognSearchPosition = 2174, + DdnfkdodognFilterHollowEntity = 2175, + DdnfkdodognModifyStackingOrder = 2176, + DdnfkdodognInitConwayLifeGame = 2177, + DdnfkdodognIterateConwayLifeGame = 2178, + DdnfkdodognChangeConwayLifeGameGridState = 2179, + DdnfkdodognBigTvChessUiController = 2180, + DdnfkdodognSetEntityState = 2181, + DdnfkdodognRemoveEntityState = 2182, + DdnfkdodognGetEventTexture = 2183, + DdnfkdodognModifyComponent = 2184, + DdnfkdodognChangeHollowSoundState = 2185, + DdnfkdodognSetEntityScriptVariable = 2186, + DdnfkdodognCreateSignal = 2187, + DdnfkdodognSubscribeSignal = 2188, + DdnfkdodognUnsubscribeSignal = 2189, + DdnfkdodognSendSignal = 2190, + DdnfkdodognDestroySignal = 2191, + DdnfkdodognSetMultiHollowOutSection = 2192, + DdnfkdodognGetEntityScriptVariable = 2193, + DdnfkdodognRemoveChessboard = 2194, + DdnfkdodognBeginTutorialGuideInteract = 2195, + DdnfkdodognTimeRewindInteract = 2196, + DdnfkdodognLimboAvatarCard = 2197, + DdnfkdodognLimboCampEvent = 2198, + DdnfkdodognModifyAimRectComponent = 2199, + DdnfkdodognRemoveFromPool = 2200, + DdnfkdodognActivateSegmentInteract = 2201, + DdnfkdodognRecordUseInitiativeItem = 2202, + DdnfkdodognModifyMultiHollowOutFloor = 2203, + DdnfkdodognSetMultiHollowOutView = 2204, + DdnfkdodognMarkGridAsElevator = 2205, + DdnfkdodognMoveElevatorToSection = 2206, + DdnfkdodognNextDropClueEvent = 2207, + DdnfkdodognMoveHollowEvent = 2208, + DdnfkdodognGetFocusCameraParam = 2209, + DdnfkdodognReplaceCard = 2210, + DdnfkdodognLoadEventParam = 2211, + DdnfkdodognSetLayerType = 2212, + DdnfkdodognCreateHollowSpawner = 2213, + DdnfkdodognSetHollowSpawner = 2214, + DdnfkdodognGetHollowSpawner = 2215, + DdnfkdodognRunHollowSpawner = 2216, + DdnfkdodognPlayHollowQteGame = 2217, + DdnfkdodognSetHollowPlayUi = 2218, + DdnfkdodognSetHollowActivityParam = 2219, + DdnfkdodognGetHollowActivityParam = 2220, + DdnfkdodognRewardWithPerform = 2221, + DdnfkdodognInitHackerGame = 2222, + DdnfkdodognModifyHackerGameParam = 2223, + DdnfkdodognModifyPopInteractComponent = 2224, + DdnfkdodognSetLevelGlobalVariable = 2225, + DdnfkdodognEventModificationByFalling = 2226, + DdnfkdodognTryMoveElevator = 2227, + DdnfkdodognGetEventPoolEvent = 2228, + DdnfkdodognChessUi3dController = 2229, + DdnfkdodognHollowGameFinishToLevel = 2230, + DdnfkdodognChessboardSokobanUiInfo = 2231, + DdnfkdodognCreateNpc = 3001, + DdnfkdodognSetQuestPhase = 3002, + DdnfkdodognChangeInteract = 3003, + DdnfkdodognInteractFinish = 3004, + DdnfkdodognRemoveMainCityQuestNpc = 3005, + DdnfkdodognRemoveMainCityQuestInteract = 3006, + DdnfkdodognChangeBackSceneInfo = 3007, + DdnfkdodognResetMainCityQuestGroup = 3008, + DdnfkdodognUnlockHollowQuest = 3010, + DdnfkdodognSetNpcVisible = 3011, + DdnfkdodognRemoveInteract = 3012, + DdnfkdodognRemoveNpc = 3013, + DdnfkdodognSetVhsStoreLevel = 3014, + DdnfkdodognSetVhsStoreTrendState = 3015, + DdnfkdodognSwitchMainCityTime = 3016, + DdnfkdodognTheWorld = 3017, + DdnfkdodognForceRefresh = 3018, + DdnfkdodognForbidAfk = 3019, + DdnfkdodognSwitchMainCharacter = 3020, + DdnfkdodognSetLandEventFinish = 3021, + DdnfkdodognSetBgm = 3022, + DdnfkdodognSetMainCityObjectState = 3023, + DdnfkdodognEventChoice = 3024, + DdnfkdodognCreateMoveNpc = 3025, + DdnfkdodognChangeGuidePoint = 3026, + DdnfkdodognAddDailyQuest = 3027, + DdnfkdodognAddMicroTask = 3028, + DdnfkdodognSetFirstMeet = 3029, + DdnfkdodognCreateCameraZone = 3030, + DdnfkdodognSetMainCityTime = 3031, + DdnfkdodognNextMainCityTimePeriod = 3032, + DdnfkdodognPlayerSwitchMainCharacter = 3033, + DdnfkdodognEndTransition = 3034, + DdnfkdodognAddVhsFlowBuff = 3035, + DdnfkdodognActivatePhotoId = 3036, + DdnfkdodognAccelerateMainCityTime = 3037, + DdnfkdodognSetTrashNewFlag = 3038, + DdnfkdodognUseLastTime = 3039, + DdnfkdodognOccupyOvernight = 3040, + DdnfkdodognShowPhotoQuestFinishTip = 3041, + DdnfkdodognAddSoundAmb = 3042, + DdnfkdodognSubmitItem = 3043, + DdnfkdodognModTrust = 3044, + DdnfkdodognSetPartnerEventState = 3045, + DdnfkdodognSendMessage = 3046, + DdnfkdodognSwitchTrackQuest = 3047, + DdnfkdodognModNpc = 3048, + DdnfkdodognAcceptOvernight = 3049, + DdnfkdodognActiveTrigger = 3050, + DdnfkdodognModObjState = 3051, + DdnfkdodognModSceneObj = 3052, + DdnfkdodognFansSettle = 3053, + DdnfkdodognOpenHallGame = 3054, + DdnfkdodognAddPartnerEvent = 3055, + DdnfkdodognExecOvernightEvent = 3056, + DdnfkdodognSofaRestNextTimePeriod = 3057, + DdnfkdodognBeginUiGame = 3058, + DdnfkdodognPrepareData = 3059, + DdnfkdodognClearRpRecommendResult = 3060, + DdnfkdodognDoMainCityGame = 3061, + DdnfkdodognShowInTodo = 3062, + DdnfkdodognChangeNpcName = 3063, + DdnfkdodognCreateOva = 3064, + DdnfkdodognSetOvaState = 3065, + DdnfkdodognSwitchMainCharacterGuise = 3066, + DdnfkdodognCompleteHallGame = 3068, + DdnfkdodognHideMainControlAvatar = 3069, + DdnfkdodognEatRamen = 3070, + DdnfkdodognOngoingTips = 3071, + DdnfkdodognSetSound = 3072, + DdnfkdodognMapChooseByEvent = 4001, + DdnfkdodognMapChooseByLayer = 4002, + DdnfkdodognMapChooseByNum = 4003, + DdnfkdodognMapChooseByRange = 4004, + DdnfkdodognMapClearPool = 4005, + DdnfkdodognMapSetEvent = 4007, + DdnfkdodognMapSetLayer = 4008, + DdnfkdodognMapSetTag = 4009, +} +impl ActionType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::DdnfkdodognActionTypeNone => "DDNFKDODOGN_ACTION_TYPE_NONE", + Self::DdnfkdodognWaitSeconds => "DDNFKDODOGN_WAIT_SECONDS", + Self::DdnfkdodognLogText => "DDNFKDODOGN_LOG_TEXT", + Self::DdnfkdodognWait => "DDNFKDODOGN_WAIT", + Self::DdnfkdodognLog => "DDNFKDODOGN_LOG", + Self::DdnfkdodognOpenUi => "DDNFKDODOGN_OPEN_UI", + Self::DdnfkdodognSwitchSection => "DDNFKDODOGN_SWITCH_SECTION", + Self::DdnfkdodognAnimCtrlerParam => "DDNFKDODOGN_ANIM_CTRLER_PARAM", + Self::DdnfkdodognShowTip => "DDNFKDODOGN_SHOW_TIP", + Self::DdnfkdodognShowPopWindow => "DDNFKDODOGN_SHOW_POP_WINDOW", + Self::DdnfkdodognWalkFarAway => "DDNFKDODOGN_WALK_FAR_AWAY", + Self::DdnfkdodognOpenDialogHollow => "DDNFKDODOGN_OPEN_DIALOG_HOLLOW", + Self::DdnfkdodognCloseDialogHollow => "DDNFKDODOGN_CLOSE_DIALOG_HOLLOW", + Self::DdnfkdodognPlayAnimHollow => "DDNFKDODOGN_PLAY_ANIM_HOLLOW", + Self::DdnfkdodognCameraStretch => "DDNFKDODOGN_CAMERA_STRETCH", + Self::DdnfkdodognCameraMove => "DDNFKDODOGN_CAMERA_MOVE", + Self::DdnfkdodognCameraMoveV2 => "DDNFKDODOGN_CAMERA_MOVE_V2", + Self::DdnfkdodognShowTipHollow => "DDNFKDODOGN_SHOW_TIP_HOLLOW", + Self::DdnfkdodognShowPopWindowHollow => "DDNFKDODOGN_SHOW_POP_WINDOW_HOLLOW", + Self::DdnfkdodognPlayPostEffect => "DDNFKDODOGN_PLAY_POST_EFFECT", + Self::DdnfkdodognEnterHollowQuest => "DDNFKDODOGN_ENTER_HOLLOW_QUEST", + Self::DdnfkdodognEnterArchiveFileQuest => { + "DDNFKDODOGN_ENTER_ARCHIVE_FILE_QUEST" + } + Self::DdnfkdodognPreset => "DDNFKDODOGN_PRESET", + Self::DdnfkdodognBlackMask => "DDNFKDODOGN_BLACK_MASK", + Self::DdnfkdodognPlaySound => "DDNFKDODOGN_PLAY_SOUND", + Self::DdnfkdodognCloseTip => "DDNFKDODOGN_CLOSE_TIP", + Self::DdnfkdodognReconectChessboard => "DDNFKDODOGN_RECONECT_CHESSBOARD", + Self::DdnfkdodognHollowSetSwitchEffect => { + "DDNFKDODOGN_HOLLOW_SET_SWITCH_EFFECT" + } + Self::DdnfkdodognOutDoor => "DDNFKDODOGN_OUT_DOOR", + Self::DdnfkdodognFreezeChessboardCamera => { + "DDNFKDODOGN_FREEZE_CHESSBOARD_CAMERA" + } + Self::DdnfkdodognShowVhsStoreLevelTips => { + "DDNFKDODOGN_SHOW_VHS_STORE_LEVEL_TIPS" + } + Self::DdnfkdodognInteractNpcWithAnim => "DDNFKDODOGN_INTERACT_NPC_WITH_ANIM", + Self::DdnfkdodognChangeHollowBg => "DDNFKDODOGN_CHANGE_HOLLOW_BG", + Self::DdnfkdodognTrashGachaGetData => "DDNFKDODOGN_TRASH_GACHA_GET_DATA", + Self::DdnfkdodognTrashGacha => "DDNFKDODOGN_TRASH_GACHA", + Self::DdnfkdodognShowQuestTip => "DDNFKDODOGN_SHOW_QUEST_TIP", + Self::DdnfkdodognTeleportUi => "DDNFKDODOGN_TELEPORT_UI", + Self::DdnfkdodognCameraActive => "DDNFKDODOGN_CAMERA_ACTIVE", + Self::DdnfkdodognCameraReset => "DDNFKDODOGN_CAMERA_RESET", + Self::DdnfkdodognCreateFc => "DDNFKDODOGN_CREATE_FC", + Self::DdnfkdodognBehaviourFc => "DDNFKDODOGN_BEHAVIOUR_FC", + Self::DdnfkdodognSendEventFc => "DDNFKDODOGN_SEND_EVENT_FC", + Self::DdnfkdodognReadFcBlackBoardData => { + "DDNFKDODOGN_READ_FC_BLACK_BOARD_DATA" + } + Self::DdnfkdodognWriteFcBlackBoardData => { + "DDNFKDODOGN_WRITE_FC_BLACK_BOARD_DATA" + } + Self::DdnfkdodognChangeSoundState => "DDNFKDODOGN_CHANGE_SOUND_STATE", + Self::DdnfkdodognAfkHollow => "DDNFKDODOGN_AFK_HOLLOW", + Self::DdnfkdodognSwitchBigTv => "DDNFKDODOGN_SWITCH_BIG_TV", + Self::DdnfkdodognTriggerInteract => "DDNFKDODOGN_TRIGGER_INTERACT", + Self::DdnfkdodognStopAnim => "DDNFKDODOGN_STOP_ANIM", + Self::DdnfkdodognGetTrust => "DDNFKDODOGN_GET_TRUST", + Self::DdnfkdodognPlayDialogAnim => "DDNFKDODOGN_PLAY_DIALOG_ANIM", + Self::DdnfkdodognUnfreezeChessboardCamera => { + "DDNFKDODOGN_UNFREEZE_CHESSBOARD_CAMERA" + } + Self::DdnfkdodognWaitTipsEnd => "DDNFKDODOGN_WAIT_TIPS_END", + Self::DdnfkdodognBeginTutorialGuide => "DDNFKDODOGN_BEGIN_TUTORIAL_GUIDE", + Self::DdnfkdodognFocusCamera => "DDNFKDODOGN_FOCUS_CAMERA", + Self::DdnfkdodognUnlockClue => "DDNFKDODOGN_UNLOCK_CLUE", + Self::DdnfkdodognAvatarTipsSwitch => "DDNFKDODOGN_AVATAR_TIPS_SWITCH", + Self::DdnfkdodognFinishRescue => "DDNFKDODOGN_FINISH_RESCUE", + Self::DdnfkdodognPlayTvEffect => "DDNFKDODOGN_PLAY_TV_EFFECT", + Self::DdnfkdodognSetInteractPoint => "DDNFKDODOGN_SET_INTERACT_POINT", + Self::DdnfkdodognHideMainCityUi => "DDNFKDODOGN_HIDE_MAIN_CITY_UI", + Self::DdnfkdodognChatCamera => "DDNFKDODOGN_CHAT_CAMERA", + Self::DdnfkdodognCreateClientEntity => "DDNFKDODOGN_CREATE_CLIENT_ENTITY", + Self::DdnfkdodognSetNpcVisibleClient => "DDNFKDODOGN_SET_NPC_VISIBLE_CLIENT", + Self::DdnfkdodognGachaItemPerform => "DDNFKDODOGN_GACHA_ITEM_PERFORM", + Self::DdnfkdodognSetMessageClient => "DDNFKDODOGN_SET_MESSAGE_CLIENT", + Self::DdnfkdodognModMainCityTimeClient => { + "DDNFKDODOGN_MOD_MAIN_CITY_TIME_CLIENT" + } + Self::DdnfkdodognModifyLightLevelPerform => { + "DDNFKDODOGN_MODIFY_LIGHT_LEVEL_PERFORM" + } + Self::DdnfkdodognSetPosition => "DDNFKDODOGN_SET_POSITION", + Self::DdnfkdodognSetChessboardPerformMode => { + "DDNFKDODOGN_SET_CHESSBOARD_PERFORM_MODE" + } + Self::DdnfkdodognTransition => "DDNFKDODOGN_TRANSITION", + Self::DdnfkdodognWaitUntilUiClose => "DDNFKDODOGN_WAIT_UNTIL_UI_CLOSE", + Self::DdnfkdodognWaitTransitionEnd => "DDNFKDODOGN_WAIT_TRANSITION_END", + Self::DdnfkdodognCloseUi => "DDNFKDODOGN_CLOSE_UI", + Self::DdnfkdodognQuitPhoto => "DDNFKDODOGN_QUIT_PHOTO", + Self::DdnfkdodognShowTeleportUi => "DDNFKDODOGN_SHOW_TELEPORT_UI", + Self::DdnfkdodognModifyCameraTargetSection => { + "DDNFKDODOGN_MODIFY_CAMERA_TARGET_SECTION" + } + Self::DdnfkdodognCameraBackToPlayer => "DDNFKDODOGN_CAMERA_BACK_TO_PLAYER", + Self::DdnfkdodognResetSceneObj => "DDNFKDODOGN_RESET_SCENE_OBJ", + Self::DdnfkdodognManualAccelerate => "DDNFKDODOGN_MANUAL_ACCELERATE", + Self::DdnfkdodognBreakNavigate => "DDNFKDODOGN_BREAK_NAVIGATE", + Self::DdnfkdodognShowExitButtonNew => "DDNFKDODOGN_SHOW_EXIT_BUTTON_NEW", + Self::DdnfkdodognShowBottomTipHollow => "DDNFKDODOGN_SHOW_BOTTOM_TIP_HOLLOW", + Self::DdnfkdodognShowChapterTip => "DDNFKDODOGN_SHOW_CHAPTER_TIP", + Self::DdnfkdodognEnterDungeonQuest => "DDNFKDODOGN_ENTER_DUNGEON_QUEST", + Self::DdnfkdodognDownloadFullResource => "DDNFKDODOGN_DOWNLOAD_FULL_RESOURCE", + Self::DdnfkdodognAreaTips => "DDNFKDODOGN_AREA_TIPS", + Self::DdnfkdodognClientPerform => "DDNFKDODOGN_CLIENT_PERFORM", + Self::DdnfkdodognShowItem => "DDNFKDODOGN_SHOW_ITEM", + Self::DdnfkdodognSwitchOva => "DDNFKDODOGN_SWITCH_OVA", + Self::DdnfkdodognSetLiftStatus => "DDNFKDODOGN_SET_LIFT_STATUS", + Self::DdnfkdodognAreaCameraModify => "DDNFKDODOGN_AREA_CAMERA_MODIFY", + Self::DdnfkdodognTriggerPerformBehavior => { + "DDNFKDODOGN_TRIGGER_PERFORM_BEHAVIOR" + } + Self::DdnfkdodognSwitchAtmosphere => "DDNFKDODOGN_SWITCH_ATMOSPHERE", + Self::DdnfkdodognModifyLightDiffusionPoints => { + "DDNFKDODOGN_MODIFY_LIGHT_DIFFUSION_POINTS" + } + Self::DdnfkdodognModCatName => "DDNFKDODOGN_MOD_CAT_NAME", + Self::DdnfkdodognOpenUiGame => "DDNFKDODOGN_OPEN_UI_GAME", + Self::DdnfkdodognOpenDialogHollowV2 => "DDNFKDODOGN_OPEN_DIALOG_HOLLOW_V2", + Self::DdnfkdodognPlayDialogAnimV2 => "DDNFKDODOGN_PLAY_DIALOG_ANIM_V2", + Self::DdnfkdodognCloseDialogHollowV2 => "DDNFKDODOGN_CLOSE_DIALOG_HOLLOW_V2", + Self::DdnfkdodognBreakDialogAnimV2 => "DDNFKDODOGN_BREAK_DIALOG_ANIM_V2", + Self::DdnfkdodognWaitAnimEnd => "DDNFKDODOGN_WAIT_ANIM_END", + Self::DdnfkdodognPlayAnimSequence => "DDNFKDODOGN_PLAY_ANIM_SEQUENCE", + Self::DdnfkdodognEndOverlordfeastGame => "DDNFKDODOGN_END_OVERLORDFEAST_GAME", + Self::DdnfkdodognPlayAimSequence => "DDNFKDODOGN_PLAY_AIM_SEQUENCE", + Self::DdnfkdodognClientSwitchDelay => "DDNFKDODOGN_CLIENT_SWITCH_DELAY", + Self::DdnfkdodognBeginPhoto => "DDNFKDODOGN_BEGIN_PHOTO", + Self::DdnfkdodognChessboardGameHenshin => { + "DDNFKDODOGN_CHESSBOARD_GAME_HENSHIN" + } + Self::DdnfkdodognSwitchGuiseAvatar => "DDNFKDODOGN_SWITCH_GUISE_AVATAR", + Self::DdnfkdodognIf => "DDNFKDODOGN_IF", + Self::DdnfkdodognStartLoop => "DDNFKDODOGN_START_LOOP", + Self::DdnfkdodognEndLoop => "DDNFKDODOGN_END_LOOP", + Self::DdnfkdodognCallFunction => "DDNFKDODOGN_CALL_FUNCTION", + Self::DdnfkdodognReturn => "DDNFKDODOGN_RETURN", + Self::DdnfkdodognResetEvent => "DDNFKDODOGN_RESET_EVENT", + Self::DdnfkdodognAddItem => "DDNFKDODOGN_ADD_ITEM", + Self::DdnfkdodognSetVariable => "DDNFKDODOGN_SET_VARIABLE", + Self::DdnfkdodognSetConditionProgress => "DDNFKDODOGN_SET_CONDITION_PROGRESS", + Self::DdnfkdodognRandomVariableValue => "DDNFKDODOGN_RANDOM_VARIABLE_VALUE", + Self::DdnfkdodognListSpecialOpt => "DDNFKDODOGN_LIST_SPECIAL_OPT", + Self::DdnfkdodognFinishQuest => "DDNFKDODOGN_FINISH_QUEST", + Self::DdnfkdodognRandomWithWeight => "DDNFKDODOGN_RANDOM_WITH_WEIGHT", + Self::DdnfkdodognPerform => "DDNFKDODOGN_PERFORM", + Self::DdnfkdodognReward => "DDNFKDODOGN_REWARD", + Self::DdnfkdodognSetList => "DDNFKDODOGN_SET_LIST", + Self::DdnfkdodognGetList => "DDNFKDODOGN_GET_LIST", + Self::DdnfkdodognStartAction => "DDNFKDODOGN_START_ACTION", + Self::DdnfkdodognSetString => "DDNFKDODOGN_SET_STRING", + Self::DdnfkdodognSendCustomEventTracking => { + "DDNFKDODOGN_SEND_CUSTOM_EVENT_TRACKING" + } + Self::DdnfkdodognEmptyAction => "DDNFKDODOGN_EMPTY_ACTION", + Self::DdnfkdodognSetVector2 => "DDNFKDODOGN_SET_VECTOR2", + Self::DdnfkdodognSwitch => "DDNFKDODOGN_SWITCH", + Self::DdnfkdodognSwitchCompareInt => "DDNFKDODOGN_SWITCH_COMPARE_INT", + Self::DdnfkdodognDraw => "DDNFKDODOGN_DRAW", + Self::DdnfkdodognSetVec2List => "DDNFKDODOGN_SET_VEC2_LIST", + Self::DdnfkdodognGetVec2List => "DDNFKDODOGN_GET_VEC2_LIST", + Self::DdnfkdodognCallFunctionV2 => "DDNFKDODOGN_CALL_FUNCTION_V2", + Self::DdnfkdodognEnterHollowShop => "DDNFKDODOGN_ENTER_HOLLOW_SHOP", + Self::DdnfkdodognMakeChoice => "DDNFKDODOGN_MAKE_CHOICE", + Self::DdnfkdodognModifySceneProperty => "DDNFKDODOGN_MODIFY_SCENE_PROPERTY", + Self::DdnfkdodognFinishEvent => "DDNFKDODOGN_FINISH_EVENT", + Self::DdnfkdodognTriggerBattle => "DDNFKDODOGN_TRIGGER_BATTLE", + Self::DdnfkdodognAverageAvatarHp => "DDNFKDODOGN_AVERAGE_AVATAR_HP", + Self::DdnfkdodognRemoveCard => "DDNFKDODOGN_REMOVE_CARD", + Self::DdnfkdodognDropPool => "DDNFKDODOGN_DROP_POOL", + Self::DdnfkdodognTransfer => "DDNFKDODOGN_TRANSFER", + Self::DdnfkdodognFinishHollow => "DDNFKDODOGN_FINISH_HOLLOW", + Self::DdnfkdodognRandomItemCard => "DDNFKDODOGN_RANDOM_ITEM_CARD", + Self::DdnfkdodognEventModification => "DDNFKDODOGN_EVENT_MODIFICATION", + Self::DdnfkdodognChangeAvatarState => "DDNFKDODOGN_CHANGE_AVATAR_STATE", + Self::DdnfkdodognDropPack => "DDNFKDODOGN_DROP_PACK", + Self::DdnfkdodognSetMapState => "DDNFKDODOGN_SET_MAP_STATE", + Self::DdnfkdodognDropCurse => "DDNFKDODOGN_DROP_CURSE", + Self::DdnfkdodognLogHollow => "DDNFKDODOGN_LOG_HOLLOW", + Self::DdnfkdodognDropCard => "DDNFKDODOGN_DROP_CARD", + Self::DdnfkdodognChangeHollowEventWeight => { + "DDNFKDODOGN_CHANGE_HOLLOW_EVENT_WEIGHT" + } + Self::DdnfkdodognRemoveCurse => "DDNFKDODOGN_REMOVE_CURSE", + Self::DdnfkdodognHideNode => "DDNFKDODOGN_HIDE_NODE", + Self::DdnfkdodognSetChallenge => "DDNFKDODOGN_SET_CHALLENGE", + Self::DdnfkdodognDropChallengeId => "DDNFKDODOGN_DROP_CHALLENGE_ID", + Self::DdnfkdodognGetAvatarInfo => "DDNFKDODOGN_GET_AVATAR_INFO", + Self::DdnfkdodognSetHollowItem => "DDNFKDODOGN_SET_HOLLOW_ITEM", + Self::DdnfkdodognChangeCharacter => "DDNFKDODOGN_CHANGE_CHARACTER", + Self::DdnfkdodognNewHollow => "DDNFKDODOGN_NEW_HOLLOW", + Self::DdnfkdodognSlotMachine => "DDNFKDODOGN_SLOT_MACHINE", + Self::DdnfkdodognSetHollowBlackOut => "DDNFKDODOGN_SET_HOLLOW_BLACK_OUT", + Self::DdnfkdodognFinishBlackOut => "DDNFKDODOGN_FINISH_BLACK_OUT", + Self::DdnfkdodognSetHollowSystemState => { + "DDNFKDODOGN_SET_HOLLOW_SYSTEM_STATE" + } + Self::DdnfkdodognAddCharacter => "DDNFKDODOGN_ADD_CHARACTER", + Self::DdnfkdodognLockCurse => "DDNFKDODOGN_LOCK_CURSE", + Self::DdnfkdodognHollowDistance => "DDNFKDODOGN_HOLLOW_DISTANCE", + Self::DdnfkdodognPushBack => "DDNFKDODOGN_PUSH_BACK", + Self::DdnfkdodognApplyAbility => "DDNFKDODOGN_APPLY_ABILITY", + Self::DdnfkdodognRemoveAbility => "DDNFKDODOGN_REMOVE_ABILITY", + Self::DdnfkdodognRandomBattleId => "DDNFKDODOGN_RANDOM_BATTLE_ID", + Self::DdnfkdodognGetIndexByFilter => "DDNFKDODOGN_GET_INDEX_BY_FILTER", + Self::DdnfkdodognSetBattleType => "DDNFKDODOGN_SET_BATTLE_TYPE", + Self::DdnfkdodognGetPosition => "DDNFKDODOGN_GET_POSITION", + Self::DdnfkdodognStartMiniGame => "DDNFKDODOGN_START_MINI_GAME", + Self::DdnfkdodognSetHollowItemSlot => "DDNFKDODOGN_SET_HOLLOW_ITEM_SLOT", + Self::DdnfkdodognGetHollowItem => "DDNFKDODOGN_GET_HOLLOW_ITEM", + Self::DdnfkdodognSearchGrid => "DDNFKDODOGN_SEARCH_GRID", + Self::DdnfkdodognSetNpcState => "DDNFKDODOGN_SET_NPC_STATE", + Self::DdnfkdodognGetNpcInstanceId => "DDNFKDODOGN_GET_NPC_INSTANCE_ID", + Self::DdnfkdodognDestoryNpc => "DDNFKDODOGN_DESTORY_NPC", + Self::DdnfkdodognAddCharacterAbyss => "DDNFKDODOGN_ADD_CHARACTER_ABYSS", + Self::DdnfkdodognChangeCharacterAbyss => "DDNFKDODOGN_CHANGE_CHARACTER_ABYSS", + Self::DdnfkdodognGetCharacterPoolAbyss => { + "DDNFKDODOGN_GET_CHARACTER_POOL_ABYSS" + } + Self::DdnfkdodognAbyssDropCharacterPool => { + "DDNFKDODOGN_ABYSS_DROP_CHARACTER_POOL" + } + Self::DdnfkdodognGetLeaderOfHollowNpc => { + "DDNFKDODOGN_GET_LEADER_OF_HOLLOW_NPC" + } + Self::DdnfkdodognSetLeaderOfHollowNpc => { + "DDNFKDODOGN_SET_LEADER_OF_HOLLOW_NPC" + } + Self::DdnfkdodognUpdateSaveNpcNum => "DDNFKDODOGN_UPDATE_SAVE_NPC_NUM", + Self::DdnfkdodognPushWithDirection => "DDNFKDODOGN_PUSH_WITH_DIRECTION", + Self::DdnfkdodognHollowNpcFindPath => "DDNFKDODOGN_HOLLOW_NPC_FIND_PATH", + Self::DdnfkdodognHollowNpcMove => "DDNFKDODOGN_HOLLOW_NPC_MOVE", + Self::DdnfkdodognNewChessboard => "DDNFKDODOGN_NEW_CHESSBOARD", + Self::DdnfkdodognGoToNextLayer => "DDNFKDODOGN_GO_TO_NEXT_LAYER", + Self::DdnfkdodognGoToChessboard => "DDNFKDODOGN_GO_TO_CHESSBOARD", + Self::DdnfkdodognGetPreChessboard => "DDNFKDODOGN_GET_PRE_CHESSBOARD", + Self::DdnfkdodognTriggerHollowNpcBehavior => { + "DDNFKDODOGN_TRIGGER_HOLLOW_NPC_BEHAVIOR" + } + Self::DdnfkdodognShowLayerResult => "DDNFKDODOGN_SHOW_LAYER_RESULT", + Self::DdnfkdodognHenshin => "DDNFKDODOGN_HENSHIN", + Self::DdnfkdodognCreateHollowNpc => "DDNFKDODOGN_CREATE_HOLLOW_NPC", + Self::DdnfkdodognDropChessboardId => "DDNFKDODOGN_DROP_CHESSBOARD_ID", + Self::DdnfkdodognMakeDialogChoice => "DDNFKDODOGN_MAKE_DIALOG_CHOICE", + Self::DdnfkdodognGetEventId => "DDNFKDODOGN_GET_EVENT_ID", + Self::DdnfkdodognCountDropPool => "DDNFKDODOGN_COUNT_DROP_POOL", + Self::DdnfkdodognMakeItemChoice => "DDNFKDODOGN_MAKE_ITEM_CHOICE", + Self::DdnfkdodognHpActHollow => "DDNFKDODOGN_HP_ACT_HOLLOW", + Self::DdnfkdodognBanHollowEvent => "DDNFKDODOGN_BAN_HOLLOW_EVENT", + Self::DdnfkdodognCoordinateTransform => "DDNFKDODOGN_COORDINATE_TRANSFORM", + Self::DdnfkdodognRegisterVariableCondition => { + "DDNFKDODOGN_REGISTER_VARIABLE_CONDITION" + } + Self::DdnfkdodognOnOffCategory => "DDNFKDODOGN_ON_OFF_CATEGORY", + Self::DdnfkdodognResetBigTvSnapshot => "DDNFKDODOGN_RESET_BIG_TV_SNAPSHOT", + Self::DdnfkdodognBigTvSupportSnapshot => { + "DDNFKDODOGN_BIG_TV_SUPPORT_SNAPSHOT" + } + Self::DdnfkdodognSetEventIcon => "DDNFKDODOGN_SET_EVENT_ICON", + Self::DdnfkdodognGetAnimSheetId => "DDNFKDODOGN_GET_ANIM_SHEET_ID", + Self::DdnfkdodognHollowNpcHenshin => "DDNFKDODOGN_HOLLOW_NPC_HENSHIN", + Self::DdnfkdodognHollowNpcTransfer => "DDNFKDODOGN_HOLLOW_NPC_TRANSFER", + Self::DdnfkdodognBindBigTv => "DDNFKDODOGN_BIND_BIG_TV", + Self::DdnfkdodognMoveNpcToSection => "DDNFKDODOGN_MOVE_NPC_TO_SECTION", + Self::DdnfkdodognGetNpcId => "DDNFKDODOGN_GET_NPC_ID", + Self::DdnfkdodognSearchHollowNpc => "DDNFKDODOGN_SEARCH_HOLLOW_NPC", + Self::DdnfkdodognBoom => "DDNFKDODOGN_BOOM", + Self::DdnfkdodognTriggerHollowEvent => "DDNFKDODOGN_TRIGGER_HOLLOW_EVENT", + Self::DdnfkdodognBreakDialogAnim => "DDNFKDODOGN_BREAK_DIALOG_ANIM", + Self::DdnfkdodognMoveBigTv => "DDNFKDODOGN_MOVE_BIG_TV", + Self::DdnfkdodognSetNextLayerChessboardId => { + "DDNFKDODOGN_SET_NEXT_LAYER_CHESSBOARD_ID" + } + Self::DdnfkdodognGetBossBattleEvent => "DDNFKDODOGN_GET_BOSS_BATTLE_EVENT", + Self::DdnfkdodognCreateHollowSnake => "DDNFKDODOGN_CREATE_HOLLOW_SNAKE", + Self::DdnfkdodognSetGridStaminaState => "DDNFKDODOGN_SET_GRID_STAMINA_STATE", + Self::DdnfkdodognDisplayBigTvChessboard => { + "DDNFKDODOGN_DISPLAY_BIG_TV_CHESSBOARD" + } + Self::DdnfkdodognSplitHollowSnake => "DDNFKDODOGN_SPLIT_HOLLOW_SNAKE", + Self::DdnfkdodognGetHollowSnakeInfo => "DDNFKDODOGN_GET_HOLLOW_SNAKE_INFO", + Self::DdnfkdodognModifyHollowSnake => "DDNFKDODOGN_MODIFY_HOLLOW_SNAKE", + Self::DdnfkdodognChangeHollowNpcApperance => { + "DDNFKDODOGN_CHANGE_HOLLOW_NPC_APPERANCE" + } + Self::DdnfkdodognOpenBigTvSokobanGame => { + "DDNFKDODOGN_OPEN_BIG_TV_SOKOBAN_GAME" + } + Self::DdnfkdodognSetInterconnectedStoryEvent => { + "DDNFKDODOGN_SET_INTERCONNECTED_STORY_EVENT" + } + Self::DdnfkdodognHollowNpcImitate => "DDNFKDODOGN_HOLLOW_NPC_IMITATE", + Self::DdnfkdodognTriggerHollowNpcEarlyAct => { + "DDNFKDODOGN_TRIGGER_HOLLOW_NPC_EARLY_ACT" + } + Self::DdnfkdodognGetAvatarByTag => "DDNFKDODOGN_GET_AVATAR_BY_TAG", + Self::DdnfkdodognSetBattleTypeAbyss => "DDNFKDODOGN_SET_BATTLE_TYPE_ABYSS", + Self::DdnfkdodognRemoveEventIdFromRandomPool => { + "DDNFKDODOGN_REMOVE_EVENT_ID_FROM_RANDOM_POOL" + } + Self::DdnfkdodognRecycleHollowItem => "DDNFKDODOGN_RECYCLE_HOLLOW_ITEM", + Self::DdnfkdodognCopyEvent => "DDNFKDODOGN_COPY_EVENT", + Self::DdnfkdodognBanCharacter => "DDNFKDODOGN_BAN_CHARACTER", + Self::DdnfkdodognRemoveCharacter => "DDNFKDODOGN_REMOVE_CHARACTER", + Self::DdnfkdodognSetNpcAttr => "DDNFKDODOGN_SET_NPC_ATTR", + Self::DdnfkdodognGetNpcAttr => "DDNFKDODOGN_GET_NPC_ATTR", + Self::DdnfkdodognHitNpc => "DDNFKDODOGN_HIT_NPC", + Self::DdnfkdodognGetPlayerHollowMovePath => { + "DDNFKDODOGN_GET_PLAYER_HOLLOW_MOVE_PATH" + } + Self::DdnfkdodognGetBigTvIndex => "DDNFKDODOGN_GET_BIG_TV_INDEX", + Self::DdnfkdodognClearNpc => "DDNFKDODOGN_CLEAR_NPC", + Self::DdnfkdodognSaveMiniSnapshot => "DDNFKDODOGN_SAVE_MINI_SNAPSHOT", + Self::DdnfkdodognGetPossessHollowItem => { + "DDNFKDODOGN_GET_POSSESS_HOLLOW_ITEM" + } + Self::DdnfkdodognResetHollowLineQuest => { + "DDNFKDODOGN_RESET_HOLLOW_LINE_QUEST" + } + Self::DdnfkdodognModifyLightLevel => "DDNFKDODOGN_MODIFY_LIGHT_LEVEL", + Self::DdnfkdodognGetLightLevel => "DDNFKDODOGN_GET_LIGHT_LEVEL", + Self::DdnfkdodognAddHollowLight => "DDNFKDODOGN_ADD_HOLLOW_LIGHT", + Self::DdnfkdodognRemoveHollowLight => "DDNFKDODOGN_REMOVE_HOLLOW_LIGHT", + Self::DdnfkdodognModifyChessboardPlugin => { + "DDNFKDODOGN_MODIFY_CHESSBOARD_PLUGIN" + } + Self::DdnfkdodognGetLightUid => "DDNFKDODOGN_GET_LIGHT_UID", + Self::DdnfkdodognNewBoom => "DDNFKDODOGN_NEW_BOOM", + Self::DdnfkdodognSetEntityParam => "DDNFKDODOGN_SET_ENTITY_PARAM", + Self::DdnfkdodognGetEntityParam => "DDNFKDODOGN_GET_ENTITY_PARAM", + Self::DdnfkdodognRepairZone => "DDNFKDODOGN_REPAIR_ZONE", + Self::DdnfkdodognPushRepairZone => "DDNFKDODOGN_PUSH_REPAIR_ZONE", + Self::DdnfkdodognSetInnerWorldMapState => { + "DDNFKDODOGN_SET_INNER_WORLD_MAP_STATE" + } + Self::DdnfkdodognListConvert => "DDNFKDODOGN_LIST_CONVERT", + Self::DdnfkdodognAbyssGetBattleEvent => "DDNFKDODOGN_ABYSS_GET_BATTLE_EVENT", + Self::DdnfkdodognTriggerEntityBasicBehavior => { + "DDNFKDODOGN_TRIGGER_ENTITY_BASIC_BEHAVIOR" + } + Self::DdnfkdodognTriggerEntityMove => "DDNFKDODOGN_TRIGGER_ENTITY_MOVE", + Self::DdnfkdodognTriggerEntityTransfer => { + "DDNFKDODOGN_TRIGGER_ENTITY_TRANSFER" + } + Self::DdnfkdodognTriggerEntityInteract => { + "DDNFKDODOGN_TRIGGER_ENTITY_INTERACT" + } + Self::DdnfkdodognUpgradeCard => "DDNFKDODOGN_UPGRADE_CARD", + Self::DdnfkdodognNewTimeRewind => "DDNFKDODOGN_NEW_TIME_REWIND", + Self::DdnfkdodognEnterTimeRewind => "DDNFKDODOGN_ENTER_TIME_REWIND", + Self::DdnfkdodognInitTimeSegment => "DDNFKDODOGN_INIT_TIME_SEGMENT", + Self::DdnfkdodognModifyTimeSegment => "DDNFKDODOGN_MODIFY_TIME_SEGMENT", + Self::DdnfkdodognModifyTimeRewind => "DDNFKDODOGN_MODIFY_TIME_REWIND", + Self::DdnfkdodognGetTimeRewindInfo => "DDNFKDODOGN_GET_TIME_REWIND_INFO", + Self::DdnfkdodognFinishKeySegment => "DDNFKDODOGN_FINISH_KEY_SEGMENT", + Self::DdnfkdodognActivateGridInSegment => { + "DDNFKDODOGN_ACTIVATE_GRID_IN_SEGMENT" + } + Self::DdnfkdodognCountCardPool => "DDNFKDODOGN_COUNT_CARD_POOL", + Self::DdnfkdodognMakeBangbooChoice => "DDNFKDODOGN_MAKE_BANGBOO_CHOICE", + Self::DdnfkdodognChangeBangbooChoice => "DDNFKDODOGN_CHANGE_BANGBOO_CHOICE", + Self::DdnfkdodognTriggerEntityScript => "DDNFKDODOGN_TRIGGER_ENTITY_SCRIPT", + Self::DdnfkdodognAddStressPunishCurse => { + "DDNFKDODOGN_ADD_STRESS_PUNISH_CURSE" + } + Self::DdnfkdodognPopupTip => "DDNFKDODOGN_POPUP_TIP", + Self::DdnfkdodognHideHollowEntity => "DDNFKDODOGN_HIDE_HOLLOW_ENTITY", + Self::DdnfkdodognGetEntityPriorityList => { + "DDNFKDODOGN_GET_ENTITY_PRIORITY_LIST" + } + Self::DdnfkdodognChessUiController => "DDNFKDODOGN_CHESS_UI_CONTROLLER", + Self::DdnfkdodognGetEntityPriority => "DDNFKDODOGN_GET_ENTITY_PRIORITY", + Self::DdnfkdodognCreateEntity => "DDNFKDODOGN_CREATE_ENTITY", + Self::DdnfkdodognDestroyEntityByUid => "DDNFKDODOGN_DESTROY_ENTITY_BY_UID", + Self::DdnfkdodognInteractWithEntity => "DDNFKDODOGN_INTERACT_WITH_ENTITY", + Self::DdnfkdodognSearchPosition => "DDNFKDODOGN_SEARCH_POSITION", + Self::DdnfkdodognFilterHollowEntity => "DDNFKDODOGN_FILTER_HOLLOW_ENTITY", + Self::DdnfkdodognModifyStackingOrder => "DDNFKDODOGN_MODIFY_STACKING_ORDER", + Self::DdnfkdodognInitConwayLifeGame => "DDNFKDODOGN_INIT_CONWAY_LIFE_GAME", + Self::DdnfkdodognIterateConwayLifeGame => { + "DDNFKDODOGN_ITERATE_CONWAY_LIFE_GAME" + } + Self::DdnfkdodognChangeConwayLifeGameGridState => { + "DDNFKDODOGN_CHANGE_CONWAY_LIFE_GAME_GRID_STATE" + } + Self::DdnfkdodognBigTvChessUiController => { + "DDNFKDODOGN_BIG_TV_CHESS_UI_CONTROLLER" + } + Self::DdnfkdodognSetEntityState => "DDNFKDODOGN_SET_ENTITY_STATE", + Self::DdnfkdodognRemoveEntityState => "DDNFKDODOGN_REMOVE_ENTITY_STATE", + Self::DdnfkdodognGetEventTexture => "DDNFKDODOGN_GET_EVENT_TEXTURE", + Self::DdnfkdodognModifyComponent => "DDNFKDODOGN_MODIFY_COMPONENT", + Self::DdnfkdodognChangeHollowSoundState => { + "DDNFKDODOGN_CHANGE_HOLLOW_SOUND_STATE" + } + Self::DdnfkdodognSetEntityScriptVariable => { + "DDNFKDODOGN_SET_ENTITY_SCRIPT_VARIABLE" + } + Self::DdnfkdodognCreateSignal => "DDNFKDODOGN_CREATE_SIGNAL", + Self::DdnfkdodognSubscribeSignal => "DDNFKDODOGN_SUBSCRIBE_SIGNAL", + Self::DdnfkdodognUnsubscribeSignal => "DDNFKDODOGN_UNSUBSCRIBE_SIGNAL", + Self::DdnfkdodognSendSignal => "DDNFKDODOGN_SEND_SIGNAL", + Self::DdnfkdodognDestroySignal => "DDNFKDODOGN_DESTROY_SIGNAL", + Self::DdnfkdodognSetMultiHollowOutSection => { + "DDNFKDODOGN_SET_MULTI_HOLLOW_OUT_SECTION" + } + Self::DdnfkdodognGetEntityScriptVariable => { + "DDNFKDODOGN_GET_ENTITY_SCRIPT_VARIABLE" + } + Self::DdnfkdodognRemoveChessboard => "DDNFKDODOGN_REMOVE_CHESSBOARD", + Self::DdnfkdodognBeginTutorialGuideInteract => { + "DDNFKDODOGN_BEGIN_TUTORIAL_GUIDE_INTERACT" + } + Self::DdnfkdodognTimeRewindInteract => "DDNFKDODOGN_TIME_REWIND_INTERACT", + Self::DdnfkdodognLimboAvatarCard => "DDNFKDODOGN_LIMBO_AVATAR_CARD", + Self::DdnfkdodognLimboCampEvent => "DDNFKDODOGN_LIMBO_CAMP_EVENT", + Self::DdnfkdodognModifyAimRectComponent => { + "DDNFKDODOGN_MODIFY_AIM_RECT_COMPONENT" + } + Self::DdnfkdodognRemoveFromPool => "DDNFKDODOGN_REMOVE_FROM_POOL", + Self::DdnfkdodognActivateSegmentInteract => { + "DDNFKDODOGN_ACTIVATE_SEGMENT_INTERACT" + } + Self::DdnfkdodognRecordUseInitiativeItem => { + "DDNFKDODOGN_RECORD_USE_INITIATIVE_ITEM" + } + Self::DdnfkdodognModifyMultiHollowOutFloor => { + "DDNFKDODOGN_MODIFY_MULTI_HOLLOW_OUT_FLOOR" + } + Self::DdnfkdodognSetMultiHollowOutView => { + "DDNFKDODOGN_SET_MULTI_HOLLOW_OUT_VIEW" + } + Self::DdnfkdodognMarkGridAsElevator => "DDNFKDODOGN_MARK_GRID_AS_ELEVATOR", + Self::DdnfkdodognMoveElevatorToSection => { + "DDNFKDODOGN_MOVE_ELEVATOR_TO_SECTION" + } + Self::DdnfkdodognNextDropClueEvent => "DDNFKDODOGN_NEXT_DROP_CLUE_EVENT", + Self::DdnfkdodognMoveHollowEvent => "DDNFKDODOGN_MOVE_HOLLOW_EVENT", + Self::DdnfkdodognGetFocusCameraParam => "DDNFKDODOGN_GET_FOCUS_CAMERA_PARAM", + Self::DdnfkdodognReplaceCard => "DDNFKDODOGN_REPLACE_CARD", + Self::DdnfkdodognLoadEventParam => "DDNFKDODOGN_LOAD_EVENT_PARAM", + Self::DdnfkdodognSetLayerType => "DDNFKDODOGN_SET_LAYER_TYPE", + Self::DdnfkdodognCreateHollowSpawner => "DDNFKDODOGN_CREATE_HOLLOW_SPAWNER", + Self::DdnfkdodognSetHollowSpawner => "DDNFKDODOGN_SET_HOLLOW_SPAWNER", + Self::DdnfkdodognGetHollowSpawner => "DDNFKDODOGN_GET_HOLLOW_SPAWNER", + Self::DdnfkdodognRunHollowSpawner => "DDNFKDODOGN_RUN_HOLLOW_SPAWNER", + Self::DdnfkdodognPlayHollowQteGame => "DDNFKDODOGN_PLAY_HOLLOW_QTE_GAME", + Self::DdnfkdodognSetHollowPlayUi => "DDNFKDODOGN_SET_HOLLOW_PLAY_UI", + Self::DdnfkdodognSetHollowActivityParam => { + "DDNFKDODOGN_SET_HOLLOW_ACTIVITY_PARAM" + } + Self::DdnfkdodognGetHollowActivityParam => { + "DDNFKDODOGN_GET_HOLLOW_ACTIVITY_PARAM" + } + Self::DdnfkdodognRewardWithPerform => "DDNFKDODOGN_REWARD_WITH_PERFORM", + Self::DdnfkdodognInitHackerGame => "DDNFKDODOGN_INIT_HACKER_GAME", + Self::DdnfkdodognModifyHackerGameParam => { + "DDNFKDODOGN_MODIFY_HACKER_GAME_PARAM" + } + Self::DdnfkdodognModifyPopInteractComponent => { + "DDNFKDODOGN_MODIFY_POP_INTERACT_COMPONENT" + } + Self::DdnfkdodognSetLevelGlobalVariable => { + "DDNFKDODOGN_SET_LEVEL_GLOBAL_VARIABLE" + } + Self::DdnfkdodognEventModificationByFalling => { + "DDNFKDODOGN_EVENT_MODIFICATION_BY_FALLING" + } + Self::DdnfkdodognTryMoveElevator => "DDNFKDODOGN_TRY_MOVE_ELEVATOR", + Self::DdnfkdodognGetEventPoolEvent => "DDNFKDODOGN_GET_EVENT_POOL_EVENT", + Self::DdnfkdodognChessUi3dController => "DDNFKDODOGN_CHESS_UI_3D_CONTROLLER", + Self::DdnfkdodognHollowGameFinishToLevel => { + "DDNFKDODOGN_HOLLOW_GAME_FINISH_TO_LEVEL" + } + Self::DdnfkdodognChessboardSokobanUiInfo => { + "DDNFKDODOGN_CHESSBOARD_SOKOBAN_UI_INFO" + } + Self::DdnfkdodognCreateNpc => "DDNFKDODOGN_CREATE_NPC", + Self::DdnfkdodognSetQuestPhase => "DDNFKDODOGN_SET_QUEST_PHASE", + Self::DdnfkdodognChangeInteract => "DDNFKDODOGN_CHANGE_INTERACT", + Self::DdnfkdodognInteractFinish => "DDNFKDODOGN_INTERACT_FINISH", + Self::DdnfkdodognRemoveMainCityQuestNpc => { + "DDNFKDODOGN_REMOVE_MAIN_CITY_QUEST_NPC" + } + Self::DdnfkdodognRemoveMainCityQuestInteract => { + "DDNFKDODOGN_REMOVE_MAIN_CITY_QUEST_INTERACT" + } + Self::DdnfkdodognChangeBackSceneInfo => "DDNFKDODOGN_CHANGE_BACK_SCENE_INFO", + Self::DdnfkdodognResetMainCityQuestGroup => { + "DDNFKDODOGN_RESET_MAIN_CITY_QUEST_GROUP" + } + Self::DdnfkdodognUnlockHollowQuest => "DDNFKDODOGN_UNLOCK_HOLLOW_QUEST", + Self::DdnfkdodognSetNpcVisible => "DDNFKDODOGN_SET_NPC_VISIBLE", + Self::DdnfkdodognRemoveInteract => "DDNFKDODOGN_REMOVE_INTERACT", + Self::DdnfkdodognRemoveNpc => "DDNFKDODOGN_REMOVE_NPC", + Self::DdnfkdodognSetVhsStoreLevel => "DDNFKDODOGN_SET_VHS_STORE_LEVEL", + Self::DdnfkdodognSetVhsStoreTrendState => { + "DDNFKDODOGN_SET_VHS_STORE_TREND_STATE" + } + Self::DdnfkdodognSwitchMainCityTime => "DDNFKDODOGN_SWITCH_MAIN_CITY_TIME", + Self::DdnfkdodognTheWorld => "DDNFKDODOGN_THE_WORLD", + Self::DdnfkdodognForceRefresh => "DDNFKDODOGN_FORCE_REFRESH", + Self::DdnfkdodognForbidAfk => "DDNFKDODOGN_FORBID_AFK", + Self::DdnfkdodognSwitchMainCharacter => "DDNFKDODOGN_SWITCH_MAIN_CHARACTER", + Self::DdnfkdodognSetLandEventFinish => "DDNFKDODOGN_SET_LAND_EVENT_FINISH", + Self::DdnfkdodognSetBgm => "DDNFKDODOGN_SET_BGM", + Self::DdnfkdodognSetMainCityObjectState => { + "DDNFKDODOGN_SET_MAIN_CITY_OBJECT_STATE" + } + Self::DdnfkdodognEventChoice => "DDNFKDODOGN_EVENT_CHOICE", + Self::DdnfkdodognCreateMoveNpc => "DDNFKDODOGN_CREATE_MOVE_NPC", + Self::DdnfkdodognChangeGuidePoint => "DDNFKDODOGN_CHANGE_GUIDE_POINT", + Self::DdnfkdodognAddDailyQuest => "DDNFKDODOGN_ADD_DAILY_QUEST", + Self::DdnfkdodognAddMicroTask => "DDNFKDODOGN_ADD_MICRO_TASK", + Self::DdnfkdodognSetFirstMeet => "DDNFKDODOGN_SET_FIRST_MEET", + Self::DdnfkdodognCreateCameraZone => "DDNFKDODOGN_CREATE_CAMERA_ZONE", + Self::DdnfkdodognSetMainCityTime => "DDNFKDODOGN_SET_MAIN_CITY_TIME", + Self::DdnfkdodognNextMainCityTimePeriod => { + "DDNFKDODOGN_NEXT_MAIN_CITY_TIME_PERIOD" + } + Self::DdnfkdodognPlayerSwitchMainCharacter => { + "DDNFKDODOGN_PLAYER_SWITCH_MAIN_CHARACTER" + } + Self::DdnfkdodognEndTransition => "DDNFKDODOGN_END_TRANSITION", + Self::DdnfkdodognAddVhsFlowBuff => "DDNFKDODOGN_ADD_VHS_FLOW_BUFF", + Self::DdnfkdodognActivatePhotoId => "DDNFKDODOGN_ACTIVATE_PHOTO_ID", + Self::DdnfkdodognAccelerateMainCityTime => { + "DDNFKDODOGN_ACCELERATE_MAIN_CITY_TIME" + } + Self::DdnfkdodognSetTrashNewFlag => "DDNFKDODOGN_SET_TRASH_NEW_FLAG", + Self::DdnfkdodognUseLastTime => "DDNFKDODOGN_USE_LAST_TIME", + Self::DdnfkdodognOccupyOvernight => "DDNFKDODOGN_OCCUPY_OVERNIGHT", + Self::DdnfkdodognShowPhotoQuestFinishTip => { + "DDNFKDODOGN_SHOW_PHOTO_QUEST_FINISH_TIP" + } + Self::DdnfkdodognAddSoundAmb => "DDNFKDODOGN_ADD_SOUND_AMB", + Self::DdnfkdodognSubmitItem => "DDNFKDODOGN_SUBMIT_ITEM", + Self::DdnfkdodognModTrust => "DDNFKDODOGN_MOD_TRUST", + Self::DdnfkdodognSetPartnerEventState => { + "DDNFKDODOGN_SET_PARTNER_EVENT_STATE" + } + Self::DdnfkdodognSendMessage => "DDNFKDODOGN_SEND_MESSAGE", + Self::DdnfkdodognSwitchTrackQuest => "DDNFKDODOGN_SWITCH_TRACK_QUEST", + Self::DdnfkdodognModNpc => "DDNFKDODOGN_MOD_NPC", + Self::DdnfkdodognAcceptOvernight => "DDNFKDODOGN_ACCEPT_OVERNIGHT", + Self::DdnfkdodognActiveTrigger => "DDNFKDODOGN_ACTIVE_TRIGGER", + Self::DdnfkdodognModObjState => "DDNFKDODOGN_MOD_OBJ_STATE", + Self::DdnfkdodognModSceneObj => "DDNFKDODOGN_MOD_SCENE_OBJ", + Self::DdnfkdodognFansSettle => "DDNFKDODOGN_FANS_SETTLE", + Self::DdnfkdodognOpenHallGame => "DDNFKDODOGN_OPEN_HALL_GAME", + Self::DdnfkdodognAddPartnerEvent => "DDNFKDODOGN_ADD_PARTNER_EVENT", + Self::DdnfkdodognExecOvernightEvent => "DDNFKDODOGN_EXEC_OVERNIGHT_EVENT", + Self::DdnfkdodognSofaRestNextTimePeriod => { + "DDNFKDODOGN_SOFA_REST_NEXT_TIME_PERIOD" + } + Self::DdnfkdodognBeginUiGame => "DDNFKDODOGN_BEGIN_UI_GAME", + Self::DdnfkdodognPrepareData => "DDNFKDODOGN_PREPARE_DATA", + Self::DdnfkdodognClearRpRecommendResult => { + "DDNFKDODOGN_CLEAR_RP_RECOMMEND_RESULT" + } + Self::DdnfkdodognDoMainCityGame => "DDNFKDODOGN_DO_MAIN_CITY_GAME", + Self::DdnfkdodognShowInTodo => "DDNFKDODOGN_SHOW_IN_TODO", + Self::DdnfkdodognChangeNpcName => "DDNFKDODOGN_CHANGE_NPC_NAME", + Self::DdnfkdodognCreateOva => "DDNFKDODOGN_CREATE_OVA", + Self::DdnfkdodognSetOvaState => "DDNFKDODOGN_SET_OVA_STATE", + Self::DdnfkdodognSwitchMainCharacterGuise => { + "DDNFKDODOGN_SWITCH_MAIN_CHARACTER_GUISE" + } + Self::DdnfkdodognCompleteHallGame => "DDNFKDODOGN_COMPLETE_HALL_GAME", + Self::DdnfkdodognHideMainControlAvatar => { + "DDNFKDODOGN_HIDE_MAIN_CONTROL_AVATAR" + } + Self::DdnfkdodognEatRamen => "DDNFKDODOGN_EAT_RAMEN", + Self::DdnfkdodognOngoingTips => "DDNFKDODOGN_ONGOING_TIPS", + Self::DdnfkdodognSetSound => "DDNFKDODOGN_SET_SOUND", + Self::DdnfkdodognMapChooseByEvent => "DDNFKDODOGN_MAP_CHOOSE_BY_EVENT", + Self::DdnfkdodognMapChooseByLayer => "DDNFKDODOGN_MAP_CHOOSE_BY_LAYER", + Self::DdnfkdodognMapChooseByNum => "DDNFKDODOGN_MAP_CHOOSE_BY_NUM", + Self::DdnfkdodognMapChooseByRange => "DDNFKDODOGN_MAP_CHOOSE_BY_RANGE", + Self::DdnfkdodognMapClearPool => "DDNFKDODOGN_MAP_CLEAR_POOL", + Self::DdnfkdodognMapSetEvent => "DDNFKDODOGN_MAP_SET_EVENT", + Self::DdnfkdodognMapSetLayer => "DDNFKDODOGN_MAP_SET_LAYER", + Self::DdnfkdodognMapSetTag => "DDNFKDODOGN_MAP_SET_TAG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DDNFKDODOGN_ACTION_TYPE_NONE" => Some(Self::DdnfkdodognActionTypeNone), + "DDNFKDODOGN_WAIT_SECONDS" => Some(Self::DdnfkdodognWaitSeconds), + "DDNFKDODOGN_LOG_TEXT" => Some(Self::DdnfkdodognLogText), + "DDNFKDODOGN_WAIT" => Some(Self::DdnfkdodognWait), + "DDNFKDODOGN_LOG" => Some(Self::DdnfkdodognLog), + "DDNFKDODOGN_OPEN_UI" => Some(Self::DdnfkdodognOpenUi), + "DDNFKDODOGN_SWITCH_SECTION" => Some(Self::DdnfkdodognSwitchSection), + "DDNFKDODOGN_ANIM_CTRLER_PARAM" => Some(Self::DdnfkdodognAnimCtrlerParam), + "DDNFKDODOGN_SHOW_TIP" => Some(Self::DdnfkdodognShowTip), + "DDNFKDODOGN_SHOW_POP_WINDOW" => Some(Self::DdnfkdodognShowPopWindow), + "DDNFKDODOGN_WALK_FAR_AWAY" => Some(Self::DdnfkdodognWalkFarAway), + "DDNFKDODOGN_OPEN_DIALOG_HOLLOW" => Some(Self::DdnfkdodognOpenDialogHollow), + "DDNFKDODOGN_CLOSE_DIALOG_HOLLOW" => Some(Self::DdnfkdodognCloseDialogHollow), + "DDNFKDODOGN_PLAY_ANIM_HOLLOW" => Some(Self::DdnfkdodognPlayAnimHollow), + "DDNFKDODOGN_CAMERA_STRETCH" => Some(Self::DdnfkdodognCameraStretch), + "DDNFKDODOGN_CAMERA_MOVE" => Some(Self::DdnfkdodognCameraMove), + "DDNFKDODOGN_CAMERA_MOVE_V2" => Some(Self::DdnfkdodognCameraMoveV2), + "DDNFKDODOGN_SHOW_TIP_HOLLOW" => Some(Self::DdnfkdodognShowTipHollow), + "DDNFKDODOGN_SHOW_POP_WINDOW_HOLLOW" => { + Some(Self::DdnfkdodognShowPopWindowHollow) + } + "DDNFKDODOGN_PLAY_POST_EFFECT" => Some(Self::DdnfkdodognPlayPostEffect), + "DDNFKDODOGN_ENTER_HOLLOW_QUEST" => Some(Self::DdnfkdodognEnterHollowQuest), + "DDNFKDODOGN_ENTER_ARCHIVE_FILE_QUEST" => { + Some(Self::DdnfkdodognEnterArchiveFileQuest) + } + "DDNFKDODOGN_PRESET" => Some(Self::DdnfkdodognPreset), + "DDNFKDODOGN_BLACK_MASK" => Some(Self::DdnfkdodognBlackMask), + "DDNFKDODOGN_PLAY_SOUND" => Some(Self::DdnfkdodognPlaySound), + "DDNFKDODOGN_CLOSE_TIP" => Some(Self::DdnfkdodognCloseTip), + "DDNFKDODOGN_RECONECT_CHESSBOARD" => { + Some(Self::DdnfkdodognReconectChessboard) + } + "DDNFKDODOGN_HOLLOW_SET_SWITCH_EFFECT" => { + Some(Self::DdnfkdodognHollowSetSwitchEffect) + } + "DDNFKDODOGN_OUT_DOOR" => Some(Self::DdnfkdodognOutDoor), + "DDNFKDODOGN_FREEZE_CHESSBOARD_CAMERA" => { + Some(Self::DdnfkdodognFreezeChessboardCamera) + } + "DDNFKDODOGN_SHOW_VHS_STORE_LEVEL_TIPS" => { + Some(Self::DdnfkdodognShowVhsStoreLevelTips) + } + "DDNFKDODOGN_INTERACT_NPC_WITH_ANIM" => { + Some(Self::DdnfkdodognInteractNpcWithAnim) + } + "DDNFKDODOGN_CHANGE_HOLLOW_BG" => Some(Self::DdnfkdodognChangeHollowBg), + "DDNFKDODOGN_TRASH_GACHA_GET_DATA" => { + Some(Self::DdnfkdodognTrashGachaGetData) + } + "DDNFKDODOGN_TRASH_GACHA" => Some(Self::DdnfkdodognTrashGacha), + "DDNFKDODOGN_SHOW_QUEST_TIP" => Some(Self::DdnfkdodognShowQuestTip), + "DDNFKDODOGN_TELEPORT_UI" => Some(Self::DdnfkdodognTeleportUi), + "DDNFKDODOGN_CAMERA_ACTIVE" => Some(Self::DdnfkdodognCameraActive), + "DDNFKDODOGN_CAMERA_RESET" => Some(Self::DdnfkdodognCameraReset), + "DDNFKDODOGN_CREATE_FC" => Some(Self::DdnfkdodognCreateFc), + "DDNFKDODOGN_BEHAVIOUR_FC" => Some(Self::DdnfkdodognBehaviourFc), + "DDNFKDODOGN_SEND_EVENT_FC" => Some(Self::DdnfkdodognSendEventFc), + "DDNFKDODOGN_READ_FC_BLACK_BOARD_DATA" => { + Some(Self::DdnfkdodognReadFcBlackBoardData) + } + "DDNFKDODOGN_WRITE_FC_BLACK_BOARD_DATA" => { + Some(Self::DdnfkdodognWriteFcBlackBoardData) + } + "DDNFKDODOGN_CHANGE_SOUND_STATE" => Some(Self::DdnfkdodognChangeSoundState), + "DDNFKDODOGN_AFK_HOLLOW" => Some(Self::DdnfkdodognAfkHollow), + "DDNFKDODOGN_SWITCH_BIG_TV" => Some(Self::DdnfkdodognSwitchBigTv), + "DDNFKDODOGN_TRIGGER_INTERACT" => Some(Self::DdnfkdodognTriggerInteract), + "DDNFKDODOGN_STOP_ANIM" => Some(Self::DdnfkdodognStopAnim), + "DDNFKDODOGN_GET_TRUST" => Some(Self::DdnfkdodognGetTrust), + "DDNFKDODOGN_PLAY_DIALOG_ANIM" => Some(Self::DdnfkdodognPlayDialogAnim), + "DDNFKDODOGN_UNFREEZE_CHESSBOARD_CAMERA" => { + Some(Self::DdnfkdodognUnfreezeChessboardCamera) + } + "DDNFKDODOGN_WAIT_TIPS_END" => Some(Self::DdnfkdodognWaitTipsEnd), + "DDNFKDODOGN_BEGIN_TUTORIAL_GUIDE" => { + Some(Self::DdnfkdodognBeginTutorialGuide) + } + "DDNFKDODOGN_FOCUS_CAMERA" => Some(Self::DdnfkdodognFocusCamera), + "DDNFKDODOGN_UNLOCK_CLUE" => Some(Self::DdnfkdodognUnlockClue), + "DDNFKDODOGN_AVATAR_TIPS_SWITCH" => Some(Self::DdnfkdodognAvatarTipsSwitch), + "DDNFKDODOGN_FINISH_RESCUE" => Some(Self::DdnfkdodognFinishRescue), + "DDNFKDODOGN_PLAY_TV_EFFECT" => Some(Self::DdnfkdodognPlayTvEffect), + "DDNFKDODOGN_SET_INTERACT_POINT" => Some(Self::DdnfkdodognSetInteractPoint), + "DDNFKDODOGN_HIDE_MAIN_CITY_UI" => Some(Self::DdnfkdodognHideMainCityUi), + "DDNFKDODOGN_CHAT_CAMERA" => Some(Self::DdnfkdodognChatCamera), + "DDNFKDODOGN_CREATE_CLIENT_ENTITY" => { + Some(Self::DdnfkdodognCreateClientEntity) + } + "DDNFKDODOGN_SET_NPC_VISIBLE_CLIENT" => { + Some(Self::DdnfkdodognSetNpcVisibleClient) + } + "DDNFKDODOGN_GACHA_ITEM_PERFORM" => Some(Self::DdnfkdodognGachaItemPerform), + "DDNFKDODOGN_SET_MESSAGE_CLIENT" => Some(Self::DdnfkdodognSetMessageClient), + "DDNFKDODOGN_MOD_MAIN_CITY_TIME_CLIENT" => { + Some(Self::DdnfkdodognModMainCityTimeClient) + } + "DDNFKDODOGN_MODIFY_LIGHT_LEVEL_PERFORM" => { + Some(Self::DdnfkdodognModifyLightLevelPerform) + } + "DDNFKDODOGN_SET_POSITION" => Some(Self::DdnfkdodognSetPosition), + "DDNFKDODOGN_SET_CHESSBOARD_PERFORM_MODE" => { + Some(Self::DdnfkdodognSetChessboardPerformMode) + } + "DDNFKDODOGN_TRANSITION" => Some(Self::DdnfkdodognTransition), + "DDNFKDODOGN_WAIT_UNTIL_UI_CLOSE" => Some(Self::DdnfkdodognWaitUntilUiClose), + "DDNFKDODOGN_WAIT_TRANSITION_END" => Some(Self::DdnfkdodognWaitTransitionEnd), + "DDNFKDODOGN_CLOSE_UI" => Some(Self::DdnfkdodognCloseUi), + "DDNFKDODOGN_QUIT_PHOTO" => Some(Self::DdnfkdodognQuitPhoto), + "DDNFKDODOGN_SHOW_TELEPORT_UI" => Some(Self::DdnfkdodognShowTeleportUi), + "DDNFKDODOGN_MODIFY_CAMERA_TARGET_SECTION" => { + Some(Self::DdnfkdodognModifyCameraTargetSection) + } + "DDNFKDODOGN_CAMERA_BACK_TO_PLAYER" => { + Some(Self::DdnfkdodognCameraBackToPlayer) + } + "DDNFKDODOGN_RESET_SCENE_OBJ" => Some(Self::DdnfkdodognResetSceneObj), + "DDNFKDODOGN_MANUAL_ACCELERATE" => Some(Self::DdnfkdodognManualAccelerate), + "DDNFKDODOGN_BREAK_NAVIGATE" => Some(Self::DdnfkdodognBreakNavigate), + "DDNFKDODOGN_SHOW_EXIT_BUTTON_NEW" => { + Some(Self::DdnfkdodognShowExitButtonNew) + } + "DDNFKDODOGN_SHOW_BOTTOM_TIP_HOLLOW" => { + Some(Self::DdnfkdodognShowBottomTipHollow) + } + "DDNFKDODOGN_SHOW_CHAPTER_TIP" => Some(Self::DdnfkdodognShowChapterTip), + "DDNFKDODOGN_ENTER_DUNGEON_QUEST" => Some(Self::DdnfkdodognEnterDungeonQuest), + "DDNFKDODOGN_DOWNLOAD_FULL_RESOURCE" => { + Some(Self::DdnfkdodognDownloadFullResource) + } + "DDNFKDODOGN_AREA_TIPS" => Some(Self::DdnfkdodognAreaTips), + "DDNFKDODOGN_CLIENT_PERFORM" => Some(Self::DdnfkdodognClientPerform), + "DDNFKDODOGN_SHOW_ITEM" => Some(Self::DdnfkdodognShowItem), + "DDNFKDODOGN_SWITCH_OVA" => Some(Self::DdnfkdodognSwitchOva), + "DDNFKDODOGN_SET_LIFT_STATUS" => Some(Self::DdnfkdodognSetLiftStatus), + "DDNFKDODOGN_AREA_CAMERA_MODIFY" => Some(Self::DdnfkdodognAreaCameraModify), + "DDNFKDODOGN_TRIGGER_PERFORM_BEHAVIOR" => { + Some(Self::DdnfkdodognTriggerPerformBehavior) + } + "DDNFKDODOGN_SWITCH_ATMOSPHERE" => Some(Self::DdnfkdodognSwitchAtmosphere), + "DDNFKDODOGN_MODIFY_LIGHT_DIFFUSION_POINTS" => { + Some(Self::DdnfkdodognModifyLightDiffusionPoints) + } + "DDNFKDODOGN_MOD_CAT_NAME" => Some(Self::DdnfkdodognModCatName), + "DDNFKDODOGN_OPEN_UI_GAME" => Some(Self::DdnfkdodognOpenUiGame), + "DDNFKDODOGN_OPEN_DIALOG_HOLLOW_V2" => { + Some(Self::DdnfkdodognOpenDialogHollowV2) + } + "DDNFKDODOGN_PLAY_DIALOG_ANIM_V2" => Some(Self::DdnfkdodognPlayDialogAnimV2), + "DDNFKDODOGN_CLOSE_DIALOG_HOLLOW_V2" => { + Some(Self::DdnfkdodognCloseDialogHollowV2) + } + "DDNFKDODOGN_BREAK_DIALOG_ANIM_V2" => { + Some(Self::DdnfkdodognBreakDialogAnimV2) + } + "DDNFKDODOGN_WAIT_ANIM_END" => Some(Self::DdnfkdodognWaitAnimEnd), + "DDNFKDODOGN_PLAY_ANIM_SEQUENCE" => Some(Self::DdnfkdodognPlayAnimSequence), + "DDNFKDODOGN_END_OVERLORDFEAST_GAME" => { + Some(Self::DdnfkdodognEndOverlordfeastGame) + } + "DDNFKDODOGN_PLAY_AIM_SEQUENCE" => Some(Self::DdnfkdodognPlayAimSequence), + "DDNFKDODOGN_CLIENT_SWITCH_DELAY" => Some(Self::DdnfkdodognClientSwitchDelay), + "DDNFKDODOGN_BEGIN_PHOTO" => Some(Self::DdnfkdodognBeginPhoto), + "DDNFKDODOGN_CHESSBOARD_GAME_HENSHIN" => { + Some(Self::DdnfkdodognChessboardGameHenshin) + } + "DDNFKDODOGN_SWITCH_GUISE_AVATAR" => Some(Self::DdnfkdodognSwitchGuiseAvatar), + "DDNFKDODOGN_IF" => Some(Self::DdnfkdodognIf), + "DDNFKDODOGN_START_LOOP" => Some(Self::DdnfkdodognStartLoop), + "DDNFKDODOGN_END_LOOP" => Some(Self::DdnfkdodognEndLoop), + "DDNFKDODOGN_CALL_FUNCTION" => Some(Self::DdnfkdodognCallFunction), + "DDNFKDODOGN_RETURN" => Some(Self::DdnfkdodognReturn), + "DDNFKDODOGN_RESET_EVENT" => Some(Self::DdnfkdodognResetEvent), + "DDNFKDODOGN_ADD_ITEM" => Some(Self::DdnfkdodognAddItem), + "DDNFKDODOGN_SET_VARIABLE" => Some(Self::DdnfkdodognSetVariable), + "DDNFKDODOGN_SET_CONDITION_PROGRESS" => { + Some(Self::DdnfkdodognSetConditionProgress) + } + "DDNFKDODOGN_RANDOM_VARIABLE_VALUE" => { + Some(Self::DdnfkdodognRandomVariableValue) + } + "DDNFKDODOGN_LIST_SPECIAL_OPT" => Some(Self::DdnfkdodognListSpecialOpt), + "DDNFKDODOGN_FINISH_QUEST" => Some(Self::DdnfkdodognFinishQuest), + "DDNFKDODOGN_RANDOM_WITH_WEIGHT" => Some(Self::DdnfkdodognRandomWithWeight), + "DDNFKDODOGN_PERFORM" => Some(Self::DdnfkdodognPerform), + "DDNFKDODOGN_REWARD" => Some(Self::DdnfkdodognReward), + "DDNFKDODOGN_SET_LIST" => Some(Self::DdnfkdodognSetList), + "DDNFKDODOGN_GET_LIST" => Some(Self::DdnfkdodognGetList), + "DDNFKDODOGN_START_ACTION" => Some(Self::DdnfkdodognStartAction), + "DDNFKDODOGN_SET_STRING" => Some(Self::DdnfkdodognSetString), + "DDNFKDODOGN_SEND_CUSTOM_EVENT_TRACKING" => { + Some(Self::DdnfkdodognSendCustomEventTracking) + } + "DDNFKDODOGN_EMPTY_ACTION" => Some(Self::DdnfkdodognEmptyAction), + "DDNFKDODOGN_SET_VECTOR2" => Some(Self::DdnfkdodognSetVector2), + "DDNFKDODOGN_SWITCH" => Some(Self::DdnfkdodognSwitch), + "DDNFKDODOGN_SWITCH_COMPARE_INT" => Some(Self::DdnfkdodognSwitchCompareInt), + "DDNFKDODOGN_DRAW" => Some(Self::DdnfkdodognDraw), + "DDNFKDODOGN_SET_VEC2_LIST" => Some(Self::DdnfkdodognSetVec2List), + "DDNFKDODOGN_GET_VEC2_LIST" => Some(Self::DdnfkdodognGetVec2List), + "DDNFKDODOGN_CALL_FUNCTION_V2" => Some(Self::DdnfkdodognCallFunctionV2), + "DDNFKDODOGN_ENTER_HOLLOW_SHOP" => Some(Self::DdnfkdodognEnterHollowShop), + "DDNFKDODOGN_MAKE_CHOICE" => Some(Self::DdnfkdodognMakeChoice), + "DDNFKDODOGN_MODIFY_SCENE_PROPERTY" => { + Some(Self::DdnfkdodognModifySceneProperty) + } + "DDNFKDODOGN_FINISH_EVENT" => Some(Self::DdnfkdodognFinishEvent), + "DDNFKDODOGN_TRIGGER_BATTLE" => Some(Self::DdnfkdodognTriggerBattle), + "DDNFKDODOGN_AVERAGE_AVATAR_HP" => Some(Self::DdnfkdodognAverageAvatarHp), + "DDNFKDODOGN_REMOVE_CARD" => Some(Self::DdnfkdodognRemoveCard), + "DDNFKDODOGN_DROP_POOL" => Some(Self::DdnfkdodognDropPool), + "DDNFKDODOGN_TRANSFER" => Some(Self::DdnfkdodognTransfer), + "DDNFKDODOGN_FINISH_HOLLOW" => Some(Self::DdnfkdodognFinishHollow), + "DDNFKDODOGN_RANDOM_ITEM_CARD" => Some(Self::DdnfkdodognRandomItemCard), + "DDNFKDODOGN_EVENT_MODIFICATION" => Some(Self::DdnfkdodognEventModification), + "DDNFKDODOGN_CHANGE_AVATAR_STATE" => Some(Self::DdnfkdodognChangeAvatarState), + "DDNFKDODOGN_DROP_PACK" => Some(Self::DdnfkdodognDropPack), + "DDNFKDODOGN_SET_MAP_STATE" => Some(Self::DdnfkdodognSetMapState), + "DDNFKDODOGN_DROP_CURSE" => Some(Self::DdnfkdodognDropCurse), + "DDNFKDODOGN_LOG_HOLLOW" => Some(Self::DdnfkdodognLogHollow), + "DDNFKDODOGN_DROP_CARD" => Some(Self::DdnfkdodognDropCard), + "DDNFKDODOGN_CHANGE_HOLLOW_EVENT_WEIGHT" => { + Some(Self::DdnfkdodognChangeHollowEventWeight) + } + "DDNFKDODOGN_REMOVE_CURSE" => Some(Self::DdnfkdodognRemoveCurse), + "DDNFKDODOGN_HIDE_NODE" => Some(Self::DdnfkdodognHideNode), + "DDNFKDODOGN_SET_CHALLENGE" => Some(Self::DdnfkdodognSetChallenge), + "DDNFKDODOGN_DROP_CHALLENGE_ID" => Some(Self::DdnfkdodognDropChallengeId), + "DDNFKDODOGN_GET_AVATAR_INFO" => Some(Self::DdnfkdodognGetAvatarInfo), + "DDNFKDODOGN_SET_HOLLOW_ITEM" => Some(Self::DdnfkdodognSetHollowItem), + "DDNFKDODOGN_CHANGE_CHARACTER" => Some(Self::DdnfkdodognChangeCharacter), + "DDNFKDODOGN_NEW_HOLLOW" => Some(Self::DdnfkdodognNewHollow), + "DDNFKDODOGN_SLOT_MACHINE" => Some(Self::DdnfkdodognSlotMachine), + "DDNFKDODOGN_SET_HOLLOW_BLACK_OUT" => { + Some(Self::DdnfkdodognSetHollowBlackOut) + } + "DDNFKDODOGN_FINISH_BLACK_OUT" => Some(Self::DdnfkdodognFinishBlackOut), + "DDNFKDODOGN_SET_HOLLOW_SYSTEM_STATE" => { + Some(Self::DdnfkdodognSetHollowSystemState) + } + "DDNFKDODOGN_ADD_CHARACTER" => Some(Self::DdnfkdodognAddCharacter), + "DDNFKDODOGN_LOCK_CURSE" => Some(Self::DdnfkdodognLockCurse), + "DDNFKDODOGN_HOLLOW_DISTANCE" => Some(Self::DdnfkdodognHollowDistance), + "DDNFKDODOGN_PUSH_BACK" => Some(Self::DdnfkdodognPushBack), + "DDNFKDODOGN_APPLY_ABILITY" => Some(Self::DdnfkdodognApplyAbility), + "DDNFKDODOGN_REMOVE_ABILITY" => Some(Self::DdnfkdodognRemoveAbility), + "DDNFKDODOGN_RANDOM_BATTLE_ID" => Some(Self::DdnfkdodognRandomBattleId), + "DDNFKDODOGN_GET_INDEX_BY_FILTER" => Some(Self::DdnfkdodognGetIndexByFilter), + "DDNFKDODOGN_SET_BATTLE_TYPE" => Some(Self::DdnfkdodognSetBattleType), + "DDNFKDODOGN_GET_POSITION" => Some(Self::DdnfkdodognGetPosition), + "DDNFKDODOGN_START_MINI_GAME" => Some(Self::DdnfkdodognStartMiniGame), + "DDNFKDODOGN_SET_HOLLOW_ITEM_SLOT" => { + Some(Self::DdnfkdodognSetHollowItemSlot) + } + "DDNFKDODOGN_GET_HOLLOW_ITEM" => Some(Self::DdnfkdodognGetHollowItem), + "DDNFKDODOGN_SEARCH_GRID" => Some(Self::DdnfkdodognSearchGrid), + "DDNFKDODOGN_SET_NPC_STATE" => Some(Self::DdnfkdodognSetNpcState), + "DDNFKDODOGN_GET_NPC_INSTANCE_ID" => Some(Self::DdnfkdodognGetNpcInstanceId), + "DDNFKDODOGN_DESTORY_NPC" => Some(Self::DdnfkdodognDestoryNpc), + "DDNFKDODOGN_ADD_CHARACTER_ABYSS" => Some(Self::DdnfkdodognAddCharacterAbyss), + "DDNFKDODOGN_CHANGE_CHARACTER_ABYSS" => { + Some(Self::DdnfkdodognChangeCharacterAbyss) + } + "DDNFKDODOGN_GET_CHARACTER_POOL_ABYSS" => { + Some(Self::DdnfkdodognGetCharacterPoolAbyss) + } + "DDNFKDODOGN_ABYSS_DROP_CHARACTER_POOL" => { + Some(Self::DdnfkdodognAbyssDropCharacterPool) + } + "DDNFKDODOGN_GET_LEADER_OF_HOLLOW_NPC" => { + Some(Self::DdnfkdodognGetLeaderOfHollowNpc) + } + "DDNFKDODOGN_SET_LEADER_OF_HOLLOW_NPC" => { + Some(Self::DdnfkdodognSetLeaderOfHollowNpc) + } + "DDNFKDODOGN_UPDATE_SAVE_NPC_NUM" => Some(Self::DdnfkdodognUpdateSaveNpcNum), + "DDNFKDODOGN_PUSH_WITH_DIRECTION" => Some(Self::DdnfkdodognPushWithDirection), + "DDNFKDODOGN_HOLLOW_NPC_FIND_PATH" => { + Some(Self::DdnfkdodognHollowNpcFindPath) + } + "DDNFKDODOGN_HOLLOW_NPC_MOVE" => Some(Self::DdnfkdodognHollowNpcMove), + "DDNFKDODOGN_NEW_CHESSBOARD" => Some(Self::DdnfkdodognNewChessboard), + "DDNFKDODOGN_GO_TO_NEXT_LAYER" => Some(Self::DdnfkdodognGoToNextLayer), + "DDNFKDODOGN_GO_TO_CHESSBOARD" => Some(Self::DdnfkdodognGoToChessboard), + "DDNFKDODOGN_GET_PRE_CHESSBOARD" => Some(Self::DdnfkdodognGetPreChessboard), + "DDNFKDODOGN_TRIGGER_HOLLOW_NPC_BEHAVIOR" => { + Some(Self::DdnfkdodognTriggerHollowNpcBehavior) + } + "DDNFKDODOGN_SHOW_LAYER_RESULT" => Some(Self::DdnfkdodognShowLayerResult), + "DDNFKDODOGN_HENSHIN" => Some(Self::DdnfkdodognHenshin), + "DDNFKDODOGN_CREATE_HOLLOW_NPC" => Some(Self::DdnfkdodognCreateHollowNpc), + "DDNFKDODOGN_DROP_CHESSBOARD_ID" => Some(Self::DdnfkdodognDropChessboardId), + "DDNFKDODOGN_MAKE_DIALOG_CHOICE" => Some(Self::DdnfkdodognMakeDialogChoice), + "DDNFKDODOGN_GET_EVENT_ID" => Some(Self::DdnfkdodognGetEventId), + "DDNFKDODOGN_COUNT_DROP_POOL" => Some(Self::DdnfkdodognCountDropPool), + "DDNFKDODOGN_MAKE_ITEM_CHOICE" => Some(Self::DdnfkdodognMakeItemChoice), + "DDNFKDODOGN_HP_ACT_HOLLOW" => Some(Self::DdnfkdodognHpActHollow), + "DDNFKDODOGN_BAN_HOLLOW_EVENT" => Some(Self::DdnfkdodognBanHollowEvent), + "DDNFKDODOGN_COORDINATE_TRANSFORM" => { + Some(Self::DdnfkdodognCoordinateTransform) + } + "DDNFKDODOGN_REGISTER_VARIABLE_CONDITION" => { + Some(Self::DdnfkdodognRegisterVariableCondition) + } + "DDNFKDODOGN_ON_OFF_CATEGORY" => Some(Self::DdnfkdodognOnOffCategory), + "DDNFKDODOGN_RESET_BIG_TV_SNAPSHOT" => { + Some(Self::DdnfkdodognResetBigTvSnapshot) + } + "DDNFKDODOGN_BIG_TV_SUPPORT_SNAPSHOT" => { + Some(Self::DdnfkdodognBigTvSupportSnapshot) + } + "DDNFKDODOGN_SET_EVENT_ICON" => Some(Self::DdnfkdodognSetEventIcon), + "DDNFKDODOGN_GET_ANIM_SHEET_ID" => Some(Self::DdnfkdodognGetAnimSheetId), + "DDNFKDODOGN_HOLLOW_NPC_HENSHIN" => Some(Self::DdnfkdodognHollowNpcHenshin), + "DDNFKDODOGN_HOLLOW_NPC_TRANSFER" => Some(Self::DdnfkdodognHollowNpcTransfer), + "DDNFKDODOGN_BIND_BIG_TV" => Some(Self::DdnfkdodognBindBigTv), + "DDNFKDODOGN_MOVE_NPC_TO_SECTION" => Some(Self::DdnfkdodognMoveNpcToSection), + "DDNFKDODOGN_GET_NPC_ID" => Some(Self::DdnfkdodognGetNpcId), + "DDNFKDODOGN_SEARCH_HOLLOW_NPC" => Some(Self::DdnfkdodognSearchHollowNpc), + "DDNFKDODOGN_BOOM" => Some(Self::DdnfkdodognBoom), + "DDNFKDODOGN_TRIGGER_HOLLOW_EVENT" => { + Some(Self::DdnfkdodognTriggerHollowEvent) + } + "DDNFKDODOGN_BREAK_DIALOG_ANIM" => Some(Self::DdnfkdodognBreakDialogAnim), + "DDNFKDODOGN_MOVE_BIG_TV" => Some(Self::DdnfkdodognMoveBigTv), + "DDNFKDODOGN_SET_NEXT_LAYER_CHESSBOARD_ID" => { + Some(Self::DdnfkdodognSetNextLayerChessboardId) + } + "DDNFKDODOGN_GET_BOSS_BATTLE_EVENT" => { + Some(Self::DdnfkdodognGetBossBattleEvent) + } + "DDNFKDODOGN_CREATE_HOLLOW_SNAKE" => Some(Self::DdnfkdodognCreateHollowSnake), + "DDNFKDODOGN_SET_GRID_STAMINA_STATE" => { + Some(Self::DdnfkdodognSetGridStaminaState) + } + "DDNFKDODOGN_DISPLAY_BIG_TV_CHESSBOARD" => { + Some(Self::DdnfkdodognDisplayBigTvChessboard) + } + "DDNFKDODOGN_SPLIT_HOLLOW_SNAKE" => Some(Self::DdnfkdodognSplitHollowSnake), + "DDNFKDODOGN_GET_HOLLOW_SNAKE_INFO" => { + Some(Self::DdnfkdodognGetHollowSnakeInfo) + } + "DDNFKDODOGN_MODIFY_HOLLOW_SNAKE" => Some(Self::DdnfkdodognModifyHollowSnake), + "DDNFKDODOGN_CHANGE_HOLLOW_NPC_APPERANCE" => { + Some(Self::DdnfkdodognChangeHollowNpcApperance) + } + "DDNFKDODOGN_OPEN_BIG_TV_SOKOBAN_GAME" => { + Some(Self::DdnfkdodognOpenBigTvSokobanGame) + } + "DDNFKDODOGN_SET_INTERCONNECTED_STORY_EVENT" => { + Some(Self::DdnfkdodognSetInterconnectedStoryEvent) + } + "DDNFKDODOGN_HOLLOW_NPC_IMITATE" => Some(Self::DdnfkdodognHollowNpcImitate), + "DDNFKDODOGN_TRIGGER_HOLLOW_NPC_EARLY_ACT" => { + Some(Self::DdnfkdodognTriggerHollowNpcEarlyAct) + } + "DDNFKDODOGN_GET_AVATAR_BY_TAG" => Some(Self::DdnfkdodognGetAvatarByTag), + "DDNFKDODOGN_SET_BATTLE_TYPE_ABYSS" => { + Some(Self::DdnfkdodognSetBattleTypeAbyss) + } + "DDNFKDODOGN_REMOVE_EVENT_ID_FROM_RANDOM_POOL" => { + Some(Self::DdnfkdodognRemoveEventIdFromRandomPool) + } + "DDNFKDODOGN_RECYCLE_HOLLOW_ITEM" => Some(Self::DdnfkdodognRecycleHollowItem), + "DDNFKDODOGN_COPY_EVENT" => Some(Self::DdnfkdodognCopyEvent), + "DDNFKDODOGN_BAN_CHARACTER" => Some(Self::DdnfkdodognBanCharacter), + "DDNFKDODOGN_REMOVE_CHARACTER" => Some(Self::DdnfkdodognRemoveCharacter), + "DDNFKDODOGN_SET_NPC_ATTR" => Some(Self::DdnfkdodognSetNpcAttr), + "DDNFKDODOGN_GET_NPC_ATTR" => Some(Self::DdnfkdodognGetNpcAttr), + "DDNFKDODOGN_HIT_NPC" => Some(Self::DdnfkdodognHitNpc), + "DDNFKDODOGN_GET_PLAYER_HOLLOW_MOVE_PATH" => { + Some(Self::DdnfkdodognGetPlayerHollowMovePath) + } + "DDNFKDODOGN_GET_BIG_TV_INDEX" => Some(Self::DdnfkdodognGetBigTvIndex), + "DDNFKDODOGN_CLEAR_NPC" => Some(Self::DdnfkdodognClearNpc), + "DDNFKDODOGN_SAVE_MINI_SNAPSHOT" => Some(Self::DdnfkdodognSaveMiniSnapshot), + "DDNFKDODOGN_GET_POSSESS_HOLLOW_ITEM" => { + Some(Self::DdnfkdodognGetPossessHollowItem) + } + "DDNFKDODOGN_RESET_HOLLOW_LINE_QUEST" => { + Some(Self::DdnfkdodognResetHollowLineQuest) + } + "DDNFKDODOGN_MODIFY_LIGHT_LEVEL" => Some(Self::DdnfkdodognModifyLightLevel), + "DDNFKDODOGN_GET_LIGHT_LEVEL" => Some(Self::DdnfkdodognGetLightLevel), + "DDNFKDODOGN_ADD_HOLLOW_LIGHT" => Some(Self::DdnfkdodognAddHollowLight), + "DDNFKDODOGN_REMOVE_HOLLOW_LIGHT" => Some(Self::DdnfkdodognRemoveHollowLight), + "DDNFKDODOGN_MODIFY_CHESSBOARD_PLUGIN" => { + Some(Self::DdnfkdodognModifyChessboardPlugin) + } + "DDNFKDODOGN_GET_LIGHT_UID" => Some(Self::DdnfkdodognGetLightUid), + "DDNFKDODOGN_NEW_BOOM" => Some(Self::DdnfkdodognNewBoom), + "DDNFKDODOGN_SET_ENTITY_PARAM" => Some(Self::DdnfkdodognSetEntityParam), + "DDNFKDODOGN_GET_ENTITY_PARAM" => Some(Self::DdnfkdodognGetEntityParam), + "DDNFKDODOGN_REPAIR_ZONE" => Some(Self::DdnfkdodognRepairZone), + "DDNFKDODOGN_PUSH_REPAIR_ZONE" => Some(Self::DdnfkdodognPushRepairZone), + "DDNFKDODOGN_SET_INNER_WORLD_MAP_STATE" => { + Some(Self::DdnfkdodognSetInnerWorldMapState) + } + "DDNFKDODOGN_LIST_CONVERT" => Some(Self::DdnfkdodognListConvert), + "DDNFKDODOGN_ABYSS_GET_BATTLE_EVENT" => { + Some(Self::DdnfkdodognAbyssGetBattleEvent) + } + "DDNFKDODOGN_TRIGGER_ENTITY_BASIC_BEHAVIOR" => { + Some(Self::DdnfkdodognTriggerEntityBasicBehavior) + } + "DDNFKDODOGN_TRIGGER_ENTITY_MOVE" => Some(Self::DdnfkdodognTriggerEntityMove), + "DDNFKDODOGN_TRIGGER_ENTITY_TRANSFER" => { + Some(Self::DdnfkdodognTriggerEntityTransfer) + } + "DDNFKDODOGN_TRIGGER_ENTITY_INTERACT" => { + Some(Self::DdnfkdodognTriggerEntityInteract) + } + "DDNFKDODOGN_UPGRADE_CARD" => Some(Self::DdnfkdodognUpgradeCard), + "DDNFKDODOGN_NEW_TIME_REWIND" => Some(Self::DdnfkdodognNewTimeRewind), + "DDNFKDODOGN_ENTER_TIME_REWIND" => Some(Self::DdnfkdodognEnterTimeRewind), + "DDNFKDODOGN_INIT_TIME_SEGMENT" => Some(Self::DdnfkdodognInitTimeSegment), + "DDNFKDODOGN_MODIFY_TIME_SEGMENT" => Some(Self::DdnfkdodognModifyTimeSegment), + "DDNFKDODOGN_MODIFY_TIME_REWIND" => Some(Self::DdnfkdodognModifyTimeRewind), + "DDNFKDODOGN_GET_TIME_REWIND_INFO" => { + Some(Self::DdnfkdodognGetTimeRewindInfo) + } + "DDNFKDODOGN_FINISH_KEY_SEGMENT" => Some(Self::DdnfkdodognFinishKeySegment), + "DDNFKDODOGN_ACTIVATE_GRID_IN_SEGMENT" => { + Some(Self::DdnfkdodognActivateGridInSegment) + } + "DDNFKDODOGN_COUNT_CARD_POOL" => Some(Self::DdnfkdodognCountCardPool), + "DDNFKDODOGN_MAKE_BANGBOO_CHOICE" => Some(Self::DdnfkdodognMakeBangbooChoice), + "DDNFKDODOGN_CHANGE_BANGBOO_CHOICE" => { + Some(Self::DdnfkdodognChangeBangbooChoice) + } + "DDNFKDODOGN_TRIGGER_ENTITY_SCRIPT" => { + Some(Self::DdnfkdodognTriggerEntityScript) + } + "DDNFKDODOGN_ADD_STRESS_PUNISH_CURSE" => { + Some(Self::DdnfkdodognAddStressPunishCurse) + } + "DDNFKDODOGN_POPUP_TIP" => Some(Self::DdnfkdodognPopupTip), + "DDNFKDODOGN_HIDE_HOLLOW_ENTITY" => Some(Self::DdnfkdodognHideHollowEntity), + "DDNFKDODOGN_GET_ENTITY_PRIORITY_LIST" => { + Some(Self::DdnfkdodognGetEntityPriorityList) + } + "DDNFKDODOGN_CHESS_UI_CONTROLLER" => Some(Self::DdnfkdodognChessUiController), + "DDNFKDODOGN_GET_ENTITY_PRIORITY" => Some(Self::DdnfkdodognGetEntityPriority), + "DDNFKDODOGN_CREATE_ENTITY" => Some(Self::DdnfkdodognCreateEntity), + "DDNFKDODOGN_DESTROY_ENTITY_BY_UID" => { + Some(Self::DdnfkdodognDestroyEntityByUid) + } + "DDNFKDODOGN_INTERACT_WITH_ENTITY" => { + Some(Self::DdnfkdodognInteractWithEntity) + } + "DDNFKDODOGN_SEARCH_POSITION" => Some(Self::DdnfkdodognSearchPosition), + "DDNFKDODOGN_FILTER_HOLLOW_ENTITY" => { + Some(Self::DdnfkdodognFilterHollowEntity) + } + "DDNFKDODOGN_MODIFY_STACKING_ORDER" => { + Some(Self::DdnfkdodognModifyStackingOrder) + } + "DDNFKDODOGN_INIT_CONWAY_LIFE_GAME" => { + Some(Self::DdnfkdodognInitConwayLifeGame) + } + "DDNFKDODOGN_ITERATE_CONWAY_LIFE_GAME" => { + Some(Self::DdnfkdodognIterateConwayLifeGame) + } + "DDNFKDODOGN_CHANGE_CONWAY_LIFE_GAME_GRID_STATE" => { + Some(Self::DdnfkdodognChangeConwayLifeGameGridState) + } + "DDNFKDODOGN_BIG_TV_CHESS_UI_CONTROLLER" => { + Some(Self::DdnfkdodognBigTvChessUiController) + } + "DDNFKDODOGN_SET_ENTITY_STATE" => Some(Self::DdnfkdodognSetEntityState), + "DDNFKDODOGN_REMOVE_ENTITY_STATE" => Some(Self::DdnfkdodognRemoveEntityState), + "DDNFKDODOGN_GET_EVENT_TEXTURE" => Some(Self::DdnfkdodognGetEventTexture), + "DDNFKDODOGN_MODIFY_COMPONENT" => Some(Self::DdnfkdodognModifyComponent), + "DDNFKDODOGN_CHANGE_HOLLOW_SOUND_STATE" => { + Some(Self::DdnfkdodognChangeHollowSoundState) + } + "DDNFKDODOGN_SET_ENTITY_SCRIPT_VARIABLE" => { + Some(Self::DdnfkdodognSetEntityScriptVariable) + } + "DDNFKDODOGN_CREATE_SIGNAL" => Some(Self::DdnfkdodognCreateSignal), + "DDNFKDODOGN_SUBSCRIBE_SIGNAL" => Some(Self::DdnfkdodognSubscribeSignal), + "DDNFKDODOGN_UNSUBSCRIBE_SIGNAL" => Some(Self::DdnfkdodognUnsubscribeSignal), + "DDNFKDODOGN_SEND_SIGNAL" => Some(Self::DdnfkdodognSendSignal), + "DDNFKDODOGN_DESTROY_SIGNAL" => Some(Self::DdnfkdodognDestroySignal), + "DDNFKDODOGN_SET_MULTI_HOLLOW_OUT_SECTION" => { + Some(Self::DdnfkdodognSetMultiHollowOutSection) + } + "DDNFKDODOGN_GET_ENTITY_SCRIPT_VARIABLE" => { + Some(Self::DdnfkdodognGetEntityScriptVariable) + } + "DDNFKDODOGN_REMOVE_CHESSBOARD" => Some(Self::DdnfkdodognRemoveChessboard), + "DDNFKDODOGN_BEGIN_TUTORIAL_GUIDE_INTERACT" => { + Some(Self::DdnfkdodognBeginTutorialGuideInteract) + } + "DDNFKDODOGN_TIME_REWIND_INTERACT" => { + Some(Self::DdnfkdodognTimeRewindInteract) + } + "DDNFKDODOGN_LIMBO_AVATAR_CARD" => Some(Self::DdnfkdodognLimboAvatarCard), + "DDNFKDODOGN_LIMBO_CAMP_EVENT" => Some(Self::DdnfkdodognLimboCampEvent), + "DDNFKDODOGN_MODIFY_AIM_RECT_COMPONENT" => { + Some(Self::DdnfkdodognModifyAimRectComponent) + } + "DDNFKDODOGN_REMOVE_FROM_POOL" => Some(Self::DdnfkdodognRemoveFromPool), + "DDNFKDODOGN_ACTIVATE_SEGMENT_INTERACT" => { + Some(Self::DdnfkdodognActivateSegmentInteract) + } + "DDNFKDODOGN_RECORD_USE_INITIATIVE_ITEM" => { + Some(Self::DdnfkdodognRecordUseInitiativeItem) + } + "DDNFKDODOGN_MODIFY_MULTI_HOLLOW_OUT_FLOOR" => { + Some(Self::DdnfkdodognModifyMultiHollowOutFloor) + } + "DDNFKDODOGN_SET_MULTI_HOLLOW_OUT_VIEW" => { + Some(Self::DdnfkdodognSetMultiHollowOutView) + } + "DDNFKDODOGN_MARK_GRID_AS_ELEVATOR" => { + Some(Self::DdnfkdodognMarkGridAsElevator) + } + "DDNFKDODOGN_MOVE_ELEVATOR_TO_SECTION" => { + Some(Self::DdnfkdodognMoveElevatorToSection) + } + "DDNFKDODOGN_NEXT_DROP_CLUE_EVENT" => { + Some(Self::DdnfkdodognNextDropClueEvent) + } + "DDNFKDODOGN_MOVE_HOLLOW_EVENT" => Some(Self::DdnfkdodognMoveHollowEvent), + "DDNFKDODOGN_GET_FOCUS_CAMERA_PARAM" => { + Some(Self::DdnfkdodognGetFocusCameraParam) + } + "DDNFKDODOGN_REPLACE_CARD" => Some(Self::DdnfkdodognReplaceCard), + "DDNFKDODOGN_LOAD_EVENT_PARAM" => Some(Self::DdnfkdodognLoadEventParam), + "DDNFKDODOGN_SET_LAYER_TYPE" => Some(Self::DdnfkdodognSetLayerType), + "DDNFKDODOGN_CREATE_HOLLOW_SPAWNER" => { + Some(Self::DdnfkdodognCreateHollowSpawner) + } + "DDNFKDODOGN_SET_HOLLOW_SPAWNER" => Some(Self::DdnfkdodognSetHollowSpawner), + "DDNFKDODOGN_GET_HOLLOW_SPAWNER" => Some(Self::DdnfkdodognGetHollowSpawner), + "DDNFKDODOGN_RUN_HOLLOW_SPAWNER" => Some(Self::DdnfkdodognRunHollowSpawner), + "DDNFKDODOGN_PLAY_HOLLOW_QTE_GAME" => { + Some(Self::DdnfkdodognPlayHollowQteGame) + } + "DDNFKDODOGN_SET_HOLLOW_PLAY_UI" => Some(Self::DdnfkdodognSetHollowPlayUi), + "DDNFKDODOGN_SET_HOLLOW_ACTIVITY_PARAM" => { + Some(Self::DdnfkdodognSetHollowActivityParam) + } + "DDNFKDODOGN_GET_HOLLOW_ACTIVITY_PARAM" => { + Some(Self::DdnfkdodognGetHollowActivityParam) + } + "DDNFKDODOGN_REWARD_WITH_PERFORM" => Some(Self::DdnfkdodognRewardWithPerform), + "DDNFKDODOGN_INIT_HACKER_GAME" => Some(Self::DdnfkdodognInitHackerGame), + "DDNFKDODOGN_MODIFY_HACKER_GAME_PARAM" => { + Some(Self::DdnfkdodognModifyHackerGameParam) + } + "DDNFKDODOGN_MODIFY_POP_INTERACT_COMPONENT" => { + Some(Self::DdnfkdodognModifyPopInteractComponent) + } + "DDNFKDODOGN_SET_LEVEL_GLOBAL_VARIABLE" => { + Some(Self::DdnfkdodognSetLevelGlobalVariable) + } + "DDNFKDODOGN_EVENT_MODIFICATION_BY_FALLING" => { + Some(Self::DdnfkdodognEventModificationByFalling) + } + "DDNFKDODOGN_TRY_MOVE_ELEVATOR" => Some(Self::DdnfkdodognTryMoveElevator), + "DDNFKDODOGN_GET_EVENT_POOL_EVENT" => { + Some(Self::DdnfkdodognGetEventPoolEvent) + } + "DDNFKDODOGN_CHESS_UI_3D_CONTROLLER" => { + Some(Self::DdnfkdodognChessUi3dController) + } + "DDNFKDODOGN_HOLLOW_GAME_FINISH_TO_LEVEL" => { + Some(Self::DdnfkdodognHollowGameFinishToLevel) + } + "DDNFKDODOGN_CHESSBOARD_SOKOBAN_UI_INFO" => { + Some(Self::DdnfkdodognChessboardSokobanUiInfo) + } + "DDNFKDODOGN_CREATE_NPC" => Some(Self::DdnfkdodognCreateNpc), + "DDNFKDODOGN_SET_QUEST_PHASE" => Some(Self::DdnfkdodognSetQuestPhase), + "DDNFKDODOGN_CHANGE_INTERACT" => Some(Self::DdnfkdodognChangeInteract), + "DDNFKDODOGN_INTERACT_FINISH" => Some(Self::DdnfkdodognInteractFinish), + "DDNFKDODOGN_REMOVE_MAIN_CITY_QUEST_NPC" => { + Some(Self::DdnfkdodognRemoveMainCityQuestNpc) + } + "DDNFKDODOGN_REMOVE_MAIN_CITY_QUEST_INTERACT" => { + Some(Self::DdnfkdodognRemoveMainCityQuestInteract) + } + "DDNFKDODOGN_CHANGE_BACK_SCENE_INFO" => { + Some(Self::DdnfkdodognChangeBackSceneInfo) + } + "DDNFKDODOGN_RESET_MAIN_CITY_QUEST_GROUP" => { + Some(Self::DdnfkdodognResetMainCityQuestGroup) + } + "DDNFKDODOGN_UNLOCK_HOLLOW_QUEST" => Some(Self::DdnfkdodognUnlockHollowQuest), + "DDNFKDODOGN_SET_NPC_VISIBLE" => Some(Self::DdnfkdodognSetNpcVisible), + "DDNFKDODOGN_REMOVE_INTERACT" => Some(Self::DdnfkdodognRemoveInteract), + "DDNFKDODOGN_REMOVE_NPC" => Some(Self::DdnfkdodognRemoveNpc), + "DDNFKDODOGN_SET_VHS_STORE_LEVEL" => Some(Self::DdnfkdodognSetVhsStoreLevel), + "DDNFKDODOGN_SET_VHS_STORE_TREND_STATE" => { + Some(Self::DdnfkdodognSetVhsStoreTrendState) + } + "DDNFKDODOGN_SWITCH_MAIN_CITY_TIME" => { + Some(Self::DdnfkdodognSwitchMainCityTime) + } + "DDNFKDODOGN_THE_WORLD" => Some(Self::DdnfkdodognTheWorld), + "DDNFKDODOGN_FORCE_REFRESH" => Some(Self::DdnfkdodognForceRefresh), + "DDNFKDODOGN_FORBID_AFK" => Some(Self::DdnfkdodognForbidAfk), + "DDNFKDODOGN_SWITCH_MAIN_CHARACTER" => { + Some(Self::DdnfkdodognSwitchMainCharacter) + } + "DDNFKDODOGN_SET_LAND_EVENT_FINISH" => { + Some(Self::DdnfkdodognSetLandEventFinish) + } + "DDNFKDODOGN_SET_BGM" => Some(Self::DdnfkdodognSetBgm), + "DDNFKDODOGN_SET_MAIN_CITY_OBJECT_STATE" => { + Some(Self::DdnfkdodognSetMainCityObjectState) + } + "DDNFKDODOGN_EVENT_CHOICE" => Some(Self::DdnfkdodognEventChoice), + "DDNFKDODOGN_CREATE_MOVE_NPC" => Some(Self::DdnfkdodognCreateMoveNpc), + "DDNFKDODOGN_CHANGE_GUIDE_POINT" => Some(Self::DdnfkdodognChangeGuidePoint), + "DDNFKDODOGN_ADD_DAILY_QUEST" => Some(Self::DdnfkdodognAddDailyQuest), + "DDNFKDODOGN_ADD_MICRO_TASK" => Some(Self::DdnfkdodognAddMicroTask), + "DDNFKDODOGN_SET_FIRST_MEET" => Some(Self::DdnfkdodognSetFirstMeet), + "DDNFKDODOGN_CREATE_CAMERA_ZONE" => Some(Self::DdnfkdodognCreateCameraZone), + "DDNFKDODOGN_SET_MAIN_CITY_TIME" => Some(Self::DdnfkdodognSetMainCityTime), + "DDNFKDODOGN_NEXT_MAIN_CITY_TIME_PERIOD" => { + Some(Self::DdnfkdodognNextMainCityTimePeriod) + } + "DDNFKDODOGN_PLAYER_SWITCH_MAIN_CHARACTER" => { + Some(Self::DdnfkdodognPlayerSwitchMainCharacter) + } + "DDNFKDODOGN_END_TRANSITION" => Some(Self::DdnfkdodognEndTransition), + "DDNFKDODOGN_ADD_VHS_FLOW_BUFF" => Some(Self::DdnfkdodognAddVhsFlowBuff), + "DDNFKDODOGN_ACTIVATE_PHOTO_ID" => Some(Self::DdnfkdodognActivatePhotoId), + "DDNFKDODOGN_ACCELERATE_MAIN_CITY_TIME" => { + Some(Self::DdnfkdodognAccelerateMainCityTime) + } + "DDNFKDODOGN_SET_TRASH_NEW_FLAG" => Some(Self::DdnfkdodognSetTrashNewFlag), + "DDNFKDODOGN_USE_LAST_TIME" => Some(Self::DdnfkdodognUseLastTime), + "DDNFKDODOGN_OCCUPY_OVERNIGHT" => Some(Self::DdnfkdodognOccupyOvernight), + "DDNFKDODOGN_SHOW_PHOTO_QUEST_FINISH_TIP" => { + Some(Self::DdnfkdodognShowPhotoQuestFinishTip) + } + "DDNFKDODOGN_ADD_SOUND_AMB" => Some(Self::DdnfkdodognAddSoundAmb), + "DDNFKDODOGN_SUBMIT_ITEM" => Some(Self::DdnfkdodognSubmitItem), + "DDNFKDODOGN_MOD_TRUST" => Some(Self::DdnfkdodognModTrust), + "DDNFKDODOGN_SET_PARTNER_EVENT_STATE" => { + Some(Self::DdnfkdodognSetPartnerEventState) + } + "DDNFKDODOGN_SEND_MESSAGE" => Some(Self::DdnfkdodognSendMessage), + "DDNFKDODOGN_SWITCH_TRACK_QUEST" => Some(Self::DdnfkdodognSwitchTrackQuest), + "DDNFKDODOGN_MOD_NPC" => Some(Self::DdnfkdodognModNpc), + "DDNFKDODOGN_ACCEPT_OVERNIGHT" => Some(Self::DdnfkdodognAcceptOvernight), + "DDNFKDODOGN_ACTIVE_TRIGGER" => Some(Self::DdnfkdodognActiveTrigger), + "DDNFKDODOGN_MOD_OBJ_STATE" => Some(Self::DdnfkdodognModObjState), + "DDNFKDODOGN_MOD_SCENE_OBJ" => Some(Self::DdnfkdodognModSceneObj), + "DDNFKDODOGN_FANS_SETTLE" => Some(Self::DdnfkdodognFansSettle), + "DDNFKDODOGN_OPEN_HALL_GAME" => Some(Self::DdnfkdodognOpenHallGame), + "DDNFKDODOGN_ADD_PARTNER_EVENT" => Some(Self::DdnfkdodognAddPartnerEvent), + "DDNFKDODOGN_EXEC_OVERNIGHT_EVENT" => { + Some(Self::DdnfkdodognExecOvernightEvent) + } + "DDNFKDODOGN_SOFA_REST_NEXT_TIME_PERIOD" => { + Some(Self::DdnfkdodognSofaRestNextTimePeriod) + } + "DDNFKDODOGN_BEGIN_UI_GAME" => Some(Self::DdnfkdodognBeginUiGame), + "DDNFKDODOGN_PREPARE_DATA" => Some(Self::DdnfkdodognPrepareData), + "DDNFKDODOGN_CLEAR_RP_RECOMMEND_RESULT" => { + Some(Self::DdnfkdodognClearRpRecommendResult) + } + "DDNFKDODOGN_DO_MAIN_CITY_GAME" => Some(Self::DdnfkdodognDoMainCityGame), + "DDNFKDODOGN_SHOW_IN_TODO" => Some(Self::DdnfkdodognShowInTodo), + "DDNFKDODOGN_CHANGE_NPC_NAME" => Some(Self::DdnfkdodognChangeNpcName), + "DDNFKDODOGN_CREATE_OVA" => Some(Self::DdnfkdodognCreateOva), + "DDNFKDODOGN_SET_OVA_STATE" => Some(Self::DdnfkdodognSetOvaState), + "DDNFKDODOGN_SWITCH_MAIN_CHARACTER_GUISE" => { + Some(Self::DdnfkdodognSwitchMainCharacterGuise) + } + "DDNFKDODOGN_COMPLETE_HALL_GAME" => Some(Self::DdnfkdodognCompleteHallGame), + "DDNFKDODOGN_HIDE_MAIN_CONTROL_AVATAR" => { + Some(Self::DdnfkdodognHideMainControlAvatar) + } + "DDNFKDODOGN_EAT_RAMEN" => Some(Self::DdnfkdodognEatRamen), + "DDNFKDODOGN_ONGOING_TIPS" => Some(Self::DdnfkdodognOngoingTips), + "DDNFKDODOGN_SET_SOUND" => Some(Self::DdnfkdodognSetSound), + "DDNFKDODOGN_MAP_CHOOSE_BY_EVENT" => Some(Self::DdnfkdodognMapChooseByEvent), + "DDNFKDODOGN_MAP_CHOOSE_BY_LAYER" => Some(Self::DdnfkdodognMapChooseByLayer), + "DDNFKDODOGN_MAP_CHOOSE_BY_NUM" => Some(Self::DdnfkdodognMapChooseByNum), + "DDNFKDODOGN_MAP_CHOOSE_BY_RANGE" => Some(Self::DdnfkdodognMapChooseByRange), + "DDNFKDODOGN_MAP_CLEAR_POOL" => Some(Self::DdnfkdodognMapClearPool), + "DDNFKDODOGN_MAP_SET_EVENT" => Some(Self::DdnfkdodognMapSetEvent), + "DDNFKDODOGN_MAP_SET_LAYER" => Some(Self::DdnfkdodognMapSetLayer), + "DDNFKDODOGN_MAP_SET_TAG" => Some(Self::DdnfkdodognMapSetTag), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dhniocfpana { + Alahmfghcdg = 0, + Bhibdmphojf = 1, + Gnnaljhljlh = 2, + Comdjlcamjd = 3, + Gnaokapmjio = 4, + Eocigopkdpe = 5, + Ljepponoaap = 6, + Bpkhiobibcj = 7, + Niadefchpkg = 8, + Lpgddcihhil = 9, + Ohgbhlolbhp = 10, + Inlfjbbpckf = 11, + Bpelaomlngp = 12, + Kcnpnimlbnb = 13, + Kgoogbecbhh = 14, + Lckhednboom = 15, + Nfhlfndbfpp = 16, + Ccogfehjcpe = 17, + Mefakiglcio = 18, + Bpbldkapcak = 19, + Pmankhlnpch = 20, + Ajfkpdlkhle = 21, + Dfldhplnbbj = 22, + Mfillklblga = 23, + Djojkdfninl = 24, + Aglecfipgnn = 25, + Lmfnppkomgd = 26, + Ongbfkbohee = 27, + Aghcejomdpj = 28, + Lmiddifcbgl = 29, + Fbacbhdodop = 30, + Fnbnkpomboj = 31, + Fmmgifijedo = 32, + Hhfchjmhpff = 33, + Pokpaikjfmg = 34, + Nppplajpkkd = 35, + Fikkgpcgbhl = 36, + Bkfneggddle = 37, + Odihjcpjhlm = 38, + Mkfhjkempgh = 39, + Mhkhkealhpn = 40, + Iehjmpkkmno = 41, + Pkcabmbpohn = 42, + Okoahlhomcc = 43, + Ibcfglfcfbc = 44, + Njmcnmgdfag = 45, + Oncnphdnkae = 46, + Bkihnailomd = 47, + Cjehldgdcep = 48, + Faolhjheeko = 49, + Dllaaikpoln = 50, + Pinfggahool = 51, + Clmlegfemjl = 52, + Ipfodgjdpoc = 53, + Nlajdibphjk = 54, + Enkfngmgnmf = 55, + Cjjcibepoko = 56, + Kboogkfoimn = 57, + Hjagiljeckd = 58, + Bkioijffeli = 59, + Ikbmefpnmop = 60, + Cacpielhina = 61, + Lnbcpphfhbl = 62, + Noihkgjpajj = 63, + Gafmikkdgii = 64, + Kcpgekmpnnh = 65, + Kleecckcmil = 66, + Hpkgohemibb = 67, + Hfknmpddmil = 68, + Hnhibfegbgf = 69, + Noblmjcgnpc = 70, + Ndopdmchjll = 71, + Papdmdfohhc = 72, + Dpndeggdhgc = 73, + Ogpcmhjlmcg = 74, + Dmhggoimaaf = 75, + Dcbmkbcimha = 76, + Dgeeagcaoaa = 77, + Gjeojebgbpe = 78, + Eaapcfajcno = 79, + Kfkfclgiija = 80, + Kljkmfkamjp = 81, + Bagifamlicm = 82, + Pjmipcjdbej = 83, + Gcjlndfopoj = 84, + Knkcngnbbkp = 85, + Epolgfjbkda = 86, + Fnpnkkpkgig = 87, + Iakdgonhkdh = 88, + Lpbgoabdbae = 89, + Pjnnkcpnmml = 90, + Cgafmlddhnd = 91, + Njmminjhebg = 92, + Doikdalcaih = 93, + Okeeeaaegki = 94, + Lpajnlekbam = 95, + Ebiojaimhjj = 96, + Egmpnfalhlp = 97, + Gjkklpidkcm = 98, + Goplppkfbek = 99, + Bfgagdfpini = 100, + Hbhmfghbnmo = 101, + Kbjpebaklno = 102, + Hglnojjgbah = 103, + Egljiijgmce = 104, +} +impl Dhniocfpana { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Alahmfghcdg => "DHNIOCFPANA_ALAHMFGHCDG", + Self::Bhibdmphojf => "DHNIOCFPANA_BHIBDMPHOJF", + Self::Gnnaljhljlh => "DHNIOCFPANA_GNNALJHLJLH", + Self::Comdjlcamjd => "DHNIOCFPANA_COMDJLCAMJD", + Self::Gnaokapmjio => "DHNIOCFPANA_GNAOKAPMJIO", + Self::Eocigopkdpe => "DHNIOCFPANA_EOCIGOPKDPE", + Self::Ljepponoaap => "DHNIOCFPANA_LJEPPONOAAP", + Self::Bpkhiobibcj => "DHNIOCFPANA_BPKHIOBIBCJ", + Self::Niadefchpkg => "DHNIOCFPANA_NIADEFCHPKG", + Self::Lpgddcihhil => "DHNIOCFPANA_LPGDDCIHHIL", + Self::Ohgbhlolbhp => "DHNIOCFPANA_OHGBHLOLBHP", + Self::Inlfjbbpckf => "DHNIOCFPANA_INLFJBBPCKF", + Self::Bpelaomlngp => "DHNIOCFPANA_BPELAOMLNGP", + Self::Kcnpnimlbnb => "DHNIOCFPANA_KCNPNIMLBNB", + Self::Kgoogbecbhh => "DHNIOCFPANA_KGOOGBECBHH", + Self::Lckhednboom => "DHNIOCFPANA_LCKHEDNBOOM", + Self::Nfhlfndbfpp => "DHNIOCFPANA_NFHLFNDBFPP", + Self::Ccogfehjcpe => "DHNIOCFPANA_CCOGFEHJCPE", + Self::Mefakiglcio => "DHNIOCFPANA_MEFAKIGLCIO", + Self::Bpbldkapcak => "DHNIOCFPANA_BPBLDKAPCAK", + Self::Pmankhlnpch => "DHNIOCFPANA_PMANKHLNPCH", + Self::Ajfkpdlkhle => "DHNIOCFPANA_AJFKPDLKHLE", + Self::Dfldhplnbbj => "DHNIOCFPANA_DFLDHPLNBBJ", + Self::Mfillklblga => "DHNIOCFPANA_MFILLKLBLGA", + Self::Djojkdfninl => "DHNIOCFPANA_DJOJKDFNINL", + Self::Aglecfipgnn => "DHNIOCFPANA_AGLECFIPGNN", + Self::Lmfnppkomgd => "DHNIOCFPANA_LMFNPPKOMGD", + Self::Ongbfkbohee => "DHNIOCFPANA_ONGBFKBOHEE", + Self::Aghcejomdpj => "DHNIOCFPANA_AGHCEJOMDPJ", + Self::Lmiddifcbgl => "DHNIOCFPANA_LMIDDIFCBGL", + Self::Fbacbhdodop => "DHNIOCFPANA_FBACBHDODOP", + Self::Fnbnkpomboj => "DHNIOCFPANA_FNBNKPOMBOJ", + Self::Fmmgifijedo => "DHNIOCFPANA_FMMGIFIJEDO", + Self::Hhfchjmhpff => "DHNIOCFPANA_HHFCHJMHPFF", + Self::Pokpaikjfmg => "DHNIOCFPANA_POKPAIKJFMG", + Self::Nppplajpkkd => "DHNIOCFPANA_NPPPLAJPKKD", + Self::Fikkgpcgbhl => "DHNIOCFPANA_FIKKGPCGBHL", + Self::Bkfneggddle => "DHNIOCFPANA_BKFNEGGDDLE", + Self::Odihjcpjhlm => "DHNIOCFPANA_ODIHJCPJHLM", + Self::Mkfhjkempgh => "DHNIOCFPANA_MKFHJKEMPGH", + Self::Mhkhkealhpn => "DHNIOCFPANA_MHKHKEALHPN", + Self::Iehjmpkkmno => "DHNIOCFPANA_IEHJMPKKMNO", + Self::Pkcabmbpohn => "DHNIOCFPANA_PKCABMBPOHN", + Self::Okoahlhomcc => "DHNIOCFPANA_OKOAHLHOMCC", + Self::Ibcfglfcfbc => "DHNIOCFPANA_IBCFGLFCFBC", + Self::Njmcnmgdfag => "DHNIOCFPANA_NJMCNMGDFAG", + Self::Oncnphdnkae => "DHNIOCFPANA_ONCNPHDNKAE", + Self::Bkihnailomd => "DHNIOCFPANA_BKIHNAILOMD", + Self::Cjehldgdcep => "DHNIOCFPANA_CJEHLDGDCEP", + Self::Faolhjheeko => "DHNIOCFPANA_FAOLHJHEEKO", + Self::Dllaaikpoln => "DHNIOCFPANA_DLLAAIKPOLN", + Self::Pinfggahool => "DHNIOCFPANA_PINFGGAHOOL", + Self::Clmlegfemjl => "DHNIOCFPANA_CLMLEGFEMJL", + Self::Ipfodgjdpoc => "DHNIOCFPANA_IPFODGJDPOC", + Self::Nlajdibphjk => "DHNIOCFPANA_NLAJDIBPHJK", + Self::Enkfngmgnmf => "DHNIOCFPANA_ENKFNGMGNMF", + Self::Cjjcibepoko => "DHNIOCFPANA_CJJCIBEPOKO", + Self::Kboogkfoimn => "DHNIOCFPANA_KBOOGKFOIMN", + Self::Hjagiljeckd => "DHNIOCFPANA_HJAGILJECKD", + Self::Bkioijffeli => "DHNIOCFPANA_BKIOIJFFELI", + Self::Ikbmefpnmop => "DHNIOCFPANA_IKBMEFPNMOP", + Self::Cacpielhina => "DHNIOCFPANA_CACPIELHINA", + Self::Lnbcpphfhbl => "DHNIOCFPANA_LNBCPPHFHBL", + Self::Noihkgjpajj => "DHNIOCFPANA_NOIHKGJPAJJ", + Self::Gafmikkdgii => "DHNIOCFPANA_GAFMIKKDGII", + Self::Kcpgekmpnnh => "DHNIOCFPANA_KCPGEKMPNNH", + Self::Kleecckcmil => "DHNIOCFPANA_KLEECCKCMIL", + Self::Hpkgohemibb => "DHNIOCFPANA_HPKGOHEMIBB", + Self::Hfknmpddmil => "DHNIOCFPANA_HFKNMPDDMIL", + Self::Hnhibfegbgf => "DHNIOCFPANA_HNHIBFEGBGF", + Self::Noblmjcgnpc => "DHNIOCFPANA_NOBLMJCGNPC", + Self::Ndopdmchjll => "DHNIOCFPANA_NDOPDMCHJLL", + Self::Papdmdfohhc => "DHNIOCFPANA_PAPDMDFOHHC", + Self::Dpndeggdhgc => "DHNIOCFPANA_DPNDEGGDHGC", + Self::Ogpcmhjlmcg => "DHNIOCFPANA_OGPCMHJLMCG", + Self::Dmhggoimaaf => "DHNIOCFPANA_DMHGGOIMAAF", + Self::Dcbmkbcimha => "DHNIOCFPANA_DCBMKBCIMHA", + Self::Dgeeagcaoaa => "DHNIOCFPANA_DGEEAGCAOAA", + Self::Gjeojebgbpe => "DHNIOCFPANA_GJEOJEBGBPE", + Self::Eaapcfajcno => "DHNIOCFPANA_EAAPCFAJCNO", + Self::Kfkfclgiija => "DHNIOCFPANA_KFKFCLGIIJA", + Self::Kljkmfkamjp => "DHNIOCFPANA_KLJKMFKAMJP", + Self::Bagifamlicm => "DHNIOCFPANA_BAGIFAMLICM", + Self::Pjmipcjdbej => "DHNIOCFPANA_PJMIPCJDBEJ", + Self::Gcjlndfopoj => "DHNIOCFPANA_GCJLNDFOPOJ", + Self::Knkcngnbbkp => "DHNIOCFPANA_KNKCNGNBBKP", + Self::Epolgfjbkda => "DHNIOCFPANA_EPOLGFJBKDA", + Self::Fnpnkkpkgig => "DHNIOCFPANA_FNPNKKPKGIG", + Self::Iakdgonhkdh => "DHNIOCFPANA_IAKDGONHKDH", + Self::Lpbgoabdbae => "DHNIOCFPANA_LPBGOABDBAE", + Self::Pjnnkcpnmml => "DHNIOCFPANA_PJNNKCPNMML", + Self::Cgafmlddhnd => "DHNIOCFPANA_CGAFMLDDHND", + Self::Njmminjhebg => "DHNIOCFPANA_NJMMINJHEBG", + Self::Doikdalcaih => "DHNIOCFPANA_DOIKDALCAIH", + Self::Okeeeaaegki => "DHNIOCFPANA_OKEEEAAEGKI", + Self::Lpajnlekbam => "DHNIOCFPANA_LPAJNLEKBAM", + Self::Ebiojaimhjj => "DHNIOCFPANA_EBIOJAIMHJJ", + Self::Egmpnfalhlp => "DHNIOCFPANA_EGMPNFALHLP", + Self::Gjkklpidkcm => "DHNIOCFPANA_GJKKLPIDKCM", + Self::Goplppkfbek => "DHNIOCFPANA_GOPLPPKFBEK", + Self::Bfgagdfpini => "DHNIOCFPANA_BFGAGDFPINI", + Self::Hbhmfghbnmo => "DHNIOCFPANA_HBHMFGHBNMO", + Self::Kbjpebaklno => "DHNIOCFPANA_KBJPEBAKLNO", + Self::Hglnojjgbah => "DHNIOCFPANA_HGLNOJJGBAH", + Self::Egljiijgmce => "DHNIOCFPANA_EGLJIIJGMCE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DHNIOCFPANA_ALAHMFGHCDG" => Some(Self::Alahmfghcdg), + "DHNIOCFPANA_BHIBDMPHOJF" => Some(Self::Bhibdmphojf), + "DHNIOCFPANA_GNNALJHLJLH" => Some(Self::Gnnaljhljlh), + "DHNIOCFPANA_COMDJLCAMJD" => Some(Self::Comdjlcamjd), + "DHNIOCFPANA_GNAOKAPMJIO" => Some(Self::Gnaokapmjio), + "DHNIOCFPANA_EOCIGOPKDPE" => Some(Self::Eocigopkdpe), + "DHNIOCFPANA_LJEPPONOAAP" => Some(Self::Ljepponoaap), + "DHNIOCFPANA_BPKHIOBIBCJ" => Some(Self::Bpkhiobibcj), + "DHNIOCFPANA_NIADEFCHPKG" => Some(Self::Niadefchpkg), + "DHNIOCFPANA_LPGDDCIHHIL" => Some(Self::Lpgddcihhil), + "DHNIOCFPANA_OHGBHLOLBHP" => Some(Self::Ohgbhlolbhp), + "DHNIOCFPANA_INLFJBBPCKF" => Some(Self::Inlfjbbpckf), + "DHNIOCFPANA_BPELAOMLNGP" => Some(Self::Bpelaomlngp), + "DHNIOCFPANA_KCNPNIMLBNB" => Some(Self::Kcnpnimlbnb), + "DHNIOCFPANA_KGOOGBECBHH" => Some(Self::Kgoogbecbhh), + "DHNIOCFPANA_LCKHEDNBOOM" => Some(Self::Lckhednboom), + "DHNIOCFPANA_NFHLFNDBFPP" => Some(Self::Nfhlfndbfpp), + "DHNIOCFPANA_CCOGFEHJCPE" => Some(Self::Ccogfehjcpe), + "DHNIOCFPANA_MEFAKIGLCIO" => Some(Self::Mefakiglcio), + "DHNIOCFPANA_BPBLDKAPCAK" => Some(Self::Bpbldkapcak), + "DHNIOCFPANA_PMANKHLNPCH" => Some(Self::Pmankhlnpch), + "DHNIOCFPANA_AJFKPDLKHLE" => Some(Self::Ajfkpdlkhle), + "DHNIOCFPANA_DFLDHPLNBBJ" => Some(Self::Dfldhplnbbj), + "DHNIOCFPANA_MFILLKLBLGA" => Some(Self::Mfillklblga), + "DHNIOCFPANA_DJOJKDFNINL" => Some(Self::Djojkdfninl), + "DHNIOCFPANA_AGLECFIPGNN" => Some(Self::Aglecfipgnn), + "DHNIOCFPANA_LMFNPPKOMGD" => Some(Self::Lmfnppkomgd), + "DHNIOCFPANA_ONGBFKBOHEE" => Some(Self::Ongbfkbohee), + "DHNIOCFPANA_AGHCEJOMDPJ" => Some(Self::Aghcejomdpj), + "DHNIOCFPANA_LMIDDIFCBGL" => Some(Self::Lmiddifcbgl), + "DHNIOCFPANA_FBACBHDODOP" => Some(Self::Fbacbhdodop), + "DHNIOCFPANA_FNBNKPOMBOJ" => Some(Self::Fnbnkpomboj), + "DHNIOCFPANA_FMMGIFIJEDO" => Some(Self::Fmmgifijedo), + "DHNIOCFPANA_HHFCHJMHPFF" => Some(Self::Hhfchjmhpff), + "DHNIOCFPANA_POKPAIKJFMG" => Some(Self::Pokpaikjfmg), + "DHNIOCFPANA_NPPPLAJPKKD" => Some(Self::Nppplajpkkd), + "DHNIOCFPANA_FIKKGPCGBHL" => Some(Self::Fikkgpcgbhl), + "DHNIOCFPANA_BKFNEGGDDLE" => Some(Self::Bkfneggddle), + "DHNIOCFPANA_ODIHJCPJHLM" => Some(Self::Odihjcpjhlm), + "DHNIOCFPANA_MKFHJKEMPGH" => Some(Self::Mkfhjkempgh), + "DHNIOCFPANA_MHKHKEALHPN" => Some(Self::Mhkhkealhpn), + "DHNIOCFPANA_IEHJMPKKMNO" => Some(Self::Iehjmpkkmno), + "DHNIOCFPANA_PKCABMBPOHN" => Some(Self::Pkcabmbpohn), + "DHNIOCFPANA_OKOAHLHOMCC" => Some(Self::Okoahlhomcc), + "DHNIOCFPANA_IBCFGLFCFBC" => Some(Self::Ibcfglfcfbc), + "DHNIOCFPANA_NJMCNMGDFAG" => Some(Self::Njmcnmgdfag), + "DHNIOCFPANA_ONCNPHDNKAE" => Some(Self::Oncnphdnkae), + "DHNIOCFPANA_BKIHNAILOMD" => Some(Self::Bkihnailomd), + "DHNIOCFPANA_CJEHLDGDCEP" => Some(Self::Cjehldgdcep), + "DHNIOCFPANA_FAOLHJHEEKO" => Some(Self::Faolhjheeko), + "DHNIOCFPANA_DLLAAIKPOLN" => Some(Self::Dllaaikpoln), + "DHNIOCFPANA_PINFGGAHOOL" => Some(Self::Pinfggahool), + "DHNIOCFPANA_CLMLEGFEMJL" => Some(Self::Clmlegfemjl), + "DHNIOCFPANA_IPFODGJDPOC" => Some(Self::Ipfodgjdpoc), + "DHNIOCFPANA_NLAJDIBPHJK" => Some(Self::Nlajdibphjk), + "DHNIOCFPANA_ENKFNGMGNMF" => Some(Self::Enkfngmgnmf), + "DHNIOCFPANA_CJJCIBEPOKO" => Some(Self::Cjjcibepoko), + "DHNIOCFPANA_KBOOGKFOIMN" => Some(Self::Kboogkfoimn), + "DHNIOCFPANA_HJAGILJECKD" => Some(Self::Hjagiljeckd), + "DHNIOCFPANA_BKIOIJFFELI" => Some(Self::Bkioijffeli), + "DHNIOCFPANA_IKBMEFPNMOP" => Some(Self::Ikbmefpnmop), + "DHNIOCFPANA_CACPIELHINA" => Some(Self::Cacpielhina), + "DHNIOCFPANA_LNBCPPHFHBL" => Some(Self::Lnbcpphfhbl), + "DHNIOCFPANA_NOIHKGJPAJJ" => Some(Self::Noihkgjpajj), + "DHNIOCFPANA_GAFMIKKDGII" => Some(Self::Gafmikkdgii), + "DHNIOCFPANA_KCPGEKMPNNH" => Some(Self::Kcpgekmpnnh), + "DHNIOCFPANA_KLEECCKCMIL" => Some(Self::Kleecckcmil), + "DHNIOCFPANA_HPKGOHEMIBB" => Some(Self::Hpkgohemibb), + "DHNIOCFPANA_HFKNMPDDMIL" => Some(Self::Hfknmpddmil), + "DHNIOCFPANA_HNHIBFEGBGF" => Some(Self::Hnhibfegbgf), + "DHNIOCFPANA_NOBLMJCGNPC" => Some(Self::Noblmjcgnpc), + "DHNIOCFPANA_NDOPDMCHJLL" => Some(Self::Ndopdmchjll), + "DHNIOCFPANA_PAPDMDFOHHC" => Some(Self::Papdmdfohhc), + "DHNIOCFPANA_DPNDEGGDHGC" => Some(Self::Dpndeggdhgc), + "DHNIOCFPANA_OGPCMHJLMCG" => Some(Self::Ogpcmhjlmcg), + "DHNIOCFPANA_DMHGGOIMAAF" => Some(Self::Dmhggoimaaf), + "DHNIOCFPANA_DCBMKBCIMHA" => Some(Self::Dcbmkbcimha), + "DHNIOCFPANA_DGEEAGCAOAA" => Some(Self::Dgeeagcaoaa), + "DHNIOCFPANA_GJEOJEBGBPE" => Some(Self::Gjeojebgbpe), + "DHNIOCFPANA_EAAPCFAJCNO" => Some(Self::Eaapcfajcno), + "DHNIOCFPANA_KFKFCLGIIJA" => Some(Self::Kfkfclgiija), + "DHNIOCFPANA_KLJKMFKAMJP" => Some(Self::Kljkmfkamjp), + "DHNIOCFPANA_BAGIFAMLICM" => Some(Self::Bagifamlicm), + "DHNIOCFPANA_PJMIPCJDBEJ" => Some(Self::Pjmipcjdbej), + "DHNIOCFPANA_GCJLNDFOPOJ" => Some(Self::Gcjlndfopoj), + "DHNIOCFPANA_KNKCNGNBBKP" => Some(Self::Knkcngnbbkp), + "DHNIOCFPANA_EPOLGFJBKDA" => Some(Self::Epolgfjbkda), + "DHNIOCFPANA_FNPNKKPKGIG" => Some(Self::Fnpnkkpkgig), + "DHNIOCFPANA_IAKDGONHKDH" => Some(Self::Iakdgonhkdh), + "DHNIOCFPANA_LPBGOABDBAE" => Some(Self::Lpbgoabdbae), + "DHNIOCFPANA_PJNNKCPNMML" => Some(Self::Pjnnkcpnmml), + "DHNIOCFPANA_CGAFMLDDHND" => Some(Self::Cgafmlddhnd), + "DHNIOCFPANA_NJMMINJHEBG" => Some(Self::Njmminjhebg), + "DHNIOCFPANA_DOIKDALCAIH" => Some(Self::Doikdalcaih), + "DHNIOCFPANA_OKEEEAAEGKI" => Some(Self::Okeeeaaegki), + "DHNIOCFPANA_LPAJNLEKBAM" => Some(Self::Lpajnlekbam), + "DHNIOCFPANA_EBIOJAIMHJJ" => Some(Self::Ebiojaimhjj), + "DHNIOCFPANA_EGMPNFALHLP" => Some(Self::Egmpnfalhlp), + "DHNIOCFPANA_GJKKLPIDKCM" => Some(Self::Gjkklpidkcm), + "DHNIOCFPANA_GOPLPPKFBEK" => Some(Self::Goplppkfbek), + "DHNIOCFPANA_BFGAGDFPINI" => Some(Self::Bfgagdfpini), + "DHNIOCFPANA_HBHMFGHBNMO" => Some(Self::Hbhmfghbnmo), + "DHNIOCFPANA_KBJPEBAKLNO" => Some(Self::Kbjpebaklno), + "DHNIOCFPANA_HGLNOJJGBAH" => Some(Self::Hglnojjgbah), + "DHNIOCFPANA_EGLJIIJGMCE" => Some(Self::Egljiijgmce), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Megobiinpbc { + Ifklhnpjeik = 0, + Hbaibljonli = 1, + Fdnccbnhlka = 2, + Bfeckhcmfac = 3, + Obchecoibmo = 4, + Aekekicodmb = 5, +} +impl Megobiinpbc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ifklhnpjeik => "MEGOBIINPBC_IFKLHNPJEIK", + Self::Hbaibljonli => "MEGOBIINPBC_HBAIBLJONLI", + Self::Fdnccbnhlka => "MEGOBIINPBC_FDNCCBNHLKA", + Self::Bfeckhcmfac => "MEGOBIINPBC_BFECKHCMFAC", + Self::Obchecoibmo => "MEGOBIINPBC_OBCHECOIBMO", + Self::Aekekicodmb => "MEGOBIINPBC_AEKEKICODMB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MEGOBIINPBC_IFKLHNPJEIK" => Some(Self::Ifklhnpjeik), + "MEGOBIINPBC_HBAIBLJONLI" => Some(Self::Hbaibljonli), + "MEGOBIINPBC_FDNCCBNHLKA" => Some(Self::Fdnccbnhlka), + "MEGOBIINPBC_BFECKHCMFAC" => Some(Self::Bfeckhcmfac), + "MEGOBIINPBC_OBCHECOIBMO" => Some(Self::Obchecoibmo), + "MEGOBIINPBC_AEKEKICODMB" => Some(Self::Aekekicodmb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pigllelamlg { + Binakhnlaif = 0, + Dnmmgbjodhe = 1, + Okaebmidlpf = 2, + Hfhdjodbmdc = 3, + Mjnjbeeiajb = 4, + Fbnmaalgmgi = 5, + Nkinacnemfl = 6, + Aooccbcjjef = 7, +} +impl Pigllelamlg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Binakhnlaif => "PIGLLELAMLG_BINAKHNLAIF", + Self::Dnmmgbjodhe => "PIGLLELAMLG_DNMMGBJODHE", + Self::Okaebmidlpf => "PIGLLELAMLG_OKAEBMIDLPF", + Self::Hfhdjodbmdc => "PIGLLELAMLG_HFHDJODBMDC", + Self::Mjnjbeeiajb => "PIGLLELAMLG_MJNJBEEIAJB", + Self::Fbnmaalgmgi => "PIGLLELAMLG_FBNMAALGMGI", + Self::Nkinacnemfl => "PIGLLELAMLG_NKINACNEMFL", + Self::Aooccbcjjef => "PIGLLELAMLG_AOOCCBCJJEF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PIGLLELAMLG_BINAKHNLAIF" => Some(Self::Binakhnlaif), + "PIGLLELAMLG_DNMMGBJODHE" => Some(Self::Dnmmgbjodhe), + "PIGLLELAMLG_OKAEBMIDLPF" => Some(Self::Okaebmidlpf), + "PIGLLELAMLG_HFHDJODBMDC" => Some(Self::Hfhdjodbmdc), + "PIGLLELAMLG_MJNJBEEIAJB" => Some(Self::Mjnjbeeiajb), + "PIGLLELAMLG_FBNMAALGMGI" => Some(Self::Fbnmaalgmgi), + "PIGLLELAMLG_NKINACNEMFL" => Some(Self::Nkinacnemfl), + "PIGLLELAMLG_AOOCCBCJJEF" => Some(Self::Aooccbcjjef), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Piplfkbjpji { + SceneTagDefault = 0, + SceneTagMetro = 1, + SceneTagConstructionSite = 2, + SceneTagSkyScraper = 3, + SceneTagZero = 4, + SceneTagStreet = 5, + SceneTagOuterRing = 6, +} +impl Piplfkbjpji { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::SceneTagDefault => "PIPLFKBJPJI_SCENE_TAG_DEFAULT", + Self::SceneTagMetro => "PIPLFKBJPJI_SCENE_TAG_METRO", + Self::SceneTagConstructionSite => "PIPLFKBJPJI_SCENE_TAG_CONSTRUCTION_SITE", + Self::SceneTagSkyScraper => "PIPLFKBJPJI_SCENE_TAG_SKY_SCRAPER", + Self::SceneTagZero => "PIPLFKBJPJI_SCENE_TAG_ZERO", + Self::SceneTagStreet => "PIPLFKBJPJI_SCENE_TAG_STREET", + Self::SceneTagOuterRing => "PIPLFKBJPJI_SCENE_TAG_OUTER_RING", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PIPLFKBJPJI_SCENE_TAG_DEFAULT" => Some(Self::SceneTagDefault), + "PIPLFKBJPJI_SCENE_TAG_METRO" => Some(Self::SceneTagMetro), + "PIPLFKBJPJI_SCENE_TAG_CONSTRUCTION_SITE" => { + Some(Self::SceneTagConstructionSite) + } + "PIPLFKBJPJI_SCENE_TAG_SKY_SCRAPER" => Some(Self::SceneTagSkyScraper), + "PIPLFKBJPJI_SCENE_TAG_ZERO" => Some(Self::SceneTagZero), + "PIPLFKBJPJI_SCENE_TAG_STREET" => Some(Self::SceneTagStreet), + "PIPLFKBJPJI_SCENE_TAG_OUTER_RING" => Some(Self::SceneTagOuterRing), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fkpnmkpcfic { + AvatarPosAll = 0, + AvatarPosRandom = 1, + Character1 = 2, + Character2 = 3, + Character3 = 4, + RandomAlive = 5, + RandomDeath = 6, + RandomBan = 7, +} +impl Fkpnmkpcfic { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::AvatarPosAll => "FKPNMKPCFIC_AVATAR_POS_ALL", + Self::AvatarPosRandom => "FKPNMKPCFIC_AVATAR_POS_RANDOM", + Self::Character1 => "FKPNMKPCFIC_CHARACTER1", + Self::Character2 => "FKPNMKPCFIC_CHARACTER2", + Self::Character3 => "FKPNMKPCFIC_CHARACTER3", + Self::RandomAlive => "FKPNMKPCFIC_RANDOM_ALIVE", + Self::RandomDeath => "FKPNMKPCFIC_RANDOM_DEATH", + Self::RandomBan => "FKPNMKPCFIC_RANDOM_BAN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FKPNMKPCFIC_AVATAR_POS_ALL" => Some(Self::AvatarPosAll), + "FKPNMKPCFIC_AVATAR_POS_RANDOM" => Some(Self::AvatarPosRandom), + "FKPNMKPCFIC_CHARACTER1" => Some(Self::Character1), + "FKPNMKPCFIC_CHARACTER2" => Some(Self::Character2), + "FKPNMKPCFIC_CHARACTER3" => Some(Self::Character3), + "FKPNMKPCFIC_RANDOM_ALIVE" => Some(Self::RandomAlive), + "FKPNMKPCFIC_RANDOM_DEATH" => Some(Self::RandomDeath), + "FKPNMKPCFIC_RANDOM_BAN" => Some(Self::RandomBan), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kdmjogfaalg { + Dbognnmefnk = 0, + Nnpdchlmdpo = 1, + Dhhhffbfgpg = 2, + Kdmjilcpmle = 3, + Kmjgallinol = 4, +} +impl Kdmjogfaalg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dbognnmefnk => "KDMJOGFAALG_DBOGNNMEFNK", + Self::Nnpdchlmdpo => "KDMJOGFAALG_NNPDCHLMDPO", + Self::Dhhhffbfgpg => "KDMJOGFAALG_DHHHFFBFGPG", + Self::Kdmjilcpmle => "KDMJOGFAALG_KDMJILCPMLE", + Self::Kmjgallinol => "KDMJOGFAALG_KMJGALLINOL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KDMJOGFAALG_DBOGNNMEFNK" => Some(Self::Dbognnmefnk), + "KDMJOGFAALG_NNPDCHLMDPO" => Some(Self::Nnpdchlmdpo), + "KDMJOGFAALG_DHHHFFBFGPG" => Some(Self::Dhhhffbfgpg), + "KDMJOGFAALG_KDMJILCPMLE" => Some(Self::Kdmjilcpmle), + "KDMJOGFAALG_KMJGALLINOL" => Some(Self::Kmjgallinol), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kplnfokhece { + Phgdbdflomh = 0, +} +impl Kplnfokhece { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Phgdbdflomh => "KPLNFOKHECE_PHGDBDFLOMH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KPLNFOKHECE_PHGDBDFLOMH" => Some(Self::Phgdbdflomh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum ModTimeType { + ModTimeTypeNone = 0, + ModTimeSet = 1, + ModTimeAddPeriod = 2, + ModTimeAddMinute = 3, +} +impl ModTimeType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ModTimeTypeNone => "ModTimeType_MOD_TIME_TYPE_NONE", + Self::ModTimeSet => "ModTimeType_MOD_TIME_SET", + Self::ModTimeAddPeriod => "ModTimeType_MOD_TIME_ADD_PERIOD", + Self::ModTimeAddMinute => "ModTimeType_MOD_TIME_ADD_MINUTE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ModTimeType_MOD_TIME_TYPE_NONE" => Some(Self::ModTimeTypeNone), + "ModTimeType_MOD_TIME_SET" => Some(Self::ModTimeSet), + "ModTimeType_MOD_TIME_ADD_PERIOD" => Some(Self::ModTimeAddPeriod), + "ModTimeType_MOD_TIME_ADD_MINUTE" => Some(Self::ModTimeAddMinute), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fgbhnkfhefd { + Jjaijnhngeb = 0, + Cehhgdcjfnf = 1, + Iphcjgegici = 2, +} +impl Fgbhnkfhefd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jjaijnhngeb => "FGBHNKFHEFD_JJAIJNHNGEB", + Self::Cehhgdcjfnf => "FGBHNKFHEFD_CEHHGDCJFNF", + Self::Iphcjgegici => "FGBHNKFHEFD_IPHCJGEGICI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FGBHNKFHEFD_JJAIJNHNGEB" => Some(Self::Jjaijnhngeb), + "FGBHNKFHEFD_CEHHGDCJFNF" => Some(Self::Cehhgdcjfnf), + "FGBHNKFHEFD_IPHCJGEGICI" => Some(Self::Iphcjgegici), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pjmdfnnjofa { + Fdjbkldddlm = 0, + Bleckkcajcg = 1, +} +impl Pjmdfnnjofa { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fdjbkldddlm => "PJMDFNNJOFA_FDJBKLDDDLM", + Self::Bleckkcajcg => "PJMDFNNJOFA_BLECKKCAJCG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PJMDFNNJOFA_FDJBKLDDDLM" => Some(Self::Fdjbkldddlm), + "PJMDFNNJOFA_BLECKKCAJCG" => Some(Self::Bleckkcajcg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum ChessUiIconType { + ChessUiIconTypeNone = 0, + ChessUiIconTypeCoin = 1, + ChessUiIconTypeGold = 2, + ChessUiIconTypeMechanism = 3, + ChessUiIconTypeHp = 4, + ChessUiIconTypeAtk = 5, + ChessUiIconTypeCountdown = 6, + ChessUiIconTypeKey = 7, + ChessUiIconTypeClue = 8, + ChessUiIconTypeCard = 9, +} +impl ChessUiIconType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ChessUiIconTypeNone => "ChessUIIconType_CHESS_UI_ICON_TYPE_NONE", + Self::ChessUiIconTypeCoin => "ChessUIIconType_CHESS_UI_ICON_TYPE_COIN", + Self::ChessUiIconTypeGold => "ChessUIIconType_CHESS_UI_ICON_TYPE_GOLD", + Self::ChessUiIconTypeMechanism => { + "ChessUIIconType_CHESS_UI_ICON_TYPE_MECHANISM" + } + Self::ChessUiIconTypeHp => "ChessUIIconType_CHESS_UI_ICON_TYPE_HP", + Self::ChessUiIconTypeAtk => "ChessUIIconType_CHESS_UI_ICON_TYPE_ATK", + Self::ChessUiIconTypeCountdown => { + "ChessUIIconType_CHESS_UI_ICON_TYPE_COUNTDOWN" + } + Self::ChessUiIconTypeKey => "ChessUIIconType_CHESS_UI_ICON_TYPE_KEY", + Self::ChessUiIconTypeClue => "ChessUIIconType_CHESS_UI_ICON_TYPE_CLUE", + Self::ChessUiIconTypeCard => "ChessUIIconType_CHESS_UI_ICON_TYPE_CARD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ChessUIIconType_CHESS_UI_ICON_TYPE_NONE" => Some(Self::ChessUiIconTypeNone), + "ChessUIIconType_CHESS_UI_ICON_TYPE_COIN" => Some(Self::ChessUiIconTypeCoin), + "ChessUIIconType_CHESS_UI_ICON_TYPE_GOLD" => Some(Self::ChessUiIconTypeGold), + "ChessUIIconType_CHESS_UI_ICON_TYPE_MECHANISM" => { + Some(Self::ChessUiIconTypeMechanism) + } + "ChessUIIconType_CHESS_UI_ICON_TYPE_HP" => Some(Self::ChessUiIconTypeHp), + "ChessUIIconType_CHESS_UI_ICON_TYPE_ATK" => Some(Self::ChessUiIconTypeAtk), + "ChessUIIconType_CHESS_UI_ICON_TYPE_COUNTDOWN" => { + Some(Self::ChessUiIconTypeCountdown) + } + "ChessUIIconType_CHESS_UI_ICON_TYPE_KEY" => Some(Self::ChessUiIconTypeKey), + "ChessUIIconType_CHESS_UI_ICON_TYPE_CLUE" => Some(Self::ChessUiIconTypeClue), + "ChessUIIconType_CHESS_UI_ICON_TYPE_CARD" => Some(Self::ChessUiIconTypeCard), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Olmmcgkbfec { + Ncllnhckcgi = 0, +} +impl Olmmcgkbfec { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ncllnhckcgi => "OLMMCGKBFEC_NCLLNHCKCGI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OLMMCGKBFEC_NCLLNHCKCGI" => Some(Self::Ncllnhckcgi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lnjnbdihkjj { + Iefohnaogil = 0, + Hjmdhholgha = 1, + Phiemhjfnca = 2, + Kokkbdikfpg = 3, +} +impl Lnjnbdihkjj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Iefohnaogil => "LNJNBDIHKJJ_IEFOHNAOGIL", + Self::Hjmdhholgha => "LNJNBDIHKJJ_HJMDHHOLGHA", + Self::Phiemhjfnca => "LNJNBDIHKJJ_PHIEMHJFNCA", + Self::Kokkbdikfpg => "LNJNBDIHKJJ_KOKKBDIKFPG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LNJNBDIHKJJ_IEFOHNAOGIL" => Some(Self::Iefohnaogil), + "LNJNBDIHKJJ_HJMDHHOLGHA" => Some(Self::Hjmdhholgha), + "LNJNBDIHKJJ_PHIEMHJFNCA" => Some(Self::Phiemhjfnca), + "LNJNBDIHKJJ_KOKKBDIKFPG" => Some(Self::Kokkbdikfpg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lidlefaifbh { + Jhlhcdcmicc = 0, + Hfcoleeccob = 1, + Jmabcbapofk = 2, + Belgcgnjkjp = 3, +} +impl Lidlefaifbh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jhlhcdcmicc => "LIDLEFAIFBH_JHLHCDCMICC", + Self::Hfcoleeccob => "LIDLEFAIFBH_HFCOLEECCOB", + Self::Jmabcbapofk => "LIDLEFAIFBH_JMABCBAPOFK", + Self::Belgcgnjkjp => "LIDLEFAIFBH_BELGCGNJKJP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LIDLEFAIFBH_JHLHCDCMICC" => Some(Self::Jhlhcdcmicc), + "LIDLEFAIFBH_HFCOLEECCOB" => Some(Self::Hfcoleeccob), + "LIDLEFAIFBH_JMABCBAPOFK" => Some(Self::Jmabcbapofk), + "LIDLEFAIFBH_BELGCGNJKJP" => Some(Self::Belgcgnjkjp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kbgkmdlgdpn { + Iegjfccingo = 0, + Ahgamipglbf = 1, + Imdidahmhpb = 2, + Cinnbcabglm = 3, + Ljpkjfmmnie = 4, + Cpfknpnhooc = 5, + Iijpiiefbol = 6, +} +impl Kbgkmdlgdpn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Iegjfccingo => "KBGKMDLGDPN_IEGJFCCINGO", + Self::Ahgamipglbf => "KBGKMDLGDPN_AHGAMIPGLBF", + Self::Imdidahmhpb => "KBGKMDLGDPN_IMDIDAHMHPB", + Self::Cinnbcabglm => "KBGKMDLGDPN_CINNBCABGLM", + Self::Ljpkjfmmnie => "KBGKMDLGDPN_LJPKJFMMNIE", + Self::Cpfknpnhooc => "KBGKMDLGDPN_CPFKNPNHOOC", + Self::Iijpiiefbol => "KBGKMDLGDPN_IIJPIIEFBOL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KBGKMDLGDPN_IEGJFCCINGO" => Some(Self::Iegjfccingo), + "KBGKMDLGDPN_AHGAMIPGLBF" => Some(Self::Ahgamipglbf), + "KBGKMDLGDPN_IMDIDAHMHPB" => Some(Self::Imdidahmhpb), + "KBGKMDLGDPN_CINNBCABGLM" => Some(Self::Cinnbcabglm), + "KBGKMDLGDPN_LJPKJFMMNIE" => Some(Self::Ljpkjfmmnie), + "KBGKMDLGDPN_CPFKNPNHOOC" => Some(Self::Cpfknpnhooc), + "KBGKMDLGDPN_IIJPIIEFBOL" => Some(Self::Iijpiiefbol), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ibmegllglmd { + Cdgpinofefg = 0, + Giadhnmdhig = 1, + Aiicdlamcpi = 2, +} +impl Ibmegllglmd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cdgpinofefg => "IBMEGLLGLMD_CDGPINOFEFG", + Self::Giadhnmdhig => "IBMEGLLGLMD_GIADHNMDHIG", + Self::Aiicdlamcpi => "IBMEGLLGLMD_AIICDLAMCPI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IBMEGLLGLMD_CDGPINOFEFG" => Some(Self::Cdgpinofefg), + "IBMEGLLGLMD_GIADHNMDHIG" => Some(Self::Giadhnmdhig), + "IBMEGLLGLMD_AIICDLAMCPI" => Some(Self::Aiicdlamcpi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Coicokfkncf { + Jjpeddlmpkg = 0, + Pijnhjmpkah = 1001, + Dlhheloahao = 1004, + Hbplcfjhpee = 1008, + Jkobinnephm = 2003, + Kgajlmeegjj = 2004, + Bhlbhebapfl = 2005, + Ebjeepioaep = 2006, + Iiafaajmgcp = 2008, +} +impl Coicokfkncf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jjpeddlmpkg => "COICOKFKNCF_JJPEDDLMPKG", + Self::Pijnhjmpkah => "COICOKFKNCF_PIJNHJMPKAH", + Self::Dlhheloahao => "COICOKFKNCF_DLHHELOAHAO", + Self::Hbplcfjhpee => "COICOKFKNCF_HBPLCFJHPEE", + Self::Jkobinnephm => "COICOKFKNCF_JKOBINNEPHM", + Self::Kgajlmeegjj => "COICOKFKNCF_KGAJLMEEGJJ", + Self::Bhlbhebapfl => "COICOKFKNCF_BHLBHEBAPFL", + Self::Ebjeepioaep => "COICOKFKNCF_EBJEEPIOAEP", + Self::Iiafaajmgcp => "COICOKFKNCF_IIAFAAJMGCP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "COICOKFKNCF_JJPEDDLMPKG" => Some(Self::Jjpeddlmpkg), + "COICOKFKNCF_PIJNHJMPKAH" => Some(Self::Pijnhjmpkah), + "COICOKFKNCF_DLHHELOAHAO" => Some(Self::Dlhheloahao), + "COICOKFKNCF_HBPLCFJHPEE" => Some(Self::Hbplcfjhpee), + "COICOKFKNCF_JKOBINNEPHM" => Some(Self::Jkobinnephm), + "COICOKFKNCF_KGAJLMEEGJJ" => Some(Self::Kgajlmeegjj), + "COICOKFKNCF_BHLBHEBAPFL" => Some(Self::Bhlbhebapfl), + "COICOKFKNCF_EBJEEPIOAEP" => Some(Self::Ebjeepioaep), + "COICOKFKNCF_IIAFAAJMGCP" => Some(Self::Iiafaajmgcp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bkncebjdfdh { + Cpdpoadaogd = 0, + Mphhkdmabhh = 1, + Nmoclkhofip = 2, + Pnnffpgkdcg = 3, + Jdckmdijipc = 4, +} +impl Bkncebjdfdh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cpdpoadaogd => "BKNCEBJDFDH_CPDPOADAOGD", + Self::Mphhkdmabhh => "BKNCEBJDFDH_MPHHKDMABHH", + Self::Nmoclkhofip => "BKNCEBJDFDH_NMOCLKHOFIP", + Self::Pnnffpgkdcg => "BKNCEBJDFDH_PNNFFPGKDCG", + Self::Jdckmdijipc => "BKNCEBJDFDH_JDCKMDIJIPC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BKNCEBJDFDH_CPDPOADAOGD" => Some(Self::Cpdpoadaogd), + "BKNCEBJDFDH_MPHHKDMABHH" => Some(Self::Mphhkdmabhh), + "BKNCEBJDFDH_NMOCLKHOFIP" => Some(Self::Nmoclkhofip), + "BKNCEBJDFDH_PNNFFPGKDCG" => Some(Self::Pnnffpgkdcg), + "BKNCEBJDFDH_JDCKMDIJIPC" => Some(Self::Jdckmdijipc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ffghgbbmaij { + Int = 0, + Bool = 1, + Trigger = 2, + Float = 3, +} +impl Ffghgbbmaij { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Int => "FFGHGBBMAIJ_INT", + Self::Bool => "FFGHGBBMAIJ_BOOL", + Self::Trigger => "FFGHGBBMAIJ_TRIGGER", + Self::Float => "FFGHGBBMAIJ_FLOAT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FFGHGBBMAIJ_INT" => Some(Self::Int), + "FFGHGBBMAIJ_BOOL" => Some(Self::Bool), + "FFGHGBBMAIJ_TRIGGER" => Some(Self::Trigger), + "FFGHGBBMAIJ_FLOAT" => Some(Self::Float), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ckglephehgb { + Gfajcibglah = 0, + Dkflfhpbbko = 1, + Ngjfhaccpdn = 2, +} +impl Ckglephehgb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gfajcibglah => "CKGLEPHEHGB_GFAJCIBGLAH", + Self::Dkflfhpbbko => "CKGLEPHEHGB_DKFLFHPBBKO", + Self::Ngjfhaccpdn => "CKGLEPHEHGB_NGJFHACCPDN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CKGLEPHEHGB_GFAJCIBGLAH" => Some(Self::Gfajcibglah), + "CKGLEPHEHGB_DKFLFHPBBKO" => Some(Self::Dkflfhpbbko), + "CKGLEPHEHGB_NGJFHACCPDN" => Some(Self::Ngjfhaccpdn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ipdcllfgcjk { + CopyTypeAll = 0, + CopyTypeEventId = 1, + CopyTypeNodeState = 2, + CopyTypeVisibleState = 3, + CopyTypeSubState = 4, + CopyTypeEventDetail = 5, +} +impl Ipdcllfgcjk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::CopyTypeAll => "IPDCLLFGCJK_COPY_TYPE_ALL", + Self::CopyTypeEventId => "IPDCLLFGCJK_COPY_TYPE_EVENT_ID", + Self::CopyTypeNodeState => "IPDCLLFGCJK_COPY_TYPE_NODE_STATE", + Self::CopyTypeVisibleState => "IPDCLLFGCJK_COPY_TYPE_VISIBLE_STATE", + Self::CopyTypeSubState => "IPDCLLFGCJK_COPY_TYPE_SUB_STATE", + Self::CopyTypeEventDetail => "IPDCLLFGCJK_COPY_TYPE_EVENT_DETAIL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IPDCLLFGCJK_COPY_TYPE_ALL" => Some(Self::CopyTypeAll), + "IPDCLLFGCJK_COPY_TYPE_EVENT_ID" => Some(Self::CopyTypeEventId), + "IPDCLLFGCJK_COPY_TYPE_NODE_STATE" => Some(Self::CopyTypeNodeState), + "IPDCLLFGCJK_COPY_TYPE_VISIBLE_STATE" => Some(Self::CopyTypeVisibleState), + "IPDCLLFGCJK_COPY_TYPE_SUB_STATE" => Some(Self::CopyTypeSubState), + "IPDCLLFGCJK_COPY_TYPE_EVENT_DETAIL" => Some(Self::CopyTypeEventDetail), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kjlcpnpaakg { + HollowGameUiTypeDefault = 0, + HollowGameUiTypeActivityHacker = 1, + HollowGameUiTypeBless = 2, +} +impl Kjlcpnpaakg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowGameUiTypeDefault => "KJLCPNPAAKG_HOLLOW_GAME_UI_TYPE_DEFAULT", + Self::HollowGameUiTypeActivityHacker => { + "KJLCPNPAAKG_HOLLOW_GAME_UI_TYPE_ACTIVITY_HACKER" + } + Self::HollowGameUiTypeBless => "KJLCPNPAAKG_HOLLOW_GAME_UI_TYPE_BLESS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KJLCPNPAAKG_HOLLOW_GAME_UI_TYPE_DEFAULT" => { + Some(Self::HollowGameUiTypeDefault) + } + "KJLCPNPAAKG_HOLLOW_GAME_UI_TYPE_ACTIVITY_HACKER" => { + Some(Self::HollowGameUiTypeActivityHacker) + } + "KJLCPNPAAKG_HOLLOW_GAME_UI_TYPE_BLESS" => Some(Self::HollowGameUiTypeBless), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eofaipfpnmo { + Dfggnjoilif = 0, +} +impl Eofaipfpnmo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dfggnjoilif => "EOFAIPFPNMO_DFGGNJOILIF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EOFAIPFPNMO_DFGGNJOILIF" => Some(Self::Dfggnjoilif), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gjhcbolafhb { + Gcpknogdccc = 0, + Dmanikeiofm = 1, + Lmknnbkobfc = 2, + Lbbpmmpoipb = 3, +} +impl Gjhcbolafhb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gcpknogdccc => "GJHCBOLAFHB_GCPKNOGDCCC", + Self::Dmanikeiofm => "GJHCBOLAFHB_DMANIKEIOFM", + Self::Lmknnbkobfc => "GJHCBOLAFHB_LMKNNBKOBFC", + Self::Lbbpmmpoipb => "GJHCBOLAFHB_LBBPMMPOIPB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GJHCBOLAFHB_GCPKNOGDCCC" => Some(Self::Gcpknogdccc), + "GJHCBOLAFHB_DMANIKEIOFM" => Some(Self::Dmanikeiofm), + "GJHCBOLAFHB_LMKNNBKOBFC" => Some(Self::Lmknnbkobfc), + "GJHCBOLAFHB_LBBPMMPOIPB" => Some(Self::Lbbpmmpoipb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bihofmafoeo { + Jpikinpnlkf = 0, + Mdembppdinf = 1, + Feojoejmchf = 2, + Kcpijfopeil = 3, + Mcniendoihe = 4, +} +impl Bihofmafoeo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jpikinpnlkf => "BIHOFMAFOEO_JPIKINPNLKF", + Self::Mdembppdinf => "BIHOFMAFOEO_MDEMBPPDINF", + Self::Feojoejmchf => "BIHOFMAFOEO_FEOJOEJMCHF", + Self::Kcpijfopeil => "BIHOFMAFOEO_KCPIJFOPEIL", + Self::Mcniendoihe => "BIHOFMAFOEO_MCNIENDOIHE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BIHOFMAFOEO_JPIKINPNLKF" => Some(Self::Jpikinpnlkf), + "BIHOFMAFOEO_MDEMBPPDINF" => Some(Self::Mdembppdinf), + "BIHOFMAFOEO_FEOJOEJMCHF" => Some(Self::Feojoejmchf), + "BIHOFMAFOEO_KCPIJFOPEIL" => Some(Self::Kcpijfopeil), + "BIHOFMAFOEO_MCNIENDOIHE" => Some(Self::Mcniendoihe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gedlkhanlid { + Jljncoodokh = 0, + Eedgmhmbijg = 1, +} +impl Gedlkhanlid { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jljncoodokh => "GEDLKHANLID_JLJNCOODOKH", + Self::Eedgmhmbijg => "GEDLKHANLID_EEDGMHMBIJG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GEDLKHANLID_JLJNCOODOKH" => Some(Self::Jljncoodokh), + "GEDLKHANLID_EEDGMHMBIJG" => Some(Self::Eedgmhmbijg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum HollowSystemUiState { + HollowSystemUiStateNormal = 0, + HollowSystemUiStateClose = 1, + HollowSystemUiStateBrighten = 2, +} +impl HollowSystemUiState { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowSystemUiStateNormal => { + "HollowSystemUIState_HOLLOW_SYSTEM_UI_STATE_NORMAL" + } + Self::HollowSystemUiStateClose => { + "HollowSystemUIState_HOLLOW_SYSTEM_UI_STATE_CLOSE" + } + Self::HollowSystemUiStateBrighten => { + "HollowSystemUIState_HOLLOW_SYSTEM_UI_STATE_BRIGHTEN" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HollowSystemUIState_HOLLOW_SYSTEM_UI_STATE_NORMAL" => { + Some(Self::HollowSystemUiStateNormal) + } + "HollowSystemUIState_HOLLOW_SYSTEM_UI_STATE_CLOSE" => { + Some(Self::HollowSystemUiStateClose) + } + "HollowSystemUIState_HOLLOW_SYSTEM_UI_STATE_BRIGHTEN" => { + Some(Self::HollowSystemUiStateBrighten) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jenleaenpgc { + Igobhlackje = 0, + Dpdgajcgjle = 1, + Celhaklafeg = 2, + Floafgpelgo = 3, + Hppkmfbgppm = 4, + Aiemckllmni = 5, + Lhpoahbbeig = 6, + Clabpebhnjk = 7, + Kcghcikkonj = 8, + Ifjdnaclnhk = 9, +} +impl Jenleaenpgc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Igobhlackje => "JENLEAENPGC_IGOBHLACKJE", + Self::Dpdgajcgjle => "JENLEAENPGC_DPDGAJCGJLE", + Self::Celhaklafeg => "JENLEAENPGC_CELHAKLAFEG", + Self::Floafgpelgo => "JENLEAENPGC_FLOAFGPELGO", + Self::Hppkmfbgppm => "JENLEAENPGC_HPPKMFBGPPM", + Self::Aiemckllmni => "JENLEAENPGC_AIEMCKLLMNI", + Self::Lhpoahbbeig => "JENLEAENPGC_LHPOAHBBEIG", + Self::Clabpebhnjk => "JENLEAENPGC_CLABPEBHNJK", + Self::Kcghcikkonj => "JENLEAENPGC_KCGHCIKKONJ", + Self::Ifjdnaclnhk => "JENLEAENPGC_IFJDNACLNHK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JENLEAENPGC_IGOBHLACKJE" => Some(Self::Igobhlackje), + "JENLEAENPGC_DPDGAJCGJLE" => Some(Self::Dpdgajcgjle), + "JENLEAENPGC_CELHAKLAFEG" => Some(Self::Celhaklafeg), + "JENLEAENPGC_FLOAFGPELGO" => Some(Self::Floafgpelgo), + "JENLEAENPGC_HPPKMFBGPPM" => Some(Self::Hppkmfbgppm), + "JENLEAENPGC_AIEMCKLLMNI" => Some(Self::Aiemckllmni), + "JENLEAENPGC_LHPOAHBBEIG" => Some(Self::Lhpoahbbeig), + "JENLEAENPGC_CLABPEBHNJK" => Some(Self::Clabpebhnjk), + "JENLEAENPGC_KCGHCIKKONJ" => Some(Self::Kcghcikkonj), + "JENLEAENPGC_IFJDNACLNHK" => Some(Self::Ifjdnaclnhk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ncjcplkiphk { + Degiaadlacl = 0, + Flghkcppjhg = 1, + Amkdnhkecmp = 2, + Gnjpjgdlfbc = 3, + Lbheepidalg = 4, + Dkifcjdoaam = 5, + Olhfopcmnnp = 6, + Hiccjmbebbl = 7, + Gjidgmifepp = 8, + Magbfjgiafa = 9, + Pkefhpobihj = 10, + Bpmibaghnik = 11, + Idbfbafebph = 15, + Hiedokhhpen = 16, + Jaakdlbkfpm = 20, + Bjobolaofep = 21, + Medgndgffed = 22, + Obafimhphlo = 23, + Ijhgcmdklha = 24, + Gahnbhnnjhe = 25, + Ickdgncchal = 26, + Djnieainjaf = 27, + Cdagaifjfcj = 28, + Hlfiggacmoc = 29, + Kagnlmbboli = 30, +} +impl Ncjcplkiphk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Degiaadlacl => "NCJCPLKIPHK_DEGIAADLACL", + Self::Flghkcppjhg => "NCJCPLKIPHK_FLGHKCPPJHG", + Self::Amkdnhkecmp => "NCJCPLKIPHK_AMKDNHKECMP", + Self::Gnjpjgdlfbc => "NCJCPLKIPHK_GNJPJGDLFBC", + Self::Lbheepidalg => "NCJCPLKIPHK_LBHEEPIDALG", + Self::Dkifcjdoaam => "NCJCPLKIPHK_DKIFCJDOAAM", + Self::Olhfopcmnnp => "NCJCPLKIPHK_OLHFOPCMNNP", + Self::Hiccjmbebbl => "NCJCPLKIPHK_HICCJMBEBBL", + Self::Gjidgmifepp => "NCJCPLKIPHK_GJIDGMIFEPP", + Self::Magbfjgiafa => "NCJCPLKIPHK_MAGBFJGIAFA", + Self::Pkefhpobihj => "NCJCPLKIPHK_PKEFHPOBIHJ", + Self::Bpmibaghnik => "NCJCPLKIPHK_BPMIBAGHNIK", + Self::Idbfbafebph => "NCJCPLKIPHK_IDBFBAFEBPH", + Self::Hiedokhhpen => "NCJCPLKIPHK_HIEDOKHHPEN", + Self::Jaakdlbkfpm => "NCJCPLKIPHK_JAAKDLBKFPM", + Self::Bjobolaofep => "NCJCPLKIPHK_BJOBOLAOFEP", + Self::Medgndgffed => "NCJCPLKIPHK_MEDGNDGFFED", + Self::Obafimhphlo => "NCJCPLKIPHK_OBAFIMHPHLO", + Self::Ijhgcmdklha => "NCJCPLKIPHK_IJHGCMDKLHA", + Self::Gahnbhnnjhe => "NCJCPLKIPHK_GAHNBHNNJHE", + Self::Ickdgncchal => "NCJCPLKIPHK_ICKDGNCCHAL", + Self::Djnieainjaf => "NCJCPLKIPHK_DJNIEAINJAF", + Self::Cdagaifjfcj => "NCJCPLKIPHK_CDAGAIFJFCJ", + Self::Hlfiggacmoc => "NCJCPLKIPHK_HLFIGGACMOC", + Self::Kagnlmbboli => "NCJCPLKIPHK_KAGNLMBBOLI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NCJCPLKIPHK_DEGIAADLACL" => Some(Self::Degiaadlacl), + "NCJCPLKIPHK_FLGHKCPPJHG" => Some(Self::Flghkcppjhg), + "NCJCPLKIPHK_AMKDNHKECMP" => Some(Self::Amkdnhkecmp), + "NCJCPLKIPHK_GNJPJGDLFBC" => Some(Self::Gnjpjgdlfbc), + "NCJCPLKIPHK_LBHEEPIDALG" => Some(Self::Lbheepidalg), + "NCJCPLKIPHK_DKIFCJDOAAM" => Some(Self::Dkifcjdoaam), + "NCJCPLKIPHK_OLHFOPCMNNP" => Some(Self::Olhfopcmnnp), + "NCJCPLKIPHK_HICCJMBEBBL" => Some(Self::Hiccjmbebbl), + "NCJCPLKIPHK_GJIDGMIFEPP" => Some(Self::Gjidgmifepp), + "NCJCPLKIPHK_MAGBFJGIAFA" => Some(Self::Magbfjgiafa), + "NCJCPLKIPHK_PKEFHPOBIHJ" => Some(Self::Pkefhpobihj), + "NCJCPLKIPHK_BPMIBAGHNIK" => Some(Self::Bpmibaghnik), + "NCJCPLKIPHK_IDBFBAFEBPH" => Some(Self::Idbfbafebph), + "NCJCPLKIPHK_HIEDOKHHPEN" => Some(Self::Hiedokhhpen), + "NCJCPLKIPHK_JAAKDLBKFPM" => Some(Self::Jaakdlbkfpm), + "NCJCPLKIPHK_BJOBOLAOFEP" => Some(Self::Bjobolaofep), + "NCJCPLKIPHK_MEDGNDGFFED" => Some(Self::Medgndgffed), + "NCJCPLKIPHK_OBAFIMHPHLO" => Some(Self::Obafimhphlo), + "NCJCPLKIPHK_IJHGCMDKLHA" => Some(Self::Ijhgcmdklha), + "NCJCPLKIPHK_GAHNBHNNJHE" => Some(Self::Gahnbhnnjhe), + "NCJCPLKIPHK_ICKDGNCCHAL" => Some(Self::Ickdgncchal), + "NCJCPLKIPHK_DJNIEAINJAF" => Some(Self::Djnieainjaf), + "NCJCPLKIPHK_CDAGAIFJFCJ" => Some(Self::Cdagaifjfcj), + "NCJCPLKIPHK_HLFIGGACMOC" => Some(Self::Hlfiggacmoc), + "NCJCPLKIPHK_KAGNLMBBOLI" => Some(Self::Kagnlmbboli), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hpdclgmhflk { + PlotPlay = 0, + Dialog = 1, + Bubble = 2, +} +impl Hpdclgmhflk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::PlotPlay => "HPDCLGMHFLK_PLOT_PLAY", + Self::Dialog => "HPDCLGMHFLK_DIALOG", + Self::Bubble => "HPDCLGMHFLK_BUBBLE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HPDCLGMHFLK_PLOT_PLAY" => Some(Self::PlotPlay), + "HPDCLGMHFLK_DIALOG" => Some(Self::Dialog), + "HPDCLGMHFLK_BUBBLE" => Some(Self::Bubble), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ceidihkepje { + Bhfneejfcoi = 0, + Oopmphenhlh = 1, + Cbijfeccpkd = 2, + Kjabbjefhbg = 3, + Lelcekopolp = 4, + Akdnbgocpid = 5, + Dnelaielghg = 6, + Angmandpfme = 7, + Peflhicenpo = 8, + Mlelejgiikf = 9, + Cnjldcdbcna = 10, + Oallehpfpij = 11, + Ekegnblgigi = 12, + Llmehbgkkci = 13, + Aomepgcjljc = 14, + Gdajcldkamj = 15, + Elekojkdfpn = 16, +} +impl Ceidihkepje { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bhfneejfcoi => "CEIDIHKEPJE_BHFNEEJFCOI", + Self::Oopmphenhlh => "CEIDIHKEPJE_OOPMPHENHLH", + Self::Cbijfeccpkd => "CEIDIHKEPJE_CBIJFECCPKD", + Self::Kjabbjefhbg => "CEIDIHKEPJE_KJABBJEFHBG", + Self::Lelcekopolp => "CEIDIHKEPJE_LELCEKOPOLP", + Self::Akdnbgocpid => "CEIDIHKEPJE_AKDNBGOCPID", + Self::Dnelaielghg => "CEIDIHKEPJE_DNELAIELGHG", + Self::Angmandpfme => "CEIDIHKEPJE_ANGMANDPFME", + Self::Peflhicenpo => "CEIDIHKEPJE_PEFLHICENPO", + Self::Mlelejgiikf => "CEIDIHKEPJE_MLELEJGIIKF", + Self::Cnjldcdbcna => "CEIDIHKEPJE_CNJLDCDBCNA", + Self::Oallehpfpij => "CEIDIHKEPJE_OALLEHPFPIJ", + Self::Ekegnblgigi => "CEIDIHKEPJE_EKEGNBLGIGI", + Self::Llmehbgkkci => "CEIDIHKEPJE_LLMEHBGKKCI", + Self::Aomepgcjljc => "CEIDIHKEPJE_AOMEPGCJLJC", + Self::Gdajcldkamj => "CEIDIHKEPJE_GDAJCLDKAMJ", + Self::Elekojkdfpn => "CEIDIHKEPJE_ELEKOJKDFPN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CEIDIHKEPJE_BHFNEEJFCOI" => Some(Self::Bhfneejfcoi), + "CEIDIHKEPJE_OOPMPHENHLH" => Some(Self::Oopmphenhlh), + "CEIDIHKEPJE_CBIJFECCPKD" => Some(Self::Cbijfeccpkd), + "CEIDIHKEPJE_KJABBJEFHBG" => Some(Self::Kjabbjefhbg), + "CEIDIHKEPJE_LELCEKOPOLP" => Some(Self::Lelcekopolp), + "CEIDIHKEPJE_AKDNBGOCPID" => Some(Self::Akdnbgocpid), + "CEIDIHKEPJE_DNELAIELGHG" => Some(Self::Dnelaielghg), + "CEIDIHKEPJE_ANGMANDPFME" => Some(Self::Angmandpfme), + "CEIDIHKEPJE_PEFLHICENPO" => Some(Self::Peflhicenpo), + "CEIDIHKEPJE_MLELEJGIIKF" => Some(Self::Mlelejgiikf), + "CEIDIHKEPJE_CNJLDCDBCNA" => Some(Self::Cnjldcdbcna), + "CEIDIHKEPJE_OALLEHPFPIJ" => Some(Self::Oallehpfpij), + "CEIDIHKEPJE_EKEGNBLGIGI" => Some(Self::Ekegnblgigi), + "CEIDIHKEPJE_LLMEHBGKKCI" => Some(Self::Llmehbgkkci), + "CEIDIHKEPJE_AOMEPGCJLJC" => Some(Self::Aomepgcjljc), + "CEIDIHKEPJE_GDAJCLDKAMJ" => Some(Self::Gdajcldkamj), + "CEIDIHKEPJE_ELEKOJKDFPN" => Some(Self::Elekojkdfpn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gaihmcojjjj { + Fjkjgjkiokm = 0, + Cnpilpjkjda = 1, + Aplglnjidkf = 2, + Jkkfmcmmhja = 3, +} +impl Gaihmcojjjj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fjkjgjkiokm => "GAIHMCOJJJJ_FJKJGJKIOKM", + Self::Cnpilpjkjda => "GAIHMCOJJJJ_CNPILPJKJDA", + Self::Aplglnjidkf => "GAIHMCOJJJJ_APLGLNJIDKF", + Self::Jkkfmcmmhja => "GAIHMCOJJJJ_JKKFMCMMHJA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GAIHMCOJJJJ_FJKJGJKIOKM" => Some(Self::Fjkjgjkiokm), + "GAIHMCOJJJJ_CNPILPJKJDA" => Some(Self::Cnpilpjkjda), + "GAIHMCOJJJJ_APLGLNJIDKF" => Some(Self::Aplglnjidkf), + "GAIHMCOJJJJ_JKKFMCMMHJA" => Some(Self::Jkkfmcmmhja), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Enljapmbjla { + Nhdgndkdaeo = 0, + Ghbhjjclcbi = 1, + Mkhhcbloimn = 2, +} +impl Enljapmbjla { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nhdgndkdaeo => "ENLJAPMBJLA_NHDGNDKDAEO", + Self::Ghbhjjclcbi => "ENLJAPMBJLA_GHBHJJCLCBI", + Self::Mkhhcbloimn => "ENLJAPMBJLA_MKHHCBLOIMN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ENLJAPMBJLA_NHDGNDKDAEO" => Some(Self::Nhdgndkdaeo), + "ENLJAPMBJLA_GHBHJJCLCBI" => Some(Self::Ghbhjjclcbi), + "ENLJAPMBJLA_MKHHCBLOIMN" => Some(Self::Mkhhcbloimn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pmapebfpnif { + TimeRewindInteractTypeNone = 0, + TimeRewindInteractTypeAll = 1, + TimeRewindInteractTypeExit = 2, + TimeRewindInteractTypePlay = 3, + TimeRewindInteractTypeSwitch = 4, +} +impl Pmapebfpnif { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::TimeRewindInteractTypeNone => { + "PMAPEBFPNIF_TIME_REWIND_INTERACT_TYPE_NONE" + } + Self::TimeRewindInteractTypeAll => { + "PMAPEBFPNIF_TIME_REWIND_INTERACT_TYPE_ALL" + } + Self::TimeRewindInteractTypeExit => { + "PMAPEBFPNIF_TIME_REWIND_INTERACT_TYPE_EXIT" + } + Self::TimeRewindInteractTypePlay => { + "PMAPEBFPNIF_TIME_REWIND_INTERACT_TYPE_PLAY" + } + Self::TimeRewindInteractTypeSwitch => { + "PMAPEBFPNIF_TIME_REWIND_INTERACT_TYPE_SWITCH" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PMAPEBFPNIF_TIME_REWIND_INTERACT_TYPE_NONE" => { + Some(Self::TimeRewindInteractTypeNone) + } + "PMAPEBFPNIF_TIME_REWIND_INTERACT_TYPE_ALL" => { + Some(Self::TimeRewindInteractTypeAll) + } + "PMAPEBFPNIF_TIME_REWIND_INTERACT_TYPE_EXIT" => { + Some(Self::TimeRewindInteractTypeExit) + } + "PMAPEBFPNIF_TIME_REWIND_INTERACT_TYPE_PLAY" => { + Some(Self::TimeRewindInteractTypePlay) + } + "PMAPEBFPNIF_TIME_REWIND_INTERACT_TYPE_SWITCH" => { + Some(Self::TimeRewindInteractTypeSwitch) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fcahdppimdp { + Bhgogohjegk = 0, + Ppcclobmefl = 1, + Onmdkakdmnm = 2, + Cofnedbpkfa = 3, +} +impl Fcahdppimdp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bhgogohjegk => "FCAHDPPIMDP_BHGOGOHJEGK", + Self::Ppcclobmefl => "FCAHDPPIMDP_PPCCLOBMEFL", + Self::Onmdkakdmnm => "FCAHDPPIMDP_ONMDKAKDMNM", + Self::Cofnedbpkfa => "FCAHDPPIMDP_COFNEDBPKFA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FCAHDPPIMDP_BHGOGOHJEGK" => Some(Self::Bhgogohjegk), + "FCAHDPPIMDP_PPCCLOBMEFL" => Some(Self::Ppcclobmefl), + "FCAHDPPIMDP_ONMDKAKDMNM" => Some(Self::Onmdkakdmnm), + "FCAHDPPIMDP_COFNEDBPKFA" => Some(Self::Cofnedbpkfa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dkcgagincnb { + Jcapepoikpf = 0, + Fbhnkmnjdec = 1, + Ljpcoknlbak = 2, + Mhcadglnkac = 3, +} +impl Dkcgagincnb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jcapepoikpf => "DKCGAGINCNB_JCAPEPOIKPF", + Self::Fbhnkmnjdec => "DKCGAGINCNB_FBHNKMNJDEC", + Self::Ljpcoknlbak => "DKCGAGINCNB_LJPCOKNLBAK", + Self::Mhcadglnkac => "DKCGAGINCNB_MHCADGLNKAC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DKCGAGINCNB_JCAPEPOIKPF" => Some(Self::Jcapepoikpf), + "DKCGAGINCNB_FBHNKMNJDEC" => Some(Self::Fbhnkmnjdec), + "DKCGAGINCNB_LJPCOKNLBAK" => Some(Self::Ljpcoknlbak), + "DKCGAGINCNB_MHCADGLNKAC" => Some(Self::Mhcadglnkac), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eajnmdboeok { + Pgkgacgijjp = 0, + Ooaibifeida = 1, + Ikbgjpdmjfe = 2, + Cjdhankppak = 3, + Jcmfcbljmdo = 4, + Ombhahmdolg = 5, +} +impl Eajnmdboeok { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pgkgacgijjp => "EAJNMDBOEOK_PGKGACGIJJP", + Self::Ooaibifeida => "EAJNMDBOEOK_OOAIBIFEIDA", + Self::Ikbgjpdmjfe => "EAJNMDBOEOK_IKBGJPDMJFE", + Self::Cjdhankppak => "EAJNMDBOEOK_CJDHANKPPAK", + Self::Jcmfcbljmdo => "EAJNMDBOEOK_JCMFCBLJMDO", + Self::Ombhahmdolg => "EAJNMDBOEOK_OMBHAHMDOLG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EAJNMDBOEOK_PGKGACGIJJP" => Some(Self::Pgkgacgijjp), + "EAJNMDBOEOK_OOAIBIFEIDA" => Some(Self::Ooaibifeida), + "EAJNMDBOEOK_IKBGJPDMJFE" => Some(Self::Ikbgjpdmjfe), + "EAJNMDBOEOK_CJDHANKPPAK" => Some(Self::Cjdhankppak), + "EAJNMDBOEOK_JCMFCBLJMDO" => Some(Self::Jcmfcbljmdo), + "EAJNMDBOEOK_OMBHAHMDOLG" => Some(Self::Ombhahmdolg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pedjkmmmjgl { + Llnfidpcfjm = 0, + Glodmnflmmn = 100000001, + Flglioiblee = 100000002, + Ejibmnidjli = 100000003, + Eooppokmbbe = 100000004, +} +impl Pedjkmmmjgl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Llnfidpcfjm => "PEDJKMMMJGL_LLNFIDPCFJM", + Self::Glodmnflmmn => "PEDJKMMMJGL_GLODMNFLMMN", + Self::Flglioiblee => "PEDJKMMMJGL_FLGLIOIBLEE", + Self::Ejibmnidjli => "PEDJKMMMJGL_EJIBMNIDJLI", + Self::Eooppokmbbe => "PEDJKMMMJGL_EOOPPOKMBBE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PEDJKMMMJGL_LLNFIDPCFJM" => Some(Self::Llnfidpcfjm), + "PEDJKMMMJGL_GLODMNFLMMN" => Some(Self::Glodmnflmmn), + "PEDJKMMMJGL_FLGLIOIBLEE" => Some(Self::Flglioiblee), + "PEDJKMMMJGL_EJIBMNIDJLI" => Some(Self::Ejibmnidjli), + "PEDJKMMMJGL_EOOPPOKMBBE" => Some(Self::Eooppokmbbe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mekpadbfcle { + Bhgodlmkaap = 0, + Gaglaicmdog = 1, + Fffkblekioe = 2, + Hklgngocige = 3, +} +impl Mekpadbfcle { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bhgodlmkaap => "MEKPADBFCLE_BHGODLMKAAP", + Self::Gaglaicmdog => "MEKPADBFCLE_GAGLAICMDOG", + Self::Fffkblekioe => "MEKPADBFCLE_FFFKBLEKIOE", + Self::Hklgngocige => "MEKPADBFCLE_HKLGNGOCIGE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MEKPADBFCLE_BHGODLMKAAP" => Some(Self::Bhgodlmkaap), + "MEKPADBFCLE_GAGLAICMDOG" => Some(Self::Gaglaicmdog), + "MEKPADBFCLE_FFFKBLEKIOE" => Some(Self::Fffkblekioe), + "MEKPADBFCLE_HKLGNGOCIGE" => Some(Self::Hklgngocige), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kjcejcipndj { + RepairZoneStateNone = 0, + RepairZoneStateFail = 1, + RepairZoneStateSucc = 2, +} +impl Kjcejcipndj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::RepairZoneStateNone => "KJCEJCIPNDJ_REPAIR_ZONE_STATE_NONE", + Self::RepairZoneStateFail => "KJCEJCIPNDJ_REPAIR_ZONE_STATE_FAIL", + Self::RepairZoneStateSucc => "KJCEJCIPNDJ_REPAIR_ZONE_STATE_SUCC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KJCEJCIPNDJ_REPAIR_ZONE_STATE_NONE" => Some(Self::RepairZoneStateNone), + "KJCEJCIPNDJ_REPAIR_ZONE_STATE_FAIL" => Some(Self::RepairZoneStateFail), + "KJCEJCIPNDJ_REPAIR_ZONE_STATE_SUCC" => Some(Self::RepairZoneStateSucc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mlfgkkjiobh { + Hbddamamalo = 0, + Elannjgbnnh = 1, +} +impl Mlfgkkjiobh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hbddamamalo => "MLFGKKJIOBH_HBDDAMAMALO", + Self::Elannjgbnnh => "MLFGKKJIOBH_ELANNJGBNNH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MLFGKKJIOBH_HBDDAMAMALO" => Some(Self::Hbddamamalo), + "MLFGKKJIOBH_ELANNJGBNNH" => Some(Self::Elannjgbnnh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jllfebcaadf { + Lmbhpmeljjh = 0, + Ganonjfjlaf = 1, + Dpaamclbnei = 2, + Mdknocecbpc = 3, + Gagfejjhpif = 4, + Fkhkkbocnan = 5, + Ickficencef = 6, + Mifgiagjnaa = 7, + Eppncolhobo = 8, + Dbhigfhdhee = 9, + Gdnfppjemoo = 10, + Keidiljdlch = 11, + Jnlohppfjdp = 12, +} +impl Jllfebcaadf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lmbhpmeljjh => "JLLFEBCAADF_LMBHPMELJJH", + Self::Ganonjfjlaf => "JLLFEBCAADF_GANONJFJLAF", + Self::Dpaamclbnei => "JLLFEBCAADF_DPAAMCLBNEI", + Self::Mdknocecbpc => "JLLFEBCAADF_MDKNOCECBPC", + Self::Gagfejjhpif => "JLLFEBCAADF_GAGFEJJHPIF", + Self::Fkhkkbocnan => "JLLFEBCAADF_FKHKKBOCNAN", + Self::Ickficencef => "JLLFEBCAADF_ICKFICENCEF", + Self::Mifgiagjnaa => "JLLFEBCAADF_MIFGIAGJNAA", + Self::Eppncolhobo => "JLLFEBCAADF_EPPNCOLHOBO", + Self::Dbhigfhdhee => "JLLFEBCAADF_DBHIGFHDHEE", + Self::Gdnfppjemoo => "JLLFEBCAADF_GDNFPPJEMOO", + Self::Keidiljdlch => "JLLFEBCAADF_KEIDILJDLCH", + Self::Jnlohppfjdp => "JLLFEBCAADF_JNLOHPPFJDP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JLLFEBCAADF_LMBHPMELJJH" => Some(Self::Lmbhpmeljjh), + "JLLFEBCAADF_GANONJFJLAF" => Some(Self::Ganonjfjlaf), + "JLLFEBCAADF_DPAAMCLBNEI" => Some(Self::Dpaamclbnei), + "JLLFEBCAADF_MDKNOCECBPC" => Some(Self::Mdknocecbpc), + "JLLFEBCAADF_GAGFEJJHPIF" => Some(Self::Gagfejjhpif), + "JLLFEBCAADF_FKHKKBOCNAN" => Some(Self::Fkhkkbocnan), + "JLLFEBCAADF_ICKFICENCEF" => Some(Self::Ickficencef), + "JLLFEBCAADF_MIFGIAGJNAA" => Some(Self::Mifgiagjnaa), + "JLLFEBCAADF_EPPNCOLHOBO" => Some(Self::Eppncolhobo), + "JLLFEBCAADF_DBHIGFHDHEE" => Some(Self::Dbhigfhdhee), + "JLLFEBCAADF_GDNFPPJEMOO" => Some(Self::Gdnfppjemoo), + "JLLFEBCAADF_KEIDILJDLCH" => Some(Self::Keidiljdlch), + "JLLFEBCAADF_JNLOHPPFJDP" => Some(Self::Jnlohppfjdp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum HollowGridLink { + HollowGridLinkNone = 0, + Up = 1, + Down = 2, + Right = 4, + Left = 8, + HollowGridLinkAll = 15, +} +impl HollowGridLink { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowGridLinkNone => "HollowGridLink_HOLLOW_GRID_LINK_NONE", + Self::Up => "HollowGridLink_UP", + Self::Down => "HollowGridLink_DOWN", + Self::Right => "HollowGridLink_RIGHT", + Self::Left => "HollowGridLink_LEFT", + Self::HollowGridLinkAll => "HollowGridLink_HOLLOW_GRID_LINK_ALL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HollowGridLink_HOLLOW_GRID_LINK_NONE" => Some(Self::HollowGridLinkNone), + "HollowGridLink_UP" => Some(Self::Up), + "HollowGridLink_DOWN" => Some(Self::Down), + "HollowGridLink_RIGHT" => Some(Self::Right), + "HollowGridLink_LEFT" => Some(Self::Left), + "HollowGridLink_HOLLOW_GRID_LINK_ALL" => Some(Self::HollowGridLinkAll), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mfbdhgedfkg { + ScenePropertyTypeNone = 0, + Stamina = 1001, + StaminaMax = 1002, + StaminaRatio = 1003, + StaminaDelta = 1004, + GoldRatio = 1005, + GoldDelta = 1006, + ShopPrice = 1018, + StaminaIncrease = 1019, + PlayerView = 1025, + ActorMaxCurHp = 1035, + ShopPriceDelta = 1036, + Weather = 1043, + TimePeriod = 1044, + AbyssPointRatio = 1045, + AbyssPointDelta = 1046, + HollowHpRecoverRatio = 1047, + HollowHpDecreaseRatio = 1048, + CardBProbabilityDelta = 1049, + CardAProbabilityDelta = 1050, + CardSProbabilityDelta = 1051, + CurseBProbabilityDelta = 1052, + CurseAProbabilityDelta = 1053, + CurseSProbabilityDelta = 1054, + HollowItemBProbabilityDelta = 1055, + HollowItemAProbabilityDelta = 1056, + HollowItemSProbabilityDelta = 1057, + EnableCardFusion = 1058, + EnableCardUpgrade = 1059, + EnableCardRefresh = 1060, + RecoverableTipId = 1063, + RecoverableBottomTipId = 1064, + HollowDrillEnergy = 1065, + HollowDrillLevel = 1066, + ForbidVoice = 1081, + HollowDrillSpeedLevel = 1082, + Exp = 1083, + ExpMax = 1084, + ExpRatio = 1085, + ExpDelta = 1086, + Power = 1087, + PowerLevelUp = 1088, + ArpeggioLayer = 1089, +} +impl Mfbdhgedfkg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ScenePropertyTypeNone => "MFBDHGEDFKG_SCENE_PROPERTY_TYPE_NONE", + Self::Stamina => "MFBDHGEDFKG_STAMINA", + Self::StaminaMax => "MFBDHGEDFKG_STAMINA_MAX", + Self::StaminaRatio => "MFBDHGEDFKG_STAMINA_RATIO", + Self::StaminaDelta => "MFBDHGEDFKG_STAMINA_DELTA", + Self::GoldRatio => "MFBDHGEDFKG_GOLD_RATIO", + Self::GoldDelta => "MFBDHGEDFKG_GOLD_DELTA", + Self::ShopPrice => "MFBDHGEDFKG_SHOP_PRICE", + Self::StaminaIncrease => "MFBDHGEDFKG_STAMINA_INCREASE", + Self::PlayerView => "MFBDHGEDFKG_PLAYER_VIEW", + Self::ActorMaxCurHp => "MFBDHGEDFKG_ACTOR_MAX_CUR_HP", + Self::ShopPriceDelta => "MFBDHGEDFKG_SHOP_PRICE_DELTA", + Self::Weather => "MFBDHGEDFKG_WEATHER", + Self::TimePeriod => "MFBDHGEDFKG_TIME_PERIOD", + Self::AbyssPointRatio => "MFBDHGEDFKG_ABYSS_POINT_RATIO", + Self::AbyssPointDelta => "MFBDHGEDFKG_ABYSS_POINT_DELTA", + Self::HollowHpRecoverRatio => "MFBDHGEDFKG_HOLLOW_HP_RECOVER_RATIO", + Self::HollowHpDecreaseRatio => "MFBDHGEDFKG_HOLLOW_HP_DECREASE_RATIO", + Self::CardBProbabilityDelta => "MFBDHGEDFKG_CARD_B_PROBABILITY_DELTA", + Self::CardAProbabilityDelta => "MFBDHGEDFKG_CARD_A_PROBABILITY_DELTA", + Self::CardSProbabilityDelta => "MFBDHGEDFKG_CARD_S_PROBABILITY_DELTA", + Self::CurseBProbabilityDelta => "MFBDHGEDFKG_CURSE_B_PROBABILITY_DELTA", + Self::CurseAProbabilityDelta => "MFBDHGEDFKG_CURSE_A_PROBABILITY_DELTA", + Self::CurseSProbabilityDelta => "MFBDHGEDFKG_CURSE_S_PROBABILITY_DELTA", + Self::HollowItemBProbabilityDelta => { + "MFBDHGEDFKG_HOLLOW_ITEM_B_PROBABILITY_DELTA" + } + Self::HollowItemAProbabilityDelta => { + "MFBDHGEDFKG_HOLLOW_ITEM_A_PROBABILITY_DELTA" + } + Self::HollowItemSProbabilityDelta => { + "MFBDHGEDFKG_HOLLOW_ITEM_S_PROBABILITY_DELTA" + } + Self::EnableCardFusion => "MFBDHGEDFKG_ENABLE_CARD_FUSION", + Self::EnableCardUpgrade => "MFBDHGEDFKG_ENABLE_CARD_UPGRADE", + Self::EnableCardRefresh => "MFBDHGEDFKG_ENABLE_CARD_REFRESH", + Self::RecoverableTipId => "MFBDHGEDFKG_RECOVERABLE_TIP_ID", + Self::RecoverableBottomTipId => "MFBDHGEDFKG_RECOVERABLE_BOTTOM_TIP_ID", + Self::HollowDrillEnergy => "MFBDHGEDFKG_HOLLOW_DRILL_ENERGY", + Self::HollowDrillLevel => "MFBDHGEDFKG_HOLLOW_DRILL_LEVEL", + Self::ForbidVoice => "MFBDHGEDFKG_FORBID_VOICE", + Self::HollowDrillSpeedLevel => "MFBDHGEDFKG_HOLLOW_DRILL_SPEED_LEVEL", + Self::Exp => "MFBDHGEDFKG_EXP", + Self::ExpMax => "MFBDHGEDFKG_EXP_MAX", + Self::ExpRatio => "MFBDHGEDFKG_EXP_RATIO", + Self::ExpDelta => "MFBDHGEDFKG_EXP_DELTA", + Self::Power => "MFBDHGEDFKG_POWER", + Self::PowerLevelUp => "MFBDHGEDFKG_POWER_LEVEL_UP", + Self::ArpeggioLayer => "MFBDHGEDFKG_ARPEGGIO_LAYER", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MFBDHGEDFKG_SCENE_PROPERTY_TYPE_NONE" => Some(Self::ScenePropertyTypeNone), + "MFBDHGEDFKG_STAMINA" => Some(Self::Stamina), + "MFBDHGEDFKG_STAMINA_MAX" => Some(Self::StaminaMax), + "MFBDHGEDFKG_STAMINA_RATIO" => Some(Self::StaminaRatio), + "MFBDHGEDFKG_STAMINA_DELTA" => Some(Self::StaminaDelta), + "MFBDHGEDFKG_GOLD_RATIO" => Some(Self::GoldRatio), + "MFBDHGEDFKG_GOLD_DELTA" => Some(Self::GoldDelta), + "MFBDHGEDFKG_SHOP_PRICE" => Some(Self::ShopPrice), + "MFBDHGEDFKG_STAMINA_INCREASE" => Some(Self::StaminaIncrease), + "MFBDHGEDFKG_PLAYER_VIEW" => Some(Self::PlayerView), + "MFBDHGEDFKG_ACTOR_MAX_CUR_HP" => Some(Self::ActorMaxCurHp), + "MFBDHGEDFKG_SHOP_PRICE_DELTA" => Some(Self::ShopPriceDelta), + "MFBDHGEDFKG_WEATHER" => Some(Self::Weather), + "MFBDHGEDFKG_TIME_PERIOD" => Some(Self::TimePeriod), + "MFBDHGEDFKG_ABYSS_POINT_RATIO" => Some(Self::AbyssPointRatio), + "MFBDHGEDFKG_ABYSS_POINT_DELTA" => Some(Self::AbyssPointDelta), + "MFBDHGEDFKG_HOLLOW_HP_RECOVER_RATIO" => Some(Self::HollowHpRecoverRatio), + "MFBDHGEDFKG_HOLLOW_HP_DECREASE_RATIO" => Some(Self::HollowHpDecreaseRatio), + "MFBDHGEDFKG_CARD_B_PROBABILITY_DELTA" => Some(Self::CardBProbabilityDelta), + "MFBDHGEDFKG_CARD_A_PROBABILITY_DELTA" => Some(Self::CardAProbabilityDelta), + "MFBDHGEDFKG_CARD_S_PROBABILITY_DELTA" => Some(Self::CardSProbabilityDelta), + "MFBDHGEDFKG_CURSE_B_PROBABILITY_DELTA" => Some(Self::CurseBProbabilityDelta), + "MFBDHGEDFKG_CURSE_A_PROBABILITY_DELTA" => Some(Self::CurseAProbabilityDelta), + "MFBDHGEDFKG_CURSE_S_PROBABILITY_DELTA" => Some(Self::CurseSProbabilityDelta), + "MFBDHGEDFKG_HOLLOW_ITEM_B_PROBABILITY_DELTA" => { + Some(Self::HollowItemBProbabilityDelta) + } + "MFBDHGEDFKG_HOLLOW_ITEM_A_PROBABILITY_DELTA" => { + Some(Self::HollowItemAProbabilityDelta) + } + "MFBDHGEDFKG_HOLLOW_ITEM_S_PROBABILITY_DELTA" => { + Some(Self::HollowItemSProbabilityDelta) + } + "MFBDHGEDFKG_ENABLE_CARD_FUSION" => Some(Self::EnableCardFusion), + "MFBDHGEDFKG_ENABLE_CARD_UPGRADE" => Some(Self::EnableCardUpgrade), + "MFBDHGEDFKG_ENABLE_CARD_REFRESH" => Some(Self::EnableCardRefresh), + "MFBDHGEDFKG_RECOVERABLE_TIP_ID" => Some(Self::RecoverableTipId), + "MFBDHGEDFKG_RECOVERABLE_BOTTOM_TIP_ID" => Some(Self::RecoverableBottomTipId), + "MFBDHGEDFKG_HOLLOW_DRILL_ENERGY" => Some(Self::HollowDrillEnergy), + "MFBDHGEDFKG_HOLLOW_DRILL_LEVEL" => Some(Self::HollowDrillLevel), + "MFBDHGEDFKG_FORBID_VOICE" => Some(Self::ForbidVoice), + "MFBDHGEDFKG_HOLLOW_DRILL_SPEED_LEVEL" => Some(Self::HollowDrillSpeedLevel), + "MFBDHGEDFKG_EXP" => Some(Self::Exp), + "MFBDHGEDFKG_EXP_MAX" => Some(Self::ExpMax), + "MFBDHGEDFKG_EXP_RATIO" => Some(Self::ExpRatio), + "MFBDHGEDFKG_EXP_DELTA" => Some(Self::ExpDelta), + "MFBDHGEDFKG_POWER" => Some(Self::Power), + "MFBDHGEDFKG_POWER_LEVEL_UP" => Some(Self::PowerLevelUp), + "MFBDHGEDFKG_ARPEGGIO_LAYER" => Some(Self::ArpeggioLayer), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum EventGraphOwnerType { + KleooieiphhBejmfijlbhc = 0, + KleooieiphhAodlekejako = 1, + KleooieiphhCpipmhbnobg = 2, + KleooieiphhBnoljacpkop = 3, + KleooieiphhLohjnnhicfo = 4, + KleooieiphhGgnbjnfcieo = 5, + KleooieiphhPhomagheena = 6, + KleooieiphhGnmepngibdh = 7, +} +impl EventGraphOwnerType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::KleooieiphhBejmfijlbhc => "KLEOOIEIPHH_BEJMFIJLBHC", + Self::KleooieiphhAodlekejako => "KLEOOIEIPHH_AODLEKEJAKO", + Self::KleooieiphhCpipmhbnobg => "KLEOOIEIPHH_CPIPMHBNOBG", + Self::KleooieiphhBnoljacpkop => "KLEOOIEIPHH_BNOLJACPKOP", + Self::KleooieiphhLohjnnhicfo => "KLEOOIEIPHH_LOHJNNHICFO", + Self::KleooieiphhGgnbjnfcieo => "KLEOOIEIPHH_GGNBJNFCIEO", + Self::KleooieiphhPhomagheena => "KLEOOIEIPHH_PHOMAGHEENA", + Self::KleooieiphhGnmepngibdh => "KLEOOIEIPHH_GNMEPNGIBDH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KLEOOIEIPHH_BEJMFIJLBHC" => Some(Self::KleooieiphhBejmfijlbhc), + "KLEOOIEIPHH_AODLEKEJAKO" => Some(Self::KleooieiphhAodlekejako), + "KLEOOIEIPHH_CPIPMHBNOBG" => Some(Self::KleooieiphhCpipmhbnobg), + "KLEOOIEIPHH_BNOLJACPKOP" => Some(Self::KleooieiphhBnoljacpkop), + "KLEOOIEIPHH_LOHJNNHICFO" => Some(Self::KleooieiphhLohjnnhicfo), + "KLEOOIEIPHH_GGNBJNFCIEO" => Some(Self::KleooieiphhGgnbjnfcieo), + "KLEOOIEIPHH_PHOMAGHEENA" => Some(Self::KleooieiphhPhomagheena), + "KLEOOIEIPHH_GNMEPNGIBDH" => Some(Self::KleooieiphhGnmepngibdh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dgjplhjbpde { + FocusCameraTypeNone = 0, + FocusCameraTypeInit = 1, + FocusCameraTypeMofifyWeight = 2, + FocusCameraTypeDeletePoint = 3, + FocusCameraTypeAddPoint = 4, + FocusCameraTypeCancelFocus = 5, + FocusCameraTypeModifyKey = 6, + FocusCameraTypeCancelAfterFocus = 7, + FocusCameraTypeSoftFocus = 8, +} +impl Dgjplhjbpde { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::FocusCameraTypeNone => "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_NONE", + Self::FocusCameraTypeInit => "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_INIT", + Self::FocusCameraTypeMofifyWeight => { + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_MOFIFY_WEIGHT" + } + Self::FocusCameraTypeDeletePoint => { + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_DELETE_POINT" + } + Self::FocusCameraTypeAddPoint => "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_ADD_POINT", + Self::FocusCameraTypeCancelFocus => { + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_CANCEL_FOCUS" + } + Self::FocusCameraTypeModifyKey => "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_MODIFY_KEY", + Self::FocusCameraTypeCancelAfterFocus => { + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_CANCEL_AFTER_FOCUS" + } + Self::FocusCameraTypeSoftFocus => "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_SOFT_FOCUS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_NONE" => Some(Self::FocusCameraTypeNone), + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_INIT" => Some(Self::FocusCameraTypeInit), + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_MOFIFY_WEIGHT" => { + Some(Self::FocusCameraTypeMofifyWeight) + } + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_DELETE_POINT" => { + Some(Self::FocusCameraTypeDeletePoint) + } + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_ADD_POINT" => { + Some(Self::FocusCameraTypeAddPoint) + } + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_CANCEL_FOCUS" => { + Some(Self::FocusCameraTypeCancelFocus) + } + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_MODIFY_KEY" => { + Some(Self::FocusCameraTypeModifyKey) + } + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_CANCEL_AFTER_FOCUS" => { + Some(Self::FocusCameraTypeCancelAfterFocus) + } + "DGJPLHJBPDE_FOCUS_CAMERA_TYPE_SOFT_FOCUS" => { + Some(Self::FocusCameraTypeSoftFocus) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mjmmhljkapd { + Abkmpopoefa = 0, +} +impl Mjmmhljkapd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Abkmpopoefa => "MJMMHLJKAPD_ABKMPOPOEFA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MJMMHLJKAPD_ABKMPOPOEFA" => Some(Self::Abkmpopoefa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bmiiaonjpek { + Ndpjjimfehc = 0, +} +impl Bmiiaonjpek { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ndpjjimfehc => "BMIIAONJPEK_NDPJJIMFEHC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BMIIAONJPEK_NDPJJIMFEHC" => Some(Self::Ndpjjimfehc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Giblcoobgkn { + Mohgknchkjj = 0, + Nkkkhjfhfcb = 1, + Pkhncknkmjj = 2, + Lpciejbnbhm = 3, + Mdopfkpleod = 4, + Ihhlcgdobgk = 5, + Ginnocekfdd = 6, + Iicmkeimecc = 7, + Gnglicpljdk = 8, + Donhagjbimj = 9, + Pnlnfaempep = 10, + Lmpebhclfkn = 11, + Mheicjdldld = 12, + Jdpjopjifmd = 13, + Kbpegmbplpb = 14, + Gmlhefeenoe = 15, + Agmjfcaofhh = 16, + Gigkljbikfk = 17, + Mkbhbcpolpa = 18, + Klfaffbogkb = 19, + Ajhaamcpmak = 20, + Lafhlehifjb = 21, + Nieanikcoih = 22, + Ggmgmhjiakm = 23, + Mbaeegpcnfj = 24, + Jljphofehlk = 25, + Fhimigognnh = 100, +} +impl Giblcoobgkn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mohgknchkjj => "GIBLCOOBGKN_MOHGKNCHKJJ", + Self::Nkkkhjfhfcb => "GIBLCOOBGKN_NKKKHJFHFCB", + Self::Pkhncknkmjj => "GIBLCOOBGKN_PKHNCKNKMJJ", + Self::Lpciejbnbhm => "GIBLCOOBGKN_LPCIEJBNBHM", + Self::Mdopfkpleod => "GIBLCOOBGKN_MDOPFKPLEOD", + Self::Ihhlcgdobgk => "GIBLCOOBGKN_IHHLCGDOBGK", + Self::Ginnocekfdd => "GIBLCOOBGKN_GINNOCEKFDD", + Self::Iicmkeimecc => "GIBLCOOBGKN_IICMKEIMECC", + Self::Gnglicpljdk => "GIBLCOOBGKN_GNGLICPLJDK", + Self::Donhagjbimj => "GIBLCOOBGKN_DONHAGJBIMJ", + Self::Pnlnfaempep => "GIBLCOOBGKN_PNLNFAEMPEP", + Self::Lmpebhclfkn => "GIBLCOOBGKN_LMPEBHCLFKN", + Self::Mheicjdldld => "GIBLCOOBGKN_MHEICJDLDLD", + Self::Jdpjopjifmd => "GIBLCOOBGKN_JDPJOPJIFMD", + Self::Kbpegmbplpb => "GIBLCOOBGKN_KBPEGMBPLPB", + Self::Gmlhefeenoe => "GIBLCOOBGKN_GMLHEFEENOE", + Self::Agmjfcaofhh => "GIBLCOOBGKN_AGMJFCAOFHH", + Self::Gigkljbikfk => "GIBLCOOBGKN_GIGKLJBIKFK", + Self::Mkbhbcpolpa => "GIBLCOOBGKN_MKBHBCPOLPA", + Self::Klfaffbogkb => "GIBLCOOBGKN_KLFAFFBOGKB", + Self::Ajhaamcpmak => "GIBLCOOBGKN_AJHAAMCPMAK", + Self::Lafhlehifjb => "GIBLCOOBGKN_LAFHLEHIFJB", + Self::Nieanikcoih => "GIBLCOOBGKN_NIEANIKCOIH", + Self::Ggmgmhjiakm => "GIBLCOOBGKN_GGMGMHJIAKM", + Self::Mbaeegpcnfj => "GIBLCOOBGKN_MBAEEGPCNFJ", + Self::Jljphofehlk => "GIBLCOOBGKN_JLJPHOFEHLK", + Self::Fhimigognnh => "GIBLCOOBGKN_FHIMIGOGNNH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GIBLCOOBGKN_MOHGKNCHKJJ" => Some(Self::Mohgknchkjj), + "GIBLCOOBGKN_NKKKHJFHFCB" => Some(Self::Nkkkhjfhfcb), + "GIBLCOOBGKN_PKHNCKNKMJJ" => Some(Self::Pkhncknkmjj), + "GIBLCOOBGKN_LPCIEJBNBHM" => Some(Self::Lpciejbnbhm), + "GIBLCOOBGKN_MDOPFKPLEOD" => Some(Self::Mdopfkpleod), + "GIBLCOOBGKN_IHHLCGDOBGK" => Some(Self::Ihhlcgdobgk), + "GIBLCOOBGKN_GINNOCEKFDD" => Some(Self::Ginnocekfdd), + "GIBLCOOBGKN_IICMKEIMECC" => Some(Self::Iicmkeimecc), + "GIBLCOOBGKN_GNGLICPLJDK" => Some(Self::Gnglicpljdk), + "GIBLCOOBGKN_DONHAGJBIMJ" => Some(Self::Donhagjbimj), + "GIBLCOOBGKN_PNLNFAEMPEP" => Some(Self::Pnlnfaempep), + "GIBLCOOBGKN_LMPEBHCLFKN" => Some(Self::Lmpebhclfkn), + "GIBLCOOBGKN_MHEICJDLDLD" => Some(Self::Mheicjdldld), + "GIBLCOOBGKN_JDPJOPJIFMD" => Some(Self::Jdpjopjifmd), + "GIBLCOOBGKN_KBPEGMBPLPB" => Some(Self::Kbpegmbplpb), + "GIBLCOOBGKN_GMLHEFEENOE" => Some(Self::Gmlhefeenoe), + "GIBLCOOBGKN_AGMJFCAOFHH" => Some(Self::Agmjfcaofhh), + "GIBLCOOBGKN_GIGKLJBIKFK" => Some(Self::Gigkljbikfk), + "GIBLCOOBGKN_MKBHBCPOLPA" => Some(Self::Mkbhbcpolpa), + "GIBLCOOBGKN_KLFAFFBOGKB" => Some(Self::Klfaffbogkb), + "GIBLCOOBGKN_AJHAAMCPMAK" => Some(Self::Ajhaamcpmak), + "GIBLCOOBGKN_LAFHLEHIFJB" => Some(Self::Lafhlehifjb), + "GIBLCOOBGKN_NIEANIKCOIH" => Some(Self::Nieanikcoih), + "GIBLCOOBGKN_GGMGMHJIAKM" => Some(Self::Ggmgmhjiakm), + "GIBLCOOBGKN_MBAEEGPCNFJ" => Some(Self::Mbaeegpcnfj), + "GIBLCOOBGKN_JLJPHOFEHLK" => Some(Self::Jljphofehlk), + "GIBLCOOBGKN_FHIMIGOGNNH" => Some(Self::Fhimigognnh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fdembkkdkkd { + Hojlaejhpao = 0, + Dmkafaecknj = 1, + Ohpblnbecji = 2, + Mclabgilgaf = 3, + Mbidhaefiae = 4, +} +impl Fdembkkdkkd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hojlaejhpao => "FDEMBKKDKKD_HOJLAEJHPAO", + Self::Dmkafaecknj => "FDEMBKKDKKD_DMKAFAECKNJ", + Self::Ohpblnbecji => "FDEMBKKDKKD_OHPBLNBECJI", + Self::Mclabgilgaf => "FDEMBKKDKKD_MCLABGILGAF", + Self::Mbidhaefiae => "FDEMBKKDKKD_MBIDHAEFIAE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FDEMBKKDKKD_HOJLAEJHPAO" => Some(Self::Hojlaejhpao), + "FDEMBKKDKKD_DMKAFAECKNJ" => Some(Self::Dmkafaecknj), + "FDEMBKKDKKD_OHPBLNBECJI" => Some(Self::Ohpblnbecji), + "FDEMBKKDKKD_MCLABGILGAF" => Some(Self::Mclabgilgaf), + "FDEMBKKDKKD_MBIDHAEFIAE" => Some(Self::Mbidhaefiae), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Agbbfnndika { + Hkbockfcjma = 0, +} +impl Agbbfnndika { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hkbockfcjma => "AGBBFNNDIKA_HKBOCKFCJMA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AGBBFNNDIKA_HKBOCKFCJMA" => Some(Self::Hkbockfcjma), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nmhibdfflfp { + Efinklnejmc = 0, + Dinajnghabh = -1, + Dhgboclplok = 1, + Annfopdmaab = 2, + Poelmlienla = 9, + Imhbflpcekn = 10, + Bojgabajeil = 20, + Cophcfdnkdm = 21, + Ecilecnmgim = 22, + Gfcpjgbhhfo = 23, + Dflfagjflcd = 25, + Dmojlepimhe = 29, + Flpfmookoob = 30, + Ofkogchodih = 31, + Ajeppaocadb = 32, + Bbinckaonna = 33, + Fadhofmfdjk = 34, + Ommgkdeacgc = 70, + Ocehbecjagd = 71, + Jiaidhdofjc = 72, + Laaheacildl = 73, + Cpcnnnbffdk = 74, + Pbchpnjligk = 75, + Bfdcedkenml = 76, + Paoggfilmdi = 100, + Ponajeiinie = 101, + Cmcanmojnlg = 102, + Bbckfjijkdl = 200, + Fdjolaimmdd = 201, + Epplkhmiohg = 202, + Bdacchgejng = 203, + Fkekgdmjjgf = 204, + Jacchdbmkoi = 205, + Cdcagjcgihe = 206, + Gneikgfeonk = 207, + Bepbkaogalp = 208, + Dhmkkbbbkjj = 209, + Dblnmlejdld = 210, + Mpmpiickpna = 211, + Hjlkkcfflon = 1000, + Haikohhgbep = 1001, + Ongddojhech = 1002, + Ebfaabmdlel = 1003, + Nflklpdjhpe = 1004, + Liimdgminjb = 1005, + Ickafiiknkh = 1006, + Pgodflgnlln = 1007, + Pjdcjkdgccp = 1008, + Conlmggmgja = 1009, + Olmhlmpbmme = 1010, + Acklebfmbih = 1011, + Jebmemfookg = 1012, + Ndpjdckdlbo = 1100, + Ejkoohpfhfo = 1101, + Dcdcnomboln = 1102, + Dchgpaiffig = 1103, + Fibcopcjmcc = 1104, + Glccpeeglei = 1105, + Lokpnannldf = 1106, + Nijleddmbhm = 1107, + Leckbikgeia = 1108, + Aohhbmpmpgl = 1109, + Jhhciilifgl = 1200, + Lipdlehemkc = 1201, + Lkalhohbjcf = 1202, + Djkekbglnfd = 1203, + Nddlkbmhkgi = 1204, + Bbojhmidbcj = 1205, + Jgdddfgcgio = 1206, + Fnogiahnlbd = 1207, + Jdknfmknedh = 1208, + Ndojompgmke = 1209, + Hlppmpmnbgb = 1210, + Lihcamlpdhl = 1211, + Annldefokap = 1212, + Iohnpibfmcp = 1213, + Chmldkhhgmc = 1214, + Bbnmibpohdb = 1215, + Hglfgoilldb = 1216, + Dakbfamickb = 1217, + Ijdoeohjdom = 1218, + Bfidolopnbi = 1219, + Boccbmmbefg = 1220, + Likegkmdoon = 1221, + Clgbmngdgbe = 1222, + Gfgphgbbmmh = 1223, + Edcaolpbemf = 1224, + Acbicdjhghk = 1225, + Omaebkaomom = 1226, + Dohhbhbdnlh = 1227, + Iepleillpap = 1228, + Faoodidgmgp = 1229, + Nfeneminjcc = 1230, + Handpnoicfm = 1231, + Chodlbapnfm = 1232, + Lkkklnmadkm = 1233, + Oaakahbhclm = 1234, + Ppelcemmaen = 1235, + Jcbbhpbfeff = 1236, + Kdgaglkapnk = 1237, + Amkpcjkhnif = 1238, + Ieknjbdkodo = 1239, + Lffjnlffbia = 1300, + Lmbnifklkep = 1301, + Oienkacgmfb = 1302, + Bjlcpblnkfc = 1303, + Kmdnebnhpii = 1304, + Kkmckdefihi = 1305, + Fiiaaipknni = 1306, + Iijjgpomamm = 1400, + Cpknaeogpep = 1401, + Kiiakflbdia = 1402, + Ljjjmoghiif = 1404, + Hcbhmnebgja = 1405, + Hekmggcbfdi = 1406, + Njjnepihhcm = 1407, + Holnggonlgp = 1408, + Lpdkmgmbbbn = 1409, + Admjgjkmdom = 1410, + Pejogibogka = 1411, + Pdkgkfjhefb = 1412, + Jjpeieglnaa = 1413, + Pkcejchhfda = 1414, + Eghoghchakk = 1415, + Mfdjpkmbgmd = 1416, + Pjdbbkcocok = 1417, + Iboafjcinfj = 1418, + Oladepfgfdg = 1419, + Ddeoiifeojg = 1420, + Gbbhcmeabbl = 1421, + Pnhdnnamdeb = 1422, + Kgbcoghkmje = 1423, + Ppeogfpmldm = 1424, + Bjmioijfjid = 1425, + Bhkbicfbjmf = 1426, + Ddopfknmjei = 1427, + Ialdhkaibpf = 1428, + Iokclbpafko = 1429, + Fnacenmmebc = 1430, + Ajfanglnbhg = 1431, + Flhimbbpcfb = 1432, + Oceodeomnil = 1433, + Likihbcgmhb = 1434, + Moelbanlice = 1435, + Djbblhpfppn = 1450, + Lghjhpkafjg = 1451, + Kmmcihjccop = 1452, + Jdbmhelolbd = 1453, + Npiehdfhceo = 1454, + Fejcihhfjhb = 1456, + Koikeghfaod = 1457, + Lkjchjodfdg = 1459, + Cfbpmigdkih = 1460, + Fbieaipfope = 1461, + Mbpfhcgmpng = 1462, + Kkfnlhocjjf = 1463, + Gamcbegepjo = 1464, + Oofnahjocfd = 1500, + Oaldoeojhjh = 1501, + Nicdlonflhb = 1502, + Odndpaolaad = 1503, + Hfeenhmjial = 1504, + Ghhloinhpel = 1505, + Kbaipalpmef = 1506, + Ilkljpkbkik = 1507, + Ioinekjfnck = 1508, + Nbcdpkkfjka = 1509, + Gfjcabgipoa = 1510, + Bdecgoogbjk = 1511, + Jpladpccdpk = 1512, + Cmipjpilgok = 1513, + Bpadeemkaoh = 1514, + Bbkhdhkamdn = 1515, + Mcgalebakop = 1516, + Cfiacmgjbde = 1517, + Ifjkhmpiccb = 1518, + Oogdhifddem = 1600, + Cncncdpclmf = 1601, + Kblggaonhep = 1602, + Lokdknhbijb = 1603, + Ejlahlmdakl = 1604, + Gegenapijfk = 1605, + Icljfafigkg = 1606, + Linegjdllkd = 1650, + Pepakobpnpm = 1651, + Gipeognihml = 1652, + Kbagjgkmipk = 1653, + Adaaleommjb = 1654, + Cehajdbjmil = 1655, + Ajjolmhhomo = 1656, + Plonaoljbda = 1657, + Ddfjodjbbch = 1658, + Dffhmhaniak = 1700, + Eaagcmakpnm = 1701, + Lpceockncnp = 1702, + Bhdandgeigp = 1703, + Iekhlfhgddf = 1704, + Elnhejnebkd = 1705, + Laciofpppdl = 1706, + Mdbbdeeoojm = 1707, + Pcmgcgcijmc = 1708, + Ecjiehcigil = 1709, + Ackpjfpejom = 1710, + Gnmbndmfnab = 1711, + Domcjjhedon = 1712, + Dmacdeecfde = 1713, + Mfdmnchlfgm = 1714, + Dgegnfdjpek = 1751, + Lkgnejpcedm = 1752, + Nhohmipelgk = 1753, + Jnholaemegn = 1754, + Kjokdebdhma = 1755, + Hgbfdjnihol = 1756, + Pjnaoigobnc = 1757, + Empfbcgegjn = 1758, + Eadgnccehep = 1759, + Efdmokofadf = 1760, + Kjkbnidhaem = 1761, + Djambkneakf = 1762, + Cnidggohnij = 1763, + Hkmfjbdfjff = 1764, + Ljpffebooef = 1765, + Bmjphkogaam = 1766, + Ebilkmffbla = 1767, + Mibhndeemkf = 1768, + Fanaljljiop = 1769, + Genldhdljfi = 1770, + Bbffbndddei = 1771, + Dmgpjjgiibo = 1772, + Nlfhaejjgjb = 1773, + Ihaihcmaodc = 1774, + Noemkiogmkn = 1800, + Efbnbgbfgid = 1801, + Hhhejneggig = 1802, + Cokfjpelbck = 1803, + Hpfadpafooe = 1804, + Kmegmhjgbla = 1805, + Eeohblcjkge = 1806, + Fchdhamodah = 1807, + Mfcogbajmjp = 1808, + Hclpfjneang = 1809, + Dhbbmkllcod = 1810, + Elflkgmdlbe = 1811, + Giakikbhlpl = 1812, + Pfheodegjdh = 1813, + Diagbjpelce = 1814, + Jdkhedlalda = 1815, + Ihkegcnepie = 1900, + Eopimhoigkl = 1901, + Kkolifkadjk = 1902, + Oikmaclnbej = 1903, + Caicodkgjbh = 1950, + Cjdkgnmejgh = 2050, + Emdiflpkakm = 2051, + Jknpmpeenhl = 2052, + Elaghmljeai = 2053, + Igccfcakcnp = 2054, + Eecdnbephmd = 2055, + Linniehmifk = 2056, + Hmebeabpkaf = 2057, + Mogppiajmnf = 2058, + Jjbofknmklb = 2059, + Hibbgnnbdcb = 2060, + Affoollpifj = 2061, + Ckjlajhmnhm = 2062, + Lllogopmmmm = 2063, + Kmmenhibmgj = 2064, + Lmecchbpkog = 2065, + Ogihalpclno = 2066, + Ocaelfmpfgf = 2067, + Jibajlbokjh = 2070, + Addliokeegl = 2100, + Oakcgedibao = 2150, + Ikjmggmbnph = 2151, + Opcknjfknef = 2152, + Cmlmgagjahg = 2153, + Mcgoekjaede = 2154, + Ppmihhholkd = 2155, + Hfhnjgikndh = 2156, + Cebnkobkalb = 2157, + Onodbpnjcbp = 2158, + Ggjnigppaen = 2159, + Anbkbjlcpgf = 2160, + Ghaamdchibf = 2201, + Aingbbdaflm = 2202, + Mhpoiiinala = 2203, + Jheljjgcjhc = 2204, + Omjmcbjhlhc = 2205, + Fnpmmhnonpn = 2206, + Cjaobaehppa = 2250, + Kipjjkfihnb = 2251, + Aanlhchphdl = 2252, + Lcljibikpbl = 2253, + Elpponccokl = 2300, + Melkpbehmdl = 2301, + Oliabillomm = 2302, + Mgonfcfhmfb = 2303, + Jmjbbfnlpgj = 2304, + Dgjeglimlgl = 2305, + Bhahmefimlc = 2306, + Ldkodlbmnpd = 2307, + Bnfhoendhac = 2308, + Fimildamcap = 2309, + Hplkccpdjjj = 2400, + Kdlnomhnkgf = 2401, + Ehlpgolhnlo = 2402, + Japebeelgkl = 2403, + Bmcgnhinnok = 2404, + Kpfcafimpea = 2450, + Mfojekccgah = 2500, + Najnlimcpog = 2501, + Llfinemncif = 2502, + Pmeiaendglf = 2503, + Obcopcfejgh = 2504, + Ibcmcmfgngb = 2505, + Pcamdbhcemn = 2506, + Hofebcgmmhm = 2507, + Ficlglnmikj = 2508, + Cpfjefbiili = 2509, + Mbelgoifinc = 2510, + Hiddgbipfbi = 2511, + Cjdhdafhgoh = 2512, + Gpmadfdhgnj = 2513, + Kplgmdahdpl = 2514, + Iahdfikfbdb = 2515, + Jeomkdjooej = 2516, + Dgphkfjlbco = 2517, + Fiipffefble = 2518, + Khbdfjepkdn = 2519, + Lipfapecmgo = 2520, + Hjeceilnkjd = 2521, + Meoolngfeka = 2522, + Gfmemammcae = 2523, + Gogpgfbckcn = 2524, + Nkjfoaccaji = 2525, + Cfnfeafdaep = 2526, + Hbhjnalhiie = 2527, + Jnoghhogpni = 2528, + Fkgddeaiaed = 2529, + Ioaefidhnlk = 2530, + Hpngmmkeffd = 2531, + Ejpmpmjeljn = 2532, + Kbpodejegik = 2533, + Cfelgnldoho = 2534, + Blhkkmgapil = 2535, + Ngfgggkfnjc = 2536, + Lofcfcbfefj = 2537, + Ilicmkbiolm = 2538, + Ddlmahdcpco = 2550, + Gdjinmihpla = 2551, + Oekieflkici = 2552, + Difapionfpa = 2553, + Nkeemddjooi = 2554, + Kfeaccihcie = 2555, + Djgpmdggmfc = 2556, + Deohhbkpppd = 2600, + Jjnkgfplndp = 2601, + Pfndjjndmbf = 2602, + Cbplcgjfnek = 2603, + Fohdbaokilm = 2604, + Dplccibcoko = 2605, + Blljmkefebl = 2606, + Dbgggadhooc = 2620, + Cfgamgabkjn = 2621, + Ocnjjliomap = 2622, + Amakepigjde = 2623, + Fnoakcofhdo = 2624, + Opbgjndbioe = 2625, + Pblbcbdmiae = 2626, + Anlmfhilbdg = 2627, + Hdkapbkldec = 2628, + Clanplbmpip = 2629, + Callbmojgpl = 2630, + Mhoiaglldmi = 2631, + Omomhmgeghl = 2632, + Ldadbehiklj = 2633, + Lkhbimhnnco = 2634, + Jbhnlchbope = 2635, + Nfjmdcjakfc = 2636, + Jfdklmeengh = 2650, + Aabjmoopgcf = 2651, + Pfcggfimjgj = 2652, + Jghmoelmlim = 2653, + Memoklagaom = 2654, + Pnhnbfmjphj = 2655, + Beophokfhbc = 2656, + Lgjheelegfk = 2657, + Gdembgidhki = 2658, + Eehmkjdhfio = 2659, + Ckcbkcfafhp = 2660, + Mdoagncpejg = 2710, + Cbgcnilpmmf = 2711, + Nmbjpbdelng = 2712, + Ohllejnlkpi = 2713, + Kmdkbhmlebi = 2800, + Obkohjdbmoo = 2801, + Fbkhmijegpm = 2802, + Hocbnldllna = 2803, + Efaadjljbel = 2804, + Lipkelfngjf = 2805, + Oabnbifihja = 2830, + Gfianahoilc = 2831, + Fgoafhlghge = 2850, + Lofkdkkooon = 2851, + Kbocdbednag = 2852, + Olnfeneidpb = 2853, + Lchbdoeamlo = 2854, + Ghiappfapmp = 2870, + Jdfdebiolmn = 2871, + Jmpbannmjpl = 2872, + Aampcpbanmo = 2873, + Eaahmhbkeed = 2874, + Nbiidpnfpai = 2875, + Beimanjcokf = 2876, + Hdpacppgoec = 2877, + Hagkfefohaa = 2890, + Bbgjmniaije = 2891, + Jognnioadbb = 2892, + Hdnnbpgnbgn = 2893, + Dpoplhdnphj = 3000, + Djaoncbjpma = 3001, + Difkgbhdcha = 3002, + Gidlhfdniec = 3003, + Pojelophjkg = 3004, + Ainkkdkaeom = 3005, + Gclblmfnjlc = 3006, + Bdehokipfof = 3010, + Ahcfgogoajl = 3011, + Pdjldckcchc = 3100, + Aiflplmolea = 3101, + Obpfgcfmdbp = 3102, + Odcifmoodao = 3103, + Hglbmadogcj = 3104, + Ebhnifedhgd = 3105, + Bbbgjpfmfia = 3106, + Bjfnhnpkeld = 3107, + Jabedkoghho = 3108, + Ljhpngmppgh = 3109, + Beieckbmfmj = 3110, + Dklncehecmj = 3111, + Fihkgcbkmhg = 3112, + Nmhmknjcnig = 3151, + Ackokljekef = 3152, + Ncidfcpcdfi = 3153, + Gkafapnlfha = 3154, + Alkfellhmli = 3155, + Pompfknmjip = 3156, + Aomkppklldd = 3157, + Hkgmdgdhcdj = 3158, + Cockgfomkfe = 3159, +} +impl Nmhibdfflfp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Efinklnejmc => "NMHIBDFFLFP_EFINKLNEJMC", + Self::Dinajnghabh => "NMHIBDFFLFP_DINAJNGHABH", + Self::Dhgboclplok => "NMHIBDFFLFP_DHGBOCLPLOK", + Self::Annfopdmaab => "NMHIBDFFLFP_ANNFOPDMAAB", + Self::Poelmlienla => "NMHIBDFFLFP_POELMLIENLA", + Self::Imhbflpcekn => "NMHIBDFFLFP_IMHBFLPCEKN", + Self::Bojgabajeil => "NMHIBDFFLFP_BOJGABAJEIL", + Self::Cophcfdnkdm => "NMHIBDFFLFP_COPHCFDNKDM", + Self::Ecilecnmgim => "NMHIBDFFLFP_ECILECNMGIM", + Self::Gfcpjgbhhfo => "NMHIBDFFLFP_GFCPJGBHHFO", + Self::Dflfagjflcd => "NMHIBDFFLFP_DFLFAGJFLCD", + Self::Dmojlepimhe => "NMHIBDFFLFP_DMOJLEPIMHE", + Self::Flpfmookoob => "NMHIBDFFLFP_FLPFMOOKOOB", + Self::Ofkogchodih => "NMHIBDFFLFP_OFKOGCHODIH", + Self::Ajeppaocadb => "NMHIBDFFLFP_AJEPPAOCADB", + Self::Bbinckaonna => "NMHIBDFFLFP_BBINCKAONNA", + Self::Fadhofmfdjk => "NMHIBDFFLFP_FADHOFMFDJK", + Self::Ommgkdeacgc => "NMHIBDFFLFP_OMMGKDEACGC", + Self::Ocehbecjagd => "NMHIBDFFLFP_OCEHBECJAGD", + Self::Jiaidhdofjc => "NMHIBDFFLFP_JIAIDHDOFJC", + Self::Laaheacildl => "NMHIBDFFLFP_LAAHEACILDL", + Self::Cpcnnnbffdk => "NMHIBDFFLFP_CPCNNNBFFDK", + Self::Pbchpnjligk => "NMHIBDFFLFP_PBCHPNJLIGK", + Self::Bfdcedkenml => "NMHIBDFFLFP_BFDCEDKENML", + Self::Paoggfilmdi => "NMHIBDFFLFP_PAOGGFILMDI", + Self::Ponajeiinie => "NMHIBDFFLFP_PONAJEIINIE", + Self::Cmcanmojnlg => "NMHIBDFFLFP_CMCANMOJNLG", + Self::Bbckfjijkdl => "NMHIBDFFLFP_BBCKFJIJKDL", + Self::Fdjolaimmdd => "NMHIBDFFLFP_FDJOLAIMMDD", + Self::Epplkhmiohg => "NMHIBDFFLFP_EPPLKHMIOHG", + Self::Bdacchgejng => "NMHIBDFFLFP_BDACCHGEJNG", + Self::Fkekgdmjjgf => "NMHIBDFFLFP_FKEKGDMJJGF", + Self::Jacchdbmkoi => "NMHIBDFFLFP_JACCHDBMKOI", + Self::Cdcagjcgihe => "NMHIBDFFLFP_CDCAGJCGIHE", + Self::Gneikgfeonk => "NMHIBDFFLFP_GNEIKGFEONK", + Self::Bepbkaogalp => "NMHIBDFFLFP_BEPBKAOGALP", + Self::Dhmkkbbbkjj => "NMHIBDFFLFP_DHMKKBBBKJJ", + Self::Dblnmlejdld => "NMHIBDFFLFP_DBLNMLEJDLD", + Self::Mpmpiickpna => "NMHIBDFFLFP_MPMPIICKPNA", + Self::Hjlkkcfflon => "NMHIBDFFLFP_HJLKKCFFLON", + Self::Haikohhgbep => "NMHIBDFFLFP_HAIKOHHGBEP", + Self::Ongddojhech => "NMHIBDFFLFP_ONGDDOJHECH", + Self::Ebfaabmdlel => "NMHIBDFFLFP_EBFAABMDLEL", + Self::Nflklpdjhpe => "NMHIBDFFLFP_NFLKLPDJHPE", + Self::Liimdgminjb => "NMHIBDFFLFP_LIIMDGMINJB", + Self::Ickafiiknkh => "NMHIBDFFLFP_ICKAFIIKNKH", + Self::Pgodflgnlln => "NMHIBDFFLFP_PGODFLGNLLN", + Self::Pjdcjkdgccp => "NMHIBDFFLFP_PJDCJKDGCCP", + Self::Conlmggmgja => "NMHIBDFFLFP_CONLMGGMGJA", + Self::Olmhlmpbmme => "NMHIBDFFLFP_OLMHLMPBMME", + Self::Acklebfmbih => "NMHIBDFFLFP_ACKLEBFMBIH", + Self::Jebmemfookg => "NMHIBDFFLFP_JEBMEMFOOKG", + Self::Ndpjdckdlbo => "NMHIBDFFLFP_NDPJDCKDLBO", + Self::Ejkoohpfhfo => "NMHIBDFFLFP_EJKOOHPFHFO", + Self::Dcdcnomboln => "NMHIBDFFLFP_DCDCNOMBOLN", + Self::Dchgpaiffig => "NMHIBDFFLFP_DCHGPAIFFIG", + Self::Fibcopcjmcc => "NMHIBDFFLFP_FIBCOPCJMCC", + Self::Glccpeeglei => "NMHIBDFFLFP_GLCCPEEGLEI", + Self::Lokpnannldf => "NMHIBDFFLFP_LOKPNANNLDF", + Self::Nijleddmbhm => "NMHIBDFFLFP_NIJLEDDMBHM", + Self::Leckbikgeia => "NMHIBDFFLFP_LECKBIKGEIA", + Self::Aohhbmpmpgl => "NMHIBDFFLFP_AOHHBMPMPGL", + Self::Jhhciilifgl => "NMHIBDFFLFP_JHHCIILIFGL", + Self::Lipdlehemkc => "NMHIBDFFLFP_LIPDLEHEMKC", + Self::Lkalhohbjcf => "NMHIBDFFLFP_LKALHOHBJCF", + Self::Djkekbglnfd => "NMHIBDFFLFP_DJKEKBGLNFD", + Self::Nddlkbmhkgi => "NMHIBDFFLFP_NDDLKBMHKGI", + Self::Bbojhmidbcj => "NMHIBDFFLFP_BBOJHMIDBCJ", + Self::Jgdddfgcgio => "NMHIBDFFLFP_JGDDDFGCGIO", + Self::Fnogiahnlbd => "NMHIBDFFLFP_FNOGIAHNLBD", + Self::Jdknfmknedh => "NMHIBDFFLFP_JDKNFMKNEDH", + Self::Ndojompgmke => "NMHIBDFFLFP_NDOJOMPGMKE", + Self::Hlppmpmnbgb => "NMHIBDFFLFP_HLPPMPMNBGB", + Self::Lihcamlpdhl => "NMHIBDFFLFP_LIHCAMLPDHL", + Self::Annldefokap => "NMHIBDFFLFP_ANNLDEFOKAP", + Self::Iohnpibfmcp => "NMHIBDFFLFP_IOHNPIBFMCP", + Self::Chmldkhhgmc => "NMHIBDFFLFP_CHMLDKHHGMC", + Self::Bbnmibpohdb => "NMHIBDFFLFP_BBNMIBPOHDB", + Self::Hglfgoilldb => "NMHIBDFFLFP_HGLFGOILLDB", + Self::Dakbfamickb => "NMHIBDFFLFP_DAKBFAMICKB", + Self::Ijdoeohjdom => "NMHIBDFFLFP_IJDOEOHJDOM", + Self::Bfidolopnbi => "NMHIBDFFLFP_BFIDOLOPNBI", + Self::Boccbmmbefg => "NMHIBDFFLFP_BOCCBMMBEFG", + Self::Likegkmdoon => "NMHIBDFFLFP_LIKEGKMDOON", + Self::Clgbmngdgbe => "NMHIBDFFLFP_CLGBMNGDGBE", + Self::Gfgphgbbmmh => "NMHIBDFFLFP_GFGPHGBBMMH", + Self::Edcaolpbemf => "NMHIBDFFLFP_EDCAOLPBEMF", + Self::Acbicdjhghk => "NMHIBDFFLFP_ACBICDJHGHK", + Self::Omaebkaomom => "NMHIBDFFLFP_OMAEBKAOMOM", + Self::Dohhbhbdnlh => "NMHIBDFFLFP_DOHHBHBDNLH", + Self::Iepleillpap => "NMHIBDFFLFP_IEPLEILLPAP", + Self::Faoodidgmgp => "NMHIBDFFLFP_FAOODIDGMGP", + Self::Nfeneminjcc => "NMHIBDFFLFP_NFENEMINJCC", + Self::Handpnoicfm => "NMHIBDFFLFP_HANDPNOICFM", + Self::Chodlbapnfm => "NMHIBDFFLFP_CHODLBAPNFM", + Self::Lkkklnmadkm => "NMHIBDFFLFP_LKKKLNMADKM", + Self::Oaakahbhclm => "NMHIBDFFLFP_OAAKAHBHCLM", + Self::Ppelcemmaen => "NMHIBDFFLFP_PPELCEMMAEN", + Self::Jcbbhpbfeff => "NMHIBDFFLFP_JCBBHPBFEFF", + Self::Kdgaglkapnk => "NMHIBDFFLFP_KDGAGLKAPNK", + Self::Amkpcjkhnif => "NMHIBDFFLFP_AMKPCJKHNIF", + Self::Ieknjbdkodo => "NMHIBDFFLFP_IEKNJBDKODO", + Self::Lffjnlffbia => "NMHIBDFFLFP_LFFJNLFFBIA", + Self::Lmbnifklkep => "NMHIBDFFLFP_LMBNIFKLKEP", + Self::Oienkacgmfb => "NMHIBDFFLFP_OIENKACGMFB", + Self::Bjlcpblnkfc => "NMHIBDFFLFP_BJLCPBLNKFC", + Self::Kmdnebnhpii => "NMHIBDFFLFP_KMDNEBNHPII", + Self::Kkmckdefihi => "NMHIBDFFLFP_KKMCKDEFIHI", + Self::Fiiaaipknni => "NMHIBDFFLFP_FIIAAIPKNNI", + Self::Iijjgpomamm => "NMHIBDFFLFP_IIJJGPOMAMM", + Self::Cpknaeogpep => "NMHIBDFFLFP_CPKNAEOGPEP", + Self::Kiiakflbdia => "NMHIBDFFLFP_KIIAKFLBDIA", + Self::Ljjjmoghiif => "NMHIBDFFLFP_LJJJMOGHIIF", + Self::Hcbhmnebgja => "NMHIBDFFLFP_HCBHMNEBGJA", + Self::Hekmggcbfdi => "NMHIBDFFLFP_HEKMGGCBFDI", + Self::Njjnepihhcm => "NMHIBDFFLFP_NJJNEPIHHCM", + Self::Holnggonlgp => "NMHIBDFFLFP_HOLNGGONLGP", + Self::Lpdkmgmbbbn => "NMHIBDFFLFP_LPDKMGMBBBN", + Self::Admjgjkmdom => "NMHIBDFFLFP_ADMJGJKMDOM", + Self::Pejogibogka => "NMHIBDFFLFP_PEJOGIBOGKA", + Self::Pdkgkfjhefb => "NMHIBDFFLFP_PDKGKFJHEFB", + Self::Jjpeieglnaa => "NMHIBDFFLFP_JJPEIEGLNAA", + Self::Pkcejchhfda => "NMHIBDFFLFP_PKCEJCHHFDA", + Self::Eghoghchakk => "NMHIBDFFLFP_EGHOGHCHAKK", + Self::Mfdjpkmbgmd => "NMHIBDFFLFP_MFDJPKMBGMD", + Self::Pjdbbkcocok => "NMHIBDFFLFP_PJDBBKCOCOK", + Self::Iboafjcinfj => "NMHIBDFFLFP_IBOAFJCINFJ", + Self::Oladepfgfdg => "NMHIBDFFLFP_OLADEPFGFDG", + Self::Ddeoiifeojg => "NMHIBDFFLFP_DDEOIIFEOJG", + Self::Gbbhcmeabbl => "NMHIBDFFLFP_GBBHCMEABBL", + Self::Pnhdnnamdeb => "NMHIBDFFLFP_PNHDNNAMDEB", + Self::Kgbcoghkmje => "NMHIBDFFLFP_KGBCOGHKMJE", + Self::Ppeogfpmldm => "NMHIBDFFLFP_PPEOGFPMLDM", + Self::Bjmioijfjid => "NMHIBDFFLFP_BJMIOIJFJID", + Self::Bhkbicfbjmf => "NMHIBDFFLFP_BHKBICFBJMF", + Self::Ddopfknmjei => "NMHIBDFFLFP_DDOPFKNMJEI", + Self::Ialdhkaibpf => "NMHIBDFFLFP_IALDHKAIBPF", + Self::Iokclbpafko => "NMHIBDFFLFP_IOKCLBPAFKO", + Self::Fnacenmmebc => "NMHIBDFFLFP_FNACENMMEBC", + Self::Ajfanglnbhg => "NMHIBDFFLFP_AJFANGLNBHG", + Self::Flhimbbpcfb => "NMHIBDFFLFP_FLHIMBBPCFB", + Self::Oceodeomnil => "NMHIBDFFLFP_OCEODEOMNIL", + Self::Likihbcgmhb => "NMHIBDFFLFP_LIKIHBCGMHB", + Self::Moelbanlice => "NMHIBDFFLFP_MOELBANLICE", + Self::Djbblhpfppn => "NMHIBDFFLFP_DJBBLHPFPPN", + Self::Lghjhpkafjg => "NMHIBDFFLFP_LGHJHPKAFJG", + Self::Kmmcihjccop => "NMHIBDFFLFP_KMMCIHJCCOP", + Self::Jdbmhelolbd => "NMHIBDFFLFP_JDBMHELOLBD", + Self::Npiehdfhceo => "NMHIBDFFLFP_NPIEHDFHCEO", + Self::Fejcihhfjhb => "NMHIBDFFLFP_FEJCIHHFJHB", + Self::Koikeghfaod => "NMHIBDFFLFP_KOIKEGHFAOD", + Self::Lkjchjodfdg => "NMHIBDFFLFP_LKJCHJODFDG", + Self::Cfbpmigdkih => "NMHIBDFFLFP_CFBPMIGDKIH", + Self::Fbieaipfope => "NMHIBDFFLFP_FBIEAIPFOPE", + Self::Mbpfhcgmpng => "NMHIBDFFLFP_MBPFHCGMPNG", + Self::Kkfnlhocjjf => "NMHIBDFFLFP_KKFNLHOCJJF", + Self::Gamcbegepjo => "NMHIBDFFLFP_GAMCBEGEPJO", + Self::Oofnahjocfd => "NMHIBDFFLFP_OOFNAHJOCFD", + Self::Oaldoeojhjh => "NMHIBDFFLFP_OALDOEOJHJH", + Self::Nicdlonflhb => "NMHIBDFFLFP_NICDLONFLHB", + Self::Odndpaolaad => "NMHIBDFFLFP_ODNDPAOLAAD", + Self::Hfeenhmjial => "NMHIBDFFLFP_HFEENHMJIAL", + Self::Ghhloinhpel => "NMHIBDFFLFP_GHHLOINHPEL", + Self::Kbaipalpmef => "NMHIBDFFLFP_KBAIPALPMEF", + Self::Ilkljpkbkik => "NMHIBDFFLFP_ILKLJPKBKIK", + Self::Ioinekjfnck => "NMHIBDFFLFP_IOINEKJFNCK", + Self::Nbcdpkkfjka => "NMHIBDFFLFP_NBCDPKKFJKA", + Self::Gfjcabgipoa => "NMHIBDFFLFP_GFJCABGIPOA", + Self::Bdecgoogbjk => "NMHIBDFFLFP_BDECGOOGBJK", + Self::Jpladpccdpk => "NMHIBDFFLFP_JPLADPCCDPK", + Self::Cmipjpilgok => "NMHIBDFFLFP_CMIPJPILGOK", + Self::Bpadeemkaoh => "NMHIBDFFLFP_BPADEEMKAOH", + Self::Bbkhdhkamdn => "NMHIBDFFLFP_BBKHDHKAMDN", + Self::Mcgalebakop => "NMHIBDFFLFP_MCGALEBAKOP", + Self::Cfiacmgjbde => "NMHIBDFFLFP_CFIACMGJBDE", + Self::Ifjkhmpiccb => "NMHIBDFFLFP_IFJKHMPICCB", + Self::Oogdhifddem => "NMHIBDFFLFP_OOGDHIFDDEM", + Self::Cncncdpclmf => "NMHIBDFFLFP_CNCNCDPCLMF", + Self::Kblggaonhep => "NMHIBDFFLFP_KBLGGAONHEP", + Self::Lokdknhbijb => "NMHIBDFFLFP_LOKDKNHBIJB", + Self::Ejlahlmdakl => "NMHIBDFFLFP_EJLAHLMDAKL", + Self::Gegenapijfk => "NMHIBDFFLFP_GEGENAPIJFK", + Self::Icljfafigkg => "NMHIBDFFLFP_ICLJFAFIGKG", + Self::Linegjdllkd => "NMHIBDFFLFP_LINEGJDLLKD", + Self::Pepakobpnpm => "NMHIBDFFLFP_PEPAKOBPNPM", + Self::Gipeognihml => "NMHIBDFFLFP_GIPEOGNIHML", + Self::Kbagjgkmipk => "NMHIBDFFLFP_KBAGJGKMIPK", + Self::Adaaleommjb => "NMHIBDFFLFP_ADAALEOMMJB", + Self::Cehajdbjmil => "NMHIBDFFLFP_CEHAJDBJMIL", + Self::Ajjolmhhomo => "NMHIBDFFLFP_AJJOLMHHOMO", + Self::Plonaoljbda => "NMHIBDFFLFP_PLONAOLJBDA", + Self::Ddfjodjbbch => "NMHIBDFFLFP_DDFJODJBBCH", + Self::Dffhmhaniak => "NMHIBDFFLFP_DFFHMHANIAK", + Self::Eaagcmakpnm => "NMHIBDFFLFP_EAAGCMAKPNM", + Self::Lpceockncnp => "NMHIBDFFLFP_LPCEOCKNCNP", + Self::Bhdandgeigp => "NMHIBDFFLFP_BHDANDGEIGP", + Self::Iekhlfhgddf => "NMHIBDFFLFP_IEKHLFHGDDF", + Self::Elnhejnebkd => "NMHIBDFFLFP_ELNHEJNEBKD", + Self::Laciofpppdl => "NMHIBDFFLFP_LACIOFPPPDL", + Self::Mdbbdeeoojm => "NMHIBDFFLFP_MDBBDEEOOJM", + Self::Pcmgcgcijmc => "NMHIBDFFLFP_PCMGCGCIJMC", + Self::Ecjiehcigil => "NMHIBDFFLFP_ECJIEHCIGIL", + Self::Ackpjfpejom => "NMHIBDFFLFP_ACKPJFPEJOM", + Self::Gnmbndmfnab => "NMHIBDFFLFP_GNMBNDMFNAB", + Self::Domcjjhedon => "NMHIBDFFLFP_DOMCJJHEDON", + Self::Dmacdeecfde => "NMHIBDFFLFP_DMACDEECFDE", + Self::Mfdmnchlfgm => "NMHIBDFFLFP_MFDMNCHLFGM", + Self::Dgegnfdjpek => "NMHIBDFFLFP_DGEGNFDJPEK", + Self::Lkgnejpcedm => "NMHIBDFFLFP_LKGNEJPCEDM", + Self::Nhohmipelgk => "NMHIBDFFLFP_NHOHMIPELGK", + Self::Jnholaemegn => "NMHIBDFFLFP_JNHOLAEMEGN", + Self::Kjokdebdhma => "NMHIBDFFLFP_KJOKDEBDHMA", + Self::Hgbfdjnihol => "NMHIBDFFLFP_HGBFDJNIHOL", + Self::Pjnaoigobnc => "NMHIBDFFLFP_PJNAOIGOBNC", + Self::Empfbcgegjn => "NMHIBDFFLFP_EMPFBCGEGJN", + Self::Eadgnccehep => "NMHIBDFFLFP_EADGNCCEHEP", + Self::Efdmokofadf => "NMHIBDFFLFP_EFDMOKOFADF", + Self::Kjkbnidhaem => "NMHIBDFFLFP_KJKBNIDHAEM", + Self::Djambkneakf => "NMHIBDFFLFP_DJAMBKNEAKF", + Self::Cnidggohnij => "NMHIBDFFLFP_CNIDGGOHNIJ", + Self::Hkmfjbdfjff => "NMHIBDFFLFP_HKMFJBDFJFF", + Self::Ljpffebooef => "NMHIBDFFLFP_LJPFFEBOOEF", + Self::Bmjphkogaam => "NMHIBDFFLFP_BMJPHKOGAAM", + Self::Ebilkmffbla => "NMHIBDFFLFP_EBILKMFFBLA", + Self::Mibhndeemkf => "NMHIBDFFLFP_MIBHNDEEMKF", + Self::Fanaljljiop => "NMHIBDFFLFP_FANALJLJIOP", + Self::Genldhdljfi => "NMHIBDFFLFP_GENLDHDLJFI", + Self::Bbffbndddei => "NMHIBDFFLFP_BBFFBNDDDEI", + Self::Dmgpjjgiibo => "NMHIBDFFLFP_DMGPJJGIIBO", + Self::Nlfhaejjgjb => "NMHIBDFFLFP_NLFHAEJJGJB", + Self::Ihaihcmaodc => "NMHIBDFFLFP_IHAIHCMAODC", + Self::Noemkiogmkn => "NMHIBDFFLFP_NOEMKIOGMKN", + Self::Efbnbgbfgid => "NMHIBDFFLFP_EFBNBGBFGID", + Self::Hhhejneggig => "NMHIBDFFLFP_HHHEJNEGGIG", + Self::Cokfjpelbck => "NMHIBDFFLFP_COKFJPELBCK", + Self::Hpfadpafooe => "NMHIBDFFLFP_HPFADPAFOOE", + Self::Kmegmhjgbla => "NMHIBDFFLFP_KMEGMHJGBLA", + Self::Eeohblcjkge => "NMHIBDFFLFP_EEOHBLCJKGE", + Self::Fchdhamodah => "NMHIBDFFLFP_FCHDHAMODAH", + Self::Mfcogbajmjp => "NMHIBDFFLFP_MFCOGBAJMJP", + Self::Hclpfjneang => "NMHIBDFFLFP_HCLPFJNEANG", + Self::Dhbbmkllcod => "NMHIBDFFLFP_DHBBMKLLCOD", + Self::Elflkgmdlbe => "NMHIBDFFLFP_ELFLKGMDLBE", + Self::Giakikbhlpl => "NMHIBDFFLFP_GIAKIKBHLPL", + Self::Pfheodegjdh => "NMHIBDFFLFP_PFHEODEGJDH", + Self::Diagbjpelce => "NMHIBDFFLFP_DIAGBJPELCE", + Self::Jdkhedlalda => "NMHIBDFFLFP_JDKHEDLALDA", + Self::Ihkegcnepie => "NMHIBDFFLFP_IHKEGCNEPIE", + Self::Eopimhoigkl => "NMHIBDFFLFP_EOPIMHOIGKL", + Self::Kkolifkadjk => "NMHIBDFFLFP_KKOLIFKADJK", + Self::Oikmaclnbej => "NMHIBDFFLFP_OIKMACLNBEJ", + Self::Caicodkgjbh => "NMHIBDFFLFP_CAICODKGJBH", + Self::Cjdkgnmejgh => "NMHIBDFFLFP_CJDKGNMEJGH", + Self::Emdiflpkakm => "NMHIBDFFLFP_EMDIFLPKAKM", + Self::Jknpmpeenhl => "NMHIBDFFLFP_JKNPMPEENHL", + Self::Elaghmljeai => "NMHIBDFFLFP_ELAGHMLJEAI", + Self::Igccfcakcnp => "NMHIBDFFLFP_IGCCFCAKCNP", + Self::Eecdnbephmd => "NMHIBDFFLFP_EECDNBEPHMD", + Self::Linniehmifk => "NMHIBDFFLFP_LINNIEHMIFK", + Self::Hmebeabpkaf => "NMHIBDFFLFP_HMEBEABPKAF", + Self::Mogppiajmnf => "NMHIBDFFLFP_MOGPPIAJMNF", + Self::Jjbofknmklb => "NMHIBDFFLFP_JJBOFKNMKLB", + Self::Hibbgnnbdcb => "NMHIBDFFLFP_HIBBGNNBDCB", + Self::Affoollpifj => "NMHIBDFFLFP_AFFOOLLPIFJ", + Self::Ckjlajhmnhm => "NMHIBDFFLFP_CKJLAJHMNHM", + Self::Lllogopmmmm => "NMHIBDFFLFP_LLLOGOPMMMM", + Self::Kmmenhibmgj => "NMHIBDFFLFP_KMMENHIBMGJ", + Self::Lmecchbpkog => "NMHIBDFFLFP_LMECCHBPKOG", + Self::Ogihalpclno => "NMHIBDFFLFP_OGIHALPCLNO", + Self::Ocaelfmpfgf => "NMHIBDFFLFP_OCAELFMPFGF", + Self::Jibajlbokjh => "NMHIBDFFLFP_JIBAJLBOKJH", + Self::Addliokeegl => "NMHIBDFFLFP_ADDLIOKEEGL", + Self::Oakcgedibao => "NMHIBDFFLFP_OAKCGEDIBAO", + Self::Ikjmggmbnph => "NMHIBDFFLFP_IKJMGGMBNPH", + Self::Opcknjfknef => "NMHIBDFFLFP_OPCKNJFKNEF", + Self::Cmlmgagjahg => "NMHIBDFFLFP_CMLMGAGJAHG", + Self::Mcgoekjaede => "NMHIBDFFLFP_MCGOEKJAEDE", + Self::Ppmihhholkd => "NMHIBDFFLFP_PPMIHHHOLKD", + Self::Hfhnjgikndh => "NMHIBDFFLFP_HFHNJGIKNDH", + Self::Cebnkobkalb => "NMHIBDFFLFP_CEBNKOBKALB", + Self::Onodbpnjcbp => "NMHIBDFFLFP_ONODBPNJCBP", + Self::Ggjnigppaen => "NMHIBDFFLFP_GGJNIGPPAEN", + Self::Anbkbjlcpgf => "NMHIBDFFLFP_ANBKBJLCPGF", + Self::Ghaamdchibf => "NMHIBDFFLFP_GHAAMDCHIBF", + Self::Aingbbdaflm => "NMHIBDFFLFP_AINGBBDAFLM", + Self::Mhpoiiinala => "NMHIBDFFLFP_MHPOIIINALA", + Self::Jheljjgcjhc => "NMHIBDFFLFP_JHELJJGCJHC", + Self::Omjmcbjhlhc => "NMHIBDFFLFP_OMJMCBJHLHC", + Self::Fnpmmhnonpn => "NMHIBDFFLFP_FNPMMHNONPN", + Self::Cjaobaehppa => "NMHIBDFFLFP_CJAOBAEHPPA", + Self::Kipjjkfihnb => "NMHIBDFFLFP_KIPJJKFIHNB", + Self::Aanlhchphdl => "NMHIBDFFLFP_AANLHCHPHDL", + Self::Lcljibikpbl => "NMHIBDFFLFP_LCLJIBIKPBL", + Self::Elpponccokl => "NMHIBDFFLFP_ELPPONCCOKL", + Self::Melkpbehmdl => "NMHIBDFFLFP_MELKPBEHMDL", + Self::Oliabillomm => "NMHIBDFFLFP_OLIABILLOMM", + Self::Mgonfcfhmfb => "NMHIBDFFLFP_MGONFCFHMFB", + Self::Jmjbbfnlpgj => "NMHIBDFFLFP_JMJBBFNLPGJ", + Self::Dgjeglimlgl => "NMHIBDFFLFP_DGJEGLIMLGL", + Self::Bhahmefimlc => "NMHIBDFFLFP_BHAHMEFIMLC", + Self::Ldkodlbmnpd => "NMHIBDFFLFP_LDKODLBMNPD", + Self::Bnfhoendhac => "NMHIBDFFLFP_BNFHOENDHAC", + Self::Fimildamcap => "NMHIBDFFLFP_FIMILDAMCAP", + Self::Hplkccpdjjj => "NMHIBDFFLFP_HPLKCCPDJJJ", + Self::Kdlnomhnkgf => "NMHIBDFFLFP_KDLNOMHNKGF", + Self::Ehlpgolhnlo => "NMHIBDFFLFP_EHLPGOLHNLO", + Self::Japebeelgkl => "NMHIBDFFLFP_JAPEBEELGKL", + Self::Bmcgnhinnok => "NMHIBDFFLFP_BMCGNHINNOK", + Self::Kpfcafimpea => "NMHIBDFFLFP_KPFCAFIMPEA", + Self::Mfojekccgah => "NMHIBDFFLFP_MFOJEKCCGAH", + Self::Najnlimcpog => "NMHIBDFFLFP_NAJNLIMCPOG", + Self::Llfinemncif => "NMHIBDFFLFP_LLFINEMNCIF", + Self::Pmeiaendglf => "NMHIBDFFLFP_PMEIAENDGLF", + Self::Obcopcfejgh => "NMHIBDFFLFP_OBCOPCFEJGH", + Self::Ibcmcmfgngb => "NMHIBDFFLFP_IBCMCMFGNGB", + Self::Pcamdbhcemn => "NMHIBDFFLFP_PCAMDBHCEMN", + Self::Hofebcgmmhm => "NMHIBDFFLFP_HOFEBCGMMHM", + Self::Ficlglnmikj => "NMHIBDFFLFP_FICLGLNMIKJ", + Self::Cpfjefbiili => "NMHIBDFFLFP_CPFJEFBIILI", + Self::Mbelgoifinc => "NMHIBDFFLFP_MBELGOIFINC", + Self::Hiddgbipfbi => "NMHIBDFFLFP_HIDDGBIPFBI", + Self::Cjdhdafhgoh => "NMHIBDFFLFP_CJDHDAFHGOH", + Self::Gpmadfdhgnj => "NMHIBDFFLFP_GPMADFDHGNJ", + Self::Kplgmdahdpl => "NMHIBDFFLFP_KPLGMDAHDPL", + Self::Iahdfikfbdb => "NMHIBDFFLFP_IAHDFIKFBDB", + Self::Jeomkdjooej => "NMHIBDFFLFP_JEOMKDJOOEJ", + Self::Dgphkfjlbco => "NMHIBDFFLFP_DGPHKFJLBCO", + Self::Fiipffefble => "NMHIBDFFLFP_FIIPFFEFBLE", + Self::Khbdfjepkdn => "NMHIBDFFLFP_KHBDFJEPKDN", + Self::Lipfapecmgo => "NMHIBDFFLFP_LIPFAPECMGO", + Self::Hjeceilnkjd => "NMHIBDFFLFP_HJECEILNKJD", + Self::Meoolngfeka => "NMHIBDFFLFP_MEOOLNGFEKA", + Self::Gfmemammcae => "NMHIBDFFLFP_GFMEMAMMCAE", + Self::Gogpgfbckcn => "NMHIBDFFLFP_GOGPGFBCKCN", + Self::Nkjfoaccaji => "NMHIBDFFLFP_NKJFOACCAJI", + Self::Cfnfeafdaep => "NMHIBDFFLFP_CFNFEAFDAEP", + Self::Hbhjnalhiie => "NMHIBDFFLFP_HBHJNALHIIE", + Self::Jnoghhogpni => "NMHIBDFFLFP_JNOGHHOGPNI", + Self::Fkgddeaiaed => "NMHIBDFFLFP_FKGDDEAIAED", + Self::Ioaefidhnlk => "NMHIBDFFLFP_IOAEFIDHNLK", + Self::Hpngmmkeffd => "NMHIBDFFLFP_HPNGMMKEFFD", + Self::Ejpmpmjeljn => "NMHIBDFFLFP_EJPMPMJELJN", + Self::Kbpodejegik => "NMHIBDFFLFP_KBPODEJEGIK", + Self::Cfelgnldoho => "NMHIBDFFLFP_CFELGNLDOHO", + Self::Blhkkmgapil => "NMHIBDFFLFP_BLHKKMGAPIL", + Self::Ngfgggkfnjc => "NMHIBDFFLFP_NGFGGGKFNJC", + Self::Lofcfcbfefj => "NMHIBDFFLFP_LOFCFCBFEFJ", + Self::Ilicmkbiolm => "NMHIBDFFLFP_ILICMKBIOLM", + Self::Ddlmahdcpco => "NMHIBDFFLFP_DDLMAHDCPCO", + Self::Gdjinmihpla => "NMHIBDFFLFP_GDJINMIHPLA", + Self::Oekieflkici => "NMHIBDFFLFP_OEKIEFLKICI", + Self::Difapionfpa => "NMHIBDFFLFP_DIFAPIONFPA", + Self::Nkeemddjooi => "NMHIBDFFLFP_NKEEMDDJOOI", + Self::Kfeaccihcie => "NMHIBDFFLFP_KFEACCIHCIE", + Self::Djgpmdggmfc => "NMHIBDFFLFP_DJGPMDGGMFC", + Self::Deohhbkpppd => "NMHIBDFFLFP_DEOHHBKPPPD", + Self::Jjnkgfplndp => "NMHIBDFFLFP_JJNKGFPLNDP", + Self::Pfndjjndmbf => "NMHIBDFFLFP_PFNDJJNDMBF", + Self::Cbplcgjfnek => "NMHIBDFFLFP_CBPLCGJFNEK", + Self::Fohdbaokilm => "NMHIBDFFLFP_FOHDBAOKILM", + Self::Dplccibcoko => "NMHIBDFFLFP_DPLCCIBCOKO", + Self::Blljmkefebl => "NMHIBDFFLFP_BLLJMKEFEBL", + Self::Dbgggadhooc => "NMHIBDFFLFP_DBGGGADHOOC", + Self::Cfgamgabkjn => "NMHIBDFFLFP_CFGAMGABKJN", + Self::Ocnjjliomap => "NMHIBDFFLFP_OCNJJLIOMAP", + Self::Amakepigjde => "NMHIBDFFLFP_AMAKEPIGJDE", + Self::Fnoakcofhdo => "NMHIBDFFLFP_FNOAKCOFHDO", + Self::Opbgjndbioe => "NMHIBDFFLFP_OPBGJNDBIOE", + Self::Pblbcbdmiae => "NMHIBDFFLFP_PBLBCBDMIAE", + Self::Anlmfhilbdg => "NMHIBDFFLFP_ANLMFHILBDG", + Self::Hdkapbkldec => "NMHIBDFFLFP_HDKAPBKLDEC", + Self::Clanplbmpip => "NMHIBDFFLFP_CLANPLBMPIP", + Self::Callbmojgpl => "NMHIBDFFLFP_CALLBMOJGPL", + Self::Mhoiaglldmi => "NMHIBDFFLFP_MHOIAGLLDMI", + Self::Omomhmgeghl => "NMHIBDFFLFP_OMOMHMGEGHL", + Self::Ldadbehiklj => "NMHIBDFFLFP_LDADBEHIKLJ", + Self::Lkhbimhnnco => "NMHIBDFFLFP_LKHBIMHNNCO", + Self::Jbhnlchbope => "NMHIBDFFLFP_JBHNLCHBOPE", + Self::Nfjmdcjakfc => "NMHIBDFFLFP_NFJMDCJAKFC", + Self::Jfdklmeengh => "NMHIBDFFLFP_JFDKLMEENGH", + Self::Aabjmoopgcf => "NMHIBDFFLFP_AABJMOOPGCF", + Self::Pfcggfimjgj => "NMHIBDFFLFP_PFCGGFIMJGJ", + Self::Jghmoelmlim => "NMHIBDFFLFP_JGHMOELMLIM", + Self::Memoklagaom => "NMHIBDFFLFP_MEMOKLAGAOM", + Self::Pnhnbfmjphj => "NMHIBDFFLFP_PNHNBFMJPHJ", + Self::Beophokfhbc => "NMHIBDFFLFP_BEOPHOKFHBC", + Self::Lgjheelegfk => "NMHIBDFFLFP_LGJHEELEGFK", + Self::Gdembgidhki => "NMHIBDFFLFP_GDEMBGIDHKI", + Self::Eehmkjdhfio => "NMHIBDFFLFP_EEHMKJDHFIO", + Self::Ckcbkcfafhp => "NMHIBDFFLFP_CKCBKCFAFHP", + Self::Mdoagncpejg => "NMHIBDFFLFP_MDOAGNCPEJG", + Self::Cbgcnilpmmf => "NMHIBDFFLFP_CBGCNILPMMF", + Self::Nmbjpbdelng => "NMHIBDFFLFP_NMBJPBDELNG", + Self::Ohllejnlkpi => "NMHIBDFFLFP_OHLLEJNLKPI", + Self::Kmdkbhmlebi => "NMHIBDFFLFP_KMDKBHMLEBI", + Self::Obkohjdbmoo => "NMHIBDFFLFP_OBKOHJDBMOO", + Self::Fbkhmijegpm => "NMHIBDFFLFP_FBKHMIJEGPM", + Self::Hocbnldllna => "NMHIBDFFLFP_HOCBNLDLLNA", + Self::Efaadjljbel => "NMHIBDFFLFP_EFAADJLJBEL", + Self::Lipkelfngjf => "NMHIBDFFLFP_LIPKELFNGJF", + Self::Oabnbifihja => "NMHIBDFFLFP_OABNBIFIHJA", + Self::Gfianahoilc => "NMHIBDFFLFP_GFIANAHOILC", + Self::Fgoafhlghge => "NMHIBDFFLFP_FGOAFHLGHGE", + Self::Lofkdkkooon => "NMHIBDFFLFP_LOFKDKKOOON", + Self::Kbocdbednag => "NMHIBDFFLFP_KBOCDBEDNAG", + Self::Olnfeneidpb => "NMHIBDFFLFP_OLNFENEIDPB", + Self::Lchbdoeamlo => "NMHIBDFFLFP_LCHBDOEAMLO", + Self::Ghiappfapmp => "NMHIBDFFLFP_GHIAPPFAPMP", + Self::Jdfdebiolmn => "NMHIBDFFLFP_JDFDEBIOLMN", + Self::Jmpbannmjpl => "NMHIBDFFLFP_JMPBANNMJPL", + Self::Aampcpbanmo => "NMHIBDFFLFP_AAMPCPBANMO", + Self::Eaahmhbkeed => "NMHIBDFFLFP_EAAHMHBKEED", + Self::Nbiidpnfpai => "NMHIBDFFLFP_NBIIDPNFPAI", + Self::Beimanjcokf => "NMHIBDFFLFP_BEIMANJCOKF", + Self::Hdpacppgoec => "NMHIBDFFLFP_HDPACPPGOEC", + Self::Hagkfefohaa => "NMHIBDFFLFP_HAGKFEFOHAA", + Self::Bbgjmniaije => "NMHIBDFFLFP_BBGJMNIAIJE", + Self::Jognnioadbb => "NMHIBDFFLFP_JOGNNIOADBB", + Self::Hdnnbpgnbgn => "NMHIBDFFLFP_HDNNBPGNBGN", + Self::Dpoplhdnphj => "NMHIBDFFLFP_DPOPLHDNPHJ", + Self::Djaoncbjpma => "NMHIBDFFLFP_DJAONCBJPMA", + Self::Difkgbhdcha => "NMHIBDFFLFP_DIFKGBHDCHA", + Self::Gidlhfdniec => "NMHIBDFFLFP_GIDLHFDNIEC", + Self::Pojelophjkg => "NMHIBDFFLFP_POJELOPHJKG", + Self::Ainkkdkaeom => "NMHIBDFFLFP_AINKKDKAEOM", + Self::Gclblmfnjlc => "NMHIBDFFLFP_GCLBLMFNJLC", + Self::Bdehokipfof => "NMHIBDFFLFP_BDEHOKIPFOF", + Self::Ahcfgogoajl => "NMHIBDFFLFP_AHCFGOGOAJL", + Self::Pdjldckcchc => "NMHIBDFFLFP_PDJLDCKCCHC", + Self::Aiflplmolea => "NMHIBDFFLFP_AIFLPLMOLEA", + Self::Obpfgcfmdbp => "NMHIBDFFLFP_OBPFGCFMDBP", + Self::Odcifmoodao => "NMHIBDFFLFP_ODCIFMOODAO", + Self::Hglbmadogcj => "NMHIBDFFLFP_HGLBMADOGCJ", + Self::Ebhnifedhgd => "NMHIBDFFLFP_EBHNIFEDHGD", + Self::Bbbgjpfmfia => "NMHIBDFFLFP_BBBGJPFMFIA", + Self::Bjfnhnpkeld => "NMHIBDFFLFP_BJFNHNPKELD", + Self::Jabedkoghho => "NMHIBDFFLFP_JABEDKOGHHO", + Self::Ljhpngmppgh => "NMHIBDFFLFP_LJHPNGMPPGH", + Self::Beieckbmfmj => "NMHIBDFFLFP_BEIECKBMFMJ", + Self::Dklncehecmj => "NMHIBDFFLFP_DKLNCEHECMJ", + Self::Fihkgcbkmhg => "NMHIBDFFLFP_FIHKGCBKMHG", + Self::Nmhmknjcnig => "NMHIBDFFLFP_NMHMKNJCNIG", + Self::Ackokljekef => "NMHIBDFFLFP_ACKOKLJEKEF", + Self::Ncidfcpcdfi => "NMHIBDFFLFP_NCIDFCPCDFI", + Self::Gkafapnlfha => "NMHIBDFFLFP_GKAFAPNLFHA", + Self::Alkfellhmli => "NMHIBDFFLFP_ALKFELLHMLI", + Self::Pompfknmjip => "NMHIBDFFLFP_POMPFKNMJIP", + Self::Aomkppklldd => "NMHIBDFFLFP_AOMKPPKLLDD", + Self::Hkgmdgdhcdj => "NMHIBDFFLFP_HKGMDGDHCDJ", + Self::Cockgfomkfe => "NMHIBDFFLFP_COCKGFOMKFE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NMHIBDFFLFP_EFINKLNEJMC" => Some(Self::Efinklnejmc), + "NMHIBDFFLFP_DINAJNGHABH" => Some(Self::Dinajnghabh), + "NMHIBDFFLFP_DHGBOCLPLOK" => Some(Self::Dhgboclplok), + "NMHIBDFFLFP_ANNFOPDMAAB" => Some(Self::Annfopdmaab), + "NMHIBDFFLFP_POELMLIENLA" => Some(Self::Poelmlienla), + "NMHIBDFFLFP_IMHBFLPCEKN" => Some(Self::Imhbflpcekn), + "NMHIBDFFLFP_BOJGABAJEIL" => Some(Self::Bojgabajeil), + "NMHIBDFFLFP_COPHCFDNKDM" => Some(Self::Cophcfdnkdm), + "NMHIBDFFLFP_ECILECNMGIM" => Some(Self::Ecilecnmgim), + "NMHIBDFFLFP_GFCPJGBHHFO" => Some(Self::Gfcpjgbhhfo), + "NMHIBDFFLFP_DFLFAGJFLCD" => Some(Self::Dflfagjflcd), + "NMHIBDFFLFP_DMOJLEPIMHE" => Some(Self::Dmojlepimhe), + "NMHIBDFFLFP_FLPFMOOKOOB" => Some(Self::Flpfmookoob), + "NMHIBDFFLFP_OFKOGCHODIH" => Some(Self::Ofkogchodih), + "NMHIBDFFLFP_AJEPPAOCADB" => Some(Self::Ajeppaocadb), + "NMHIBDFFLFP_BBINCKAONNA" => Some(Self::Bbinckaonna), + "NMHIBDFFLFP_FADHOFMFDJK" => Some(Self::Fadhofmfdjk), + "NMHIBDFFLFP_OMMGKDEACGC" => Some(Self::Ommgkdeacgc), + "NMHIBDFFLFP_OCEHBECJAGD" => Some(Self::Ocehbecjagd), + "NMHIBDFFLFP_JIAIDHDOFJC" => Some(Self::Jiaidhdofjc), + "NMHIBDFFLFP_LAAHEACILDL" => Some(Self::Laaheacildl), + "NMHIBDFFLFP_CPCNNNBFFDK" => Some(Self::Cpcnnnbffdk), + "NMHIBDFFLFP_PBCHPNJLIGK" => Some(Self::Pbchpnjligk), + "NMHIBDFFLFP_BFDCEDKENML" => Some(Self::Bfdcedkenml), + "NMHIBDFFLFP_PAOGGFILMDI" => Some(Self::Paoggfilmdi), + "NMHIBDFFLFP_PONAJEIINIE" => Some(Self::Ponajeiinie), + "NMHIBDFFLFP_CMCANMOJNLG" => Some(Self::Cmcanmojnlg), + "NMHIBDFFLFP_BBCKFJIJKDL" => Some(Self::Bbckfjijkdl), + "NMHIBDFFLFP_FDJOLAIMMDD" => Some(Self::Fdjolaimmdd), + "NMHIBDFFLFP_EPPLKHMIOHG" => Some(Self::Epplkhmiohg), + "NMHIBDFFLFP_BDACCHGEJNG" => Some(Self::Bdacchgejng), + "NMHIBDFFLFP_FKEKGDMJJGF" => Some(Self::Fkekgdmjjgf), + "NMHIBDFFLFP_JACCHDBMKOI" => Some(Self::Jacchdbmkoi), + "NMHIBDFFLFP_CDCAGJCGIHE" => Some(Self::Cdcagjcgihe), + "NMHIBDFFLFP_GNEIKGFEONK" => Some(Self::Gneikgfeonk), + "NMHIBDFFLFP_BEPBKAOGALP" => Some(Self::Bepbkaogalp), + "NMHIBDFFLFP_DHMKKBBBKJJ" => Some(Self::Dhmkkbbbkjj), + "NMHIBDFFLFP_DBLNMLEJDLD" => Some(Self::Dblnmlejdld), + "NMHIBDFFLFP_MPMPIICKPNA" => Some(Self::Mpmpiickpna), + "NMHIBDFFLFP_HJLKKCFFLON" => Some(Self::Hjlkkcfflon), + "NMHIBDFFLFP_HAIKOHHGBEP" => Some(Self::Haikohhgbep), + "NMHIBDFFLFP_ONGDDOJHECH" => Some(Self::Ongddojhech), + "NMHIBDFFLFP_EBFAABMDLEL" => Some(Self::Ebfaabmdlel), + "NMHIBDFFLFP_NFLKLPDJHPE" => Some(Self::Nflklpdjhpe), + "NMHIBDFFLFP_LIIMDGMINJB" => Some(Self::Liimdgminjb), + "NMHIBDFFLFP_ICKAFIIKNKH" => Some(Self::Ickafiiknkh), + "NMHIBDFFLFP_PGODFLGNLLN" => Some(Self::Pgodflgnlln), + "NMHIBDFFLFP_PJDCJKDGCCP" => Some(Self::Pjdcjkdgccp), + "NMHIBDFFLFP_CONLMGGMGJA" => Some(Self::Conlmggmgja), + "NMHIBDFFLFP_OLMHLMPBMME" => Some(Self::Olmhlmpbmme), + "NMHIBDFFLFP_ACKLEBFMBIH" => Some(Self::Acklebfmbih), + "NMHIBDFFLFP_JEBMEMFOOKG" => Some(Self::Jebmemfookg), + "NMHIBDFFLFP_NDPJDCKDLBO" => Some(Self::Ndpjdckdlbo), + "NMHIBDFFLFP_EJKOOHPFHFO" => Some(Self::Ejkoohpfhfo), + "NMHIBDFFLFP_DCDCNOMBOLN" => Some(Self::Dcdcnomboln), + "NMHIBDFFLFP_DCHGPAIFFIG" => Some(Self::Dchgpaiffig), + "NMHIBDFFLFP_FIBCOPCJMCC" => Some(Self::Fibcopcjmcc), + "NMHIBDFFLFP_GLCCPEEGLEI" => Some(Self::Glccpeeglei), + "NMHIBDFFLFP_LOKPNANNLDF" => Some(Self::Lokpnannldf), + "NMHIBDFFLFP_NIJLEDDMBHM" => Some(Self::Nijleddmbhm), + "NMHIBDFFLFP_LECKBIKGEIA" => Some(Self::Leckbikgeia), + "NMHIBDFFLFP_AOHHBMPMPGL" => Some(Self::Aohhbmpmpgl), + "NMHIBDFFLFP_JHHCIILIFGL" => Some(Self::Jhhciilifgl), + "NMHIBDFFLFP_LIPDLEHEMKC" => Some(Self::Lipdlehemkc), + "NMHIBDFFLFP_LKALHOHBJCF" => Some(Self::Lkalhohbjcf), + "NMHIBDFFLFP_DJKEKBGLNFD" => Some(Self::Djkekbglnfd), + "NMHIBDFFLFP_NDDLKBMHKGI" => Some(Self::Nddlkbmhkgi), + "NMHIBDFFLFP_BBOJHMIDBCJ" => Some(Self::Bbojhmidbcj), + "NMHIBDFFLFP_JGDDDFGCGIO" => Some(Self::Jgdddfgcgio), + "NMHIBDFFLFP_FNOGIAHNLBD" => Some(Self::Fnogiahnlbd), + "NMHIBDFFLFP_JDKNFMKNEDH" => Some(Self::Jdknfmknedh), + "NMHIBDFFLFP_NDOJOMPGMKE" => Some(Self::Ndojompgmke), + "NMHIBDFFLFP_HLPPMPMNBGB" => Some(Self::Hlppmpmnbgb), + "NMHIBDFFLFP_LIHCAMLPDHL" => Some(Self::Lihcamlpdhl), + "NMHIBDFFLFP_ANNLDEFOKAP" => Some(Self::Annldefokap), + "NMHIBDFFLFP_IOHNPIBFMCP" => Some(Self::Iohnpibfmcp), + "NMHIBDFFLFP_CHMLDKHHGMC" => Some(Self::Chmldkhhgmc), + "NMHIBDFFLFP_BBNMIBPOHDB" => Some(Self::Bbnmibpohdb), + "NMHIBDFFLFP_HGLFGOILLDB" => Some(Self::Hglfgoilldb), + "NMHIBDFFLFP_DAKBFAMICKB" => Some(Self::Dakbfamickb), + "NMHIBDFFLFP_IJDOEOHJDOM" => Some(Self::Ijdoeohjdom), + "NMHIBDFFLFP_BFIDOLOPNBI" => Some(Self::Bfidolopnbi), + "NMHIBDFFLFP_BOCCBMMBEFG" => Some(Self::Boccbmmbefg), + "NMHIBDFFLFP_LIKEGKMDOON" => Some(Self::Likegkmdoon), + "NMHIBDFFLFP_CLGBMNGDGBE" => Some(Self::Clgbmngdgbe), + "NMHIBDFFLFP_GFGPHGBBMMH" => Some(Self::Gfgphgbbmmh), + "NMHIBDFFLFP_EDCAOLPBEMF" => Some(Self::Edcaolpbemf), + "NMHIBDFFLFP_ACBICDJHGHK" => Some(Self::Acbicdjhghk), + "NMHIBDFFLFP_OMAEBKAOMOM" => Some(Self::Omaebkaomom), + "NMHIBDFFLFP_DOHHBHBDNLH" => Some(Self::Dohhbhbdnlh), + "NMHIBDFFLFP_IEPLEILLPAP" => Some(Self::Iepleillpap), + "NMHIBDFFLFP_FAOODIDGMGP" => Some(Self::Faoodidgmgp), + "NMHIBDFFLFP_NFENEMINJCC" => Some(Self::Nfeneminjcc), + "NMHIBDFFLFP_HANDPNOICFM" => Some(Self::Handpnoicfm), + "NMHIBDFFLFP_CHODLBAPNFM" => Some(Self::Chodlbapnfm), + "NMHIBDFFLFP_LKKKLNMADKM" => Some(Self::Lkkklnmadkm), + "NMHIBDFFLFP_OAAKAHBHCLM" => Some(Self::Oaakahbhclm), + "NMHIBDFFLFP_PPELCEMMAEN" => Some(Self::Ppelcemmaen), + "NMHIBDFFLFP_JCBBHPBFEFF" => Some(Self::Jcbbhpbfeff), + "NMHIBDFFLFP_KDGAGLKAPNK" => Some(Self::Kdgaglkapnk), + "NMHIBDFFLFP_AMKPCJKHNIF" => Some(Self::Amkpcjkhnif), + "NMHIBDFFLFP_IEKNJBDKODO" => Some(Self::Ieknjbdkodo), + "NMHIBDFFLFP_LFFJNLFFBIA" => Some(Self::Lffjnlffbia), + "NMHIBDFFLFP_LMBNIFKLKEP" => Some(Self::Lmbnifklkep), + "NMHIBDFFLFP_OIENKACGMFB" => Some(Self::Oienkacgmfb), + "NMHIBDFFLFP_BJLCPBLNKFC" => Some(Self::Bjlcpblnkfc), + "NMHIBDFFLFP_KMDNEBNHPII" => Some(Self::Kmdnebnhpii), + "NMHIBDFFLFP_KKMCKDEFIHI" => Some(Self::Kkmckdefihi), + "NMHIBDFFLFP_FIIAAIPKNNI" => Some(Self::Fiiaaipknni), + "NMHIBDFFLFP_IIJJGPOMAMM" => Some(Self::Iijjgpomamm), + "NMHIBDFFLFP_CPKNAEOGPEP" => Some(Self::Cpknaeogpep), + "NMHIBDFFLFP_KIIAKFLBDIA" => Some(Self::Kiiakflbdia), + "NMHIBDFFLFP_LJJJMOGHIIF" => Some(Self::Ljjjmoghiif), + "NMHIBDFFLFP_HCBHMNEBGJA" => Some(Self::Hcbhmnebgja), + "NMHIBDFFLFP_HEKMGGCBFDI" => Some(Self::Hekmggcbfdi), + "NMHIBDFFLFP_NJJNEPIHHCM" => Some(Self::Njjnepihhcm), + "NMHIBDFFLFP_HOLNGGONLGP" => Some(Self::Holnggonlgp), + "NMHIBDFFLFP_LPDKMGMBBBN" => Some(Self::Lpdkmgmbbbn), + "NMHIBDFFLFP_ADMJGJKMDOM" => Some(Self::Admjgjkmdom), + "NMHIBDFFLFP_PEJOGIBOGKA" => Some(Self::Pejogibogka), + "NMHIBDFFLFP_PDKGKFJHEFB" => Some(Self::Pdkgkfjhefb), + "NMHIBDFFLFP_JJPEIEGLNAA" => Some(Self::Jjpeieglnaa), + "NMHIBDFFLFP_PKCEJCHHFDA" => Some(Self::Pkcejchhfda), + "NMHIBDFFLFP_EGHOGHCHAKK" => Some(Self::Eghoghchakk), + "NMHIBDFFLFP_MFDJPKMBGMD" => Some(Self::Mfdjpkmbgmd), + "NMHIBDFFLFP_PJDBBKCOCOK" => Some(Self::Pjdbbkcocok), + "NMHIBDFFLFP_IBOAFJCINFJ" => Some(Self::Iboafjcinfj), + "NMHIBDFFLFP_OLADEPFGFDG" => Some(Self::Oladepfgfdg), + "NMHIBDFFLFP_DDEOIIFEOJG" => Some(Self::Ddeoiifeojg), + "NMHIBDFFLFP_GBBHCMEABBL" => Some(Self::Gbbhcmeabbl), + "NMHIBDFFLFP_PNHDNNAMDEB" => Some(Self::Pnhdnnamdeb), + "NMHIBDFFLFP_KGBCOGHKMJE" => Some(Self::Kgbcoghkmje), + "NMHIBDFFLFP_PPEOGFPMLDM" => Some(Self::Ppeogfpmldm), + "NMHIBDFFLFP_BJMIOIJFJID" => Some(Self::Bjmioijfjid), + "NMHIBDFFLFP_BHKBICFBJMF" => Some(Self::Bhkbicfbjmf), + "NMHIBDFFLFP_DDOPFKNMJEI" => Some(Self::Ddopfknmjei), + "NMHIBDFFLFP_IALDHKAIBPF" => Some(Self::Ialdhkaibpf), + "NMHIBDFFLFP_IOKCLBPAFKO" => Some(Self::Iokclbpafko), + "NMHIBDFFLFP_FNACENMMEBC" => Some(Self::Fnacenmmebc), + "NMHIBDFFLFP_AJFANGLNBHG" => Some(Self::Ajfanglnbhg), + "NMHIBDFFLFP_FLHIMBBPCFB" => Some(Self::Flhimbbpcfb), + "NMHIBDFFLFP_OCEODEOMNIL" => Some(Self::Oceodeomnil), + "NMHIBDFFLFP_LIKIHBCGMHB" => Some(Self::Likihbcgmhb), + "NMHIBDFFLFP_MOELBANLICE" => Some(Self::Moelbanlice), + "NMHIBDFFLFP_DJBBLHPFPPN" => Some(Self::Djbblhpfppn), + "NMHIBDFFLFP_LGHJHPKAFJG" => Some(Self::Lghjhpkafjg), + "NMHIBDFFLFP_KMMCIHJCCOP" => Some(Self::Kmmcihjccop), + "NMHIBDFFLFP_JDBMHELOLBD" => Some(Self::Jdbmhelolbd), + "NMHIBDFFLFP_NPIEHDFHCEO" => Some(Self::Npiehdfhceo), + "NMHIBDFFLFP_FEJCIHHFJHB" => Some(Self::Fejcihhfjhb), + "NMHIBDFFLFP_KOIKEGHFAOD" => Some(Self::Koikeghfaod), + "NMHIBDFFLFP_LKJCHJODFDG" => Some(Self::Lkjchjodfdg), + "NMHIBDFFLFP_CFBPMIGDKIH" => Some(Self::Cfbpmigdkih), + "NMHIBDFFLFP_FBIEAIPFOPE" => Some(Self::Fbieaipfope), + "NMHIBDFFLFP_MBPFHCGMPNG" => Some(Self::Mbpfhcgmpng), + "NMHIBDFFLFP_KKFNLHOCJJF" => Some(Self::Kkfnlhocjjf), + "NMHIBDFFLFP_GAMCBEGEPJO" => Some(Self::Gamcbegepjo), + "NMHIBDFFLFP_OOFNAHJOCFD" => Some(Self::Oofnahjocfd), + "NMHIBDFFLFP_OALDOEOJHJH" => Some(Self::Oaldoeojhjh), + "NMHIBDFFLFP_NICDLONFLHB" => Some(Self::Nicdlonflhb), + "NMHIBDFFLFP_ODNDPAOLAAD" => Some(Self::Odndpaolaad), + "NMHIBDFFLFP_HFEENHMJIAL" => Some(Self::Hfeenhmjial), + "NMHIBDFFLFP_GHHLOINHPEL" => Some(Self::Ghhloinhpel), + "NMHIBDFFLFP_KBAIPALPMEF" => Some(Self::Kbaipalpmef), + "NMHIBDFFLFP_ILKLJPKBKIK" => Some(Self::Ilkljpkbkik), + "NMHIBDFFLFP_IOINEKJFNCK" => Some(Self::Ioinekjfnck), + "NMHIBDFFLFP_NBCDPKKFJKA" => Some(Self::Nbcdpkkfjka), + "NMHIBDFFLFP_GFJCABGIPOA" => Some(Self::Gfjcabgipoa), + "NMHIBDFFLFP_BDECGOOGBJK" => Some(Self::Bdecgoogbjk), + "NMHIBDFFLFP_JPLADPCCDPK" => Some(Self::Jpladpccdpk), + "NMHIBDFFLFP_CMIPJPILGOK" => Some(Self::Cmipjpilgok), + "NMHIBDFFLFP_BPADEEMKAOH" => Some(Self::Bpadeemkaoh), + "NMHIBDFFLFP_BBKHDHKAMDN" => Some(Self::Bbkhdhkamdn), + "NMHIBDFFLFP_MCGALEBAKOP" => Some(Self::Mcgalebakop), + "NMHIBDFFLFP_CFIACMGJBDE" => Some(Self::Cfiacmgjbde), + "NMHIBDFFLFP_IFJKHMPICCB" => Some(Self::Ifjkhmpiccb), + "NMHIBDFFLFP_OOGDHIFDDEM" => Some(Self::Oogdhifddem), + "NMHIBDFFLFP_CNCNCDPCLMF" => Some(Self::Cncncdpclmf), + "NMHIBDFFLFP_KBLGGAONHEP" => Some(Self::Kblggaonhep), + "NMHIBDFFLFP_LOKDKNHBIJB" => Some(Self::Lokdknhbijb), + "NMHIBDFFLFP_EJLAHLMDAKL" => Some(Self::Ejlahlmdakl), + "NMHIBDFFLFP_GEGENAPIJFK" => Some(Self::Gegenapijfk), + "NMHIBDFFLFP_ICLJFAFIGKG" => Some(Self::Icljfafigkg), + "NMHIBDFFLFP_LINEGJDLLKD" => Some(Self::Linegjdllkd), + "NMHIBDFFLFP_PEPAKOBPNPM" => Some(Self::Pepakobpnpm), + "NMHIBDFFLFP_GIPEOGNIHML" => Some(Self::Gipeognihml), + "NMHIBDFFLFP_KBAGJGKMIPK" => Some(Self::Kbagjgkmipk), + "NMHIBDFFLFP_ADAALEOMMJB" => Some(Self::Adaaleommjb), + "NMHIBDFFLFP_CEHAJDBJMIL" => Some(Self::Cehajdbjmil), + "NMHIBDFFLFP_AJJOLMHHOMO" => Some(Self::Ajjolmhhomo), + "NMHIBDFFLFP_PLONAOLJBDA" => Some(Self::Plonaoljbda), + "NMHIBDFFLFP_DDFJODJBBCH" => Some(Self::Ddfjodjbbch), + "NMHIBDFFLFP_DFFHMHANIAK" => Some(Self::Dffhmhaniak), + "NMHIBDFFLFP_EAAGCMAKPNM" => Some(Self::Eaagcmakpnm), + "NMHIBDFFLFP_LPCEOCKNCNP" => Some(Self::Lpceockncnp), + "NMHIBDFFLFP_BHDANDGEIGP" => Some(Self::Bhdandgeigp), + "NMHIBDFFLFP_IEKHLFHGDDF" => Some(Self::Iekhlfhgddf), + "NMHIBDFFLFP_ELNHEJNEBKD" => Some(Self::Elnhejnebkd), + "NMHIBDFFLFP_LACIOFPPPDL" => Some(Self::Laciofpppdl), + "NMHIBDFFLFP_MDBBDEEOOJM" => Some(Self::Mdbbdeeoojm), + "NMHIBDFFLFP_PCMGCGCIJMC" => Some(Self::Pcmgcgcijmc), + "NMHIBDFFLFP_ECJIEHCIGIL" => Some(Self::Ecjiehcigil), + "NMHIBDFFLFP_ACKPJFPEJOM" => Some(Self::Ackpjfpejom), + "NMHIBDFFLFP_GNMBNDMFNAB" => Some(Self::Gnmbndmfnab), + "NMHIBDFFLFP_DOMCJJHEDON" => Some(Self::Domcjjhedon), + "NMHIBDFFLFP_DMACDEECFDE" => Some(Self::Dmacdeecfde), + "NMHIBDFFLFP_MFDMNCHLFGM" => Some(Self::Mfdmnchlfgm), + "NMHIBDFFLFP_DGEGNFDJPEK" => Some(Self::Dgegnfdjpek), + "NMHIBDFFLFP_LKGNEJPCEDM" => Some(Self::Lkgnejpcedm), + "NMHIBDFFLFP_NHOHMIPELGK" => Some(Self::Nhohmipelgk), + "NMHIBDFFLFP_JNHOLAEMEGN" => Some(Self::Jnholaemegn), + "NMHIBDFFLFP_KJOKDEBDHMA" => Some(Self::Kjokdebdhma), + "NMHIBDFFLFP_HGBFDJNIHOL" => Some(Self::Hgbfdjnihol), + "NMHIBDFFLFP_PJNAOIGOBNC" => Some(Self::Pjnaoigobnc), + "NMHIBDFFLFP_EMPFBCGEGJN" => Some(Self::Empfbcgegjn), + "NMHIBDFFLFP_EADGNCCEHEP" => Some(Self::Eadgnccehep), + "NMHIBDFFLFP_EFDMOKOFADF" => Some(Self::Efdmokofadf), + "NMHIBDFFLFP_KJKBNIDHAEM" => Some(Self::Kjkbnidhaem), + "NMHIBDFFLFP_DJAMBKNEAKF" => Some(Self::Djambkneakf), + "NMHIBDFFLFP_CNIDGGOHNIJ" => Some(Self::Cnidggohnij), + "NMHIBDFFLFP_HKMFJBDFJFF" => Some(Self::Hkmfjbdfjff), + "NMHIBDFFLFP_LJPFFEBOOEF" => Some(Self::Ljpffebooef), + "NMHIBDFFLFP_BMJPHKOGAAM" => Some(Self::Bmjphkogaam), + "NMHIBDFFLFP_EBILKMFFBLA" => Some(Self::Ebilkmffbla), + "NMHIBDFFLFP_MIBHNDEEMKF" => Some(Self::Mibhndeemkf), + "NMHIBDFFLFP_FANALJLJIOP" => Some(Self::Fanaljljiop), + "NMHIBDFFLFP_GENLDHDLJFI" => Some(Self::Genldhdljfi), + "NMHIBDFFLFP_BBFFBNDDDEI" => Some(Self::Bbffbndddei), + "NMHIBDFFLFP_DMGPJJGIIBO" => Some(Self::Dmgpjjgiibo), + "NMHIBDFFLFP_NLFHAEJJGJB" => Some(Self::Nlfhaejjgjb), + "NMHIBDFFLFP_IHAIHCMAODC" => Some(Self::Ihaihcmaodc), + "NMHIBDFFLFP_NOEMKIOGMKN" => Some(Self::Noemkiogmkn), + "NMHIBDFFLFP_EFBNBGBFGID" => Some(Self::Efbnbgbfgid), + "NMHIBDFFLFP_HHHEJNEGGIG" => Some(Self::Hhhejneggig), + "NMHIBDFFLFP_COKFJPELBCK" => Some(Self::Cokfjpelbck), + "NMHIBDFFLFP_HPFADPAFOOE" => Some(Self::Hpfadpafooe), + "NMHIBDFFLFP_KMEGMHJGBLA" => Some(Self::Kmegmhjgbla), + "NMHIBDFFLFP_EEOHBLCJKGE" => Some(Self::Eeohblcjkge), + "NMHIBDFFLFP_FCHDHAMODAH" => Some(Self::Fchdhamodah), + "NMHIBDFFLFP_MFCOGBAJMJP" => Some(Self::Mfcogbajmjp), + "NMHIBDFFLFP_HCLPFJNEANG" => Some(Self::Hclpfjneang), + "NMHIBDFFLFP_DHBBMKLLCOD" => Some(Self::Dhbbmkllcod), + "NMHIBDFFLFP_ELFLKGMDLBE" => Some(Self::Elflkgmdlbe), + "NMHIBDFFLFP_GIAKIKBHLPL" => Some(Self::Giakikbhlpl), + "NMHIBDFFLFP_PFHEODEGJDH" => Some(Self::Pfheodegjdh), + "NMHIBDFFLFP_DIAGBJPELCE" => Some(Self::Diagbjpelce), + "NMHIBDFFLFP_JDKHEDLALDA" => Some(Self::Jdkhedlalda), + "NMHIBDFFLFP_IHKEGCNEPIE" => Some(Self::Ihkegcnepie), + "NMHIBDFFLFP_EOPIMHOIGKL" => Some(Self::Eopimhoigkl), + "NMHIBDFFLFP_KKOLIFKADJK" => Some(Self::Kkolifkadjk), + "NMHIBDFFLFP_OIKMACLNBEJ" => Some(Self::Oikmaclnbej), + "NMHIBDFFLFP_CAICODKGJBH" => Some(Self::Caicodkgjbh), + "NMHIBDFFLFP_CJDKGNMEJGH" => Some(Self::Cjdkgnmejgh), + "NMHIBDFFLFP_EMDIFLPKAKM" => Some(Self::Emdiflpkakm), + "NMHIBDFFLFP_JKNPMPEENHL" => Some(Self::Jknpmpeenhl), + "NMHIBDFFLFP_ELAGHMLJEAI" => Some(Self::Elaghmljeai), + "NMHIBDFFLFP_IGCCFCAKCNP" => Some(Self::Igccfcakcnp), + "NMHIBDFFLFP_EECDNBEPHMD" => Some(Self::Eecdnbephmd), + "NMHIBDFFLFP_LINNIEHMIFK" => Some(Self::Linniehmifk), + "NMHIBDFFLFP_HMEBEABPKAF" => Some(Self::Hmebeabpkaf), + "NMHIBDFFLFP_MOGPPIAJMNF" => Some(Self::Mogppiajmnf), + "NMHIBDFFLFP_JJBOFKNMKLB" => Some(Self::Jjbofknmklb), + "NMHIBDFFLFP_HIBBGNNBDCB" => Some(Self::Hibbgnnbdcb), + "NMHIBDFFLFP_AFFOOLLPIFJ" => Some(Self::Affoollpifj), + "NMHIBDFFLFP_CKJLAJHMNHM" => Some(Self::Ckjlajhmnhm), + "NMHIBDFFLFP_LLLOGOPMMMM" => Some(Self::Lllogopmmmm), + "NMHIBDFFLFP_KMMENHIBMGJ" => Some(Self::Kmmenhibmgj), + "NMHIBDFFLFP_LMECCHBPKOG" => Some(Self::Lmecchbpkog), + "NMHIBDFFLFP_OGIHALPCLNO" => Some(Self::Ogihalpclno), + "NMHIBDFFLFP_OCAELFMPFGF" => Some(Self::Ocaelfmpfgf), + "NMHIBDFFLFP_JIBAJLBOKJH" => Some(Self::Jibajlbokjh), + "NMHIBDFFLFP_ADDLIOKEEGL" => Some(Self::Addliokeegl), + "NMHIBDFFLFP_OAKCGEDIBAO" => Some(Self::Oakcgedibao), + "NMHIBDFFLFP_IKJMGGMBNPH" => Some(Self::Ikjmggmbnph), + "NMHIBDFFLFP_OPCKNJFKNEF" => Some(Self::Opcknjfknef), + "NMHIBDFFLFP_CMLMGAGJAHG" => Some(Self::Cmlmgagjahg), + "NMHIBDFFLFP_MCGOEKJAEDE" => Some(Self::Mcgoekjaede), + "NMHIBDFFLFP_PPMIHHHOLKD" => Some(Self::Ppmihhholkd), + "NMHIBDFFLFP_HFHNJGIKNDH" => Some(Self::Hfhnjgikndh), + "NMHIBDFFLFP_CEBNKOBKALB" => Some(Self::Cebnkobkalb), + "NMHIBDFFLFP_ONODBPNJCBP" => Some(Self::Onodbpnjcbp), + "NMHIBDFFLFP_GGJNIGPPAEN" => Some(Self::Ggjnigppaen), + "NMHIBDFFLFP_ANBKBJLCPGF" => Some(Self::Anbkbjlcpgf), + "NMHIBDFFLFP_GHAAMDCHIBF" => Some(Self::Ghaamdchibf), + "NMHIBDFFLFP_AINGBBDAFLM" => Some(Self::Aingbbdaflm), + "NMHIBDFFLFP_MHPOIIINALA" => Some(Self::Mhpoiiinala), + "NMHIBDFFLFP_JHELJJGCJHC" => Some(Self::Jheljjgcjhc), + "NMHIBDFFLFP_OMJMCBJHLHC" => Some(Self::Omjmcbjhlhc), + "NMHIBDFFLFP_FNPMMHNONPN" => Some(Self::Fnpmmhnonpn), + "NMHIBDFFLFP_CJAOBAEHPPA" => Some(Self::Cjaobaehppa), + "NMHIBDFFLFP_KIPJJKFIHNB" => Some(Self::Kipjjkfihnb), + "NMHIBDFFLFP_AANLHCHPHDL" => Some(Self::Aanlhchphdl), + "NMHIBDFFLFP_LCLJIBIKPBL" => Some(Self::Lcljibikpbl), + "NMHIBDFFLFP_ELPPONCCOKL" => Some(Self::Elpponccokl), + "NMHIBDFFLFP_MELKPBEHMDL" => Some(Self::Melkpbehmdl), + "NMHIBDFFLFP_OLIABILLOMM" => Some(Self::Oliabillomm), + "NMHIBDFFLFP_MGONFCFHMFB" => Some(Self::Mgonfcfhmfb), + "NMHIBDFFLFP_JMJBBFNLPGJ" => Some(Self::Jmjbbfnlpgj), + "NMHIBDFFLFP_DGJEGLIMLGL" => Some(Self::Dgjeglimlgl), + "NMHIBDFFLFP_BHAHMEFIMLC" => Some(Self::Bhahmefimlc), + "NMHIBDFFLFP_LDKODLBMNPD" => Some(Self::Ldkodlbmnpd), + "NMHIBDFFLFP_BNFHOENDHAC" => Some(Self::Bnfhoendhac), + "NMHIBDFFLFP_FIMILDAMCAP" => Some(Self::Fimildamcap), + "NMHIBDFFLFP_HPLKCCPDJJJ" => Some(Self::Hplkccpdjjj), + "NMHIBDFFLFP_KDLNOMHNKGF" => Some(Self::Kdlnomhnkgf), + "NMHIBDFFLFP_EHLPGOLHNLO" => Some(Self::Ehlpgolhnlo), + "NMHIBDFFLFP_JAPEBEELGKL" => Some(Self::Japebeelgkl), + "NMHIBDFFLFP_BMCGNHINNOK" => Some(Self::Bmcgnhinnok), + "NMHIBDFFLFP_KPFCAFIMPEA" => Some(Self::Kpfcafimpea), + "NMHIBDFFLFP_MFOJEKCCGAH" => Some(Self::Mfojekccgah), + "NMHIBDFFLFP_NAJNLIMCPOG" => Some(Self::Najnlimcpog), + "NMHIBDFFLFP_LLFINEMNCIF" => Some(Self::Llfinemncif), + "NMHIBDFFLFP_PMEIAENDGLF" => Some(Self::Pmeiaendglf), + "NMHIBDFFLFP_OBCOPCFEJGH" => Some(Self::Obcopcfejgh), + "NMHIBDFFLFP_IBCMCMFGNGB" => Some(Self::Ibcmcmfgngb), + "NMHIBDFFLFP_PCAMDBHCEMN" => Some(Self::Pcamdbhcemn), + "NMHIBDFFLFP_HOFEBCGMMHM" => Some(Self::Hofebcgmmhm), + "NMHIBDFFLFP_FICLGLNMIKJ" => Some(Self::Ficlglnmikj), + "NMHIBDFFLFP_CPFJEFBIILI" => Some(Self::Cpfjefbiili), + "NMHIBDFFLFP_MBELGOIFINC" => Some(Self::Mbelgoifinc), + "NMHIBDFFLFP_HIDDGBIPFBI" => Some(Self::Hiddgbipfbi), + "NMHIBDFFLFP_CJDHDAFHGOH" => Some(Self::Cjdhdafhgoh), + "NMHIBDFFLFP_GPMADFDHGNJ" => Some(Self::Gpmadfdhgnj), + "NMHIBDFFLFP_KPLGMDAHDPL" => Some(Self::Kplgmdahdpl), + "NMHIBDFFLFP_IAHDFIKFBDB" => Some(Self::Iahdfikfbdb), + "NMHIBDFFLFP_JEOMKDJOOEJ" => Some(Self::Jeomkdjooej), + "NMHIBDFFLFP_DGPHKFJLBCO" => Some(Self::Dgphkfjlbco), + "NMHIBDFFLFP_FIIPFFEFBLE" => Some(Self::Fiipffefble), + "NMHIBDFFLFP_KHBDFJEPKDN" => Some(Self::Khbdfjepkdn), + "NMHIBDFFLFP_LIPFAPECMGO" => Some(Self::Lipfapecmgo), + "NMHIBDFFLFP_HJECEILNKJD" => Some(Self::Hjeceilnkjd), + "NMHIBDFFLFP_MEOOLNGFEKA" => Some(Self::Meoolngfeka), + "NMHIBDFFLFP_GFMEMAMMCAE" => Some(Self::Gfmemammcae), + "NMHIBDFFLFP_GOGPGFBCKCN" => Some(Self::Gogpgfbckcn), + "NMHIBDFFLFP_NKJFOACCAJI" => Some(Self::Nkjfoaccaji), + "NMHIBDFFLFP_CFNFEAFDAEP" => Some(Self::Cfnfeafdaep), + "NMHIBDFFLFP_HBHJNALHIIE" => Some(Self::Hbhjnalhiie), + "NMHIBDFFLFP_JNOGHHOGPNI" => Some(Self::Jnoghhogpni), + "NMHIBDFFLFP_FKGDDEAIAED" => Some(Self::Fkgddeaiaed), + "NMHIBDFFLFP_IOAEFIDHNLK" => Some(Self::Ioaefidhnlk), + "NMHIBDFFLFP_HPNGMMKEFFD" => Some(Self::Hpngmmkeffd), + "NMHIBDFFLFP_EJPMPMJELJN" => Some(Self::Ejpmpmjeljn), + "NMHIBDFFLFP_KBPODEJEGIK" => Some(Self::Kbpodejegik), + "NMHIBDFFLFP_CFELGNLDOHO" => Some(Self::Cfelgnldoho), + "NMHIBDFFLFP_BLHKKMGAPIL" => Some(Self::Blhkkmgapil), + "NMHIBDFFLFP_NGFGGGKFNJC" => Some(Self::Ngfgggkfnjc), + "NMHIBDFFLFP_LOFCFCBFEFJ" => Some(Self::Lofcfcbfefj), + "NMHIBDFFLFP_ILICMKBIOLM" => Some(Self::Ilicmkbiolm), + "NMHIBDFFLFP_DDLMAHDCPCO" => Some(Self::Ddlmahdcpco), + "NMHIBDFFLFP_GDJINMIHPLA" => Some(Self::Gdjinmihpla), + "NMHIBDFFLFP_OEKIEFLKICI" => Some(Self::Oekieflkici), + "NMHIBDFFLFP_DIFAPIONFPA" => Some(Self::Difapionfpa), + "NMHIBDFFLFP_NKEEMDDJOOI" => Some(Self::Nkeemddjooi), + "NMHIBDFFLFP_KFEACCIHCIE" => Some(Self::Kfeaccihcie), + "NMHIBDFFLFP_DJGPMDGGMFC" => Some(Self::Djgpmdggmfc), + "NMHIBDFFLFP_DEOHHBKPPPD" => Some(Self::Deohhbkpppd), + "NMHIBDFFLFP_JJNKGFPLNDP" => Some(Self::Jjnkgfplndp), + "NMHIBDFFLFP_PFNDJJNDMBF" => Some(Self::Pfndjjndmbf), + "NMHIBDFFLFP_CBPLCGJFNEK" => Some(Self::Cbplcgjfnek), + "NMHIBDFFLFP_FOHDBAOKILM" => Some(Self::Fohdbaokilm), + "NMHIBDFFLFP_DPLCCIBCOKO" => Some(Self::Dplccibcoko), + "NMHIBDFFLFP_BLLJMKEFEBL" => Some(Self::Blljmkefebl), + "NMHIBDFFLFP_DBGGGADHOOC" => Some(Self::Dbgggadhooc), + "NMHIBDFFLFP_CFGAMGABKJN" => Some(Self::Cfgamgabkjn), + "NMHIBDFFLFP_OCNJJLIOMAP" => Some(Self::Ocnjjliomap), + "NMHIBDFFLFP_AMAKEPIGJDE" => Some(Self::Amakepigjde), + "NMHIBDFFLFP_FNOAKCOFHDO" => Some(Self::Fnoakcofhdo), + "NMHIBDFFLFP_OPBGJNDBIOE" => Some(Self::Opbgjndbioe), + "NMHIBDFFLFP_PBLBCBDMIAE" => Some(Self::Pblbcbdmiae), + "NMHIBDFFLFP_ANLMFHILBDG" => Some(Self::Anlmfhilbdg), + "NMHIBDFFLFP_HDKAPBKLDEC" => Some(Self::Hdkapbkldec), + "NMHIBDFFLFP_CLANPLBMPIP" => Some(Self::Clanplbmpip), + "NMHIBDFFLFP_CALLBMOJGPL" => Some(Self::Callbmojgpl), + "NMHIBDFFLFP_MHOIAGLLDMI" => Some(Self::Mhoiaglldmi), + "NMHIBDFFLFP_OMOMHMGEGHL" => Some(Self::Omomhmgeghl), + "NMHIBDFFLFP_LDADBEHIKLJ" => Some(Self::Ldadbehiklj), + "NMHIBDFFLFP_LKHBIMHNNCO" => Some(Self::Lkhbimhnnco), + "NMHIBDFFLFP_JBHNLCHBOPE" => Some(Self::Jbhnlchbope), + "NMHIBDFFLFP_NFJMDCJAKFC" => Some(Self::Nfjmdcjakfc), + "NMHIBDFFLFP_JFDKLMEENGH" => Some(Self::Jfdklmeengh), + "NMHIBDFFLFP_AABJMOOPGCF" => Some(Self::Aabjmoopgcf), + "NMHIBDFFLFP_PFCGGFIMJGJ" => Some(Self::Pfcggfimjgj), + "NMHIBDFFLFP_JGHMOELMLIM" => Some(Self::Jghmoelmlim), + "NMHIBDFFLFP_MEMOKLAGAOM" => Some(Self::Memoklagaom), + "NMHIBDFFLFP_PNHNBFMJPHJ" => Some(Self::Pnhnbfmjphj), + "NMHIBDFFLFP_BEOPHOKFHBC" => Some(Self::Beophokfhbc), + "NMHIBDFFLFP_LGJHEELEGFK" => Some(Self::Lgjheelegfk), + "NMHIBDFFLFP_GDEMBGIDHKI" => Some(Self::Gdembgidhki), + "NMHIBDFFLFP_EEHMKJDHFIO" => Some(Self::Eehmkjdhfio), + "NMHIBDFFLFP_CKCBKCFAFHP" => Some(Self::Ckcbkcfafhp), + "NMHIBDFFLFP_MDOAGNCPEJG" => Some(Self::Mdoagncpejg), + "NMHIBDFFLFP_CBGCNILPMMF" => Some(Self::Cbgcnilpmmf), + "NMHIBDFFLFP_NMBJPBDELNG" => Some(Self::Nmbjpbdelng), + "NMHIBDFFLFP_OHLLEJNLKPI" => Some(Self::Ohllejnlkpi), + "NMHIBDFFLFP_KMDKBHMLEBI" => Some(Self::Kmdkbhmlebi), + "NMHIBDFFLFP_OBKOHJDBMOO" => Some(Self::Obkohjdbmoo), + "NMHIBDFFLFP_FBKHMIJEGPM" => Some(Self::Fbkhmijegpm), + "NMHIBDFFLFP_HOCBNLDLLNA" => Some(Self::Hocbnldllna), + "NMHIBDFFLFP_EFAADJLJBEL" => Some(Self::Efaadjljbel), + "NMHIBDFFLFP_LIPKELFNGJF" => Some(Self::Lipkelfngjf), + "NMHIBDFFLFP_OABNBIFIHJA" => Some(Self::Oabnbifihja), + "NMHIBDFFLFP_GFIANAHOILC" => Some(Self::Gfianahoilc), + "NMHIBDFFLFP_FGOAFHLGHGE" => Some(Self::Fgoafhlghge), + "NMHIBDFFLFP_LOFKDKKOOON" => Some(Self::Lofkdkkooon), + "NMHIBDFFLFP_KBOCDBEDNAG" => Some(Self::Kbocdbednag), + "NMHIBDFFLFP_OLNFENEIDPB" => Some(Self::Olnfeneidpb), + "NMHIBDFFLFP_LCHBDOEAMLO" => Some(Self::Lchbdoeamlo), + "NMHIBDFFLFP_GHIAPPFAPMP" => Some(Self::Ghiappfapmp), + "NMHIBDFFLFP_JDFDEBIOLMN" => Some(Self::Jdfdebiolmn), + "NMHIBDFFLFP_JMPBANNMJPL" => Some(Self::Jmpbannmjpl), + "NMHIBDFFLFP_AAMPCPBANMO" => Some(Self::Aampcpbanmo), + "NMHIBDFFLFP_EAAHMHBKEED" => Some(Self::Eaahmhbkeed), + "NMHIBDFFLFP_NBIIDPNFPAI" => Some(Self::Nbiidpnfpai), + "NMHIBDFFLFP_BEIMANJCOKF" => Some(Self::Beimanjcokf), + "NMHIBDFFLFP_HDPACPPGOEC" => Some(Self::Hdpacppgoec), + "NMHIBDFFLFP_HAGKFEFOHAA" => Some(Self::Hagkfefohaa), + "NMHIBDFFLFP_BBGJMNIAIJE" => Some(Self::Bbgjmniaije), + "NMHIBDFFLFP_JOGNNIOADBB" => Some(Self::Jognnioadbb), + "NMHIBDFFLFP_HDNNBPGNBGN" => Some(Self::Hdnnbpgnbgn), + "NMHIBDFFLFP_DPOPLHDNPHJ" => Some(Self::Dpoplhdnphj), + "NMHIBDFFLFP_DJAONCBJPMA" => Some(Self::Djaoncbjpma), + "NMHIBDFFLFP_DIFKGBHDCHA" => Some(Self::Difkgbhdcha), + "NMHIBDFFLFP_GIDLHFDNIEC" => Some(Self::Gidlhfdniec), + "NMHIBDFFLFP_POJELOPHJKG" => Some(Self::Pojelophjkg), + "NMHIBDFFLFP_AINKKDKAEOM" => Some(Self::Ainkkdkaeom), + "NMHIBDFFLFP_GCLBLMFNJLC" => Some(Self::Gclblmfnjlc), + "NMHIBDFFLFP_BDEHOKIPFOF" => Some(Self::Bdehokipfof), + "NMHIBDFFLFP_AHCFGOGOAJL" => Some(Self::Ahcfgogoajl), + "NMHIBDFFLFP_PDJLDCKCCHC" => Some(Self::Pdjldckcchc), + "NMHIBDFFLFP_AIFLPLMOLEA" => Some(Self::Aiflplmolea), + "NMHIBDFFLFP_OBPFGCFMDBP" => Some(Self::Obpfgcfmdbp), + "NMHIBDFFLFP_ODCIFMOODAO" => Some(Self::Odcifmoodao), + "NMHIBDFFLFP_HGLBMADOGCJ" => Some(Self::Hglbmadogcj), + "NMHIBDFFLFP_EBHNIFEDHGD" => Some(Self::Ebhnifedhgd), + "NMHIBDFFLFP_BBBGJPFMFIA" => Some(Self::Bbbgjpfmfia), + "NMHIBDFFLFP_BJFNHNPKELD" => Some(Self::Bjfnhnpkeld), + "NMHIBDFFLFP_JABEDKOGHHO" => Some(Self::Jabedkoghho), + "NMHIBDFFLFP_LJHPNGMPPGH" => Some(Self::Ljhpngmppgh), + "NMHIBDFFLFP_BEIECKBMFMJ" => Some(Self::Beieckbmfmj), + "NMHIBDFFLFP_DKLNCEHECMJ" => Some(Self::Dklncehecmj), + "NMHIBDFFLFP_FIHKGCBKMHG" => Some(Self::Fihkgcbkmhg), + "NMHIBDFFLFP_NMHMKNJCNIG" => Some(Self::Nmhmknjcnig), + "NMHIBDFFLFP_ACKOKLJEKEF" => Some(Self::Ackokljekef), + "NMHIBDFFLFP_NCIDFCPCDFI" => Some(Self::Ncidfcpcdfi), + "NMHIBDFFLFP_GKAFAPNLFHA" => Some(Self::Gkafapnlfha), + "NMHIBDFFLFP_ALKFELLHMLI" => Some(Self::Alkfellhmli), + "NMHIBDFFLFP_POMPFKNMJIP" => Some(Self::Pompfknmjip), + "NMHIBDFFLFP_AOMKPPKLLDD" => Some(Self::Aomkppklldd), + "NMHIBDFFLFP_HKGMDGDHCDJ" => Some(Self::Hkgmdgdhcdj), + "NMHIBDFFLFP_COCKGFOMKFE" => Some(Self::Cockgfomkfe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ikmdeeohkmo { + Iahmilnggka = 0, + Hjeplihcfde = 1, + Gfkngobphba = 2, + Nmdippnmolh = 3, +} +impl Ikmdeeohkmo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Iahmilnggka => "IKMDEEOHKMO_IAHMILNGGKA", + Self::Hjeplihcfde => "IKMDEEOHKMO_HJEPLIHCFDE", + Self::Gfkngobphba => "IKMDEEOHKMO_GFKNGOBPHBA", + Self::Nmdippnmolh => "IKMDEEOHKMO_NMDIPPNMOLH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IKMDEEOHKMO_IAHMILNGGKA" => Some(Self::Iahmilnggka), + "IKMDEEOHKMO_HJEPLIHCFDE" => Some(Self::Hjeplihcfde), + "IKMDEEOHKMO_GFKNGOBPHBA" => Some(Self::Gfkngobphba), + "IKMDEEOHKMO_NMDIPPNMOLH" => Some(Self::Nmdippnmolh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bddnkhdegmf { + Gnbbmkfkloh = 0, + Bnhfinilgfe = 1, +} +impl Bddnkhdegmf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gnbbmkfkloh => "BDDNKHDEGMF_GNBBMKFKLOH", + Self::Bnhfinilgfe => "BDDNKHDEGMF_BNHFINILGFE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BDDNKHDEGMF_GNBBMKFKLOH" => Some(Self::Gnbbmkfkloh), + "BDDNKHDEGMF_BNHFINILGFE" => Some(Self::Bnhfinilgfe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pmghfknchpl { + Lmpbohhiija = 0, + Gnnpdomfflg = 1, +} +impl Pmghfknchpl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lmpbohhiija => "PMGHFKNCHPL_LMPBOHHIIJA", + Self::Gnnpdomfflg => "PMGHFKNCHPL_GNNPDOMFFLG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PMGHFKNCHPL_LMPBOHHIIJA" => Some(Self::Lmpbohhiija), + "PMGHFKNCHPL_GNNPDOMFFLG" => Some(Self::Gnnpdomfflg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hnidepkjlnl { + Plbgkhhfcoa = 0, + Gbpbjbdccdo = 1, + Hbhhalenaif = 2, + Ajjkplnefjl = 3, + Fdjkafnbpkg = 4, + Dcendmkeafd = 5, + Dlapohfokhc = 6, + Dcfknjmejon = 7, + Ggholodoalo = 8, + Aigbdoanijc = 9, + Nbhndalmlbd = 10, + Ppdpjlalabb = 11, + Jjlkokbekof = 12, +} +impl Hnidepkjlnl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Plbgkhhfcoa => "HNIDEPKJLNL_PLBGKHHFCOA", + Self::Gbpbjbdccdo => "HNIDEPKJLNL_GBPBJBDCCDO", + Self::Hbhhalenaif => "HNIDEPKJLNL_HBHHALENAIF", + Self::Ajjkplnefjl => "HNIDEPKJLNL_AJJKPLNEFJL", + Self::Fdjkafnbpkg => "HNIDEPKJLNL_FDJKAFNBPKG", + Self::Dcendmkeafd => "HNIDEPKJLNL_DCENDMKEAFD", + Self::Dlapohfokhc => "HNIDEPKJLNL_DLAPOHFOKHC", + Self::Dcfknjmejon => "HNIDEPKJLNL_DCFKNJMEJON", + Self::Ggholodoalo => "HNIDEPKJLNL_GGHOLODOALO", + Self::Aigbdoanijc => "HNIDEPKJLNL_AIGBDOANIJC", + Self::Nbhndalmlbd => "HNIDEPKJLNL_NBHNDALMLBD", + Self::Ppdpjlalabb => "HNIDEPKJLNL_PPDPJLALABB", + Self::Jjlkokbekof => "HNIDEPKJLNL_JJLKOKBEKOF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HNIDEPKJLNL_PLBGKHHFCOA" => Some(Self::Plbgkhhfcoa), + "HNIDEPKJLNL_GBPBJBDCCDO" => Some(Self::Gbpbjbdccdo), + "HNIDEPKJLNL_HBHHALENAIF" => Some(Self::Hbhhalenaif), + "HNIDEPKJLNL_AJJKPLNEFJL" => Some(Self::Ajjkplnefjl), + "HNIDEPKJLNL_FDJKAFNBPKG" => Some(Self::Fdjkafnbpkg), + "HNIDEPKJLNL_DCENDMKEAFD" => Some(Self::Dcendmkeafd), + "HNIDEPKJLNL_DLAPOHFOKHC" => Some(Self::Dlapohfokhc), + "HNIDEPKJLNL_DCFKNJMEJON" => Some(Self::Dcfknjmejon), + "HNIDEPKJLNL_GGHOLODOALO" => Some(Self::Ggholodoalo), + "HNIDEPKJLNL_AIGBDOANIJC" => Some(Self::Aigbdoanijc), + "HNIDEPKJLNL_NBHNDALMLBD" => Some(Self::Nbhndalmlbd), + "HNIDEPKJLNL_PPDPJLALABB" => Some(Self::Ppdpjlalabb), + "HNIDEPKJLNL_JJLKOKBEKOF" => Some(Self::Jjlkokbekof), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ikhadjfdfpj { + Cpoppcaoejo = 0, + Clobepjcjfa = 1, + Cgicjfdaoap = 2, + Djaaofbfhoh = 3, + Fcclcoafkoh = 4, + Mmcdchbgplh = 5, + Pbdmlanhlfi = 6, + Iaoplgbglpb = 7, + Odhbadobbag = 8, + Aipkldpdpdl = 9, + Eejiifgmmdb = 10, + Ddblebjocpc = 11, + Inolebjgnoo = 12, + Mlnmdiiijnf = 13, + Ikamllmepgh = 14, + Abfgjipfbhl = 15, + Ajclgjdkmhh = 16, +} +impl Ikhadjfdfpj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cpoppcaoejo => "IKHADJFDFPJ_CPOPPCAOEJO", + Self::Clobepjcjfa => "IKHADJFDFPJ_CLOBEPJCJFA", + Self::Cgicjfdaoap => "IKHADJFDFPJ_CGICJFDAOAP", + Self::Djaaofbfhoh => "IKHADJFDFPJ_DJAAOFBFHOH", + Self::Fcclcoafkoh => "IKHADJFDFPJ_FCCLCOAFKOH", + Self::Mmcdchbgplh => "IKHADJFDFPJ_MMCDCHBGPLH", + Self::Pbdmlanhlfi => "IKHADJFDFPJ_PBDMLANHLFI", + Self::Iaoplgbglpb => "IKHADJFDFPJ_IAOPLGBGLPB", + Self::Odhbadobbag => "IKHADJFDFPJ_ODHBADOBBAG", + Self::Aipkldpdpdl => "IKHADJFDFPJ_AIPKLDPDPDL", + Self::Eejiifgmmdb => "IKHADJFDFPJ_EEJIIFGMMDB", + Self::Ddblebjocpc => "IKHADJFDFPJ_DDBLEBJOCPC", + Self::Inolebjgnoo => "IKHADJFDFPJ_INOLEBJGNOO", + Self::Mlnmdiiijnf => "IKHADJFDFPJ_MLNMDIIIJNF", + Self::Ikamllmepgh => "IKHADJFDFPJ_IKAMLLMEPGH", + Self::Abfgjipfbhl => "IKHADJFDFPJ_ABFGJIPFBHL", + Self::Ajclgjdkmhh => "IKHADJFDFPJ_AJCLGJDKMHH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IKHADJFDFPJ_CPOPPCAOEJO" => Some(Self::Cpoppcaoejo), + "IKHADJFDFPJ_CLOBEPJCJFA" => Some(Self::Clobepjcjfa), + "IKHADJFDFPJ_CGICJFDAOAP" => Some(Self::Cgicjfdaoap), + "IKHADJFDFPJ_DJAAOFBFHOH" => Some(Self::Djaaofbfhoh), + "IKHADJFDFPJ_FCCLCOAFKOH" => Some(Self::Fcclcoafkoh), + "IKHADJFDFPJ_MMCDCHBGPLH" => Some(Self::Mmcdchbgplh), + "IKHADJFDFPJ_PBDMLANHLFI" => Some(Self::Pbdmlanhlfi), + "IKHADJFDFPJ_IAOPLGBGLPB" => Some(Self::Iaoplgbglpb), + "IKHADJFDFPJ_ODHBADOBBAG" => Some(Self::Odhbadobbag), + "IKHADJFDFPJ_AIPKLDPDPDL" => Some(Self::Aipkldpdpdl), + "IKHADJFDFPJ_EEJIIFGMMDB" => Some(Self::Eejiifgmmdb), + "IKHADJFDFPJ_DDBLEBJOCPC" => Some(Self::Ddblebjocpc), + "IKHADJFDFPJ_INOLEBJGNOO" => Some(Self::Inolebjgnoo), + "IKHADJFDFPJ_MLNMDIIIJNF" => Some(Self::Mlnmdiiijnf), + "IKHADJFDFPJ_IKAMLLMEPGH" => Some(Self::Ikamllmepgh), + "IKHADJFDFPJ_ABFGJIPFBHL" => Some(Self::Abfgjipfbhl), + "IKHADJFDFPJ_AJCLGJDKMHH" => Some(Self::Ajclgjdkmhh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mlggoejdkdf { + Inkiihichan = 0, + Ahiknflakoh = 1, + Ehbodlbohlo = 2, +} +impl Mlggoejdkdf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Inkiihichan => "MLGGOEJDKDF_INKIIHICHAN", + Self::Ahiknflakoh => "MLGGOEJDKDF_AHIKNFLAKOH", + Self::Ehbodlbohlo => "MLGGOEJDKDF_EHBODLBOHLO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MLGGOEJDKDF_INKIIHICHAN" => Some(Self::Inkiihichan), + "MLGGOEJDKDF_AHIKNFLAKOH" => Some(Self::Ahiknflakoh), + "MLGGOEJDKDF_EHBODLBOHLO" => Some(Self::Ehbodlbohlo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pamighmbgch { + Fnobbagdfad = 0, +} +impl Pamighmbgch { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fnobbagdfad => "PAMIGHMBGCH_FNOBBAGDFAD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PAMIGHMBGCH_FNOBBAGDFAD" => Some(Self::Fnobbagdfad), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pldeihjgjjb { + Kikahapmgag = 0, + Kaccifeagdo = 1, + Cacnccooeca = 2, + Ofdbhjjkpjh = 3, + Kgbnbpbdofn = 4, +} +impl Pldeihjgjjb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kikahapmgag => "PLDEIHJGJJB_KIKAHAPMGAG", + Self::Kaccifeagdo => "PLDEIHJGJJB_KACCIFEAGDO", + Self::Cacnccooeca => "PLDEIHJGJJB_CACNCCOOECA", + Self::Ofdbhjjkpjh => "PLDEIHJGJJB_OFDBHJJKPJH", + Self::Kgbnbpbdofn => "PLDEIHJGJJB_KGBNBPBDOFN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PLDEIHJGJJB_KIKAHAPMGAG" => Some(Self::Kikahapmgag), + "PLDEIHJGJJB_KACCIFEAGDO" => Some(Self::Kaccifeagdo), + "PLDEIHJGJJB_CACNCCOOECA" => Some(Self::Cacnccooeca), + "PLDEIHJGJJB_OFDBHJJKPJH" => Some(Self::Ofdbhjjkpjh), + "PLDEIHJGJJB_KGBNBPBDOFN" => Some(Self::Kgbnbpbdofn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Poapcjepleo { + Dbjkkfkeojh = 0, +} +impl Poapcjepleo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dbjkkfkeojh => "POAPCJEPLEO_DBJKKFKEOJH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "POAPCJEPLEO_DBJKKFKEOJH" => Some(Self::Dbjkkfkeojh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum HollowShopCurrencyType { + HollowShopCurrencyTypeNone = 0, + HollowShopCurrencyTypeCoin = 1, + HollowShopCurrencyTypeCurseCurrency = 2, + HollowShopCurrencyTypeStamina = 3, +} +impl HollowShopCurrencyType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowShopCurrencyTypeNone => { + "HollowShopCurrencyType_HOLLOW_SHOP_CURRENCY_TYPE_NONE" + } + Self::HollowShopCurrencyTypeCoin => { + "HollowShopCurrencyType_HOLLOW_SHOP_CURRENCY_TYPE_COIN" + } + Self::HollowShopCurrencyTypeCurseCurrency => { + "HollowShopCurrencyType_HOLLOW_SHOP_CURRENCY_TYPE_CURSE_CURRENCY" + } + Self::HollowShopCurrencyTypeStamina => { + "HollowShopCurrencyType_HOLLOW_SHOP_CURRENCY_TYPE_STAMINA" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HollowShopCurrencyType_HOLLOW_SHOP_CURRENCY_TYPE_NONE" => { + Some(Self::HollowShopCurrencyTypeNone) + } + "HollowShopCurrencyType_HOLLOW_SHOP_CURRENCY_TYPE_COIN" => { + Some(Self::HollowShopCurrencyTypeCoin) + } + "HollowShopCurrencyType_HOLLOW_SHOP_CURRENCY_TYPE_CURSE_CURRENCY" => { + Some(Self::HollowShopCurrencyTypeCurseCurrency) + } + "HollowShopCurrencyType_HOLLOW_SHOP_CURRENCY_TYPE_STAMINA" => { + Some(Self::HollowShopCurrencyTypeStamina) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eidiaphhcia { + Jiicbeipnop = 0, + Gcaenkghnfp = 1, + Khmodniddef = 2, + Bfgpilblanj = 3, + Hagcdemjnfl = 4, + Ojafcocgjph = 5, + Jgfadjbmanm = 6, + Ppgmmkbdgjo = 7, + Lgiajamceen = 8, + Bhcpolbidml = 9, + Fifjmlknncd = 10, + Flboaooncfi = 11, + Odjfhcamhal = 12, + Cennacfnblo = 13, + Lacdjdilhdg = 14, + Ghgmkkdloej = 15, +} +impl Eidiaphhcia { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jiicbeipnop => "EIDIAPHHCIA_JIICBEIPNOP", + Self::Gcaenkghnfp => "EIDIAPHHCIA_GCAENKGHNFP", + Self::Khmodniddef => "EIDIAPHHCIA_KHMODNIDDEF", + Self::Bfgpilblanj => "EIDIAPHHCIA_BFGPILBLANJ", + Self::Hagcdemjnfl => "EIDIAPHHCIA_HAGCDEMJNFL", + Self::Ojafcocgjph => "EIDIAPHHCIA_OJAFCOCGJPH", + Self::Jgfadjbmanm => "EIDIAPHHCIA_JGFADJBMANM", + Self::Ppgmmkbdgjo => "EIDIAPHHCIA_PPGMMKBDGJO", + Self::Lgiajamceen => "EIDIAPHHCIA_LGIAJAMCEEN", + Self::Bhcpolbidml => "EIDIAPHHCIA_BHCPOLBIDML", + Self::Fifjmlknncd => "EIDIAPHHCIA_FIFJMLKNNCD", + Self::Flboaooncfi => "EIDIAPHHCIA_FLBOAOONCFI", + Self::Odjfhcamhal => "EIDIAPHHCIA_ODJFHCAMHAL", + Self::Cennacfnblo => "EIDIAPHHCIA_CENNACFNBLO", + Self::Lacdjdilhdg => "EIDIAPHHCIA_LACDJDILHDG", + Self::Ghgmkkdloej => "EIDIAPHHCIA_GHGMKKDLOEJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EIDIAPHHCIA_JIICBEIPNOP" => Some(Self::Jiicbeipnop), + "EIDIAPHHCIA_GCAENKGHNFP" => Some(Self::Gcaenkghnfp), + "EIDIAPHHCIA_KHMODNIDDEF" => Some(Self::Khmodniddef), + "EIDIAPHHCIA_BFGPILBLANJ" => Some(Self::Bfgpilblanj), + "EIDIAPHHCIA_HAGCDEMJNFL" => Some(Self::Hagcdemjnfl), + "EIDIAPHHCIA_OJAFCOCGJPH" => Some(Self::Ojafcocgjph), + "EIDIAPHHCIA_JGFADJBMANM" => Some(Self::Jgfadjbmanm), + "EIDIAPHHCIA_PPGMMKBDGJO" => Some(Self::Ppgmmkbdgjo), + "EIDIAPHHCIA_LGIAJAMCEEN" => Some(Self::Lgiajamceen), + "EIDIAPHHCIA_BHCPOLBIDML" => Some(Self::Bhcpolbidml), + "EIDIAPHHCIA_FIFJMLKNNCD" => Some(Self::Fifjmlknncd), + "EIDIAPHHCIA_FLBOAOONCFI" => Some(Self::Flboaooncfi), + "EIDIAPHHCIA_ODJFHCAMHAL" => Some(Self::Odjfhcamhal), + "EIDIAPHHCIA_CENNACFNBLO" => Some(Self::Cennacfnblo), + "EIDIAPHHCIA_LACDJDILHDG" => Some(Self::Lacdjdilhdg), + "EIDIAPHHCIA_GHGMKKDLOEJ" => Some(Self::Ghgmkkdloej), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lniejiibeoe { + TotDefault = 0, + TotCar = 1, + TotBus = 2, + TotSubway = 3, + TotMotor = 4, +} +impl Lniejiibeoe { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::TotDefault => "LNIEJIIBEOE_TOT_DEFAULT", + Self::TotCar => "LNIEJIIBEOE_TOT_CAR", + Self::TotBus => "LNIEJIIBEOE_TOT_BUS", + Self::TotSubway => "LNIEJIIBEOE_TOT_SUBWAY", + Self::TotMotor => "LNIEJIIBEOE_TOT_MOTOR", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LNIEJIIBEOE_TOT_DEFAULT" => Some(Self::TotDefault), + "LNIEJIIBEOE_TOT_CAR" => Some(Self::TotCar), + "LNIEJIIBEOE_TOT_BUS" => Some(Self::TotBus), + "LNIEJIIBEOE_TOT_SUBWAY" => Some(Self::TotSubway), + "LNIEJIIBEOE_TOT_MOTOR" => Some(Self::TotMotor), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jjbbgjoeigk { + Mlgaijfghbd = 0, + Imjjgkbadgo = 1, + Coapefigmla = 2, +} +impl Jjbbgjoeigk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mlgaijfghbd => "JJBBGJOEIGK_MLGAIJFGHBD", + Self::Imjjgkbadgo => "JJBBGJOEIGK_IMJJGKBADGO", + Self::Coapefigmla => "JJBBGJOEIGK_COAPEFIGMLA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JJBBGJOEIGK_MLGAIJFGHBD" => Some(Self::Mlgaijfghbd), + "JJBBGJOEIGK_IMJJGKBADGO" => Some(Self::Imjjgkbadgo), + "JJBBGJOEIGK_COAPEFIGMLA" => Some(Self::Coapefigmla), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cajoodmipei { + EttNone = 0, + EttInit = 1, + EttAdd = 2, + EttEnd = 3, + EttExit = 4, + EttOvernight = 5, + EttEnterSection = 6, + EttBeforeEnter = 7, + EttLeaveSystem = 8, + EttTrackQuest = 9, + EttFinishPhoto = 10, + EttAreaCheck = 11, + EttAcceptRecommend = 12, + EttEnterOva = 13, + EttExitHallGame = 14, + EttPartnerDateTrigger = 15, + EttHallGameFinish = 16, + EttElpisRevivalFinishLevel = 17, + EttElpisGoFishing = 18, + EttRiduBooGameEnd = 19, +} +impl Cajoodmipei { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::EttNone => "CAJOODMIPEI_ETT_NONE", + Self::EttInit => "CAJOODMIPEI_ETT_INIT", + Self::EttAdd => "CAJOODMIPEI_ETT_ADD", + Self::EttEnd => "CAJOODMIPEI_ETT_END", + Self::EttExit => "CAJOODMIPEI_ETT_EXIT", + Self::EttOvernight => "CAJOODMIPEI_ETT_OVERNIGHT", + Self::EttEnterSection => "CAJOODMIPEI_ETT_ENTER_SECTION", + Self::EttBeforeEnter => "CAJOODMIPEI_ETT_BEFORE_ENTER", + Self::EttLeaveSystem => "CAJOODMIPEI_ETT_LEAVE_SYSTEM", + Self::EttTrackQuest => "CAJOODMIPEI_ETT_TRACK_QUEST", + Self::EttFinishPhoto => "CAJOODMIPEI_ETT_FINISH_PHOTO", + Self::EttAreaCheck => "CAJOODMIPEI_ETT_AREA_CHECK", + Self::EttAcceptRecommend => "CAJOODMIPEI_ETT_ACCEPT_RECOMMEND", + Self::EttEnterOva => "CAJOODMIPEI_ETT_ENTER_OVA", + Self::EttExitHallGame => "CAJOODMIPEI_ETT_EXIT_HALL_GAME", + Self::EttPartnerDateTrigger => "CAJOODMIPEI_ETT_PARTNER_DATE_TRIGGER", + Self::EttHallGameFinish => "CAJOODMIPEI_ETT_HALL_GAME_FINISH", + Self::EttElpisRevivalFinishLevel => { + "CAJOODMIPEI_ETT_ELPIS_REVIVAL_FINISH_LEVEL" + } + Self::EttElpisGoFishing => "CAJOODMIPEI_ETT_ELPIS_GO_FISHING", + Self::EttRiduBooGameEnd => "CAJOODMIPEI_ETT_RIDU_BOO_GAME_END", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CAJOODMIPEI_ETT_NONE" => Some(Self::EttNone), + "CAJOODMIPEI_ETT_INIT" => Some(Self::EttInit), + "CAJOODMIPEI_ETT_ADD" => Some(Self::EttAdd), + "CAJOODMIPEI_ETT_END" => Some(Self::EttEnd), + "CAJOODMIPEI_ETT_EXIT" => Some(Self::EttExit), + "CAJOODMIPEI_ETT_OVERNIGHT" => Some(Self::EttOvernight), + "CAJOODMIPEI_ETT_ENTER_SECTION" => Some(Self::EttEnterSection), + "CAJOODMIPEI_ETT_BEFORE_ENTER" => Some(Self::EttBeforeEnter), + "CAJOODMIPEI_ETT_LEAVE_SYSTEM" => Some(Self::EttLeaveSystem), + "CAJOODMIPEI_ETT_TRACK_QUEST" => Some(Self::EttTrackQuest), + "CAJOODMIPEI_ETT_FINISH_PHOTO" => Some(Self::EttFinishPhoto), + "CAJOODMIPEI_ETT_AREA_CHECK" => Some(Self::EttAreaCheck), + "CAJOODMIPEI_ETT_ACCEPT_RECOMMEND" => Some(Self::EttAcceptRecommend), + "CAJOODMIPEI_ETT_ENTER_OVA" => Some(Self::EttEnterOva), + "CAJOODMIPEI_ETT_EXIT_HALL_GAME" => Some(Self::EttExitHallGame), + "CAJOODMIPEI_ETT_PARTNER_DATE_TRIGGER" => Some(Self::EttPartnerDateTrigger), + "CAJOODMIPEI_ETT_HALL_GAME_FINISH" => Some(Self::EttHallGameFinish), + "CAJOODMIPEI_ETT_ELPIS_REVIVAL_FINISH_LEVEL" => { + Some(Self::EttElpisRevivalFinishLevel) + } + "CAJOODMIPEI_ETT_ELPIS_GO_FISHING" => Some(Self::EttElpisGoFishing), + "CAJOODMIPEI_ETT_RIDU_BOO_GAME_END" => Some(Self::EttRiduBooGameEnd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Poambgoekeo { + Alive = 0, + Death = 1, + Hp = 2, + Exist = 3, + Talent = 4, + TrustLevel = 5, + Ban = 6, +} +impl Poambgoekeo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Alive => "POAMBGOEKEO_ALIVE", + Self::Death => "POAMBGOEKEO_DEATH", + Self::Hp => "POAMBGOEKEO_HP", + Self::Exist => "POAMBGOEKEO_EXIST", + Self::Talent => "POAMBGOEKEO_TALENT", + Self::TrustLevel => "POAMBGOEKEO_TRUST_LEVEL", + Self::Ban => "POAMBGOEKEO_BAN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "POAMBGOEKEO_ALIVE" => Some(Self::Alive), + "POAMBGOEKEO_DEATH" => Some(Self::Death), + "POAMBGOEKEO_HP" => Some(Self::Hp), + "POAMBGOEKEO_EXIST" => Some(Self::Exist), + "POAMBGOEKEO_TALENT" => Some(Self::Talent), + "POAMBGOEKEO_TRUST_LEVEL" => Some(Self::TrustLevel), + "POAMBGOEKEO_BAN" => Some(Self::Ban), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mefkpfbjhgl { + Gkkebblokfe = 0, + Jojglkhhkmm = 1, +} +impl Mefkpfbjhgl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gkkebblokfe => "MEFKPFBJHGL_GKKEBBLOKFE", + Self::Jojglkhhkmm => "MEFKPFBJHGL_JOJGLKHHKMM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MEFKPFBJHGL_GKKEBBLOKFE" => Some(Self::Gkkebblokfe), + "MEFKPFBJHGL_JOJGLKHHKMM" => Some(Self::Jojglkhhkmm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ggickneidne { + Ekndnfnaake = 0, + Aaibmnlffpi = 1, + Kpdmohjfkgh = 2, + Mhlcpcjblng = 3, + Bkecnckmbii = 4, + Kbkebifbmna = 5, +} +impl Ggickneidne { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ekndnfnaake => "GGICKNEIDNE_EKNDNFNAAKE", + Self::Aaibmnlffpi => "GGICKNEIDNE_AAIBMNLFFPI", + Self::Kpdmohjfkgh => "GGICKNEIDNE_KPDMOHJFKGH", + Self::Mhlcpcjblng => "GGICKNEIDNE_MHLCPCJBLNG", + Self::Bkecnckmbii => "GGICKNEIDNE_BKECNCKMBII", + Self::Kbkebifbmna => "GGICKNEIDNE_KBKEBIFBMNA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GGICKNEIDNE_EKNDNFNAAKE" => Some(Self::Ekndnfnaake), + "GGICKNEIDNE_AAIBMNLFFPI" => Some(Self::Aaibmnlffpi), + "GGICKNEIDNE_KPDMOHJFKGH" => Some(Self::Kpdmohjfkgh), + "GGICKNEIDNE_MHLCPCJBLNG" => Some(Self::Mhlcpcjblng), + "GGICKNEIDNE_BKECNCKMBII" => Some(Self::Bkecnckmbii), + "GGICKNEIDNE_KBKEBIFBMNA" => Some(Self::Kbkebifbmna), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mlfdhohabaj { + Fcgohfbcbbf = 0, + Kphagpjkldl = 1, + Pekccflnika = 2, +} +impl Mlfdhohabaj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fcgohfbcbbf => "MLFDHOHABAJ_FCGOHFBCBBF", + Self::Kphagpjkldl => "MLFDHOHABAJ_KPHAGPJKLDL", + Self::Pekccflnika => "MLFDHOHABAJ_PEKCCFLNIKA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MLFDHOHABAJ_FCGOHFBCBBF" => Some(Self::Fcgohfbcbbf), + "MLFDHOHABAJ_KPHAGPJKLDL" => Some(Self::Kphagpjkldl), + "MLFDHOHABAJ_PEKCCFLNIKA" => Some(Self::Pekccflnika), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cnbnienbamb { + FleaMarketStateNone = 0, + FleaMarketStateHasLockedAndExchanged = 1, + FleaMarketStateHasLockedAndUnexchanged = 2, + FleaMarketStateAllUnlocked = 3, + FleaMarketStateAllExchanged = 4, +} +impl Cnbnienbamb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::FleaMarketStateNone => "CNBNIENBAMB_FLEA_MARKET_STATE_NONE", + Self::FleaMarketStateHasLockedAndExchanged => { + "CNBNIENBAMB_FLEA_MARKET_STATE_HAS_LOCKED_AND_EXCHANGED" + } + Self::FleaMarketStateHasLockedAndUnexchanged => { + "CNBNIENBAMB_FLEA_MARKET_STATE_HAS_LOCKED_AND_UNEXCHANGED" + } + Self::FleaMarketStateAllUnlocked => { + "CNBNIENBAMB_FLEA_MARKET_STATE_ALL_UNLOCKED" + } + Self::FleaMarketStateAllExchanged => { + "CNBNIENBAMB_FLEA_MARKET_STATE_ALL_EXCHANGED" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CNBNIENBAMB_FLEA_MARKET_STATE_NONE" => Some(Self::FleaMarketStateNone), + "CNBNIENBAMB_FLEA_MARKET_STATE_HAS_LOCKED_AND_EXCHANGED" => { + Some(Self::FleaMarketStateHasLockedAndExchanged) + } + "CNBNIENBAMB_FLEA_MARKET_STATE_HAS_LOCKED_AND_UNEXCHANGED" => { + Some(Self::FleaMarketStateHasLockedAndUnexchanged) + } + "CNBNIENBAMB_FLEA_MARKET_STATE_ALL_UNLOCKED" => { + Some(Self::FleaMarketStateAllUnlocked) + } + "CNBNIENBAMB_FLEA_MARKET_STATE_ALL_EXCHANGED" => { + Some(Self::FleaMarketStateAllExchanged) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ipiolddcade { + Ilpfendbaal = 0, + Fahdekmbcnp = 1, + Mpegmafohbl = 2, + Iofeomcljfa = 3, +} +impl Ipiolddcade { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ilpfendbaal => "IPIOLDDCADE_ILPFENDBAAL", + Self::Fahdekmbcnp => "IPIOLDDCADE_FAHDEKMBCNP", + Self::Mpegmafohbl => "IPIOLDDCADE_MPEGMAFOHBL", + Self::Iofeomcljfa => "IPIOLDDCADE_IOFEOMCLJFA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IPIOLDDCADE_ILPFENDBAAL" => Some(Self::Ilpfendbaal), + "IPIOLDDCADE_FAHDEKMBCNP" => Some(Self::Fahdekmbcnp), + "IPIOLDDCADE_MPEGMAFOHBL" => Some(Self::Mpegmafohbl), + "IPIOLDDCADE_IOFEOMCLJFA" => Some(Self::Iofeomcljfa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bohhkamhhaf { + Hknkldhmfaf = 0, + Ckjkdijlone = 1, + Kgdkfopahpn = 100, + Iojofhnnmnb = 101, + Jebnnglgabi = 102, + Fmecocifpae = 103, +} +impl Bohhkamhhaf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hknkldhmfaf => "BOHHKAMHHAF_HKNKLDHMFAF", + Self::Ckjkdijlone => "BOHHKAMHHAF_CKJKDIJLONE", + Self::Kgdkfopahpn => "BOHHKAMHHAF_KGDKFOPAHPN", + Self::Iojofhnnmnb => "BOHHKAMHHAF_IOJOFHNNMNB", + Self::Jebnnglgabi => "BOHHKAMHHAF_JEBNNGLGABI", + Self::Fmecocifpae => "BOHHKAMHHAF_FMECOCIFPAE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BOHHKAMHHAF_HKNKLDHMFAF" => Some(Self::Hknkldhmfaf), + "BOHHKAMHHAF_CKJKDIJLONE" => Some(Self::Ckjkdijlone), + "BOHHKAMHHAF_KGDKFOPAHPN" => Some(Self::Kgdkfopahpn), + "BOHHKAMHHAF_IOJOFHNNMNB" => Some(Self::Iojofhnnmnb), + "BOHHKAMHHAF_JEBNNGLGABI" => Some(Self::Jebnnglgabi), + "BOHHKAMHHAF_FMECOCIFPAE" => Some(Self::Fmecocifpae), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hkgklnmkhch { + Mhnlnekaclm = 0, + Jiabpjmmdfa = 1, + Pedpipahjbn = 2, + Alpmmgedjln = 3, +} +impl Hkgklnmkhch { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mhnlnekaclm => "HKGKLNMKHCH_MHNLNEKACLM", + Self::Jiabpjmmdfa => "HKGKLNMKHCH_JIABPJMMDFA", + Self::Pedpipahjbn => "HKGKLNMKHCH_PEDPIPAHJBN", + Self::Alpmmgedjln => "HKGKLNMKHCH_ALPMMGEDJLN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HKGKLNMKHCH_MHNLNEKACLM" => Some(Self::Mhnlnekaclm), + "HKGKLNMKHCH_JIABPJMMDFA" => Some(Self::Jiabpjmmdfa), + "HKGKLNMKHCH_PEDPIPAHJBN" => Some(Self::Pedpipahjbn), + "HKGKLNMKHCH_ALPMMGEDJLN" => Some(Self::Alpmmgedjln), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ckdmonglfhb { + Kdljaffoihm = 0, + Jebcekfnloe = 1, + Bnemeacphcc = 2, +} +impl Ckdmonglfhb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kdljaffoihm => "CKDMONGLFHB_KDLJAFFOIHM", + Self::Jebcekfnloe => "CKDMONGLFHB_JEBCEKFNLOE", + Self::Bnemeacphcc => "CKDMONGLFHB_BNEMEACPHCC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CKDMONGLFHB_KDLJAFFOIHM" => Some(Self::Kdljaffoihm), + "CKDMONGLFHB_JEBCEKFNLOE" => Some(Self::Jebcekfnloe), + "CKDMONGLFHB_BNEMEACPHCC" => Some(Self::Bnemeacphcc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Omjahedmhlh { + Denkhgefaea = 0, + Ehgeleckbck = 1, + Hhjnhkhghao = 2, +} +impl Omjahedmhlh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Denkhgefaea => "OMJAHEDMHLH_DENKHGEFAEA", + Self::Ehgeleckbck => "OMJAHEDMHLH_EHGELECKBCK", + Self::Hhjnhkhghao => "OMJAHEDMHLH_HHJNHKHGHAO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OMJAHEDMHLH_DENKHGEFAEA" => Some(Self::Denkhgefaea), + "OMJAHEDMHLH_EHGELECKBCK" => Some(Self::Ehgeleckbck), + "OMJAHEDMHLH_HHJNHKHGHAO" => Some(Self::Hhjnhkhghao), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Agbmelihmcg { + Koklbldogfl = 0, + Aggmgihjnpg = 1, + Locmodgighk = 2, + Mefhkaaokpp = 3, + Jnblgmgpamm = 4, + Jnffolehnkn = 5, +} +impl Agbmelihmcg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Koklbldogfl => "AGBMELIHMCG_KOKLBLDOGFL", + Self::Aggmgihjnpg => "AGBMELIHMCG_AGGMGIHJNPG", + Self::Locmodgighk => "AGBMELIHMCG_LOCMODGIGHK", + Self::Mefhkaaokpp => "AGBMELIHMCG_MEFHKAAOKPP", + Self::Jnblgmgpamm => "AGBMELIHMCG_JNBLGMGPAMM", + Self::Jnffolehnkn => "AGBMELIHMCG_JNFFOLEHNKN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AGBMELIHMCG_KOKLBLDOGFL" => Some(Self::Koklbldogfl), + "AGBMELIHMCG_AGGMGIHJNPG" => Some(Self::Aggmgihjnpg), + "AGBMELIHMCG_LOCMODGIGHK" => Some(Self::Locmodgighk), + "AGBMELIHMCG_MEFHKAAOKPP" => Some(Self::Mefhkaaokpp), + "AGBMELIHMCG_JNBLGMGPAMM" => Some(Self::Jnblgmgpamm), + "AGBMELIHMCG_JNFFOLEHNKN" => Some(Self::Jnffolehnkn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gckemdnopgh { + PlayModeNone = 0, + PlayModeDefault = 1, + PlayModeBigWorld = 2, + PlayModeAbyss = 3, +} +impl Gckemdnopgh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::PlayModeNone => "GCKEMDNOPGH_PLAY_MODE_NONE", + Self::PlayModeDefault => "GCKEMDNOPGH_PLAY_MODE_DEFAULT", + Self::PlayModeBigWorld => "GCKEMDNOPGH_PLAY_MODE_BIG_WORLD", + Self::PlayModeAbyss => "GCKEMDNOPGH_PLAY_MODE_ABYSS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GCKEMDNOPGH_PLAY_MODE_NONE" => Some(Self::PlayModeNone), + "GCKEMDNOPGH_PLAY_MODE_DEFAULT" => Some(Self::PlayModeDefault), + "GCKEMDNOPGH_PLAY_MODE_BIG_WORLD" => Some(Self::PlayModeBigWorld), + "GCKEMDNOPGH_PLAY_MODE_ABYSS" => Some(Self::PlayModeAbyss), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ggmdfigfjjd { + Jeikpnbklgd = 0, + Dddofihmbfo = 1, + Cpcoaacalhb = 2, + Fponjllbeke = 3, + Kbpkfffhgjn = 4, +} +impl Ggmdfigfjjd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jeikpnbklgd => "GGMDFIGFJJD_JEIKPNBKLGD", + Self::Dddofihmbfo => "GGMDFIGFJJD_DDDOFIHMBFO", + Self::Cpcoaacalhb => "GGMDFIGFJJD_CPCOAACALHB", + Self::Fponjllbeke => "GGMDFIGFJJD_FPONJLLBEKE", + Self::Kbpkfffhgjn => "GGMDFIGFJJD_KBPKFFFHGJN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GGMDFIGFJJD_JEIKPNBKLGD" => Some(Self::Jeikpnbklgd), + "GGMDFIGFJJD_DDDOFIHMBFO" => Some(Self::Dddofihmbfo), + "GGMDFIGFJJD_CPCOAACALHB" => Some(Self::Cpcoaacalhb), + "GGMDFIGFJJD_FPONJLLBEKE" => Some(Self::Fponjllbeke), + "GGMDFIGFJJD_KBPKFFFHGJN" => Some(Self::Kbpkfffhgjn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ongpogoennk { + Ogjcbhhpcpe = 0, + Alihccpbcgb = 1, + Dadadmioeaj = 2, + Ahjehpdlmfn = 4, +} +impl Ongpogoennk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ogjcbhhpcpe => "ONGPOGOENNK_OGJCBHHPCPE", + Self::Alihccpbcgb => "ONGPOGOENNK_ALIHCCPBCGB", + Self::Dadadmioeaj => "ONGPOGOENNK_DADADMIOEAJ", + Self::Ahjehpdlmfn => "ONGPOGOENNK_AHJEHPDLMFN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ONGPOGOENNK_OGJCBHHPCPE" => Some(Self::Ogjcbhhpcpe), + "ONGPOGOENNK_ALIHCCPBCGB" => Some(Self::Alihccpbcgb), + "ONGPOGOENNK_DADADMIOEAJ" => Some(Self::Dadadmioeaj), + "ONGPOGOENNK_AHJEHPDLMFN" => Some(Self::Ahjehpdlmfn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gljbjepjcmh { + DoAdd = 0, + DoRemove = 1, +} +impl Gljbjepjcmh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::DoAdd => "GLJBJEPJCMH_DO_ADD", + Self::DoRemove => "GLJBJEPJCMH_DO_REMOVE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GLJBJEPJCMH_DO_ADD" => Some(Self::DoAdd), + "GLJBJEPJCMH_DO_REMOVE" => Some(Self::DoRemove), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bclipnodncf { + Mdgmonblfpf = 0, + Nepaeodlfmk = 1, + Cjhlfofjcee = 2, + Pfpkphddepe = 3, +} +impl Bclipnodncf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mdgmonblfpf => "BCLIPNODNCF_MDGMONBLFPF", + Self::Nepaeodlfmk => "BCLIPNODNCF_NEPAEODLFMK", + Self::Cjhlfofjcee => "BCLIPNODNCF_CJHLFOFJCEE", + Self::Pfpkphddepe => "BCLIPNODNCF_PFPKPHDDEPE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BCLIPNODNCF_MDGMONBLFPF" => Some(Self::Mdgmonblfpf), + "BCLIPNODNCF_NEPAEODLFMK" => Some(Self::Nepaeodlfmk), + "BCLIPNODNCF_CJHLFOFJCEE" => Some(Self::Cjhlfofjcee), + "BCLIPNODNCF_PFPKPHDDEPE" => Some(Self::Pfpkphddepe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum HollowShopType { + HollowShopTypeNone = 0, + HollowShopTypeItem = 1, + HollowShopTypeCard = 2, + HollowShopTypeCurse = 3, + HollowShopTypeHollowItem = 4, + HollowShopTypeDiscount = 5, + HollowShopTypeGachaShop = 6, + HollowShopTypeUpgradeCard = 7, +} +impl HollowShopType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowShopTypeNone => "HollowShopType_HOLLOW_SHOP_TYPE_NONE", + Self::HollowShopTypeItem => "HollowShopType_HOLLOW_SHOP_TYPE_ITEM", + Self::HollowShopTypeCard => "HollowShopType_HOLLOW_SHOP_TYPE_CARD", + Self::HollowShopTypeCurse => "HollowShopType_HOLLOW_SHOP_TYPE_CURSE", + Self::HollowShopTypeHollowItem => { + "HollowShopType_HOLLOW_SHOP_TYPE_HOLLOW_ITEM" + } + Self::HollowShopTypeDiscount => "HollowShopType_HOLLOW_SHOP_TYPE_DISCOUNT", + Self::HollowShopTypeGachaShop => "HollowShopType_HOLLOW_SHOP_TYPE_GACHA_SHOP", + Self::HollowShopTypeUpgradeCard => { + "HollowShopType_HOLLOW_SHOP_TYPE_UPGRADE_CARD" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HollowShopType_HOLLOW_SHOP_TYPE_NONE" => Some(Self::HollowShopTypeNone), + "HollowShopType_HOLLOW_SHOP_TYPE_ITEM" => Some(Self::HollowShopTypeItem), + "HollowShopType_HOLLOW_SHOP_TYPE_CARD" => Some(Self::HollowShopTypeCard), + "HollowShopType_HOLLOW_SHOP_TYPE_CURSE" => Some(Self::HollowShopTypeCurse), + "HollowShopType_HOLLOW_SHOP_TYPE_HOLLOW_ITEM" => { + Some(Self::HollowShopTypeHollowItem) + } + "HollowShopType_HOLLOW_SHOP_TYPE_DISCOUNT" => { + Some(Self::HollowShopTypeDiscount) + } + "HollowShopType_HOLLOW_SHOP_TYPE_GACHA_SHOP" => { + Some(Self::HollowShopTypeGachaShop) + } + "HollowShopType_HOLLOW_SHOP_TYPE_UPGRADE_CARD" => { + Some(Self::HollowShopTypeUpgradeCard) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ffcipodkaao { + Jhbjnhhdgik = 0, + Afdoaenacmk = 1, + Mepfoeafbei = 2, +} +impl Ffcipodkaao { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jhbjnhhdgik => "FFCIPODKAAO_JHBJNHHDGIK", + Self::Afdoaenacmk => "FFCIPODKAAO_AFDOAENACMK", + Self::Mepfoeafbei => "FFCIPODKAAO_MEPFOEAFBEI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FFCIPODKAAO_JHBJNHHDGIK" => Some(Self::Jhbjnhhdgik), + "FFCIPODKAAO_AFDOAENACMK" => Some(Self::Afdoaenacmk), + "FFCIPODKAAO_MEPFOEAFBEI" => Some(Self::Mepfoeafbei), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Olomdobgcgb { + Afngomhfnmi = 0, + Obodcakccnd = 1, + Fengehchofp = 2, +} +impl Olomdobgcgb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Afngomhfnmi => "OLOMDOBGCGB_AFNGOMHFNMI", + Self::Obodcakccnd => "OLOMDOBGCGB_OBODCAKCCND", + Self::Fengehchofp => "OLOMDOBGCGB_FENGEHCHOFP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OLOMDOBGCGB_AFNGOMHFNMI" => Some(Self::Afngomhfnmi), + "OLOMDOBGCGB_OBODCAKCCND" => Some(Self::Obodcakccnd), + "OLOMDOBGCGB_FENGEHCHOFP" => Some(Self::Fengehchofp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dnlflmgekmk { + Kpjdkenjimh = 0, + Gcidlgjblbp = 1, + Mpoclihohmn = 2, +} +impl Dnlflmgekmk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kpjdkenjimh => "DNLFLMGEKMK_KPJDKENJIMH", + Self::Gcidlgjblbp => "DNLFLMGEKMK_GCIDLGJBLBP", + Self::Mpoclihohmn => "DNLFLMGEKMK_MPOCLIHOHMN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DNLFLMGEKMK_KPJDKENJIMH" => Some(Self::Kpjdkenjimh), + "DNLFLMGEKMK_GCIDLGJBLBP" => Some(Self::Gcidlgjblbp), + "DNLFLMGEKMK_MPOCLIHOHMN" => Some(Self::Mpoclihohmn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eiimanonelf { + Lkeoeghgddk = 0, + Mofdomhoeba = 1, + Mnlnldocanf = 2, + Kjdpecbalpi = 3, + Haicnjbieik = 4, + Gjifenlhbkp = 5, + Omffgifpnjo = 6, + Jphckngfblp = 7, + Iileipaneog = 8, + Dncnobjmalb = 9, + Molpgeaeojp = 10, +} +impl Eiimanonelf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lkeoeghgddk => "EIIMANONELF_LKEOEGHGDDK", + Self::Mofdomhoeba => "EIIMANONELF_MOFDOMHOEBA", + Self::Mnlnldocanf => "EIIMANONELF_MNLNLDOCANF", + Self::Kjdpecbalpi => "EIIMANONELF_KJDPECBALPI", + Self::Haicnjbieik => "EIIMANONELF_HAICNJBIEIK", + Self::Gjifenlhbkp => "EIIMANONELF_GJIFENLHBKP", + Self::Omffgifpnjo => "EIIMANONELF_OMFFGIFPNJO", + Self::Jphckngfblp => "EIIMANONELF_JPHCKNGFBLP", + Self::Iileipaneog => "EIIMANONELF_IILEIPANEOG", + Self::Dncnobjmalb => "EIIMANONELF_DNCNOBJMALB", + Self::Molpgeaeojp => "EIIMANONELF_MOLPGEAEOJP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EIIMANONELF_LKEOEGHGDDK" => Some(Self::Lkeoeghgddk), + "EIIMANONELF_MOFDOMHOEBA" => Some(Self::Mofdomhoeba), + "EIIMANONELF_MNLNLDOCANF" => Some(Self::Mnlnldocanf), + "EIIMANONELF_KJDPECBALPI" => Some(Self::Kjdpecbalpi), + "EIIMANONELF_HAICNJBIEIK" => Some(Self::Haicnjbieik), + "EIIMANONELF_GJIFENLHBKP" => Some(Self::Gjifenlhbkp), + "EIIMANONELF_OMFFGIFPNJO" => Some(Self::Omffgifpnjo), + "EIIMANONELF_JPHCKNGFBLP" => Some(Self::Jphckngfblp), + "EIIMANONELF_IILEIPANEOG" => Some(Self::Iileipaneog), + "EIIMANONELF_DNCNOBJMALB" => Some(Self::Dncnobjmalb), + "EIIMANONELF_MOLPGEAEOJP" => Some(Self::Molpgeaeojp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lolpdhflbph { + Ofefaimkecn = 0, + Pfaokgpgejf = 1, + Mcnimcfbjdi = 2, + Fbfnnifdgnk = 3, + Jpoibcancbi = 4, +} +impl Lolpdhflbph { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ofefaimkecn => "LOLPDHFLBPH_OFEFAIMKECN", + Self::Pfaokgpgejf => "LOLPDHFLBPH_PFAOKGPGEJF", + Self::Mcnimcfbjdi => "LOLPDHFLBPH_MCNIMCFBJDI", + Self::Fbfnnifdgnk => "LOLPDHFLBPH_FBFNNIFDGNK", + Self::Jpoibcancbi => "LOLPDHFLBPH_JPOIBCANCBI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LOLPDHFLBPH_OFEFAIMKECN" => Some(Self::Ofefaimkecn), + "LOLPDHFLBPH_PFAOKGPGEJF" => Some(Self::Pfaokgpgejf), + "LOLPDHFLBPH_MCNIMCFBJDI" => Some(Self::Mcnimcfbjdi), + "LOLPDHFLBPH_FBFNNIFDGNK" => Some(Self::Fbfnnifdgnk), + "LOLPDHFLBPH_JPOIBCANCBI" => Some(Self::Jpoibcancbi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Aifiaohfmhe { + RewardTipsTypeNone = 0, + RewardTipsTypeMainCity = 1, +} +impl Aifiaohfmhe { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::RewardTipsTypeNone => "AIFIAOHFMHE_REWARD_TIPS_TYPE_NONE", + Self::RewardTipsTypeMainCity => "AIFIAOHFMHE_REWARD_TIPS_TYPE_MAIN_CITY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AIFIAOHFMHE_REWARD_TIPS_TYPE_NONE" => Some(Self::RewardTipsTypeNone), + "AIFIAOHFMHE_REWARD_TIPS_TYPE_MAIN_CITY" => { + Some(Self::RewardTipsTypeMainCity) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dkaachbajna { + CharacterTypeMale = 0, + CharacterTypeFemale = 1, + CharacterTypeExchange = 2, + CharacterTypeMain = 3, + CharacterTypeVice = 4, + CharacterTypeAvatar = 5, +} +impl Dkaachbajna { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::CharacterTypeMale => "DKAACHBAJNA_CHARACTER_TYPE_MALE", + Self::CharacterTypeFemale => "DKAACHBAJNA_CHARACTER_TYPE_FEMALE", + Self::CharacterTypeExchange => "DKAACHBAJNA_CHARACTER_TYPE_EXCHANGE", + Self::CharacterTypeMain => "DKAACHBAJNA_CHARACTER_TYPE_MAIN", + Self::CharacterTypeVice => "DKAACHBAJNA_CHARACTER_TYPE_VICE", + Self::CharacterTypeAvatar => "DKAACHBAJNA_CHARACTER_TYPE_AVATAR", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DKAACHBAJNA_CHARACTER_TYPE_MALE" => Some(Self::CharacterTypeMale), + "DKAACHBAJNA_CHARACTER_TYPE_FEMALE" => Some(Self::CharacterTypeFemale), + "DKAACHBAJNA_CHARACTER_TYPE_EXCHANGE" => Some(Self::CharacterTypeExchange), + "DKAACHBAJNA_CHARACTER_TYPE_MAIN" => Some(Self::CharacterTypeMain), + "DKAACHBAJNA_CHARACTER_TYPE_VICE" => Some(Self::CharacterTypeVice), + "DKAACHBAJNA_CHARACTER_TYPE_AVATAR" => Some(Self::CharacterTypeAvatar), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eefbkeklhof { + Nhcmoeajngl = 0, + Ikkagjipgfg = 1, + Bcpajfdihhk = 2, +} +impl Eefbkeklhof { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nhcmoeajngl => "EEFBKEKLHOF_NHCMOEAJNGL", + Self::Ikkagjipgfg => "EEFBKEKLHOF_IKKAGJIPGFG", + Self::Bcpajfdihhk => "EEFBKEKLHOF_BCPAJFDIHHK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EEFBKEKLHOF_NHCMOEAJNGL" => Some(Self::Nhcmoeajngl), + "EEFBKEKLHOF_IKKAGJIPGFG" => Some(Self::Ikkagjipgfg), + "EEFBKEKLHOF_BCPAJFDIHHK" => Some(Self::Bcpajfdihhk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ihdddedbkkh { + Mepnahhahip = 0, + Choabecddoc = 1, + Bcpaphcjgph = 2, +} +impl Ihdddedbkkh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mepnahhahip => "IHDDDEDBKKH_MEPNAHHAHIP", + Self::Choabecddoc => "IHDDDEDBKKH_CHOABECDDOC", + Self::Bcpaphcjgph => "IHDDDEDBKKH_BCPAPHCJGPH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IHDDDEDBKKH_MEPNAHHAHIP" => Some(Self::Mepnahhahip), + "IHDDDEDBKKH_CHOABECDDOC" => Some(Self::Choabecddoc), + "IHDDDEDBKKH_BCPAPHCJGPH" => Some(Self::Bcpaphcjgph), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dkgpakdnffc { + AreaCameraTypeNone = 0, + AreaCameraTypeFocus = 1, + AreaCameraTypeCancelAfterFocus = 2, + AreaCameraTypeBackToPlayer = 3, +} +impl Dkgpakdnffc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::AreaCameraTypeNone => "DKGPAKDNFFC_AREA_CAMERA_TYPE_NONE", + Self::AreaCameraTypeFocus => "DKGPAKDNFFC_AREA_CAMERA_TYPE_FOCUS", + Self::AreaCameraTypeCancelAfterFocus => { + "DKGPAKDNFFC_AREA_CAMERA_TYPE_CANCEL_AFTER_FOCUS" + } + Self::AreaCameraTypeBackToPlayer => { + "DKGPAKDNFFC_AREA_CAMERA_TYPE_BACK_TO_PLAYER" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DKGPAKDNFFC_AREA_CAMERA_TYPE_NONE" => Some(Self::AreaCameraTypeNone), + "DKGPAKDNFFC_AREA_CAMERA_TYPE_FOCUS" => Some(Self::AreaCameraTypeFocus), + "DKGPAKDNFFC_AREA_CAMERA_TYPE_CANCEL_AFTER_FOCUS" => { + Some(Self::AreaCameraTypeCancelAfterFocus) + } + "DKGPAKDNFFC_AREA_CAMERA_TYPE_BACK_TO_PLAYER" => { + Some(Self::AreaCameraTypeBackToPlayer) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bnfdjpmnfga { + Epcfkagldch = 0, + Ijbiflnoeba = 1, + Ijfcoclkomn = 2, + Acdcdebhndf = 3, + Ipiabdmocjg = 4, + Aneoemklfbh = 5, + Plchehnnjjg = 6, +} +impl Bnfdjpmnfga { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Epcfkagldch => "BNFDJPMNFGA_EPCFKAGLDCH", + Self::Ijbiflnoeba => "BNFDJPMNFGA_IJBIFLNOEBA", + Self::Ijfcoclkomn => "BNFDJPMNFGA_IJFCOCLKOMN", + Self::Acdcdebhndf => "BNFDJPMNFGA_ACDCDEBHNDF", + Self::Ipiabdmocjg => "BNFDJPMNFGA_IPIABDMOCJG", + Self::Aneoemklfbh => "BNFDJPMNFGA_ANEOEMKLFBH", + Self::Plchehnnjjg => "BNFDJPMNFGA_PLCHEHNNJJG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BNFDJPMNFGA_EPCFKAGLDCH" => Some(Self::Epcfkagldch), + "BNFDJPMNFGA_IJBIFLNOEBA" => Some(Self::Ijbiflnoeba), + "BNFDJPMNFGA_IJFCOCLKOMN" => Some(Self::Ijfcoclkomn), + "BNFDJPMNFGA_ACDCDEBHNDF" => Some(Self::Acdcdebhndf), + "BNFDJPMNFGA_IPIABDMOCJG" => Some(Self::Ipiabdmocjg), + "BNFDJPMNFGA_ANEOEMKLFBH" => Some(Self::Aneoemklfbh), + "BNFDJPMNFGA_PLCHEHNNJJG" => Some(Self::Plchehnnjjg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fbibbpjjjli { + Bljpmjcejja = 0, + Bdbdpgadjld = 1, + Idjbpkhkbap = 2, + Iemgpggnllp = 3, +} +impl Fbibbpjjjli { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bljpmjcejja => "FBIBBPJJJLI_BLJPMJCEJJA", + Self::Bdbdpgadjld => "FBIBBPJJJLI_BDBDPGADJLD", + Self::Idjbpkhkbap => "FBIBBPJJJLI_IDJBPKHKBAP", + Self::Iemgpggnllp => "FBIBBPJJJLI_IEMGPGGNLLP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FBIBBPJJJLI_BLJPMJCEJJA" => Some(Self::Bljpmjcejja), + "FBIBBPJJJLI_BDBDPGADJLD" => Some(Self::Bdbdpgadjld), + "FBIBBPJJJLI_IDJBPKHKBAP" => Some(Self::Idjbpkhkbap), + "FBIBBPJJJLI_IEMGPGGNLLP" => Some(Self::Iemgpggnllp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Alnmoleghlo { + ConveyerBelt = 0, + Spring = 1, + PushBackOnce = 2, + PushAsPlayer = 3, + PushDistance = 4, +} +impl Alnmoleghlo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ConveyerBelt => "ALNMOLEGHLO_CONVEYER_BELT", + Self::Spring => "ALNMOLEGHLO_SPRING", + Self::PushBackOnce => "ALNMOLEGHLO_PUSH_BACK_ONCE", + Self::PushAsPlayer => "ALNMOLEGHLO_PUSH_AS_PLAYER", + Self::PushDistance => "ALNMOLEGHLO_PUSH_DISTANCE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ALNMOLEGHLO_CONVEYER_BELT" => Some(Self::ConveyerBelt), + "ALNMOLEGHLO_SPRING" => Some(Self::Spring), + "ALNMOLEGHLO_PUSH_BACK_ONCE" => Some(Self::PushBackOnce), + "ALNMOLEGHLO_PUSH_AS_PLAYER" => Some(Self::PushAsPlayer), + "ALNMOLEGHLO_PUSH_DISTANCE" => Some(Self::PushDistance), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eonmndallmo { + Kikijcanmdn = 0, + Cfmpgpaipje = 1, + Gpipkljppmk = 2, + Fkkobehfhfh = 3, + Apdmbaacoak = 4, +} +impl Eonmndallmo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kikijcanmdn => "EONMNDALLMO_KIKIJCANMDN", + Self::Cfmpgpaipje => "EONMNDALLMO_CFMPGPAIPJE", + Self::Gpipkljppmk => "EONMNDALLMO_GPIPKLJPPMK", + Self::Fkkobehfhfh => "EONMNDALLMO_FKKOBEHFHFH", + Self::Apdmbaacoak => "EONMNDALLMO_APDMBAACOAK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EONMNDALLMO_KIKIJCANMDN" => Some(Self::Kikijcanmdn), + "EONMNDALLMO_CFMPGPAIPJE" => Some(Self::Cfmpgpaipje), + "EONMNDALLMO_GPIPKLJPPMK" => Some(Self::Gpipkljppmk), + "EONMNDALLMO_FKKOBEHFHFH" => Some(Self::Fkkobehfhfh), + "EONMNDALLMO_APDMBAACOAK" => Some(Self::Apdmbaacoak), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bmnhihmgkfh { + AreaCameraTriggerTypeNone = 0, + AreaCameraTriggerTypeEnter = 1, + AreaCameraTriggerTypeUpdate = 2, + AreaCameraTriggerTypeExit = 3, +} +impl Bmnhihmgkfh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::AreaCameraTriggerTypeNone => { + "BMNHIHMGKFH_AREA_CAMERA_TRIGGER_TYPE_NONE" + } + Self::AreaCameraTriggerTypeEnter => { + "BMNHIHMGKFH_AREA_CAMERA_TRIGGER_TYPE_ENTER" + } + Self::AreaCameraTriggerTypeUpdate => { + "BMNHIHMGKFH_AREA_CAMERA_TRIGGER_TYPE_UPDATE" + } + Self::AreaCameraTriggerTypeExit => { + "BMNHIHMGKFH_AREA_CAMERA_TRIGGER_TYPE_EXIT" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BMNHIHMGKFH_AREA_CAMERA_TRIGGER_TYPE_NONE" => { + Some(Self::AreaCameraTriggerTypeNone) + } + "BMNHIHMGKFH_AREA_CAMERA_TRIGGER_TYPE_ENTER" => { + Some(Self::AreaCameraTriggerTypeEnter) + } + "BMNHIHMGKFH_AREA_CAMERA_TRIGGER_TYPE_UPDATE" => { + Some(Self::AreaCameraTriggerTypeUpdate) + } + "BMNHIHMGKFH_AREA_CAMERA_TRIGGER_TYPE_EXIT" => { + Some(Self::AreaCameraTriggerTypeExit) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Edjhclckacp { + Nnkfconljne = 0, +} +impl Edjhclckacp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nnkfconljne => "EDJHCLCKACP_NNKFCONLJNE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EDJHCLCKACP_NNKFCONLJNE" => Some(Self::Nnkfconljne), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fddkgfibpjg { + Ienbopockog = 0, + Ankcpapfmha = 1, + Jjmankdelek = 2, + Pjgmdpbcadc = 3, + Dchpbppdgkk = 4, + Gkglkippilo = 5, + Apgpapmoomj = 6, + Okoibbdbgnc = 7, + Lnoahimokjn = 8, + Nlnipcaecag = 9, + Agodnmbblne = 10, + Hnmpemopmlm = 11, + Adnbbncfaml = 12, +} +impl Fddkgfibpjg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ienbopockog => "FDDKGFIBPJG_IENBOPOCKOG", + Self::Ankcpapfmha => "FDDKGFIBPJG_ANKCPAPFMHA", + Self::Jjmankdelek => "FDDKGFIBPJG_JJMANKDELEK", + Self::Pjgmdpbcadc => "FDDKGFIBPJG_PJGMDPBCADC", + Self::Dchpbppdgkk => "FDDKGFIBPJG_DCHPBPPDGKK", + Self::Gkglkippilo => "FDDKGFIBPJG_GKGLKIPPILO", + Self::Apgpapmoomj => "FDDKGFIBPJG_APGPAPMOOMJ", + Self::Okoibbdbgnc => "FDDKGFIBPJG_OKOIBBDBGNC", + Self::Lnoahimokjn => "FDDKGFIBPJG_LNOAHIMOKJN", + Self::Nlnipcaecag => "FDDKGFIBPJG_NLNIPCAECAG", + Self::Agodnmbblne => "FDDKGFIBPJG_AGODNMBBLNE", + Self::Hnmpemopmlm => "FDDKGFIBPJG_HNMPEMOPMLM", + Self::Adnbbncfaml => "FDDKGFIBPJG_ADNBBNCFAML", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FDDKGFIBPJG_IENBOPOCKOG" => Some(Self::Ienbopockog), + "FDDKGFIBPJG_ANKCPAPFMHA" => Some(Self::Ankcpapfmha), + "FDDKGFIBPJG_JJMANKDELEK" => Some(Self::Jjmankdelek), + "FDDKGFIBPJG_PJGMDPBCADC" => Some(Self::Pjgmdpbcadc), + "FDDKGFIBPJG_DCHPBPPDGKK" => Some(Self::Dchpbppdgkk), + "FDDKGFIBPJG_GKGLKIPPILO" => Some(Self::Gkglkippilo), + "FDDKGFIBPJG_APGPAPMOOMJ" => Some(Self::Apgpapmoomj), + "FDDKGFIBPJG_OKOIBBDBGNC" => Some(Self::Okoibbdbgnc), + "FDDKGFIBPJG_LNOAHIMOKJN" => Some(Self::Lnoahimokjn), + "FDDKGFIBPJG_NLNIPCAECAG" => Some(Self::Nlnipcaecag), + "FDDKGFIBPJG_AGODNMBBLNE" => Some(Self::Agodnmbblne), + "FDDKGFIBPJG_HNMPEMOPMLM" => Some(Self::Hnmpemopmlm), + "FDDKGFIBPJG_ADNBBNCFAML" => Some(Self::Adnbbncfaml), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hcipnnkleah { + Gkemfbgigbk = 0, + Kdapfnledll = 1, + Chmfeeffbma = 2, +} +impl Hcipnnkleah { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gkemfbgigbk => "HCIPNNKLEAH_GKEMFBGIGBK", + Self::Kdapfnledll => "HCIPNNKLEAH_KDAPFNLEDLL", + Self::Chmfeeffbma => "HCIPNNKLEAH_CHMFEEFFBMA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HCIPNNKLEAH_GKEMFBGIGBK" => Some(Self::Gkemfbgigbk), + "HCIPNNKLEAH_KDAPFNLEDLL" => Some(Self::Kdapfnledll), + "HCIPNNKLEAH_CHMFEEFFBMA" => Some(Self::Chmfeeffbma), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fdiecdnjohh { + Glkjalhdacd = 0, + Pbkdjfheecl = 1, + Gookdnmbfbn = 2, + Daigaildldp = 3, +} +impl Fdiecdnjohh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Glkjalhdacd => "FDIECDNJOHH_GLKJALHDACD", + Self::Pbkdjfheecl => "FDIECDNJOHH_PBKDJFHEECL", + Self::Gookdnmbfbn => "FDIECDNJOHH_GOOKDNMBFBN", + Self::Daigaildldp => "FDIECDNJOHH_DAIGAILDLDP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FDIECDNJOHH_GLKJALHDACD" => Some(Self::Glkjalhdacd), + "FDIECDNJOHH_PBKDJFHEECL" => Some(Self::Pbkdjfheecl), + "FDIECDNJOHH_GOOKDNMBFBN" => Some(Self::Gookdnmbfbn), + "FDIECDNJOHH_DAIGAILDLDP" => Some(Self::Daigaildldp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ecfeahgfhfk { + Faejhkkmdfe = 0, + Ikafbhdbdbp = 1, + Glkgnfmlgdb = 2, + Ccogciibicd = 3, +} +impl Ecfeahgfhfk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Faejhkkmdfe => "ECFEAHGFHFK_FAEJHKKMDFE", + Self::Ikafbhdbdbp => "ECFEAHGFHFK_IKAFBHDBDBP", + Self::Glkgnfmlgdb => "ECFEAHGFHFK_GLKGNFMLGDB", + Self::Ccogciibicd => "ECFEAHGFHFK_CCOGCIIBICD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ECFEAHGFHFK_FAEJHKKMDFE" => Some(Self::Faejhkkmdfe), + "ECFEAHGFHFK_IKAFBHDBDBP" => Some(Self::Ikafbhdbdbp), + "ECFEAHGFHFK_GLKGNFMLGDB" => Some(Self::Glkgnfmlgdb), + "ECFEAHGFHFK_CCOGCIIBICD" => Some(Self::Ccogciibicd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dgnjelepnlg { + Lbbeadfjdbb = 0, + Ldniinhhbaj = 1, +} +impl Dgnjelepnlg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lbbeadfjdbb => "DGNJELEPNLG_LBBEADFJDBB", + Self::Ldniinhhbaj => "DGNJELEPNLG_LDNIINHHBAJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DGNJELEPNLG_LBBEADFJDBB" => Some(Self::Lbbeadfjdbb), + "DGNJELEPNLG_LDNIINHHBAJ" => Some(Self::Ldniinhhbaj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nhmmnfipcjj { + Eiinciakeik = 0, + Mojjnekgbcf = 1, + Pjjajlheplj = 2, + Dppemnednbn = 3, +} +impl Nhmmnfipcjj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Eiinciakeik => "NHMMNFIPCJJ_EIINCIAKEIK", + Self::Mojjnekgbcf => "NHMMNFIPCJJ_MOJJNEKGBCF", + Self::Pjjajlheplj => "NHMMNFIPCJJ_PJJAJLHEPLJ", + Self::Dppemnednbn => "NHMMNFIPCJJ_DPPEMNEDNBN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NHMMNFIPCJJ_EIINCIAKEIK" => Some(Self::Eiinciakeik), + "NHMMNFIPCJJ_MOJJNEKGBCF" => Some(Self::Mojjnekgbcf), + "NHMMNFIPCJJ_PJJAJLHEPLJ" => Some(Self::Pjjajlheplj), + "NHMMNFIPCJJ_DPPEMNEDNBN" => Some(Self::Dppemnednbn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ahjdalaaaan { + Kligicgdoia = 0, + Liolnagfkhp = 1, + Lbkhkdcblca = 2, + Oooddgjoakj = 3, +} +impl Ahjdalaaaan { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kligicgdoia => "AHJDALAAAAN_KLIGICGDOIA", + Self::Liolnagfkhp => "AHJDALAAAAN_LIOLNAGFKHP", + Self::Lbkhkdcblca => "AHJDALAAAAN_LBKHKDCBLCA", + Self::Oooddgjoakj => "AHJDALAAAAN_OOODDGJOAKJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AHJDALAAAAN_KLIGICGDOIA" => Some(Self::Kligicgdoia), + "AHJDALAAAAN_LIOLNAGFKHP" => Some(Self::Liolnagfkhp), + "AHJDALAAAAN_LBKHKDCBLCA" => Some(Self::Lbkhkdcblca), + "AHJDALAAAAN_OOODDGJOAKJ" => Some(Self::Oooddgjoakj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bemadgkodkh { + None = 0, + FloatValue = 3, + StringValue = 4, + IntValue = 5, + UintValue = 6, +} +impl Bemadgkodkh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::None => "BEMADGKODKH_None", + Self::FloatValue => "BEMADGKODKH_FloatValue", + Self::StringValue => "BEMADGKODKH_StringValue", + Self::IntValue => "BEMADGKODKH_IntValue", + Self::UintValue => "BEMADGKODKH_UintValue", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BEMADGKODKH_None" => Some(Self::None), + "BEMADGKODKH_FloatValue" => Some(Self::FloatValue), + "BEMADGKODKH_StringValue" => Some(Self::StringValue), + "BEMADGKODKH_IntValue" => Some(Self::IntValue), + "BEMADGKODKH_UintValue" => Some(Self::UintValue), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kcgjlgfoikg { + Geooolgclcj = 0, + Cdelkbgipke = 1, + Polnaoipkdl = 2, + Pgioepnoaoh = 3, + Icfgbaampli = 4, + Gkgmfoceocd = 5, + Dbclbilmamp = 6, + Enelahibije = 7, + Eapfefbcbbe = 8, + Oholfflnmln = 9, + Bkdjhfnciai = 10, + Cgojbdhhbee = 11, +} +impl Kcgjlgfoikg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Geooolgclcj => "KCGJLGFOIKG_GEOOOLGCLCJ", + Self::Cdelkbgipke => "KCGJLGFOIKG_CDELKBGIPKE", + Self::Polnaoipkdl => "KCGJLGFOIKG_POLNAOIPKDL", + Self::Pgioepnoaoh => "KCGJLGFOIKG_PGIOEPNOAOH", + Self::Icfgbaampli => "KCGJLGFOIKG_ICFGBAAMPLI", + Self::Gkgmfoceocd => "KCGJLGFOIKG_GKGMFOCEOCD", + Self::Dbclbilmamp => "KCGJLGFOIKG_DBCLBILMAMP", + Self::Enelahibije => "KCGJLGFOIKG_ENELAHIBIJE", + Self::Eapfefbcbbe => "KCGJLGFOIKG_EAPFEFBCBBE", + Self::Oholfflnmln => "KCGJLGFOIKG_OHOLFFLNMLN", + Self::Bkdjhfnciai => "KCGJLGFOIKG_BKDJHFNCIAI", + Self::Cgojbdhhbee => "KCGJLGFOIKG_CGOJBDHHBEE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KCGJLGFOIKG_GEOOOLGCLCJ" => Some(Self::Geooolgclcj), + "KCGJLGFOIKG_CDELKBGIPKE" => Some(Self::Cdelkbgipke), + "KCGJLGFOIKG_POLNAOIPKDL" => Some(Self::Polnaoipkdl), + "KCGJLGFOIKG_PGIOEPNOAOH" => Some(Self::Pgioepnoaoh), + "KCGJLGFOIKG_ICFGBAAMPLI" => Some(Self::Icfgbaampli), + "KCGJLGFOIKG_GKGMFOCEOCD" => Some(Self::Gkgmfoceocd), + "KCGJLGFOIKG_DBCLBILMAMP" => Some(Self::Dbclbilmamp), + "KCGJLGFOIKG_ENELAHIBIJE" => Some(Self::Enelahibije), + "KCGJLGFOIKG_EAPFEFBCBBE" => Some(Self::Eapfefbcbbe), + "KCGJLGFOIKG_OHOLFFLNMLN" => Some(Self::Oholfflnmln), + "KCGJLGFOIKG_BKDJHFNCIAI" => Some(Self::Bkdjhfnciai), + "KCGJLGFOIKG_CGOJBDHHBEE" => Some(Self::Cgojbdhhbee), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ofdemcmnlle { + Kieoekpagpc = 0, + Kenbghghiag = 1, + Jnafanpeoen = 2, +} +impl Ofdemcmnlle { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kieoekpagpc => "OFDEMCMNLLE_KIEOEKPAGPC", + Self::Kenbghghiag => "OFDEMCMNLLE_KENBGHGHIAG", + Self::Jnafanpeoen => "OFDEMCMNLLE_JNAFANPEOEN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OFDEMCMNLLE_KIEOEKPAGPC" => Some(Self::Kieoekpagpc), + "OFDEMCMNLLE_KENBGHGHIAG" => Some(Self::Kenbghghiag), + "OFDEMCMNLLE_JNAFANPEOEN" => Some(Self::Jnafanpeoen), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pldoohpdado { + Ngliebejnjk = 0, +} +impl Pldoohpdado { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ngliebejnjk => "PLDOOHPDADO_NGLIEBEJNJK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PLDOOHPDADO_NGLIEBEJNJK" => Some(Self::Ngliebejnjk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gjjamebkeom { + Fbkcihoifak = 0, + Hpoomaokfpf = 1, + Bgaplnmiffi = 2, + Ejmpkakpenb = 3, +} +impl Gjjamebkeom { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fbkcihoifak => "GJJAMEBKEOM_FBKCIHOIFAK", + Self::Hpoomaokfpf => "GJJAMEBKEOM_HPOOMAOKFPF", + Self::Bgaplnmiffi => "GJJAMEBKEOM_BGAPLNMIFFI", + Self::Ejmpkakpenb => "GJJAMEBKEOM_EJMPKAKPENB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GJJAMEBKEOM_FBKCIHOIFAK" => Some(Self::Fbkcihoifak), + "GJJAMEBKEOM_HPOOMAOKFPF" => Some(Self::Hpoomaokfpf), + "GJJAMEBKEOM_BGAPLNMIFFI" => Some(Self::Bgaplnmiffi), + "GJJAMEBKEOM_EJMPKAKPENB" => Some(Self::Ejmpkakpenb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ebnhiklohfe { + Cfpkeldpfgn = 0, +} +impl Ebnhiklohfe { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cfpkeldpfgn => "EBNHIKLOHFE_CFPKELDPFGN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EBNHIKLOHFE_CFPKELDPFGN" => Some(Self::Cfpkeldpfgn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kfihialobkb { + Hbdcclcmpph = 0, + Igadohieggm = 1, + Fdapigeebec = 2, + Ngamphhldph = 3, +} +impl Kfihialobkb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hbdcclcmpph => "KFIHIALOBKB_HBDCCLCMPPH", + Self::Igadohieggm => "KFIHIALOBKB_IGADOHIEGGM", + Self::Fdapigeebec => "KFIHIALOBKB_FDAPIGEEBEC", + Self::Ngamphhldph => "KFIHIALOBKB_NGAMPHHLDPH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KFIHIALOBKB_HBDCCLCMPPH" => Some(Self::Hbdcclcmpph), + "KFIHIALOBKB_IGADOHIEGGM" => Some(Self::Igadohieggm), + "KFIHIALOBKB_FDAPIGEEBEC" => Some(Self::Fdapigeebec), + "KFIHIALOBKB_NGAMPHHLDPH" => Some(Self::Ngamphhldph), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum TimePeriodType { + TimePeriodTypeNone = 0, + Morning = 1, + Afternoon = 2, + Evening = 3, + Night = 4, + Now = 99, +} +impl TimePeriodType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::TimePeriodTypeNone => "TimePeriodType_TIME_PERIOD_TYPE_NONE", + Self::Morning => "TimePeriodType_MORNING", + Self::Afternoon => "TimePeriodType_AFTERNOON", + Self::Evening => "TimePeriodType_EVENING", + Self::Night => "TimePeriodType_NIGHT", + Self::Now => "TimePeriodType_NOW", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "TimePeriodType_TIME_PERIOD_TYPE_NONE" => Some(Self::TimePeriodTypeNone), + "TimePeriodType_MORNING" => Some(Self::Morning), + "TimePeriodType_AFTERNOON" => Some(Self::Afternoon), + "TimePeriodType_EVENING" => Some(Self::Evening), + "TimePeriodType_NIGHT" => Some(Self::Night), + "TimePeriodType_NOW" => Some(Self::Now), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jcppbdlgdmc { + RefreshAuto = 0, + RefreshTrue = 1, + RefreshFalse = 2, +} +impl Jcppbdlgdmc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::RefreshAuto => "JCPPBDLGDMC_REFRESH_AUTO", + Self::RefreshTrue => "JCPPBDLGDMC_REFRESH_TRUE", + Self::RefreshFalse => "JCPPBDLGDMC_REFRESH_FALSE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JCPPBDLGDMC_REFRESH_AUTO" => Some(Self::RefreshAuto), + "JCPPBDLGDMC_REFRESH_TRUE" => Some(Self::RefreshTrue), + "JCPPBDLGDMC_REFRESH_FALSE" => Some(Self::RefreshFalse), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fkgdohaacpo { + None = 0, + CommonGrid = 1, + MiniGame = 2, + TvExit = 3, +} +impl Fkgdohaacpo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::None => "FKGDOHAACPO_None", + Self::CommonGrid => "FKGDOHAACPO_COMMON_GRID", + Self::MiniGame => "FKGDOHAACPO_MINI_GAME", + Self::TvExit => "FKGDOHAACPO_TV_EXIT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FKGDOHAACPO_None" => Some(Self::None), + "FKGDOHAACPO_COMMON_GRID" => Some(Self::CommonGrid), + "FKGDOHAACPO_MINI_GAME" => Some(Self::MiniGame), + "FKGDOHAACPO_TV_EXIT" => Some(Self::TvExit), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jjiogimbfpb { + Oojfapojkdk = 0, + Emlbpnapaoc = 1, + Hhnmdnhjbod = 2, + Flomkbfakco = 3, +} +impl Jjiogimbfpb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Oojfapojkdk => "JJIOGIMBFPB_OOJFAPOJKDK", + Self::Emlbpnapaoc => "JJIOGIMBFPB_EMLBPNAPAOC", + Self::Hhnmdnhjbod => "JJIOGIMBFPB_HHNMDNHJBOD", + Self::Flomkbfakco => "JJIOGIMBFPB_FLOMKBFAKCO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JJIOGIMBFPB_OOJFAPOJKDK" => Some(Self::Oojfapojkdk), + "JJIOGIMBFPB_EMLBPNAPAOC" => Some(Self::Emlbpnapaoc), + "JJIOGIMBFPB_HHNMDNHJBOD" => Some(Self::Hhnmdnhjbod), + "JJIOGIMBFPB_FLOMKBFAKCO" => Some(Self::Flomkbfakco), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dgmbnkfanoc { + Fepcedpplbg = 0, + Jpbhlobhckg = 1, + Bdbfnibfeoi = 2, +} +impl Dgmbnkfanoc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fepcedpplbg => "DGMBNKFANOC_FEPCEDPPLBG", + Self::Jpbhlobhckg => "DGMBNKFANOC_JPBHLOBHCKG", + Self::Bdbfnibfeoi => "DGMBNKFANOC_BDBFNIBFEOI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DGMBNKFANOC_FEPCEDPPLBG" => Some(Self::Fepcedpplbg), + "DGMBNKFANOC_JPBHLOBHCKG" => Some(Self::Jpbhlobhckg), + "DGMBNKFANOC_BDBFNIBFEOI" => Some(Self::Bdbfnibfeoi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Aiafmdcjogf { + ModifyMultiHollowOutTypeNone = 0, + ModifyMultiHollowOutTypeInsert = 1, + ModifyMultiHollowOutTypeRemove = 2, +} +impl Aiafmdcjogf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ModifyMultiHollowOutTypeNone => { + "AIAFMDCJOGF_MODIFY_MULTI_HOLLOW_OUT_TYPE_NONE" + } + Self::ModifyMultiHollowOutTypeInsert => { + "AIAFMDCJOGF_MODIFY_MULTI_HOLLOW_OUT_TYPE_INSERT" + } + Self::ModifyMultiHollowOutTypeRemove => { + "AIAFMDCJOGF_MODIFY_MULTI_HOLLOW_OUT_TYPE_REMOVE" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AIAFMDCJOGF_MODIFY_MULTI_HOLLOW_OUT_TYPE_NONE" => { + Some(Self::ModifyMultiHollowOutTypeNone) + } + "AIAFMDCJOGF_MODIFY_MULTI_HOLLOW_OUT_TYPE_INSERT" => { + Some(Self::ModifyMultiHollowOutTypeInsert) + } + "AIAFMDCJOGF_MODIFY_MULTI_HOLLOW_OUT_TYPE_REMOVE" => { + Some(Self::ModifyMultiHollowOutTypeRemove) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bgfnajcdonh { + Igaobomfakh = 0, + Cjdilcehlbi = 1, + Jmcbmnbodio = 2, + Bgndopbokac = 4, + Fjjgoeabgpg = 5, + Nckjcelaaof = 6, + Gjofggocmbn = 7, +} +impl Bgfnajcdonh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Igaobomfakh => "BGFNAJCDONH_IGAOBOMFAKH", + Self::Cjdilcehlbi => "BGFNAJCDONH_CJDILCEHLBI", + Self::Jmcbmnbodio => "BGFNAJCDONH_JMCBMNBODIO", + Self::Bgndopbokac => "BGFNAJCDONH_BGNDOPBOKAC", + Self::Fjjgoeabgpg => "BGFNAJCDONH_FJJGOEABGPG", + Self::Nckjcelaaof => "BGFNAJCDONH_NCKJCELAAOF", + Self::Gjofggocmbn => "BGFNAJCDONH_GJOFGGOCMBN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BGFNAJCDONH_IGAOBOMFAKH" => Some(Self::Igaobomfakh), + "BGFNAJCDONH_CJDILCEHLBI" => Some(Self::Cjdilcehlbi), + "BGFNAJCDONH_JMCBMNBODIO" => Some(Self::Jmcbmnbodio), + "BGFNAJCDONH_BGNDOPBOKAC" => Some(Self::Bgndopbokac), + "BGFNAJCDONH_FJJGOEABGPG" => Some(Self::Fjjgoeabgpg), + "BGFNAJCDONH_NCKJCELAAOF" => Some(Self::Nckjcelaaof), + "BGFNAJCDONH_GJOFGGOCMBN" => Some(Self::Gjofggocmbn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cbapjgahbab { + Dolhghhkcom = 0, + Ffpcjkeoeff = 1, + Gddmabcgmio = 2, + Gpbignclgoj = 3, +} +impl Cbapjgahbab { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dolhghhkcom => "CBAPJGAHBAB_DOLHGHHKCOM", + Self::Ffpcjkeoeff => "CBAPJGAHBAB_FFPCJKEOEFF", + Self::Gddmabcgmio => "CBAPJGAHBAB_GDDMABCGMIO", + Self::Gpbignclgoj => "CBAPJGAHBAB_GPBIGNCLGOJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CBAPJGAHBAB_DOLHGHHKCOM" => Some(Self::Dolhghhkcom), + "CBAPJGAHBAB_FFPCJKEOEFF" => Some(Self::Ffpcjkeoeff), + "CBAPJGAHBAB_GDDMABCGMIO" => Some(Self::Gddmabcgmio), + "CBAPJGAHBAB_GPBIGNCLGOJ" => Some(Self::Gpbignclgoj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lfpfpbbfhlk { + OptionsShowModeNormal = 0, + OptionsShowModeEvent = 1, + OptionsShowModeItem = 2, + OptionsShowModeCard = 3, + OptionsShowModeChallenge = 4, +} +impl Lfpfpbbfhlk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::OptionsShowModeNormal => "LFPFPBBFHLK_OPTIONS_SHOW_MODE_NORMAL", + Self::OptionsShowModeEvent => "LFPFPBBFHLK_OPTIONS_SHOW_MODE_EVENT", + Self::OptionsShowModeItem => "LFPFPBBFHLK_OPTIONS_SHOW_MODE_ITEM", + Self::OptionsShowModeCard => "LFPFPBBFHLK_OPTIONS_SHOW_MODE_CARD", + Self::OptionsShowModeChallenge => "LFPFPBBFHLK_OPTIONS_SHOW_MODE_CHALLENGE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LFPFPBBFHLK_OPTIONS_SHOW_MODE_NORMAL" => Some(Self::OptionsShowModeNormal), + "LFPFPBBFHLK_OPTIONS_SHOW_MODE_EVENT" => Some(Self::OptionsShowModeEvent), + "LFPFPBBFHLK_OPTIONS_SHOW_MODE_ITEM" => Some(Self::OptionsShowModeItem), + "LFPFPBBFHLK_OPTIONS_SHOW_MODE_CARD" => Some(Self::OptionsShowModeCard), + "LFPFPBBFHLK_OPTIONS_SHOW_MODE_CHALLENGE" => { + Some(Self::OptionsShowModeChallenge) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lpbohcdcenm { + TypeOfSetListNone = 0, + TypeOfSetListInit = 1, + TypeOfSetListAppend = 2, + TypeOfSetListInsert = 3, + TypeOfSetListSort = 4, + TypeOfSetListUnique = 5, + TypeOfSetListRemove = 6, + TypeOfSetListModify = 7, +} +impl Lpbohcdcenm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::TypeOfSetListNone => "LPBOHCDCENM_TYPE_OF_SET_LIST_NONE", + Self::TypeOfSetListInit => "LPBOHCDCENM_TYPE_OF_SET_LIST_INIT", + Self::TypeOfSetListAppend => "LPBOHCDCENM_TYPE_OF_SET_LIST_APPEND", + Self::TypeOfSetListInsert => "LPBOHCDCENM_TYPE_OF_SET_LIST_INSERT", + Self::TypeOfSetListSort => "LPBOHCDCENM_TYPE_OF_SET_LIST_SORT", + Self::TypeOfSetListUnique => "LPBOHCDCENM_TYPE_OF_SET_LIST_UNIQUE", + Self::TypeOfSetListRemove => "LPBOHCDCENM_TYPE_OF_SET_LIST_REMOVE", + Self::TypeOfSetListModify => "LPBOHCDCENM_TYPE_OF_SET_LIST_MODIFY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LPBOHCDCENM_TYPE_OF_SET_LIST_NONE" => Some(Self::TypeOfSetListNone), + "LPBOHCDCENM_TYPE_OF_SET_LIST_INIT" => Some(Self::TypeOfSetListInit), + "LPBOHCDCENM_TYPE_OF_SET_LIST_APPEND" => Some(Self::TypeOfSetListAppend), + "LPBOHCDCENM_TYPE_OF_SET_LIST_INSERT" => Some(Self::TypeOfSetListInsert), + "LPBOHCDCENM_TYPE_OF_SET_LIST_SORT" => Some(Self::TypeOfSetListSort), + "LPBOHCDCENM_TYPE_OF_SET_LIST_UNIQUE" => Some(Self::TypeOfSetListUnique), + "LPBOHCDCENM_TYPE_OF_SET_LIST_REMOVE" => Some(Self::TypeOfSetListRemove), + "LPBOHCDCENM_TYPE_OF_SET_LIST_MODIFY" => Some(Self::TypeOfSetListModify), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Edfanjcfklo { + Fbehdgkjabi = 0, + Hdphpdflngf = 1, + Ncmchepcfhm = 2, + Agjjejhdhgf = 3, +} +impl Edfanjcfklo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fbehdgkjabi => "EDFANJCFKLO_FBEHDGKJABI", + Self::Hdphpdflngf => "EDFANJCFKLO_HDPHPDFLNGF", + Self::Ncmchepcfhm => "EDFANJCFKLO_NCMCHEPCFHM", + Self::Agjjejhdhgf => "EDFANJCFKLO_AGJJEJHDHGF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EDFANJCFKLO_FBEHDGKJABI" => Some(Self::Fbehdgkjabi), + "EDFANJCFKLO_HDPHPDFLNGF" => Some(Self::Hdphpdflngf), + "EDFANJCFKLO_NCMCHEPCFHM" => Some(Self::Ncmchepcfhm), + "EDFANJCFKLO_AGJJEJHDHGF" => Some(Self::Agjjejhdhgf), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jalilbammif { + Hcncnijdhke = 0, + Kiapppjipgh = 1, + Bimjibainke = 2, +} +impl Jalilbammif { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hcncnijdhke => "JALILBAMMIF_HCNCNIJDHKE", + Self::Kiapppjipgh => "JALILBAMMIF_KIAPPPJIPGH", + Self::Bimjibainke => "JALILBAMMIF_BIMJIBAINKE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JALILBAMMIF_HCNCNIJDHKE" => Some(Self::Hcncnijdhke), + "JALILBAMMIF_KIAPPPJIPGH" => Some(Self::Kiapppjipgh), + "JALILBAMMIF_BIMJIBAINKE" => Some(Self::Bimjibainke), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ncjfmhmpocg { + Phfghcmjogn = 0, + Dpfdbdjolip = 1, + Elipbgpncdm = 2, + Pejdjlpfcpb = 3, + Dfiofamcapo = 4, + Ipalnhpcnlh = 5, + Bklmeljelmb = 6, + Knfpeocbiml = 10, + Nnmigmbiden = 99, + Adcmkljmdbm = 102, +} +impl Ncjfmhmpocg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Phfghcmjogn => "NCJFMHMPOCG_PHFGHCMJOGN", + Self::Dpfdbdjolip => "NCJFMHMPOCG_DPFDBDJOLIP", + Self::Elipbgpncdm => "NCJFMHMPOCG_ELIPBGPNCDM", + Self::Pejdjlpfcpb => "NCJFMHMPOCG_PEJDJLPFCPB", + Self::Dfiofamcapo => "NCJFMHMPOCG_DFIOFAMCAPO", + Self::Ipalnhpcnlh => "NCJFMHMPOCG_IPALNHPCNLH", + Self::Bklmeljelmb => "NCJFMHMPOCG_BKLMELJELMB", + Self::Knfpeocbiml => "NCJFMHMPOCG_KNFPEOCBIML", + Self::Nnmigmbiden => "NCJFMHMPOCG_NNMIGMBIDEN", + Self::Adcmkljmdbm => "NCJFMHMPOCG_ADCMKLJMDBM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NCJFMHMPOCG_PHFGHCMJOGN" => Some(Self::Phfghcmjogn), + "NCJFMHMPOCG_DPFDBDJOLIP" => Some(Self::Dpfdbdjolip), + "NCJFMHMPOCG_ELIPBGPNCDM" => Some(Self::Elipbgpncdm), + "NCJFMHMPOCG_PEJDJLPFCPB" => Some(Self::Pejdjlpfcpb), + "NCJFMHMPOCG_DFIOFAMCAPO" => Some(Self::Dfiofamcapo), + "NCJFMHMPOCG_IPALNHPCNLH" => Some(Self::Ipalnhpcnlh), + "NCJFMHMPOCG_BKLMELJELMB" => Some(Self::Bklmeljelmb), + "NCJFMHMPOCG_KNFPEOCBIML" => Some(Self::Knfpeocbiml), + "NCJFMHMPOCG_NNMIGMBIDEN" => Some(Self::Nnmigmbiden), + "NCJFMHMPOCG_ADCMKLJMDBM" => Some(Self::Adcmkljmdbm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Megilijblpe { + Dhndmainhgk = 0, + Naoapoamgbm = 1, + Epbacbkfpgd = 2, + Doecmlmedac = 3, +} +impl Megilijblpe { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dhndmainhgk => "MEGILIJBLPE_DHNDMAINHGK", + Self::Naoapoamgbm => "MEGILIJBLPE_NAOAPOAMGBM", + Self::Epbacbkfpgd => "MEGILIJBLPE_EPBACBKFPGD", + Self::Doecmlmedac => "MEGILIJBLPE_DOECMLMEDAC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MEGILIJBLPE_DHNDMAINHGK" => Some(Self::Dhndmainhgk), + "MEGILIJBLPE_NAOAPOAMGBM" => Some(Self::Naoapoamgbm), + "MEGILIJBLPE_EPBACBKFPGD" => Some(Self::Epbacbkfpgd), + "MEGILIJBLPE_DOECMLMEDAC" => Some(Self::Doecmlmedac), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mcffbjmbjeg { + Ieikeknfpoe = 0, + Jikngecpeej = 1, + Badbmigjbpk = 2, + Lbbnkohfmfg = 3, +} +impl Mcffbjmbjeg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ieikeknfpoe => "MCFFBJMBJEG_IEIKEKNFPOE", + Self::Jikngecpeej => "MCFFBJMBJEG_JIKNGECPEEJ", + Self::Badbmigjbpk => "MCFFBJMBJEG_BADBMIGJBPK", + Self::Lbbnkohfmfg => "MCFFBJMBJEG_LBBNKOHFMFG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MCFFBJMBJEG_IEIKEKNFPOE" => Some(Self::Ieikeknfpoe), + "MCFFBJMBJEG_JIKNGECPEEJ" => Some(Self::Jikngecpeej), + "MCFFBJMBJEG_BADBMIGJBPK" => Some(Self::Badbmigjbpk), + "MCFFBJMBJEG_LBBNKOHFMFG" => Some(Self::Lbbnkohfmfg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gboojlmnadc { + None = 0, + Str = 1, + Hash = 2, +} +impl Gboojlmnadc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::None => "GBOOJLMNADC_None", + Self::Str => "GBOOJLMNADC_Str", + Self::Hash => "GBOOJLMNADC_Hash", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GBOOJLMNADC_None" => Some(Self::None), + "GBOOJLMNADC_Str" => Some(Self::Str), + "GBOOJLMNADC_Hash" => Some(Self::Hash), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum BuddyTeamType { + HhimngpkndeGkhnhfhjapk = 0, + HhimngpkndeMjgjoedeokl = 1, + HhimngpkndeDmonlcikkdj = 2, + HhimngpkndeGdeebaincaf = 3, +} +impl BuddyTeamType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HhimngpkndeGkhnhfhjapk => "HHIMNGPKNDE_GKHNHFHJAPK", + Self::HhimngpkndeMjgjoedeokl => "HHIMNGPKNDE_MJGJOEDEOKL", + Self::HhimngpkndeDmonlcikkdj => "HHIMNGPKNDE_DMONLCIKKDJ", + Self::HhimngpkndeGdeebaincaf => "HHIMNGPKNDE_GDEEBAINCAF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HHIMNGPKNDE_GKHNHFHJAPK" => Some(Self::HhimngpkndeGkhnhfhjapk), + "HHIMNGPKNDE_MJGJOEDEOKL" => Some(Self::HhimngpkndeMjgjoedeokl), + "HHIMNGPKNDE_DMONLCIKKDJ" => Some(Self::HhimngpkndeDmonlcikkdj), + "HHIMNGPKNDE_GDEEBAINCAF" => Some(Self::HhimngpkndeGdeebaincaf), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hkaeejkioaa { + Cejfjphbiaa = 0, + Lmpdagojpnc = 1, + Blbekijpngb = 2, + Addlflimogl = 3, +} +impl Hkaeejkioaa { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cejfjphbiaa => "HKAEEJKIOAA_CEJFJPHBIAA", + Self::Lmpdagojpnc => "HKAEEJKIOAA_LMPDAGOJPNC", + Self::Blbekijpngb => "HKAEEJKIOAA_BLBEKIJPNGB", + Self::Addlflimogl => "HKAEEJKIOAA_ADDLFLIMOGL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HKAEEJKIOAA_CEJFJPHBIAA" => Some(Self::Cejfjphbiaa), + "HKAEEJKIOAA_LMPDAGOJPNC" => Some(Self::Lmpdagojpnc), + "HKAEEJKIOAA_BLBEKIJPNGB" => Some(Self::Blbekijpngb), + "HKAEEJKIOAA_ADDLFLIMOGL" => Some(Self::Addlflimogl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bdkaehafpgc { + Ibdheckdppa = 0, + Kmehklfpgnp = 1, + Mgcmokcoecl = 2, +} +impl Bdkaehafpgc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ibdheckdppa => "BDKAEHAFPGC_IBDHECKDPPA", + Self::Kmehklfpgnp => "BDKAEHAFPGC_KMEHKLFPGNP", + Self::Mgcmokcoecl => "BDKAEHAFPGC_MGCMOKCOECL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BDKAEHAFPGC_IBDHECKDPPA" => Some(Self::Ibdheckdppa), + "BDKAEHAFPGC_KMEHKLFPGNP" => Some(Self::Kmehklfpgnp), + "BDKAEHAFPGC_MGCMOKCOECL" => Some(Self::Mgcmokcoecl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Peladfpmpkl { + Bikmjcbjeng = 0, + Hieeeopaocl = 2003, +} +impl Peladfpmpkl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bikmjcbjeng => "PELADFPMPKL_BIKMJCBJENG", + Self::Hieeeopaocl => "PELADFPMPKL_HIEEEOPAOCL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PELADFPMPKL_BIKMJCBJENG" => Some(Self::Bikmjcbjeng), + "PELADFPMPKL_HIEEEOPAOCL" => Some(Self::Hieeeopaocl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kfjbhgmheal { + Efchoammbam = 0, +} +impl Kfjbhgmheal { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Efchoammbam => "KFJBHGMHEAL_EFCHOAMMBAM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KFJBHGMHEAL_EFCHOAMMBAM" => Some(Self::Efchoammbam), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mecadpkapnk { + Hnoonjpmkec = 0, + Pgofhbfncdo = 1, + Nbpgjoifbci = 2, + Fjbejkmpgkb = 3, + Cfegibbijab = 4, +} +impl Mecadpkapnk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hnoonjpmkec => "MECADPKAPNK_HNOONJPMKEC", + Self::Pgofhbfncdo => "MECADPKAPNK_PGOFHBFNCDO", + Self::Nbpgjoifbci => "MECADPKAPNK_NBPGJOIFBCI", + Self::Fjbejkmpgkb => "MECADPKAPNK_FJBEJKMPGKB", + Self::Cfegibbijab => "MECADPKAPNK_CFEGIBBIJAB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MECADPKAPNK_HNOONJPMKEC" => Some(Self::Hnoonjpmkec), + "MECADPKAPNK_PGOFHBFNCDO" => Some(Self::Pgofhbfncdo), + "MECADPKAPNK_NBPGJOIFBCI" => Some(Self::Nbpgjoifbci), + "MECADPKAPNK_FJBEJKMPGKB" => Some(Self::Fjbejkmpgkb), + "MECADPKAPNK_CFEGIBBIJAB" => Some(Self::Cfegibbijab), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jfnebkhpdmk { + Oialipofpng = 0, + Ojkkabihbfb = 1, + Ipkhkkjfmjg = 2, + Nfchlelncfj = 3, + Lfhljjcmecm = 4, + Kpfklbgjaia = 5, + Licifcammle = 6, +} +impl Jfnebkhpdmk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Oialipofpng => "JFNEBKHPDMK_OIALIPOFPNG", + Self::Ojkkabihbfb => "JFNEBKHPDMK_OJKKABIHBFB", + Self::Ipkhkkjfmjg => "JFNEBKHPDMK_IPKHKKJFMJG", + Self::Nfchlelncfj => "JFNEBKHPDMK_NFCHLELNCFJ", + Self::Lfhljjcmecm => "JFNEBKHPDMK_LFHLJJCMECM", + Self::Kpfklbgjaia => "JFNEBKHPDMK_KPFKLBGJAIA", + Self::Licifcammle => "JFNEBKHPDMK_LICIFCAMMLE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JFNEBKHPDMK_OIALIPOFPNG" => Some(Self::Oialipofpng), + "JFNEBKHPDMK_OJKKABIHBFB" => Some(Self::Ojkkabihbfb), + "JFNEBKHPDMK_IPKHKKJFMJG" => Some(Self::Ipkhkkjfmjg), + "JFNEBKHPDMK_NFCHLELNCFJ" => Some(Self::Nfchlelncfj), + "JFNEBKHPDMK_LFHLJJCMECM" => Some(Self::Lfhljjcmecm), + "JFNEBKHPDMK_KPFKLBGJAIA" => Some(Self::Kpfklbgjaia), + "JFNEBKHPDMK_LICIFCAMMLE" => Some(Self::Licifcammle), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cipnonnmipa { + Mpobehdjnec = 0, + Kabkilcakab = 1, +} +impl Cipnonnmipa { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mpobehdjnec => "CIPNONNMIPA_MPOBEHDJNEC", + Self::Kabkilcakab => "CIPNONNMIPA_KABKILCAKAB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CIPNONNMIPA_MPOBEHDJNEC" => Some(Self::Mpobehdjnec), + "CIPNONNMIPA_KABKILCAKAB" => Some(Self::Kabkilcakab), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gedgbbahbgc { + Dhblcbjblfm = 0, + Ifholiooaif = 1, +} +impl Gedgbbahbgc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dhblcbjblfm => "GEDGBBAHBGC_DHBLCBJBLFM", + Self::Ifholiooaif => "GEDGBBAHBGC_IFHOLIOOAIF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GEDGBBAHBGC_DHBLCBJBLFM" => Some(Self::Dhblcbjblfm), + "GEDGBBAHBGC_IFHOLIOOAIF" => Some(Self::Ifholiooaif), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Oeindiphccf { + Nmbipckjjei = 0, + Kgblnaknogl = 1, +} +impl Oeindiphccf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nmbipckjjei => "OEINDIPHCCF_NMBIPCKJJEI", + Self::Kgblnaknogl => "OEINDIPHCCF_KGBLNAKNOGL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OEINDIPHCCF_NMBIPCKJJEI" => Some(Self::Nmbipckjjei), + "OEINDIPHCCF_KGBLNAKNOGL" => Some(Self::Kgblnaknogl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Glekdpkinjg { + Geekijjonbd = 0, + Nkmbfkefdlo = 1, + Edobnihphdl = 3001, + Pfcblgjfcam = 3002, + Plgonpleidk = 3003, + Ckpfjllmhbl = 3006, + Jlnkjpcpilo = 3007, + Kpmdpkdbiih = 3008, + Cffamicoklf = 3009, + Fjephlodonl = 3010, + Hecapkddmim = 3011, + Llmphmiiedo = 3012, + Pbihghdeije = 3014, + Lhbgcfmgbio = 3017, + Cpngojnhacg = 3018, + Lhdcoagkajc = 3022, + Heacmdmopff = 3023, + Fpemednfmll = 3024, + Nhmeclmbbne = 3025, + Omohjmkblbm = 3026, + Fhaeplpinhd = 3029, + Ggacnnjndam = 3030, + Akpdjpmdfoe = 3031, + Bbhldndecnh = 3032, + Mjacghkmdeo = 3033, + Ihdijbfadbd = 3034, + Jabhnblgiif = 3035, + Okfnmgophbm = 3036, + Gknjmjdacfb = 3040, + Dnaeeilhajp = 3041, + Knbgonkbdfg = 3042, + Channaeomhb = 3044, + Hadegdigppn = 3045, + Maaahbnlona = 3046, + Jngidpmcomi = 3047, + Odmpiedjlec = 3048, + Aopjanfdnlh = 3049, + Bhigcdmiimi = 3050, + Mnigjadmldc = 3051, + Mikkikefgkc = 3052, + Lblbofcchlf = 3053, + Fojphamfefg = 3054, + Eomijooghed = 3055, + Bmeilaidfdh = 3056, + Pfkpgkdooik = 3057, + Bdgggkfepjj = 3058, + Eagdlkbpoia = 3059, + Kegcepkoaoo = 3060, + Ngilncmpmlo = 3061, + Abppplldmji = 3062, + Fnbpdlfclho = 3063, + Kflgfheofch = 3064, + Dkmpjggiona = 3065, + Ghddoklghpj = 3066, + Bcnfpnmlfah = 3067, + Gmnfnoedlcb = 3068, + Lidfhdcnbbb = 3069, + Khnkbiddkcg = 3070, + Ldbjhbakofd = 3071, + Gbgfkjeegla = 3072, + Lodccdmpnnp = 3073, + Mdglojopman = 3074, + Loahlldejlp = 3075, + Dfocknbofah = 3076, + Pcfadokaedo = 3077, + Phciegmkkbi = 3078, + Ekkbemapkeo = 3079, + Melohieghbl = 3080, + Gnjadlnjimk = 3088, + Cahockamfcg = 3089, + Khdagldjlaf = 3090, + Hkaiogkaeid = 3091, + Mlecpgplfeo = 3092, + Mofgbdkhebl = 3093, + Paeiakbmmbj = 3094, + Bieehidknka = 3095, + Igimdiakgbp = 3096, + Lbpefkafbij = 3097, + Adiibkaecil = 3098, + Hcgcpiblfjl = 3100, + Phmcfiekamo = 3101, + Ohdpnmfmhce = 3102, + Mkpkabgmlgc = 3103, + Jlilklclfdb = 3104, + Goimkdkpgpf = 3105, + Kfohpodefnp = 3106, + Caifnapbggf = 3107, + Nhgmhllolme = 3108, + Jgdemdncmbk = 3109, + Kolgebccgbk = 3110, + Memacakbjbm = 3111, + Ljebabdicie = 3112, + Hhfmpkgkefl = 3113, + Jgdlcmipbjj = 3114, + Oomimlfmjgd = 3115, + Mjbedndjecl = 3116, + Bgloipffkde = 3117, + Aamlgacbgin = 3118, + Dgbonacbdij = 3119, + Aiieepkjpom = 3120, + Mhblalnfnod = 3121, + Kbaaiilaenb = 3122, + Joimalaffmj = 3123, + Mdddoghmmdg = 3124, + Dlnamfddine = 3125, + Ocfmiifnagg = 3126, + Acoimdnkjic = 3127, + Ehgcpbcongo = 3128, + Mmdjnpcpnim = 3129, + Ifjllmhjejd = 3130, + Pjoflphoclk = 3131, + Okicmeidfnb = 3132, + Bdhjakjlkmi = 3133, + Cphnlogokkg = 3134, + Apfofljmbno = 3135, + Kfpfdkipoib = 3136, + Inahmaakgpi = 3137, + Chojfdcheoj = 3138, + Hefgjjgelha = 3139, + Pnfdoeafapi = 3140, + Kinoplmaalc = 3141, + Jehejfcgabg = 3142, + Gonjjaoalnm = 3143, + Adiommlmncn = 3144, + Iaicodjigge = 3145, + Bijdffobeni = 3146, + Hjacjapbgni = 3147, + Pbbcbpkcbdd = 3148, + Hnaohfhckgc = 3149, + Bbfebnnodpi = 3150, + Odifnllkjkn = 3151, + Jkdjaplgedg = 3152, + Bbhmfdpckpc = 3153, + Ecghhlhimdn = 3154, + Mmpnhpkehfi = 3155, + Kiebplfglcd = 3156, + Fcopeiohfkf = 3157, + Odgdnjbpfkp = 3158, + Nlnodggifgd = 3159, + Cfjnaahegkc = 3160, + Indcmjbgifd = 3161, + Fnclglhpbgp = 3162, + Gneahafdpei = 3163, + Flmegjeidhd = 3164, + Hacjfgcoceh = 3165, + Eegnklgpkkf = 3166, + Gajbjpojnod = 3167, + Kadkpmalmgn = 3168, + Blhpkgggcgi = 3169, + Eahhmbjodae = 3170, + Ajnlffegici = 3171, + Mgmlmidgghn = 3172, + Bdffcmfmdcd = 3173, + Ebffheefbnm = 3174, + Pchllhffdel = 3175, + Ldhoeihhgio = 3176, + Ncmiilgfaie = 3177, + Clgmfjkhnoc = 3178, + Bikkjpciphi = 3179, + Hflemhkdmbn = 3180, + Igejcaffodf = 3181, + Cdeodliepcg = 3182, + Ldigckfcaka = 3183, + Hmneonnlbnf = 3184, + Hmegcmjelbi = 3185, + Pbkapegpjic = 3186, + Kemklddmnhn = 3187, + Chjlmcohejp = 3188, + Bcfohcinfco = 3189, + Nlfnopbcljj = 3190, + Nkefiimmema = 3191, + Kdmccocmgnb = 3192, + Cbifaeppeji = 3193, + Gjoekahlecf = 3194, + Emjllainlbe = 3195, + Mnaeffinljm = 3196, + Bilokkiajge = 3197, + Ihboobdbfeg = 3198, + Geamgalenjc = 3199, + Hgmpneolilg = 3200, + Ljcgmaplhhp = 3201, + Eekeaheeofb = 3202, + Goilnfjimjd = 3203, + Fnjgedpgfmc = 3204, + Olloolkdkhl = 3205, + Kcpnhhphaad = 3206, + Clganaacjen = 3207, + Epnohlgibmf = 3208, + Nphglopfnlh = 3209, + Ahpgbghmjko = 3210, + Ogkpjmjdcgn = 3211, + Hgmdjcdhgfl = 3212, + Jmdonpcbdej = 3213, + Plhgiamdkjn = 3214, + Hkaefcfhbme = 3215, + Omclcaoicfj = 3216, + Emmhjpcoenh = 3217, + Dbiiccggjoe = 3218, + Emhahkefbjl = 3219, + Lajmcoajcgi = 3220, + Fajhghcmald = 3221, + Cihlbedbgog = 3222, + Mkicedijnfb = 3223, + Hemdapiljdp = 3224, + Lneimikhobg = 3225, + Fffckhcabbj = 3226, + Goibgnblmjp = 3227, + Mgajaebpflc = 3228, + Llkbiecmmdk = 3229, + Jdpcdidaihj = 3230, + Nmcgffjhmin = 3231, + Chfkmnhicih = 3232, + Chfinjpogdd = 3233, + Cmdflkhhdba = 3234, + Gjkgcndpfja = 3235, + Bjlgpgfmiai = 3236, + Pnljjoecdae = 3237, + Fhhenjfaimm = 3238, + Kepjeadincp = 3239, + Kpdholadnnf = 3240, + Maiemdejedj = 3241, + Fbfclkbhfbf = 3242, + Dalnchkkfed = 3243, + Kjdbienjkjc = 3244, + Jgjcgflbnak = 3245, + Fealhmbilal = 3246, + Ipdogadaeai = 3247, + Kafcnfbcogm = 3248, + Hnleeohjhpi = 3249, + Dcfimpndnjl = 3250, + Cjflngmknce = 3251, + Phdbajjianm = 3252, + Dcbolgochdk = 3253, + Cjolblifkbf = 3254, + Melchhfkonn = 3255, + Hjecejjbgbc = 3256, + Ajppninbbfj = 3257, + Oplfgddbdgd = 3258, + Doafkimhnnf = 3259, + Ekmlndkomif = 3260, + Ieicponhpdc = 3261, + Mecfgheildp = 3262, + Cfcfkhbbhla = 3263, + Fkdglhahjaa = 3264, + Fmpamkalkga = 3265, + Icelfofchfo = 3266, + Lbbmgcpbpkc = 3267, + Bfhbeidfccn = 3268, + Eekkpkemhnk = 3269, + Eoldbghloka = 3270, + Ehfbcpfkjgd = 3271, + Ckbfahngcik = 3272, + Kofdelgehlp = 3273, + Pccaijmbham = 3274, + Iioifcelbbg = 3275, + Hgoppigfflb = 3276, + Flbmgggofpj = 3277, + Pjdihimbgmh = 3278, + Domlojdfenk = 3279, + Bddknnkcbmb = 3280, + Cehfdndihdg = 3281, + Edpmdbakcdc = 3282, + Bikdfdebabd = 3283, + Pgmfjhclcpf = 3284, + Lfeekhpkkhg = 3285, + Epmdfckecmm = 3286, + Ocpecghafco = 3287, + Plkokimechn = 3288, + Jcfknmldbbd = 3289, + Kjngljdoljd = 3290, + Hjbaminnckf = 3291, + Fafkbfnefeo = 3292, + Nblnblbeimo = 3293, + Fgnclcbegak = 3294, + Ckflpdkpcab = 3295, + Mcnmpcdgbed = 3296, + Lcejmibmfcg = 3297, + Knjopjbhgnm = 3298, + Gipagkcmgef = 3299, + Ejppiahaocf = 3300, + Gbncehbmgbg = 3301, + Hngapbopkhj = 3302, + Ghbjcnginjk = 3303, + Jmfibehicmi = 3304, + Jhiadfjhhlp = 3305, + Gjoapegonfm = 3306, + Khbfilhnfmb = 3307, + Lnlfbiecfih = 3308, + Emoobppkmbg = 3309, + Jaocmakbcie = 3310, + Ghmldcmfgpg = 3311, + Cefjojmghli = 3312, + Khhopclphjn = 3313, + Gdmichkphba = 3314, + Ldbokfibnal = 3315, + Eknhldiapbo = 3316, + Lpbdeiminhj = 3317, + Ldkpenpcpei = 3318, + Lhkoigagbch = 3319, + Cidmagiepen = 3320, + Ocpdpchmfig = 3321, + Olgbjpdodfm = 3322, + Magcbjojolh = 3323, + Onehnimnhml = 3324, + Fkjpegadfcg = 3325, + Hcpccobbdem = 3326, + Bnjchmdkhgg = 3327, + Balpfadhlon = 3328, + Biijlcecdla = 3329, + Hhaemmgfihn = 3330, + Eehcnlbdmgf = 3331, + Nabljhcpgmo = 3332, + Pecbgiemipf = 3333, + Kdijiobpenk = 3334, + Anoignkmogi = 3335, + Ioimehgafpb = 3336, + Depaaecdnbg = 3337, + Ibgmekccdbh = 3338, + Cdbalgfmfdn = 3339, + Mfloobdbhmn = 3340, + Olkindbenok = 3341, + Akfgdjlgipb = 3342, + Olidcnofnbh = 3343, + Phffnpjlgoa = 3344, + Dcoimcpcagn = 3345, + Flmimbekhjl = 3347, + Gmmlmolfbdn = 3348, + Jligomekfio = 3349, + Fdghnmjffjc = 3350, + Dlckgacobic = 3351, + Mdplfmfhghp = 3352, + Amhdndbmnko = 3353, + Fihbjdaabik = 3354, + Ihollkeagoh = 3355, + Enijgknonfp = 3356, + Fobmofkgpbk = 3357, + Ppndgkocncn = 3358, + Cggmjhibjhk = 3359, + Nnmififkjgd = 3360, + Afkmbdhpjad = 3361, + Anoggchnmkl = 3362, + Kiglclkgcgf = 3363, + Ippjmgpddep = 3364, + Jgfkbokjloc = 3365, + Mogmlgfocep = 3366, + Ncmkjbdnolb = 3367, + Lpdcjahbgaj = 3368, + Npdcdoombcp = 3369, + Ioafepjlngb = 3370, + Apdghnjgngn = 3371, + Cgmgccnemlc = 3372, + Mlijjeelibp = 3373, + Lamgbehgeoo = 3374, + Hmecibilkpi = 3375, + Ddhmgkphaoc = 3376, + Emedpbgpcmm = 3377, + Kagjbhhdibn = 3378, + Nnpmnebefjk = 3379, + Pedgcjhioim = 3380, + Jbiomkgjedb = 3381, + Jcijadjopch = 3382, + Bgphohpmfjk = 3383, + Ndoideeehoa = 3384, + Echncceokmb = 3385, + Mclffaaicoi = 3386, + Deabihafcob = 3387, + Mckidokjlhi = 3388, + Nlahpkkdekh = 3389, + Djcgkfpjhjh = 3390, + Jfkdbcccdcp = 3391, + Adohjenfcni = 3392, + Djfbgbgbbeg = 3393, + Beaiedhmllb = 3394, + Fcopiamgfai = 3395, + Eaafaepcica = 3396, + Lfhkpmbjhoh = 3397, + Kddgfmkjcno = 3398, + Kogokgheeia = 3399, + Dacnbbblnjo = 3400, + Oaeikgnkkga = 3401, + Joekffohokc = 3402, + Gachhpdfnon = 3403, + Ohedfcblpli = 3404, + Ompdilflcaf = 3405, + Jdceddcegji = 3406, + Kdjfbalichh = 3407, + Npneflhbemg = 3408, + Amhdcofeahf = 3409, + Jiodnenfooh = 3412, +} +impl Glekdpkinjg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Geekijjonbd => "GLEKDPKINJG_GEEKIJJONBD", + Self::Nkmbfkefdlo => "GLEKDPKINJG_NKMBFKEFDLO", + Self::Edobnihphdl => "GLEKDPKINJG_EDOBNIHPHDL", + Self::Pfcblgjfcam => "GLEKDPKINJG_PFCBLGJFCAM", + Self::Plgonpleidk => "GLEKDPKINJG_PLGONPLEIDK", + Self::Ckpfjllmhbl => "GLEKDPKINJG_CKPFJLLMHBL", + Self::Jlnkjpcpilo => "GLEKDPKINJG_JLNKJPCPILO", + Self::Kpmdpkdbiih => "GLEKDPKINJG_KPMDPKDBIIH", + Self::Cffamicoklf => "GLEKDPKINJG_CFFAMICOKLF", + Self::Fjephlodonl => "GLEKDPKINJG_FJEPHLODONL", + Self::Hecapkddmim => "GLEKDPKINJG_HECAPKDDMIM", + Self::Llmphmiiedo => "GLEKDPKINJG_LLMPHMIIEDO", + Self::Pbihghdeije => "GLEKDPKINJG_PBIHGHDEIJE", + Self::Lhbgcfmgbio => "GLEKDPKINJG_LHBGCFMGBIO", + Self::Cpngojnhacg => "GLEKDPKINJG_CPNGOJNHACG", + Self::Lhdcoagkajc => "GLEKDPKINJG_LHDCOAGKAJC", + Self::Heacmdmopff => "GLEKDPKINJG_HEACMDMOPFF", + Self::Fpemednfmll => "GLEKDPKINJG_FPEMEDNFMLL", + Self::Nhmeclmbbne => "GLEKDPKINJG_NHMECLMBBNE", + Self::Omohjmkblbm => "GLEKDPKINJG_OMOHJMKBLBM", + Self::Fhaeplpinhd => "GLEKDPKINJG_FHAEPLPINHD", + Self::Ggacnnjndam => "GLEKDPKINJG_GGACNNJNDAM", + Self::Akpdjpmdfoe => "GLEKDPKINJG_AKPDJPMDFOE", + Self::Bbhldndecnh => "GLEKDPKINJG_BBHLDNDECNH", + Self::Mjacghkmdeo => "GLEKDPKINJG_MJACGHKMDEO", + Self::Ihdijbfadbd => "GLEKDPKINJG_IHDIJBFADBD", + Self::Jabhnblgiif => "GLEKDPKINJG_JABHNBLGIIF", + Self::Okfnmgophbm => "GLEKDPKINJG_OKFNMGOPHBM", + Self::Gknjmjdacfb => "GLEKDPKINJG_GKNJMJDACFB", + Self::Dnaeeilhajp => "GLEKDPKINJG_DNAEEILHAJP", + Self::Knbgonkbdfg => "GLEKDPKINJG_KNBGONKBDFG", + Self::Channaeomhb => "GLEKDPKINJG_CHANNAEOMHB", + Self::Hadegdigppn => "GLEKDPKINJG_HADEGDIGPPN", + Self::Maaahbnlona => "GLEKDPKINJG_MAAAHBNLONA", + Self::Jngidpmcomi => "GLEKDPKINJG_JNGIDPMCOMI", + Self::Odmpiedjlec => "GLEKDPKINJG_ODMPIEDJLEC", + Self::Aopjanfdnlh => "GLEKDPKINJG_AOPJANFDNLH", + Self::Bhigcdmiimi => "GLEKDPKINJG_BHIGCDMIIMI", + Self::Mnigjadmldc => "GLEKDPKINJG_MNIGJADMLDC", + Self::Mikkikefgkc => "GLEKDPKINJG_MIKKIKEFGKC", + Self::Lblbofcchlf => "GLEKDPKINJG_LBLBOFCCHLF", + Self::Fojphamfefg => "GLEKDPKINJG_FOJPHAMFEFG", + Self::Eomijooghed => "GLEKDPKINJG_EOMIJOOGHED", + Self::Bmeilaidfdh => "GLEKDPKINJG_BMEILAIDFDH", + Self::Pfkpgkdooik => "GLEKDPKINJG_PFKPGKDOOIK", + Self::Bdgggkfepjj => "GLEKDPKINJG_BDGGGKFEPJJ", + Self::Eagdlkbpoia => "GLEKDPKINJG_EAGDLKBPOIA", + Self::Kegcepkoaoo => "GLEKDPKINJG_KEGCEPKOAOO", + Self::Ngilncmpmlo => "GLEKDPKINJG_NGILNCMPMLO", + Self::Abppplldmji => "GLEKDPKINJG_ABPPPLLDMJI", + Self::Fnbpdlfclho => "GLEKDPKINJG_FNBPDLFCLHO", + Self::Kflgfheofch => "GLEKDPKINJG_KFLGFHEOFCH", + Self::Dkmpjggiona => "GLEKDPKINJG_DKMPJGGIONA", + Self::Ghddoklghpj => "GLEKDPKINJG_GHDDOKLGHPJ", + Self::Bcnfpnmlfah => "GLEKDPKINJG_BCNFPNMLFAH", + Self::Gmnfnoedlcb => "GLEKDPKINJG_GMNFNOEDLCB", + Self::Lidfhdcnbbb => "GLEKDPKINJG_LIDFHDCNBBB", + Self::Khnkbiddkcg => "GLEKDPKINJG_KHNKBIDDKCG", + Self::Ldbjhbakofd => "GLEKDPKINJG_LDBJHBAKOFD", + Self::Gbgfkjeegla => "GLEKDPKINJG_GBGFKJEEGLA", + Self::Lodccdmpnnp => "GLEKDPKINJG_LODCCDMPNNP", + Self::Mdglojopman => "GLEKDPKINJG_MDGLOJOPMAN", + Self::Loahlldejlp => "GLEKDPKINJG_LOAHLLDEJLP", + Self::Dfocknbofah => "GLEKDPKINJG_DFOCKNBOFAH", + Self::Pcfadokaedo => "GLEKDPKINJG_PCFADOKAEDO", + Self::Phciegmkkbi => "GLEKDPKINJG_PHCIEGMKKBI", + Self::Ekkbemapkeo => "GLEKDPKINJG_EKKBEMAPKEO", + Self::Melohieghbl => "GLEKDPKINJG_MELOHIEGHBL", + Self::Gnjadlnjimk => "GLEKDPKINJG_GNJADLNJIMK", + Self::Cahockamfcg => "GLEKDPKINJG_CAHOCKAMFCG", + Self::Khdagldjlaf => "GLEKDPKINJG_KHDAGLDJLAF", + Self::Hkaiogkaeid => "GLEKDPKINJG_HKAIOGKAEID", + Self::Mlecpgplfeo => "GLEKDPKINJG_MLECPGPLFEO", + Self::Mofgbdkhebl => "GLEKDPKINJG_MOFGBDKHEBL", + Self::Paeiakbmmbj => "GLEKDPKINJG_PAEIAKBMMBJ", + Self::Bieehidknka => "GLEKDPKINJG_BIEEHIDKNKA", + Self::Igimdiakgbp => "GLEKDPKINJG_IGIMDIAKGBP", + Self::Lbpefkafbij => "GLEKDPKINJG_LBPEFKAFBIJ", + Self::Adiibkaecil => "GLEKDPKINJG_ADIIBKAECIL", + Self::Hcgcpiblfjl => "GLEKDPKINJG_HCGCPIBLFJL", + Self::Phmcfiekamo => "GLEKDPKINJG_PHMCFIEKAMO", + Self::Ohdpnmfmhce => "GLEKDPKINJG_OHDPNMFMHCE", + Self::Mkpkabgmlgc => "GLEKDPKINJG_MKPKABGMLGC", + Self::Jlilklclfdb => "GLEKDPKINJG_JLILKLCLFDB", + Self::Goimkdkpgpf => "GLEKDPKINJG_GOIMKDKPGPF", + Self::Kfohpodefnp => "GLEKDPKINJG_KFOHPODEFNP", + Self::Caifnapbggf => "GLEKDPKINJG_CAIFNAPBGGF", + Self::Nhgmhllolme => "GLEKDPKINJG_NHGMHLLOLME", + Self::Jgdemdncmbk => "GLEKDPKINJG_JGDEMDNCMBK", + Self::Kolgebccgbk => "GLEKDPKINJG_KOLGEBCCGBK", + Self::Memacakbjbm => "GLEKDPKINJG_MEMACAKBJBM", + Self::Ljebabdicie => "GLEKDPKINJG_LJEBABDICIE", + Self::Hhfmpkgkefl => "GLEKDPKINJG_HHFMPKGKEFL", + Self::Jgdlcmipbjj => "GLEKDPKINJG_JGDLCMIPBJJ", + Self::Oomimlfmjgd => "GLEKDPKINJG_OOMIMLFMJGD", + Self::Mjbedndjecl => "GLEKDPKINJG_MJBEDNDJECL", + Self::Bgloipffkde => "GLEKDPKINJG_BGLOIPFFKDE", + Self::Aamlgacbgin => "GLEKDPKINJG_AAMLGACBGIN", + Self::Dgbonacbdij => "GLEKDPKINJG_DGBONACBDIJ", + Self::Aiieepkjpom => "GLEKDPKINJG_AIIEEPKJPOM", + Self::Mhblalnfnod => "GLEKDPKINJG_MHBLALNFNOD", + Self::Kbaaiilaenb => "GLEKDPKINJG_KBAAIILAENB", + Self::Joimalaffmj => "GLEKDPKINJG_JOIMALAFFMJ", + Self::Mdddoghmmdg => "GLEKDPKINJG_MDDDOGHMMDG", + Self::Dlnamfddine => "GLEKDPKINJG_DLNAMFDDINE", + Self::Ocfmiifnagg => "GLEKDPKINJG_OCFMIIFNAGG", + Self::Acoimdnkjic => "GLEKDPKINJG_ACOIMDNKJIC", + Self::Ehgcpbcongo => "GLEKDPKINJG_EHGCPBCONGO", + Self::Mmdjnpcpnim => "GLEKDPKINJG_MMDJNPCPNIM", + Self::Ifjllmhjejd => "GLEKDPKINJG_IFJLLMHJEJD", + Self::Pjoflphoclk => "GLEKDPKINJG_PJOFLPHOCLK", + Self::Okicmeidfnb => "GLEKDPKINJG_OKICMEIDFNB", + Self::Bdhjakjlkmi => "GLEKDPKINJG_BDHJAKJLKMI", + Self::Cphnlogokkg => "GLEKDPKINJG_CPHNLOGOKKG", + Self::Apfofljmbno => "GLEKDPKINJG_APFOFLJMBNO", + Self::Kfpfdkipoib => "GLEKDPKINJG_KFPFDKIPOIB", + Self::Inahmaakgpi => "GLEKDPKINJG_INAHMAAKGPI", + Self::Chojfdcheoj => "GLEKDPKINJG_CHOJFDCHEOJ", + Self::Hefgjjgelha => "GLEKDPKINJG_HEFGJJGELHA", + Self::Pnfdoeafapi => "GLEKDPKINJG_PNFDOEAFAPI", + Self::Kinoplmaalc => "GLEKDPKINJG_KINOPLMAALC", + Self::Jehejfcgabg => "GLEKDPKINJG_JEHEJFCGABG", + Self::Gonjjaoalnm => "GLEKDPKINJG_GONJJAOALNM", + Self::Adiommlmncn => "GLEKDPKINJG_ADIOMMLMNCN", + Self::Iaicodjigge => "GLEKDPKINJG_IAICODJIGGE", + Self::Bijdffobeni => "GLEKDPKINJG_BIJDFFOBENI", + Self::Hjacjapbgni => "GLEKDPKINJG_HJACJAPBGNI", + Self::Pbbcbpkcbdd => "GLEKDPKINJG_PBBCBPKCBDD", + Self::Hnaohfhckgc => "GLEKDPKINJG_HNAOHFHCKGC", + Self::Bbfebnnodpi => "GLEKDPKINJG_BBFEBNNODPI", + Self::Odifnllkjkn => "GLEKDPKINJG_ODIFNLLKJKN", + Self::Jkdjaplgedg => "GLEKDPKINJG_JKDJAPLGEDG", + Self::Bbhmfdpckpc => "GLEKDPKINJG_BBHMFDPCKPC", + Self::Ecghhlhimdn => "GLEKDPKINJG_ECGHHLHIMDN", + Self::Mmpnhpkehfi => "GLEKDPKINJG_MMPNHPKEHFI", + Self::Kiebplfglcd => "GLEKDPKINJG_KIEBPLFGLCD", + Self::Fcopeiohfkf => "GLEKDPKINJG_FCOPEIOHFKF", + Self::Odgdnjbpfkp => "GLEKDPKINJG_ODGDNJBPFKP", + Self::Nlnodggifgd => "GLEKDPKINJG_NLNODGGIFGD", + Self::Cfjnaahegkc => "GLEKDPKINJG_CFJNAAHEGKC", + Self::Indcmjbgifd => "GLEKDPKINJG_INDCMJBGIFD", + Self::Fnclglhpbgp => "GLEKDPKINJG_FNCLGLHPBGP", + Self::Gneahafdpei => "GLEKDPKINJG_GNEAHAFDPEI", + Self::Flmegjeidhd => "GLEKDPKINJG_FLMEGJEIDHD", + Self::Hacjfgcoceh => "GLEKDPKINJG_HACJFGCOCEH", + Self::Eegnklgpkkf => "GLEKDPKINJG_EEGNKLGPKKF", + Self::Gajbjpojnod => "GLEKDPKINJG_GAJBJPOJNOD", + Self::Kadkpmalmgn => "GLEKDPKINJG_KADKPMALMGN", + Self::Blhpkgggcgi => "GLEKDPKINJG_BLHPKGGGCGI", + Self::Eahhmbjodae => "GLEKDPKINJG_EAHHMBJODAE", + Self::Ajnlffegici => "GLEKDPKINJG_AJNLFFEGICI", + Self::Mgmlmidgghn => "GLEKDPKINJG_MGMLMIDGGHN", + Self::Bdffcmfmdcd => "GLEKDPKINJG_BDFFCMFMDCD", + Self::Ebffheefbnm => "GLEKDPKINJG_EBFFHEEFBNM", + Self::Pchllhffdel => "GLEKDPKINJG_PCHLLHFFDEL", + Self::Ldhoeihhgio => "GLEKDPKINJG_LDHOEIHHGIO", + Self::Ncmiilgfaie => "GLEKDPKINJG_NCMIILGFAIE", + Self::Clgmfjkhnoc => "GLEKDPKINJG_CLGMFJKHNOC", + Self::Bikkjpciphi => "GLEKDPKINJG_BIKKJPCIPHI", + Self::Hflemhkdmbn => "GLEKDPKINJG_HFLEMHKDMBN", + Self::Igejcaffodf => "GLEKDPKINJG_IGEJCAFFODF", + Self::Cdeodliepcg => "GLEKDPKINJG_CDEODLIEPCG", + Self::Ldigckfcaka => "GLEKDPKINJG_LDIGCKFCAKA", + Self::Hmneonnlbnf => "GLEKDPKINJG_HMNEONNLBNF", + Self::Hmegcmjelbi => "GLEKDPKINJG_HMEGCMJELBI", + Self::Pbkapegpjic => "GLEKDPKINJG_PBKAPEGPJIC", + Self::Kemklddmnhn => "GLEKDPKINJG_KEMKLDDMNHN", + Self::Chjlmcohejp => "GLEKDPKINJG_CHJLMCOHEJP", + Self::Bcfohcinfco => "GLEKDPKINJG_BCFOHCINFCO", + Self::Nlfnopbcljj => "GLEKDPKINJG_NLFNOPBCLJJ", + Self::Nkefiimmema => "GLEKDPKINJG_NKEFIIMMEMA", + Self::Kdmccocmgnb => "GLEKDPKINJG_KDMCCOCMGNB", + Self::Cbifaeppeji => "GLEKDPKINJG_CBIFAEPPEJI", + Self::Gjoekahlecf => "GLEKDPKINJG_GJOEKAHLECF", + Self::Emjllainlbe => "GLEKDPKINJG_EMJLLAINLBE", + Self::Mnaeffinljm => "GLEKDPKINJG_MNAEFFINLJM", + Self::Bilokkiajge => "GLEKDPKINJG_BILOKKIAJGE", + Self::Ihboobdbfeg => "GLEKDPKINJG_IHBOOBDBFEG", + Self::Geamgalenjc => "GLEKDPKINJG_GEAMGALENJC", + Self::Hgmpneolilg => "GLEKDPKINJG_HGMPNEOLILG", + Self::Ljcgmaplhhp => "GLEKDPKINJG_LJCGMAPLHHP", + Self::Eekeaheeofb => "GLEKDPKINJG_EEKEAHEEOFB", + Self::Goilnfjimjd => "GLEKDPKINJG_GOILNFJIMJD", + Self::Fnjgedpgfmc => "GLEKDPKINJG_FNJGEDPGFMC", + Self::Olloolkdkhl => "GLEKDPKINJG_OLLOOLKDKHL", + Self::Kcpnhhphaad => "GLEKDPKINJG_KCPNHHPHAAD", + Self::Clganaacjen => "GLEKDPKINJG_CLGANAACJEN", + Self::Epnohlgibmf => "GLEKDPKINJG_EPNOHLGIBMF", + Self::Nphglopfnlh => "GLEKDPKINJG_NPHGLOPFNLH", + Self::Ahpgbghmjko => "GLEKDPKINJG_AHPGBGHMJKO", + Self::Ogkpjmjdcgn => "GLEKDPKINJG_OGKPJMJDCGN", + Self::Hgmdjcdhgfl => "GLEKDPKINJG_HGMDJCDHGFL", + Self::Jmdonpcbdej => "GLEKDPKINJG_JMDONPCBDEJ", + Self::Plhgiamdkjn => "GLEKDPKINJG_PLHGIAMDKJN", + Self::Hkaefcfhbme => "GLEKDPKINJG_HKAEFCFHBME", + Self::Omclcaoicfj => "GLEKDPKINJG_OMCLCAOICFJ", + Self::Emmhjpcoenh => "GLEKDPKINJG_EMMHJPCOENH", + Self::Dbiiccggjoe => "GLEKDPKINJG_DBIICCGGJOE", + Self::Emhahkefbjl => "GLEKDPKINJG_EMHAHKEFBJL", + Self::Lajmcoajcgi => "GLEKDPKINJG_LAJMCOAJCGI", + Self::Fajhghcmald => "GLEKDPKINJG_FAJHGHCMALD", + Self::Cihlbedbgog => "GLEKDPKINJG_CIHLBEDBGOG", + Self::Mkicedijnfb => "GLEKDPKINJG_MKICEDIJNFB", + Self::Hemdapiljdp => "GLEKDPKINJG_HEMDAPILJDP", + Self::Lneimikhobg => "GLEKDPKINJG_LNEIMIKHOBG", + Self::Fffckhcabbj => "GLEKDPKINJG_FFFCKHCABBJ", + Self::Goibgnblmjp => "GLEKDPKINJG_GOIBGNBLMJP", + Self::Mgajaebpflc => "GLEKDPKINJG_MGAJAEBPFLC", + Self::Llkbiecmmdk => "GLEKDPKINJG_LLKBIECMMDK", + Self::Jdpcdidaihj => "GLEKDPKINJG_JDPCDIDAIHJ", + Self::Nmcgffjhmin => "GLEKDPKINJG_NMCGFFJHMIN", + Self::Chfkmnhicih => "GLEKDPKINJG_CHFKMNHICIH", + Self::Chfinjpogdd => "GLEKDPKINJG_CHFINJPOGDD", + Self::Cmdflkhhdba => "GLEKDPKINJG_CMDFLKHHDBA", + Self::Gjkgcndpfja => "GLEKDPKINJG_GJKGCNDPFJA", + Self::Bjlgpgfmiai => "GLEKDPKINJG_BJLGPGFMIAI", + Self::Pnljjoecdae => "GLEKDPKINJG_PNLJJOECDAE", + Self::Fhhenjfaimm => "GLEKDPKINJG_FHHENJFAIMM", + Self::Kepjeadincp => "GLEKDPKINJG_KEPJEADINCP", + Self::Kpdholadnnf => "GLEKDPKINJG_KPDHOLADNNF", + Self::Maiemdejedj => "GLEKDPKINJG_MAIEMDEJEDJ", + Self::Fbfclkbhfbf => "GLEKDPKINJG_FBFCLKBHFBF", + Self::Dalnchkkfed => "GLEKDPKINJG_DALNCHKKFED", + Self::Kjdbienjkjc => "GLEKDPKINJG_KJDBIENJKJC", + Self::Jgjcgflbnak => "GLEKDPKINJG_JGJCGFLBNAK", + Self::Fealhmbilal => "GLEKDPKINJG_FEALHMBILAL", + Self::Ipdogadaeai => "GLEKDPKINJG_IPDOGADAEAI", + Self::Kafcnfbcogm => "GLEKDPKINJG_KAFCNFBCOGM", + Self::Hnleeohjhpi => "GLEKDPKINJG_HNLEEOHJHPI", + Self::Dcfimpndnjl => "GLEKDPKINJG_DCFIMPNDNJL", + Self::Cjflngmknce => "GLEKDPKINJG_CJFLNGMKNCE", + Self::Phdbajjianm => "GLEKDPKINJG_PHDBAJJIANM", + Self::Dcbolgochdk => "GLEKDPKINJG_DCBOLGOCHDK", + Self::Cjolblifkbf => "GLEKDPKINJG_CJOLBLIFKBF", + Self::Melchhfkonn => "GLEKDPKINJG_MELCHHFKONN", + Self::Hjecejjbgbc => "GLEKDPKINJG_HJECEJJBGBC", + Self::Ajppninbbfj => "GLEKDPKINJG_AJPPNINBBFJ", + Self::Oplfgddbdgd => "GLEKDPKINJG_OPLFGDDBDGD", + Self::Doafkimhnnf => "GLEKDPKINJG_DOAFKIMHNNF", + Self::Ekmlndkomif => "GLEKDPKINJG_EKMLNDKOMIF", + Self::Ieicponhpdc => "GLEKDPKINJG_IEICPONHPDC", + Self::Mecfgheildp => "GLEKDPKINJG_MECFGHEILDP", + Self::Cfcfkhbbhla => "GLEKDPKINJG_CFCFKHBBHLA", + Self::Fkdglhahjaa => "GLEKDPKINJG_FKDGLHAHJAA", + Self::Fmpamkalkga => "GLEKDPKINJG_FMPAMKALKGA", + Self::Icelfofchfo => "GLEKDPKINJG_ICELFOFCHFO", + Self::Lbbmgcpbpkc => "GLEKDPKINJG_LBBMGCPBPKC", + Self::Bfhbeidfccn => "GLEKDPKINJG_BFHBEIDFCCN", + Self::Eekkpkemhnk => "GLEKDPKINJG_EEKKPKEMHNK", + Self::Eoldbghloka => "GLEKDPKINJG_EOLDBGHLOKA", + Self::Ehfbcpfkjgd => "GLEKDPKINJG_EHFBCPFKJGD", + Self::Ckbfahngcik => "GLEKDPKINJG_CKBFAHNGCIK", + Self::Kofdelgehlp => "GLEKDPKINJG_KOFDELGEHLP", + Self::Pccaijmbham => "GLEKDPKINJG_PCCAIJMBHAM", + Self::Iioifcelbbg => "GLEKDPKINJG_IIOIFCELBBG", + Self::Hgoppigfflb => "GLEKDPKINJG_HGOPPIGFFLB", + Self::Flbmgggofpj => "GLEKDPKINJG_FLBMGGGOFPJ", + Self::Pjdihimbgmh => "GLEKDPKINJG_PJDIHIMBGMH", + Self::Domlojdfenk => "GLEKDPKINJG_DOMLOJDFENK", + Self::Bddknnkcbmb => "GLEKDPKINJG_BDDKNNKCBMB", + Self::Cehfdndihdg => "GLEKDPKINJG_CEHFDNDIHDG", + Self::Edpmdbakcdc => "GLEKDPKINJG_EDPMDBAKCDC", + Self::Bikdfdebabd => "GLEKDPKINJG_BIKDFDEBABD", + Self::Pgmfjhclcpf => "GLEKDPKINJG_PGMFJHCLCPF", + Self::Lfeekhpkkhg => "GLEKDPKINJG_LFEEKHPKKHG", + Self::Epmdfckecmm => "GLEKDPKINJG_EPMDFCKECMM", + Self::Ocpecghafco => "GLEKDPKINJG_OCPECGHAFCO", + Self::Plkokimechn => "GLEKDPKINJG_PLKOKIMECHN", + Self::Jcfknmldbbd => "GLEKDPKINJG_JCFKNMLDBBD", + Self::Kjngljdoljd => "GLEKDPKINJG_KJNGLJDOLJD", + Self::Hjbaminnckf => "GLEKDPKINJG_HJBAMINNCKF", + Self::Fafkbfnefeo => "GLEKDPKINJG_FAFKBFNEFEO", + Self::Nblnblbeimo => "GLEKDPKINJG_NBLNBLBEIMO", + Self::Fgnclcbegak => "GLEKDPKINJG_FGNCLCBEGAK", + Self::Ckflpdkpcab => "GLEKDPKINJG_CKFLPDKPCAB", + Self::Mcnmpcdgbed => "GLEKDPKINJG_MCNMPCDGBED", + Self::Lcejmibmfcg => "GLEKDPKINJG_LCEJMIBMFCG", + Self::Knjopjbhgnm => "GLEKDPKINJG_KNJOPJBHGNM", + Self::Gipagkcmgef => "GLEKDPKINJG_GIPAGKCMGEF", + Self::Ejppiahaocf => "GLEKDPKINJG_EJPPIAHAOCF", + Self::Gbncehbmgbg => "GLEKDPKINJG_GBNCEHBMGBG", + Self::Hngapbopkhj => "GLEKDPKINJG_HNGAPBOPKHJ", + Self::Ghbjcnginjk => "GLEKDPKINJG_GHBJCNGINJK", + Self::Jmfibehicmi => "GLEKDPKINJG_JMFIBEHICMI", + Self::Jhiadfjhhlp => "GLEKDPKINJG_JHIADFJHHLP", + Self::Gjoapegonfm => "GLEKDPKINJG_GJOAPEGONFM", + Self::Khbfilhnfmb => "GLEKDPKINJG_KHBFILHNFMB", + Self::Lnlfbiecfih => "GLEKDPKINJG_LNLFBIECFIH", + Self::Emoobppkmbg => "GLEKDPKINJG_EMOOBPPKMBG", + Self::Jaocmakbcie => "GLEKDPKINJG_JAOCMAKBCIE", + Self::Ghmldcmfgpg => "GLEKDPKINJG_GHMLDCMFGPG", + Self::Cefjojmghli => "GLEKDPKINJG_CEFJOJMGHLI", + Self::Khhopclphjn => "GLEKDPKINJG_KHHOPCLPHJN", + Self::Gdmichkphba => "GLEKDPKINJG_GDMICHKPHBA", + Self::Ldbokfibnal => "GLEKDPKINJG_LDBOKFIBNAL", + Self::Eknhldiapbo => "GLEKDPKINJG_EKNHLDIAPBO", + Self::Lpbdeiminhj => "GLEKDPKINJG_LPBDEIMINHJ", + Self::Ldkpenpcpei => "GLEKDPKINJG_LDKPENPCPEI", + Self::Lhkoigagbch => "GLEKDPKINJG_LHKOIGAGBCH", + Self::Cidmagiepen => "GLEKDPKINJG_CIDMAGIEPEN", + Self::Ocpdpchmfig => "GLEKDPKINJG_OCPDPCHMFIG", + Self::Olgbjpdodfm => "GLEKDPKINJG_OLGBJPDODFM", + Self::Magcbjojolh => "GLEKDPKINJG_MAGCBJOJOLH", + Self::Onehnimnhml => "GLEKDPKINJG_ONEHNIMNHML", + Self::Fkjpegadfcg => "GLEKDPKINJG_FKJPEGADFCG", + Self::Hcpccobbdem => "GLEKDPKINJG_HCPCCOBBDEM", + Self::Bnjchmdkhgg => "GLEKDPKINJG_BNJCHMDKHGG", + Self::Balpfadhlon => "GLEKDPKINJG_BALPFADHLON", + Self::Biijlcecdla => "GLEKDPKINJG_BIIJLCECDLA", + Self::Hhaemmgfihn => "GLEKDPKINJG_HHAEMMGFIHN", + Self::Eehcnlbdmgf => "GLEKDPKINJG_EEHCNLBDMGF", + Self::Nabljhcpgmo => "GLEKDPKINJG_NABLJHCPGMO", + Self::Pecbgiemipf => "GLEKDPKINJG_PECBGIEMIPF", + Self::Kdijiobpenk => "GLEKDPKINJG_KDIJIOBPENK", + Self::Anoignkmogi => "GLEKDPKINJG_ANOIGNKMOGI", + Self::Ioimehgafpb => "GLEKDPKINJG_IOIMEHGAFPB", + Self::Depaaecdnbg => "GLEKDPKINJG_DEPAAECDNBG", + Self::Ibgmekccdbh => "GLEKDPKINJG_IBGMEKCCDBH", + Self::Cdbalgfmfdn => "GLEKDPKINJG_CDBALGFMFDN", + Self::Mfloobdbhmn => "GLEKDPKINJG_MFLOOBDBHMN", + Self::Olkindbenok => "GLEKDPKINJG_OLKINDBENOK", + Self::Akfgdjlgipb => "GLEKDPKINJG_AKFGDJLGIPB", + Self::Olidcnofnbh => "GLEKDPKINJG_OLIDCNOFNBH", + Self::Phffnpjlgoa => "GLEKDPKINJG_PHFFNPJLGOA", + Self::Dcoimcpcagn => "GLEKDPKINJG_DCOIMCPCAGN", + Self::Flmimbekhjl => "GLEKDPKINJG_FLMIMBEKHJL", + Self::Gmmlmolfbdn => "GLEKDPKINJG_GMMLMOLFBDN", + Self::Jligomekfio => "GLEKDPKINJG_JLIGOMEKFIO", + Self::Fdghnmjffjc => "GLEKDPKINJG_FDGHNMJFFJC", + Self::Dlckgacobic => "GLEKDPKINJG_DLCKGACOBIC", + Self::Mdplfmfhghp => "GLEKDPKINJG_MDPLFMFHGHP", + Self::Amhdndbmnko => "GLEKDPKINJG_AMHDNDBMNKO", + Self::Fihbjdaabik => "GLEKDPKINJG_FIHBJDAABIK", + Self::Ihollkeagoh => "GLEKDPKINJG_IHOLLKEAGOH", + Self::Enijgknonfp => "GLEKDPKINJG_ENIJGKNONFP", + Self::Fobmofkgpbk => "GLEKDPKINJG_FOBMOFKGPBK", + Self::Ppndgkocncn => "GLEKDPKINJG_PPNDGKOCNCN", + Self::Cggmjhibjhk => "GLEKDPKINJG_CGGMJHIBJHK", + Self::Nnmififkjgd => "GLEKDPKINJG_NNMIFIFKJGD", + Self::Afkmbdhpjad => "GLEKDPKINJG_AFKMBDHPJAD", + Self::Anoggchnmkl => "GLEKDPKINJG_ANOGGCHNMKL", + Self::Kiglclkgcgf => "GLEKDPKINJG_KIGLCLKGCGF", + Self::Ippjmgpddep => "GLEKDPKINJG_IPPJMGPDDEP", + Self::Jgfkbokjloc => "GLEKDPKINJG_JGFKBOKJLOC", + Self::Mogmlgfocep => "GLEKDPKINJG_MOGMLGFOCEP", + Self::Ncmkjbdnolb => "GLEKDPKINJG_NCMKJBDNOLB", + Self::Lpdcjahbgaj => "GLEKDPKINJG_LPDCJAHBGAJ", + Self::Npdcdoombcp => "GLEKDPKINJG_NPDCDOOMBCP", + Self::Ioafepjlngb => "GLEKDPKINJG_IOAFEPJLNGB", + Self::Apdghnjgngn => "GLEKDPKINJG_APDGHNJGNGN", + Self::Cgmgccnemlc => "GLEKDPKINJG_CGMGCCNEMLC", + Self::Mlijjeelibp => "GLEKDPKINJG_MLIJJEELIBP", + Self::Lamgbehgeoo => "GLEKDPKINJG_LAMGBEHGEOO", + Self::Hmecibilkpi => "GLEKDPKINJG_HMECIBILKPI", + Self::Ddhmgkphaoc => "GLEKDPKINJG_DDHMGKPHAOC", + Self::Emedpbgpcmm => "GLEKDPKINJG_EMEDPBGPCMM", + Self::Kagjbhhdibn => "GLEKDPKINJG_KAGJBHHDIBN", + Self::Nnpmnebefjk => "GLEKDPKINJG_NNPMNEBEFJK", + Self::Pedgcjhioim => "GLEKDPKINJG_PEDGCJHIOIM", + Self::Jbiomkgjedb => "GLEKDPKINJG_JBIOMKGJEDB", + Self::Jcijadjopch => "GLEKDPKINJG_JCIJADJOPCH", + Self::Bgphohpmfjk => "GLEKDPKINJG_BGPHOHPMFJK", + Self::Ndoideeehoa => "GLEKDPKINJG_NDOIDEEEHOA", + Self::Echncceokmb => "GLEKDPKINJG_ECHNCCEOKMB", + Self::Mclffaaicoi => "GLEKDPKINJG_MCLFFAAICOI", + Self::Deabihafcob => "GLEKDPKINJG_DEABIHAFCOB", + Self::Mckidokjlhi => "GLEKDPKINJG_MCKIDOKJLHI", + Self::Nlahpkkdekh => "GLEKDPKINJG_NLAHPKKDEKH", + Self::Djcgkfpjhjh => "GLEKDPKINJG_DJCGKFPJHJH", + Self::Jfkdbcccdcp => "GLEKDPKINJG_JFKDBCCCDCP", + Self::Adohjenfcni => "GLEKDPKINJG_ADOHJENFCNI", + Self::Djfbgbgbbeg => "GLEKDPKINJG_DJFBGBGBBEG", + Self::Beaiedhmllb => "GLEKDPKINJG_BEAIEDHMLLB", + Self::Fcopiamgfai => "GLEKDPKINJG_FCOPIAMGFAI", + Self::Eaafaepcica => "GLEKDPKINJG_EAAFAEPCICA", + Self::Lfhkpmbjhoh => "GLEKDPKINJG_LFHKPMBJHOH", + Self::Kddgfmkjcno => "GLEKDPKINJG_KDDGFMKJCNO", + Self::Kogokgheeia => "GLEKDPKINJG_KOGOKGHEEIA", + Self::Dacnbbblnjo => "GLEKDPKINJG_DACNBBBLNJO", + Self::Oaeikgnkkga => "GLEKDPKINJG_OAEIKGNKKGA", + Self::Joekffohokc => "GLEKDPKINJG_JOEKFFOHOKC", + Self::Gachhpdfnon => "GLEKDPKINJG_GACHHPDFNON", + Self::Ohedfcblpli => "GLEKDPKINJG_OHEDFCBLPLI", + Self::Ompdilflcaf => "GLEKDPKINJG_OMPDILFLCAF", + Self::Jdceddcegji => "GLEKDPKINJG_JDCEDDCEGJI", + Self::Kdjfbalichh => "GLEKDPKINJG_KDJFBALICHH", + Self::Npneflhbemg => "GLEKDPKINJG_NPNEFLHBEMG", + Self::Amhdcofeahf => "GLEKDPKINJG_AMHDCOFEAHF", + Self::Jiodnenfooh => "GLEKDPKINJG_JIODNENFOOH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GLEKDPKINJG_GEEKIJJONBD" => Some(Self::Geekijjonbd), + "GLEKDPKINJG_NKMBFKEFDLO" => Some(Self::Nkmbfkefdlo), + "GLEKDPKINJG_EDOBNIHPHDL" => Some(Self::Edobnihphdl), + "GLEKDPKINJG_PFCBLGJFCAM" => Some(Self::Pfcblgjfcam), + "GLEKDPKINJG_PLGONPLEIDK" => Some(Self::Plgonpleidk), + "GLEKDPKINJG_CKPFJLLMHBL" => Some(Self::Ckpfjllmhbl), + "GLEKDPKINJG_JLNKJPCPILO" => Some(Self::Jlnkjpcpilo), + "GLEKDPKINJG_KPMDPKDBIIH" => Some(Self::Kpmdpkdbiih), + "GLEKDPKINJG_CFFAMICOKLF" => Some(Self::Cffamicoklf), + "GLEKDPKINJG_FJEPHLODONL" => Some(Self::Fjephlodonl), + "GLEKDPKINJG_HECAPKDDMIM" => Some(Self::Hecapkddmim), + "GLEKDPKINJG_LLMPHMIIEDO" => Some(Self::Llmphmiiedo), + "GLEKDPKINJG_PBIHGHDEIJE" => Some(Self::Pbihghdeije), + "GLEKDPKINJG_LHBGCFMGBIO" => Some(Self::Lhbgcfmgbio), + "GLEKDPKINJG_CPNGOJNHACG" => Some(Self::Cpngojnhacg), + "GLEKDPKINJG_LHDCOAGKAJC" => Some(Self::Lhdcoagkajc), + "GLEKDPKINJG_HEACMDMOPFF" => Some(Self::Heacmdmopff), + "GLEKDPKINJG_FPEMEDNFMLL" => Some(Self::Fpemednfmll), + "GLEKDPKINJG_NHMECLMBBNE" => Some(Self::Nhmeclmbbne), + "GLEKDPKINJG_OMOHJMKBLBM" => Some(Self::Omohjmkblbm), + "GLEKDPKINJG_FHAEPLPINHD" => Some(Self::Fhaeplpinhd), + "GLEKDPKINJG_GGACNNJNDAM" => Some(Self::Ggacnnjndam), + "GLEKDPKINJG_AKPDJPMDFOE" => Some(Self::Akpdjpmdfoe), + "GLEKDPKINJG_BBHLDNDECNH" => Some(Self::Bbhldndecnh), + "GLEKDPKINJG_MJACGHKMDEO" => Some(Self::Mjacghkmdeo), + "GLEKDPKINJG_IHDIJBFADBD" => Some(Self::Ihdijbfadbd), + "GLEKDPKINJG_JABHNBLGIIF" => Some(Self::Jabhnblgiif), + "GLEKDPKINJG_OKFNMGOPHBM" => Some(Self::Okfnmgophbm), + "GLEKDPKINJG_GKNJMJDACFB" => Some(Self::Gknjmjdacfb), + "GLEKDPKINJG_DNAEEILHAJP" => Some(Self::Dnaeeilhajp), + "GLEKDPKINJG_KNBGONKBDFG" => Some(Self::Knbgonkbdfg), + "GLEKDPKINJG_CHANNAEOMHB" => Some(Self::Channaeomhb), + "GLEKDPKINJG_HADEGDIGPPN" => Some(Self::Hadegdigppn), + "GLEKDPKINJG_MAAAHBNLONA" => Some(Self::Maaahbnlona), + "GLEKDPKINJG_JNGIDPMCOMI" => Some(Self::Jngidpmcomi), + "GLEKDPKINJG_ODMPIEDJLEC" => Some(Self::Odmpiedjlec), + "GLEKDPKINJG_AOPJANFDNLH" => Some(Self::Aopjanfdnlh), + "GLEKDPKINJG_BHIGCDMIIMI" => Some(Self::Bhigcdmiimi), + "GLEKDPKINJG_MNIGJADMLDC" => Some(Self::Mnigjadmldc), + "GLEKDPKINJG_MIKKIKEFGKC" => Some(Self::Mikkikefgkc), + "GLEKDPKINJG_LBLBOFCCHLF" => Some(Self::Lblbofcchlf), + "GLEKDPKINJG_FOJPHAMFEFG" => Some(Self::Fojphamfefg), + "GLEKDPKINJG_EOMIJOOGHED" => Some(Self::Eomijooghed), + "GLEKDPKINJG_BMEILAIDFDH" => Some(Self::Bmeilaidfdh), + "GLEKDPKINJG_PFKPGKDOOIK" => Some(Self::Pfkpgkdooik), + "GLEKDPKINJG_BDGGGKFEPJJ" => Some(Self::Bdgggkfepjj), + "GLEKDPKINJG_EAGDLKBPOIA" => Some(Self::Eagdlkbpoia), + "GLEKDPKINJG_KEGCEPKOAOO" => Some(Self::Kegcepkoaoo), + "GLEKDPKINJG_NGILNCMPMLO" => Some(Self::Ngilncmpmlo), + "GLEKDPKINJG_ABPPPLLDMJI" => Some(Self::Abppplldmji), + "GLEKDPKINJG_FNBPDLFCLHO" => Some(Self::Fnbpdlfclho), + "GLEKDPKINJG_KFLGFHEOFCH" => Some(Self::Kflgfheofch), + "GLEKDPKINJG_DKMPJGGIONA" => Some(Self::Dkmpjggiona), + "GLEKDPKINJG_GHDDOKLGHPJ" => Some(Self::Ghddoklghpj), + "GLEKDPKINJG_BCNFPNMLFAH" => Some(Self::Bcnfpnmlfah), + "GLEKDPKINJG_GMNFNOEDLCB" => Some(Self::Gmnfnoedlcb), + "GLEKDPKINJG_LIDFHDCNBBB" => Some(Self::Lidfhdcnbbb), + "GLEKDPKINJG_KHNKBIDDKCG" => Some(Self::Khnkbiddkcg), + "GLEKDPKINJG_LDBJHBAKOFD" => Some(Self::Ldbjhbakofd), + "GLEKDPKINJG_GBGFKJEEGLA" => Some(Self::Gbgfkjeegla), + "GLEKDPKINJG_LODCCDMPNNP" => Some(Self::Lodccdmpnnp), + "GLEKDPKINJG_MDGLOJOPMAN" => Some(Self::Mdglojopman), + "GLEKDPKINJG_LOAHLLDEJLP" => Some(Self::Loahlldejlp), + "GLEKDPKINJG_DFOCKNBOFAH" => Some(Self::Dfocknbofah), + "GLEKDPKINJG_PCFADOKAEDO" => Some(Self::Pcfadokaedo), + "GLEKDPKINJG_PHCIEGMKKBI" => Some(Self::Phciegmkkbi), + "GLEKDPKINJG_EKKBEMAPKEO" => Some(Self::Ekkbemapkeo), + "GLEKDPKINJG_MELOHIEGHBL" => Some(Self::Melohieghbl), + "GLEKDPKINJG_GNJADLNJIMK" => Some(Self::Gnjadlnjimk), + "GLEKDPKINJG_CAHOCKAMFCG" => Some(Self::Cahockamfcg), + "GLEKDPKINJG_KHDAGLDJLAF" => Some(Self::Khdagldjlaf), + "GLEKDPKINJG_HKAIOGKAEID" => Some(Self::Hkaiogkaeid), + "GLEKDPKINJG_MLECPGPLFEO" => Some(Self::Mlecpgplfeo), + "GLEKDPKINJG_MOFGBDKHEBL" => Some(Self::Mofgbdkhebl), + "GLEKDPKINJG_PAEIAKBMMBJ" => Some(Self::Paeiakbmmbj), + "GLEKDPKINJG_BIEEHIDKNKA" => Some(Self::Bieehidknka), + "GLEKDPKINJG_IGIMDIAKGBP" => Some(Self::Igimdiakgbp), + "GLEKDPKINJG_LBPEFKAFBIJ" => Some(Self::Lbpefkafbij), + "GLEKDPKINJG_ADIIBKAECIL" => Some(Self::Adiibkaecil), + "GLEKDPKINJG_HCGCPIBLFJL" => Some(Self::Hcgcpiblfjl), + "GLEKDPKINJG_PHMCFIEKAMO" => Some(Self::Phmcfiekamo), + "GLEKDPKINJG_OHDPNMFMHCE" => Some(Self::Ohdpnmfmhce), + "GLEKDPKINJG_MKPKABGMLGC" => Some(Self::Mkpkabgmlgc), + "GLEKDPKINJG_JLILKLCLFDB" => Some(Self::Jlilklclfdb), + "GLEKDPKINJG_GOIMKDKPGPF" => Some(Self::Goimkdkpgpf), + "GLEKDPKINJG_KFOHPODEFNP" => Some(Self::Kfohpodefnp), + "GLEKDPKINJG_CAIFNAPBGGF" => Some(Self::Caifnapbggf), + "GLEKDPKINJG_NHGMHLLOLME" => Some(Self::Nhgmhllolme), + "GLEKDPKINJG_JGDEMDNCMBK" => Some(Self::Jgdemdncmbk), + "GLEKDPKINJG_KOLGEBCCGBK" => Some(Self::Kolgebccgbk), + "GLEKDPKINJG_MEMACAKBJBM" => Some(Self::Memacakbjbm), + "GLEKDPKINJG_LJEBABDICIE" => Some(Self::Ljebabdicie), + "GLEKDPKINJG_HHFMPKGKEFL" => Some(Self::Hhfmpkgkefl), + "GLEKDPKINJG_JGDLCMIPBJJ" => Some(Self::Jgdlcmipbjj), + "GLEKDPKINJG_OOMIMLFMJGD" => Some(Self::Oomimlfmjgd), + "GLEKDPKINJG_MJBEDNDJECL" => Some(Self::Mjbedndjecl), + "GLEKDPKINJG_BGLOIPFFKDE" => Some(Self::Bgloipffkde), + "GLEKDPKINJG_AAMLGACBGIN" => Some(Self::Aamlgacbgin), + "GLEKDPKINJG_DGBONACBDIJ" => Some(Self::Dgbonacbdij), + "GLEKDPKINJG_AIIEEPKJPOM" => Some(Self::Aiieepkjpom), + "GLEKDPKINJG_MHBLALNFNOD" => Some(Self::Mhblalnfnod), + "GLEKDPKINJG_KBAAIILAENB" => Some(Self::Kbaaiilaenb), + "GLEKDPKINJG_JOIMALAFFMJ" => Some(Self::Joimalaffmj), + "GLEKDPKINJG_MDDDOGHMMDG" => Some(Self::Mdddoghmmdg), + "GLEKDPKINJG_DLNAMFDDINE" => Some(Self::Dlnamfddine), + "GLEKDPKINJG_OCFMIIFNAGG" => Some(Self::Ocfmiifnagg), + "GLEKDPKINJG_ACOIMDNKJIC" => Some(Self::Acoimdnkjic), + "GLEKDPKINJG_EHGCPBCONGO" => Some(Self::Ehgcpbcongo), + "GLEKDPKINJG_MMDJNPCPNIM" => Some(Self::Mmdjnpcpnim), + "GLEKDPKINJG_IFJLLMHJEJD" => Some(Self::Ifjllmhjejd), + "GLEKDPKINJG_PJOFLPHOCLK" => Some(Self::Pjoflphoclk), + "GLEKDPKINJG_OKICMEIDFNB" => Some(Self::Okicmeidfnb), + "GLEKDPKINJG_BDHJAKJLKMI" => Some(Self::Bdhjakjlkmi), + "GLEKDPKINJG_CPHNLOGOKKG" => Some(Self::Cphnlogokkg), + "GLEKDPKINJG_APFOFLJMBNO" => Some(Self::Apfofljmbno), + "GLEKDPKINJG_KFPFDKIPOIB" => Some(Self::Kfpfdkipoib), + "GLEKDPKINJG_INAHMAAKGPI" => Some(Self::Inahmaakgpi), + "GLEKDPKINJG_CHOJFDCHEOJ" => Some(Self::Chojfdcheoj), + "GLEKDPKINJG_HEFGJJGELHA" => Some(Self::Hefgjjgelha), + "GLEKDPKINJG_PNFDOEAFAPI" => Some(Self::Pnfdoeafapi), + "GLEKDPKINJG_KINOPLMAALC" => Some(Self::Kinoplmaalc), + "GLEKDPKINJG_JEHEJFCGABG" => Some(Self::Jehejfcgabg), + "GLEKDPKINJG_GONJJAOALNM" => Some(Self::Gonjjaoalnm), + "GLEKDPKINJG_ADIOMMLMNCN" => Some(Self::Adiommlmncn), + "GLEKDPKINJG_IAICODJIGGE" => Some(Self::Iaicodjigge), + "GLEKDPKINJG_BIJDFFOBENI" => Some(Self::Bijdffobeni), + "GLEKDPKINJG_HJACJAPBGNI" => Some(Self::Hjacjapbgni), + "GLEKDPKINJG_PBBCBPKCBDD" => Some(Self::Pbbcbpkcbdd), + "GLEKDPKINJG_HNAOHFHCKGC" => Some(Self::Hnaohfhckgc), + "GLEKDPKINJG_BBFEBNNODPI" => Some(Self::Bbfebnnodpi), + "GLEKDPKINJG_ODIFNLLKJKN" => Some(Self::Odifnllkjkn), + "GLEKDPKINJG_JKDJAPLGEDG" => Some(Self::Jkdjaplgedg), + "GLEKDPKINJG_BBHMFDPCKPC" => Some(Self::Bbhmfdpckpc), + "GLEKDPKINJG_ECGHHLHIMDN" => Some(Self::Ecghhlhimdn), + "GLEKDPKINJG_MMPNHPKEHFI" => Some(Self::Mmpnhpkehfi), + "GLEKDPKINJG_KIEBPLFGLCD" => Some(Self::Kiebplfglcd), + "GLEKDPKINJG_FCOPEIOHFKF" => Some(Self::Fcopeiohfkf), + "GLEKDPKINJG_ODGDNJBPFKP" => Some(Self::Odgdnjbpfkp), + "GLEKDPKINJG_NLNODGGIFGD" => Some(Self::Nlnodggifgd), + "GLEKDPKINJG_CFJNAAHEGKC" => Some(Self::Cfjnaahegkc), + "GLEKDPKINJG_INDCMJBGIFD" => Some(Self::Indcmjbgifd), + "GLEKDPKINJG_FNCLGLHPBGP" => Some(Self::Fnclglhpbgp), + "GLEKDPKINJG_GNEAHAFDPEI" => Some(Self::Gneahafdpei), + "GLEKDPKINJG_FLMEGJEIDHD" => Some(Self::Flmegjeidhd), + "GLEKDPKINJG_HACJFGCOCEH" => Some(Self::Hacjfgcoceh), + "GLEKDPKINJG_EEGNKLGPKKF" => Some(Self::Eegnklgpkkf), + "GLEKDPKINJG_GAJBJPOJNOD" => Some(Self::Gajbjpojnod), + "GLEKDPKINJG_KADKPMALMGN" => Some(Self::Kadkpmalmgn), + "GLEKDPKINJG_BLHPKGGGCGI" => Some(Self::Blhpkgggcgi), + "GLEKDPKINJG_EAHHMBJODAE" => Some(Self::Eahhmbjodae), + "GLEKDPKINJG_AJNLFFEGICI" => Some(Self::Ajnlffegici), + "GLEKDPKINJG_MGMLMIDGGHN" => Some(Self::Mgmlmidgghn), + "GLEKDPKINJG_BDFFCMFMDCD" => Some(Self::Bdffcmfmdcd), + "GLEKDPKINJG_EBFFHEEFBNM" => Some(Self::Ebffheefbnm), + "GLEKDPKINJG_PCHLLHFFDEL" => Some(Self::Pchllhffdel), + "GLEKDPKINJG_LDHOEIHHGIO" => Some(Self::Ldhoeihhgio), + "GLEKDPKINJG_NCMIILGFAIE" => Some(Self::Ncmiilgfaie), + "GLEKDPKINJG_CLGMFJKHNOC" => Some(Self::Clgmfjkhnoc), + "GLEKDPKINJG_BIKKJPCIPHI" => Some(Self::Bikkjpciphi), + "GLEKDPKINJG_HFLEMHKDMBN" => Some(Self::Hflemhkdmbn), + "GLEKDPKINJG_IGEJCAFFODF" => Some(Self::Igejcaffodf), + "GLEKDPKINJG_CDEODLIEPCG" => Some(Self::Cdeodliepcg), + "GLEKDPKINJG_LDIGCKFCAKA" => Some(Self::Ldigckfcaka), + "GLEKDPKINJG_HMNEONNLBNF" => Some(Self::Hmneonnlbnf), + "GLEKDPKINJG_HMEGCMJELBI" => Some(Self::Hmegcmjelbi), + "GLEKDPKINJG_PBKAPEGPJIC" => Some(Self::Pbkapegpjic), + "GLEKDPKINJG_KEMKLDDMNHN" => Some(Self::Kemklddmnhn), + "GLEKDPKINJG_CHJLMCOHEJP" => Some(Self::Chjlmcohejp), + "GLEKDPKINJG_BCFOHCINFCO" => Some(Self::Bcfohcinfco), + "GLEKDPKINJG_NLFNOPBCLJJ" => Some(Self::Nlfnopbcljj), + "GLEKDPKINJG_NKEFIIMMEMA" => Some(Self::Nkefiimmema), + "GLEKDPKINJG_KDMCCOCMGNB" => Some(Self::Kdmccocmgnb), + "GLEKDPKINJG_CBIFAEPPEJI" => Some(Self::Cbifaeppeji), + "GLEKDPKINJG_GJOEKAHLECF" => Some(Self::Gjoekahlecf), + "GLEKDPKINJG_EMJLLAINLBE" => Some(Self::Emjllainlbe), + "GLEKDPKINJG_MNAEFFINLJM" => Some(Self::Mnaeffinljm), + "GLEKDPKINJG_BILOKKIAJGE" => Some(Self::Bilokkiajge), + "GLEKDPKINJG_IHBOOBDBFEG" => Some(Self::Ihboobdbfeg), + "GLEKDPKINJG_GEAMGALENJC" => Some(Self::Geamgalenjc), + "GLEKDPKINJG_HGMPNEOLILG" => Some(Self::Hgmpneolilg), + "GLEKDPKINJG_LJCGMAPLHHP" => Some(Self::Ljcgmaplhhp), + "GLEKDPKINJG_EEKEAHEEOFB" => Some(Self::Eekeaheeofb), + "GLEKDPKINJG_GOILNFJIMJD" => Some(Self::Goilnfjimjd), + "GLEKDPKINJG_FNJGEDPGFMC" => Some(Self::Fnjgedpgfmc), + "GLEKDPKINJG_OLLOOLKDKHL" => Some(Self::Olloolkdkhl), + "GLEKDPKINJG_KCPNHHPHAAD" => Some(Self::Kcpnhhphaad), + "GLEKDPKINJG_CLGANAACJEN" => Some(Self::Clganaacjen), + "GLEKDPKINJG_EPNOHLGIBMF" => Some(Self::Epnohlgibmf), + "GLEKDPKINJG_NPHGLOPFNLH" => Some(Self::Nphglopfnlh), + "GLEKDPKINJG_AHPGBGHMJKO" => Some(Self::Ahpgbghmjko), + "GLEKDPKINJG_OGKPJMJDCGN" => Some(Self::Ogkpjmjdcgn), + "GLEKDPKINJG_HGMDJCDHGFL" => Some(Self::Hgmdjcdhgfl), + "GLEKDPKINJG_JMDONPCBDEJ" => Some(Self::Jmdonpcbdej), + "GLEKDPKINJG_PLHGIAMDKJN" => Some(Self::Plhgiamdkjn), + "GLEKDPKINJG_HKAEFCFHBME" => Some(Self::Hkaefcfhbme), + "GLEKDPKINJG_OMCLCAOICFJ" => Some(Self::Omclcaoicfj), + "GLEKDPKINJG_EMMHJPCOENH" => Some(Self::Emmhjpcoenh), + "GLEKDPKINJG_DBIICCGGJOE" => Some(Self::Dbiiccggjoe), + "GLEKDPKINJG_EMHAHKEFBJL" => Some(Self::Emhahkefbjl), + "GLEKDPKINJG_LAJMCOAJCGI" => Some(Self::Lajmcoajcgi), + "GLEKDPKINJG_FAJHGHCMALD" => Some(Self::Fajhghcmald), + "GLEKDPKINJG_CIHLBEDBGOG" => Some(Self::Cihlbedbgog), + "GLEKDPKINJG_MKICEDIJNFB" => Some(Self::Mkicedijnfb), + "GLEKDPKINJG_HEMDAPILJDP" => Some(Self::Hemdapiljdp), + "GLEKDPKINJG_LNEIMIKHOBG" => Some(Self::Lneimikhobg), + "GLEKDPKINJG_FFFCKHCABBJ" => Some(Self::Fffckhcabbj), + "GLEKDPKINJG_GOIBGNBLMJP" => Some(Self::Goibgnblmjp), + "GLEKDPKINJG_MGAJAEBPFLC" => Some(Self::Mgajaebpflc), + "GLEKDPKINJG_LLKBIECMMDK" => Some(Self::Llkbiecmmdk), + "GLEKDPKINJG_JDPCDIDAIHJ" => Some(Self::Jdpcdidaihj), + "GLEKDPKINJG_NMCGFFJHMIN" => Some(Self::Nmcgffjhmin), + "GLEKDPKINJG_CHFKMNHICIH" => Some(Self::Chfkmnhicih), + "GLEKDPKINJG_CHFINJPOGDD" => Some(Self::Chfinjpogdd), + "GLEKDPKINJG_CMDFLKHHDBA" => Some(Self::Cmdflkhhdba), + "GLEKDPKINJG_GJKGCNDPFJA" => Some(Self::Gjkgcndpfja), + "GLEKDPKINJG_BJLGPGFMIAI" => Some(Self::Bjlgpgfmiai), + "GLEKDPKINJG_PNLJJOECDAE" => Some(Self::Pnljjoecdae), + "GLEKDPKINJG_FHHENJFAIMM" => Some(Self::Fhhenjfaimm), + "GLEKDPKINJG_KEPJEADINCP" => Some(Self::Kepjeadincp), + "GLEKDPKINJG_KPDHOLADNNF" => Some(Self::Kpdholadnnf), + "GLEKDPKINJG_MAIEMDEJEDJ" => Some(Self::Maiemdejedj), + "GLEKDPKINJG_FBFCLKBHFBF" => Some(Self::Fbfclkbhfbf), + "GLEKDPKINJG_DALNCHKKFED" => Some(Self::Dalnchkkfed), + "GLEKDPKINJG_KJDBIENJKJC" => Some(Self::Kjdbienjkjc), + "GLEKDPKINJG_JGJCGFLBNAK" => Some(Self::Jgjcgflbnak), + "GLEKDPKINJG_FEALHMBILAL" => Some(Self::Fealhmbilal), + "GLEKDPKINJG_IPDOGADAEAI" => Some(Self::Ipdogadaeai), + "GLEKDPKINJG_KAFCNFBCOGM" => Some(Self::Kafcnfbcogm), + "GLEKDPKINJG_HNLEEOHJHPI" => Some(Self::Hnleeohjhpi), + "GLEKDPKINJG_DCFIMPNDNJL" => Some(Self::Dcfimpndnjl), + "GLEKDPKINJG_CJFLNGMKNCE" => Some(Self::Cjflngmknce), + "GLEKDPKINJG_PHDBAJJIANM" => Some(Self::Phdbajjianm), + "GLEKDPKINJG_DCBOLGOCHDK" => Some(Self::Dcbolgochdk), + "GLEKDPKINJG_CJOLBLIFKBF" => Some(Self::Cjolblifkbf), + "GLEKDPKINJG_MELCHHFKONN" => Some(Self::Melchhfkonn), + "GLEKDPKINJG_HJECEJJBGBC" => Some(Self::Hjecejjbgbc), + "GLEKDPKINJG_AJPPNINBBFJ" => Some(Self::Ajppninbbfj), + "GLEKDPKINJG_OPLFGDDBDGD" => Some(Self::Oplfgddbdgd), + "GLEKDPKINJG_DOAFKIMHNNF" => Some(Self::Doafkimhnnf), + "GLEKDPKINJG_EKMLNDKOMIF" => Some(Self::Ekmlndkomif), + "GLEKDPKINJG_IEICPONHPDC" => Some(Self::Ieicponhpdc), + "GLEKDPKINJG_MECFGHEILDP" => Some(Self::Mecfgheildp), + "GLEKDPKINJG_CFCFKHBBHLA" => Some(Self::Cfcfkhbbhla), + "GLEKDPKINJG_FKDGLHAHJAA" => Some(Self::Fkdglhahjaa), + "GLEKDPKINJG_FMPAMKALKGA" => Some(Self::Fmpamkalkga), + "GLEKDPKINJG_ICELFOFCHFO" => Some(Self::Icelfofchfo), + "GLEKDPKINJG_LBBMGCPBPKC" => Some(Self::Lbbmgcpbpkc), + "GLEKDPKINJG_BFHBEIDFCCN" => Some(Self::Bfhbeidfccn), + "GLEKDPKINJG_EEKKPKEMHNK" => Some(Self::Eekkpkemhnk), + "GLEKDPKINJG_EOLDBGHLOKA" => Some(Self::Eoldbghloka), + "GLEKDPKINJG_EHFBCPFKJGD" => Some(Self::Ehfbcpfkjgd), + "GLEKDPKINJG_CKBFAHNGCIK" => Some(Self::Ckbfahngcik), + "GLEKDPKINJG_KOFDELGEHLP" => Some(Self::Kofdelgehlp), + "GLEKDPKINJG_PCCAIJMBHAM" => Some(Self::Pccaijmbham), + "GLEKDPKINJG_IIOIFCELBBG" => Some(Self::Iioifcelbbg), + "GLEKDPKINJG_HGOPPIGFFLB" => Some(Self::Hgoppigfflb), + "GLEKDPKINJG_FLBMGGGOFPJ" => Some(Self::Flbmgggofpj), + "GLEKDPKINJG_PJDIHIMBGMH" => Some(Self::Pjdihimbgmh), + "GLEKDPKINJG_DOMLOJDFENK" => Some(Self::Domlojdfenk), + "GLEKDPKINJG_BDDKNNKCBMB" => Some(Self::Bddknnkcbmb), + "GLEKDPKINJG_CEHFDNDIHDG" => Some(Self::Cehfdndihdg), + "GLEKDPKINJG_EDPMDBAKCDC" => Some(Self::Edpmdbakcdc), + "GLEKDPKINJG_BIKDFDEBABD" => Some(Self::Bikdfdebabd), + "GLEKDPKINJG_PGMFJHCLCPF" => Some(Self::Pgmfjhclcpf), + "GLEKDPKINJG_LFEEKHPKKHG" => Some(Self::Lfeekhpkkhg), + "GLEKDPKINJG_EPMDFCKECMM" => Some(Self::Epmdfckecmm), + "GLEKDPKINJG_OCPECGHAFCO" => Some(Self::Ocpecghafco), + "GLEKDPKINJG_PLKOKIMECHN" => Some(Self::Plkokimechn), + "GLEKDPKINJG_JCFKNMLDBBD" => Some(Self::Jcfknmldbbd), + "GLEKDPKINJG_KJNGLJDOLJD" => Some(Self::Kjngljdoljd), + "GLEKDPKINJG_HJBAMINNCKF" => Some(Self::Hjbaminnckf), + "GLEKDPKINJG_FAFKBFNEFEO" => Some(Self::Fafkbfnefeo), + "GLEKDPKINJG_NBLNBLBEIMO" => Some(Self::Nblnblbeimo), + "GLEKDPKINJG_FGNCLCBEGAK" => Some(Self::Fgnclcbegak), + "GLEKDPKINJG_CKFLPDKPCAB" => Some(Self::Ckflpdkpcab), + "GLEKDPKINJG_MCNMPCDGBED" => Some(Self::Mcnmpcdgbed), + "GLEKDPKINJG_LCEJMIBMFCG" => Some(Self::Lcejmibmfcg), + "GLEKDPKINJG_KNJOPJBHGNM" => Some(Self::Knjopjbhgnm), + "GLEKDPKINJG_GIPAGKCMGEF" => Some(Self::Gipagkcmgef), + "GLEKDPKINJG_EJPPIAHAOCF" => Some(Self::Ejppiahaocf), + "GLEKDPKINJG_GBNCEHBMGBG" => Some(Self::Gbncehbmgbg), + "GLEKDPKINJG_HNGAPBOPKHJ" => Some(Self::Hngapbopkhj), + "GLEKDPKINJG_GHBJCNGINJK" => Some(Self::Ghbjcnginjk), + "GLEKDPKINJG_JMFIBEHICMI" => Some(Self::Jmfibehicmi), + "GLEKDPKINJG_JHIADFJHHLP" => Some(Self::Jhiadfjhhlp), + "GLEKDPKINJG_GJOAPEGONFM" => Some(Self::Gjoapegonfm), + "GLEKDPKINJG_KHBFILHNFMB" => Some(Self::Khbfilhnfmb), + "GLEKDPKINJG_LNLFBIECFIH" => Some(Self::Lnlfbiecfih), + "GLEKDPKINJG_EMOOBPPKMBG" => Some(Self::Emoobppkmbg), + "GLEKDPKINJG_JAOCMAKBCIE" => Some(Self::Jaocmakbcie), + "GLEKDPKINJG_GHMLDCMFGPG" => Some(Self::Ghmldcmfgpg), + "GLEKDPKINJG_CEFJOJMGHLI" => Some(Self::Cefjojmghli), + "GLEKDPKINJG_KHHOPCLPHJN" => Some(Self::Khhopclphjn), + "GLEKDPKINJG_GDMICHKPHBA" => Some(Self::Gdmichkphba), + "GLEKDPKINJG_LDBOKFIBNAL" => Some(Self::Ldbokfibnal), + "GLEKDPKINJG_EKNHLDIAPBO" => Some(Self::Eknhldiapbo), + "GLEKDPKINJG_LPBDEIMINHJ" => Some(Self::Lpbdeiminhj), + "GLEKDPKINJG_LDKPENPCPEI" => Some(Self::Ldkpenpcpei), + "GLEKDPKINJG_LHKOIGAGBCH" => Some(Self::Lhkoigagbch), + "GLEKDPKINJG_CIDMAGIEPEN" => Some(Self::Cidmagiepen), + "GLEKDPKINJG_OCPDPCHMFIG" => Some(Self::Ocpdpchmfig), + "GLEKDPKINJG_OLGBJPDODFM" => Some(Self::Olgbjpdodfm), + "GLEKDPKINJG_MAGCBJOJOLH" => Some(Self::Magcbjojolh), + "GLEKDPKINJG_ONEHNIMNHML" => Some(Self::Onehnimnhml), + "GLEKDPKINJG_FKJPEGADFCG" => Some(Self::Fkjpegadfcg), + "GLEKDPKINJG_HCPCCOBBDEM" => Some(Self::Hcpccobbdem), + "GLEKDPKINJG_BNJCHMDKHGG" => Some(Self::Bnjchmdkhgg), + "GLEKDPKINJG_BALPFADHLON" => Some(Self::Balpfadhlon), + "GLEKDPKINJG_BIIJLCECDLA" => Some(Self::Biijlcecdla), + "GLEKDPKINJG_HHAEMMGFIHN" => Some(Self::Hhaemmgfihn), + "GLEKDPKINJG_EEHCNLBDMGF" => Some(Self::Eehcnlbdmgf), + "GLEKDPKINJG_NABLJHCPGMO" => Some(Self::Nabljhcpgmo), + "GLEKDPKINJG_PECBGIEMIPF" => Some(Self::Pecbgiemipf), + "GLEKDPKINJG_KDIJIOBPENK" => Some(Self::Kdijiobpenk), + "GLEKDPKINJG_ANOIGNKMOGI" => Some(Self::Anoignkmogi), + "GLEKDPKINJG_IOIMEHGAFPB" => Some(Self::Ioimehgafpb), + "GLEKDPKINJG_DEPAAECDNBG" => Some(Self::Depaaecdnbg), + "GLEKDPKINJG_IBGMEKCCDBH" => Some(Self::Ibgmekccdbh), + "GLEKDPKINJG_CDBALGFMFDN" => Some(Self::Cdbalgfmfdn), + "GLEKDPKINJG_MFLOOBDBHMN" => Some(Self::Mfloobdbhmn), + "GLEKDPKINJG_OLKINDBENOK" => Some(Self::Olkindbenok), + "GLEKDPKINJG_AKFGDJLGIPB" => Some(Self::Akfgdjlgipb), + "GLEKDPKINJG_OLIDCNOFNBH" => Some(Self::Olidcnofnbh), + "GLEKDPKINJG_PHFFNPJLGOA" => Some(Self::Phffnpjlgoa), + "GLEKDPKINJG_DCOIMCPCAGN" => Some(Self::Dcoimcpcagn), + "GLEKDPKINJG_FLMIMBEKHJL" => Some(Self::Flmimbekhjl), + "GLEKDPKINJG_GMMLMOLFBDN" => Some(Self::Gmmlmolfbdn), + "GLEKDPKINJG_JLIGOMEKFIO" => Some(Self::Jligomekfio), + "GLEKDPKINJG_FDGHNMJFFJC" => Some(Self::Fdghnmjffjc), + "GLEKDPKINJG_DLCKGACOBIC" => Some(Self::Dlckgacobic), + "GLEKDPKINJG_MDPLFMFHGHP" => Some(Self::Mdplfmfhghp), + "GLEKDPKINJG_AMHDNDBMNKO" => Some(Self::Amhdndbmnko), + "GLEKDPKINJG_FIHBJDAABIK" => Some(Self::Fihbjdaabik), + "GLEKDPKINJG_IHOLLKEAGOH" => Some(Self::Ihollkeagoh), + "GLEKDPKINJG_ENIJGKNONFP" => Some(Self::Enijgknonfp), + "GLEKDPKINJG_FOBMOFKGPBK" => Some(Self::Fobmofkgpbk), + "GLEKDPKINJG_PPNDGKOCNCN" => Some(Self::Ppndgkocncn), + "GLEKDPKINJG_CGGMJHIBJHK" => Some(Self::Cggmjhibjhk), + "GLEKDPKINJG_NNMIFIFKJGD" => Some(Self::Nnmififkjgd), + "GLEKDPKINJG_AFKMBDHPJAD" => Some(Self::Afkmbdhpjad), + "GLEKDPKINJG_ANOGGCHNMKL" => Some(Self::Anoggchnmkl), + "GLEKDPKINJG_KIGLCLKGCGF" => Some(Self::Kiglclkgcgf), + "GLEKDPKINJG_IPPJMGPDDEP" => Some(Self::Ippjmgpddep), + "GLEKDPKINJG_JGFKBOKJLOC" => Some(Self::Jgfkbokjloc), + "GLEKDPKINJG_MOGMLGFOCEP" => Some(Self::Mogmlgfocep), + "GLEKDPKINJG_NCMKJBDNOLB" => Some(Self::Ncmkjbdnolb), + "GLEKDPKINJG_LPDCJAHBGAJ" => Some(Self::Lpdcjahbgaj), + "GLEKDPKINJG_NPDCDOOMBCP" => Some(Self::Npdcdoombcp), + "GLEKDPKINJG_IOAFEPJLNGB" => Some(Self::Ioafepjlngb), + "GLEKDPKINJG_APDGHNJGNGN" => Some(Self::Apdghnjgngn), + "GLEKDPKINJG_CGMGCCNEMLC" => Some(Self::Cgmgccnemlc), + "GLEKDPKINJG_MLIJJEELIBP" => Some(Self::Mlijjeelibp), + "GLEKDPKINJG_LAMGBEHGEOO" => Some(Self::Lamgbehgeoo), + "GLEKDPKINJG_HMECIBILKPI" => Some(Self::Hmecibilkpi), + "GLEKDPKINJG_DDHMGKPHAOC" => Some(Self::Ddhmgkphaoc), + "GLEKDPKINJG_EMEDPBGPCMM" => Some(Self::Emedpbgpcmm), + "GLEKDPKINJG_KAGJBHHDIBN" => Some(Self::Kagjbhhdibn), + "GLEKDPKINJG_NNPMNEBEFJK" => Some(Self::Nnpmnebefjk), + "GLEKDPKINJG_PEDGCJHIOIM" => Some(Self::Pedgcjhioim), + "GLEKDPKINJG_JBIOMKGJEDB" => Some(Self::Jbiomkgjedb), + "GLEKDPKINJG_JCIJADJOPCH" => Some(Self::Jcijadjopch), + "GLEKDPKINJG_BGPHOHPMFJK" => Some(Self::Bgphohpmfjk), + "GLEKDPKINJG_NDOIDEEEHOA" => Some(Self::Ndoideeehoa), + "GLEKDPKINJG_ECHNCCEOKMB" => Some(Self::Echncceokmb), + "GLEKDPKINJG_MCLFFAAICOI" => Some(Self::Mclffaaicoi), + "GLEKDPKINJG_DEABIHAFCOB" => Some(Self::Deabihafcob), + "GLEKDPKINJG_MCKIDOKJLHI" => Some(Self::Mckidokjlhi), + "GLEKDPKINJG_NLAHPKKDEKH" => Some(Self::Nlahpkkdekh), + "GLEKDPKINJG_DJCGKFPJHJH" => Some(Self::Djcgkfpjhjh), + "GLEKDPKINJG_JFKDBCCCDCP" => Some(Self::Jfkdbcccdcp), + "GLEKDPKINJG_ADOHJENFCNI" => Some(Self::Adohjenfcni), + "GLEKDPKINJG_DJFBGBGBBEG" => Some(Self::Djfbgbgbbeg), + "GLEKDPKINJG_BEAIEDHMLLB" => Some(Self::Beaiedhmllb), + "GLEKDPKINJG_FCOPIAMGFAI" => Some(Self::Fcopiamgfai), + "GLEKDPKINJG_EAAFAEPCICA" => Some(Self::Eaafaepcica), + "GLEKDPKINJG_LFHKPMBJHOH" => Some(Self::Lfhkpmbjhoh), + "GLEKDPKINJG_KDDGFMKJCNO" => Some(Self::Kddgfmkjcno), + "GLEKDPKINJG_KOGOKGHEEIA" => Some(Self::Kogokgheeia), + "GLEKDPKINJG_DACNBBBLNJO" => Some(Self::Dacnbbblnjo), + "GLEKDPKINJG_OAEIKGNKKGA" => Some(Self::Oaeikgnkkga), + "GLEKDPKINJG_JOEKFFOHOKC" => Some(Self::Joekffohokc), + "GLEKDPKINJG_GACHHPDFNON" => Some(Self::Gachhpdfnon), + "GLEKDPKINJG_OHEDFCBLPLI" => Some(Self::Ohedfcblpli), + "GLEKDPKINJG_OMPDILFLCAF" => Some(Self::Ompdilflcaf), + "GLEKDPKINJG_JDCEDDCEGJI" => Some(Self::Jdceddcegji), + "GLEKDPKINJG_KDJFBALICHH" => Some(Self::Kdjfbalichh), + "GLEKDPKINJG_NPNEFLHBEMG" => Some(Self::Npneflhbemg), + "GLEKDPKINJG_AMHDCOFEAHF" => Some(Self::Amhdcofeahf), + "GLEKDPKINJG_JIODNENFOOH" => Some(Self::Jiodnenfooh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum MusicPlayerMode { + NgfhackpkdgCpgilhdclfh = 0, + NgfhackpkdgPgendalafeo = 1, + NgfhackpkdgApmlgnhijkk = 2, + NgfhackpkdgOggepkjkjck = 3, +} +impl MusicPlayerMode { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::NgfhackpkdgCpgilhdclfh => "NGFHACKPKDG_CPGILHDCLFH", + Self::NgfhackpkdgPgendalafeo => "NGFHACKPKDG_PGENDALAFEO", + Self::NgfhackpkdgApmlgnhijkk => "NGFHACKPKDG_APMLGNHIJKK", + Self::NgfhackpkdgOggepkjkjck => "NGFHACKPKDG_OGGEPKJKJCK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NGFHACKPKDG_CPGILHDCLFH" => Some(Self::NgfhackpkdgCpgilhdclfh), + "NGFHACKPKDG_PGENDALAFEO" => Some(Self::NgfhackpkdgPgendalafeo), + "NGFHACKPKDG_APMLGNHIJKK" => Some(Self::NgfhackpkdgApmlgnhijkk), + "NGFHACKPKDG_OGGEPKJKJCK" => Some(Self::NgfhackpkdgOggepkjkjck), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jfpbkoopfph { + InterKnotStateNone = 0, + InterKnotStateDoing = 1, + InterKnotStateReward = 2, +} +impl Jfpbkoopfph { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::InterKnotStateNone => "JFPBKOOPFPH_INTER_KNOT_STATE_NONE", + Self::InterKnotStateDoing => "JFPBKOOPFPH_INTER_KNOT_STATE_DOING", + Self::InterKnotStateReward => "JFPBKOOPFPH_INTER_KNOT_STATE_REWARD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JFPBKOOPFPH_INTER_KNOT_STATE_NONE" => Some(Self::InterKnotStateNone), + "JFPBKOOPFPH_INTER_KNOT_STATE_DOING" => Some(Self::InterKnotStateDoing), + "JFPBKOOPFPH_INTER_KNOT_STATE_REWARD" => Some(Self::InterKnotStateReward), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ikmiaihknmp { + NpcAttrNone = 0, + NpcAttrAll = 1, + NpcAttrHp = 2, +} +impl Ikmiaihknmp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::NpcAttrNone => "IKMIAIHKNMP_NPC_ATTR_NONE", + Self::NpcAttrAll => "IKMIAIHKNMP_NPC_ATTR_ALL", + Self::NpcAttrHp => "IKMIAIHKNMP_NPC_ATTR_HP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IKMIAIHKNMP_NPC_ATTR_NONE" => Some(Self::NpcAttrNone), + "IKMIAIHKNMP_NPC_ATTR_ALL" => Some(Self::NpcAttrAll), + "IKMIAIHKNMP_NPC_ATTR_HP" => Some(Self::NpcAttrHp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lkobgoecddc { + Njadmepdlai = 0, + Hkfkjgdjbmb = 1, + Mmlpfcjmgdl = 2, + Ekjpdaegihi = 3, +} +impl Lkobgoecddc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Njadmepdlai => "LKOBGOECDDC_NJADMEPDLAI", + Self::Hkfkjgdjbmb => "LKOBGOECDDC_HKFKJGDJBMB", + Self::Mmlpfcjmgdl => "LKOBGOECDDC_MMLPFCJMGDL", + Self::Ekjpdaegihi => "LKOBGOECDDC_EKJPDAEGIHI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LKOBGOECDDC_NJADMEPDLAI" => Some(Self::Njadmepdlai), + "LKOBGOECDDC_HKFKJGDJBMB" => Some(Self::Hkfkjgdjbmb), + "LKOBGOECDDC_MMLPFCJMGDL" => Some(Self::Mmlpfcjmgdl), + "LKOBGOECDDC_EKJPDAEGIHI" => Some(Self::Ekjpdaegihi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bcipeabnfac { + Onoecddgbgp = 0, + Mllfnjjdcbj = 1, + Bmbnlbdhbpn = 2, + Ecacofcnepg = 3, + Cdkolidkbjn = 4, +} +impl Bcipeabnfac { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Onoecddgbgp => "BCIPEABNFAC_ONOECDDGBGP", + Self::Mllfnjjdcbj => "BCIPEABNFAC_MLLFNJJDCBJ", + Self::Bmbnlbdhbpn => "BCIPEABNFAC_BMBNLBDHBPN", + Self::Ecacofcnepg => "BCIPEABNFAC_ECACOFCNEPG", + Self::Cdkolidkbjn => "BCIPEABNFAC_CDKOLIDKBJN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BCIPEABNFAC_ONOECDDGBGP" => Some(Self::Onoecddgbgp), + "BCIPEABNFAC_MLLFNJJDCBJ" => Some(Self::Mllfnjjdcbj), + "BCIPEABNFAC_BMBNLBDHBPN" => Some(Self::Bmbnlbdhbpn), + "BCIPEABNFAC_ECACOFCNEPG" => Some(Self::Ecacofcnepg), + "BCIPEABNFAC_CDKOLIDKBJN" => Some(Self::Cdkolidkbjn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bfcplekjjob { + Efpiagoalpn = 0, + Jefjanngkle = 1, + Khfkmcfnopn = 2, +} +impl Bfcplekjjob { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Efpiagoalpn => "BFCPLEKJJOB_EFPIAGOALPN", + Self::Jefjanngkle => "BFCPLEKJJOB_JEFJANNGKLE", + Self::Khfkmcfnopn => "BFCPLEKJJOB_KHFKMCFNOPN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BFCPLEKJJOB_EFPIAGOALPN" => Some(Self::Efpiagoalpn), + "BFCPLEKJJOB_JEFJANNGKLE" => Some(Self::Jefjanngkle), + "BFCPLEKJJOB_KHFKMCFNOPN" => Some(Self::Khfkmcfnopn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mempcgfdlgc { + Hfekbddlgno = 0, + Cpcaflkacln = 1, + Falnljbchkk = 2, + Ekemhmfbdhc = 3, + Gfopbcghjde = 4, + Ijenmiajipn = 5, + Pabpcgdlgmd = 6, +} +impl Mempcgfdlgc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hfekbddlgno => "MEMPCGFDLGC_HFEKBDDLGNO", + Self::Cpcaflkacln => "MEMPCGFDLGC_CPCAFLKACLN", + Self::Falnljbchkk => "MEMPCGFDLGC_FALNLJBCHKK", + Self::Ekemhmfbdhc => "MEMPCGFDLGC_EKEMHMFBDHC", + Self::Gfopbcghjde => "MEMPCGFDLGC_GFOPBCGHJDE", + Self::Ijenmiajipn => "MEMPCGFDLGC_IJENMIAJIPN", + Self::Pabpcgdlgmd => "MEMPCGFDLGC_PABPCGDLGMD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MEMPCGFDLGC_HFEKBDDLGNO" => Some(Self::Hfekbddlgno), + "MEMPCGFDLGC_CPCAFLKACLN" => Some(Self::Cpcaflkacln), + "MEMPCGFDLGC_FALNLJBCHKK" => Some(Self::Falnljbchkk), + "MEMPCGFDLGC_EKEMHMFBDHC" => Some(Self::Ekemhmfbdhc), + "MEMPCGFDLGC_GFOPBCGHJDE" => Some(Self::Gfopbcghjde), + "MEMPCGFDLGC_IJENMIAJIPN" => Some(Self::Ijenmiajipn), + "MEMPCGFDLGC_PABPCGDLGMD" => Some(Self::Pabpcgdlgmd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Micknmolmnb { + Lkojhfohcfl = 0, + Fklhfkjnmon = 1, + Ijahkbjmjkk = 2, + Oopapemeijp = 3, +} +impl Micknmolmnb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lkojhfohcfl => "MICKNMOLMNB_LKOJHFOHCFL", + Self::Fklhfkjnmon => "MICKNMOLMNB_FKLHFKJNMON", + Self::Ijahkbjmjkk => "MICKNMOLMNB_IJAHKBJMJKK", + Self::Oopapemeijp => "MICKNMOLMNB_OOPAPEMEIJP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MICKNMOLMNB_LKOJHFOHCFL" => Some(Self::Lkojhfohcfl), + "MICKNMOLMNB_FKLHFKJNMON" => Some(Self::Fklhfkjnmon), + "MICKNMOLMNB_IJAHKBJMJKK" => Some(Self::Ijahkbjmjkk), + "MICKNMOLMNB_OOPAPEMEIJP" => Some(Self::Oopapemeijp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Menckadpkcm { + Cokhmmjcncj = 0, + Edednankhog = 1, + Nijefclpcmi = 2, + Cpebdfidicm = 3, + Dgpnkebojap = 4, + Efpeodijgde = 5, +} +impl Menckadpkcm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cokhmmjcncj => "MENCKADPKCM_COKHMMJCNCJ", + Self::Edednankhog => "MENCKADPKCM_EDEDNANKHOG", + Self::Nijefclpcmi => "MENCKADPKCM_NIJEFCLPCMI", + Self::Cpebdfidicm => "MENCKADPKCM_CPEBDFIDICM", + Self::Dgpnkebojap => "MENCKADPKCM_DGPNKEBOJAP", + Self::Efpeodijgde => "MENCKADPKCM_EFPEODIJGDE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MENCKADPKCM_COKHMMJCNCJ" => Some(Self::Cokhmmjcncj), + "MENCKADPKCM_EDEDNANKHOG" => Some(Self::Edednankhog), + "MENCKADPKCM_NIJEFCLPCMI" => Some(Self::Nijefclpcmi), + "MENCKADPKCM_CPEBDFIDICM" => Some(Self::Cpebdfidicm), + "MENCKADPKCM_DGPNKEBOJAP" => Some(Self::Dgpnkebojap), + "MENCKADPKCM_EFPEODIJGDE" => Some(Self::Efpeodijgde), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fkkjghhanam { + Clpapkfcnlc = 0, + Clannppjefo = 1, + Coggfcnlehj = 2, + Anleknbfhne = 3, + Odhckgbkhbi = 4, + Ecjiohllihm = 5, + Mmblmgpjkig = 6, + Bjifcpimbpg = 7, + Jogcnidcafc = 8, +} +impl Fkkjghhanam { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Clpapkfcnlc => "FKKJGHHANAM_CLPAPKFCNLC", + Self::Clannppjefo => "FKKJGHHANAM_CLANNPPJEFO", + Self::Coggfcnlehj => "FKKJGHHANAM_COGGFCNLEHJ", + Self::Anleknbfhne => "FKKJGHHANAM_ANLEKNBFHNE", + Self::Odhckgbkhbi => "FKKJGHHANAM_ODHCKGBKHBI", + Self::Ecjiohllihm => "FKKJGHHANAM_ECJIOHLLIHM", + Self::Mmblmgpjkig => "FKKJGHHANAM_MMBLMGPJKIG", + Self::Bjifcpimbpg => "FKKJGHHANAM_BJIFCPIMBPG", + Self::Jogcnidcafc => "FKKJGHHANAM_JOGCNIDCAFC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FKKJGHHANAM_CLPAPKFCNLC" => Some(Self::Clpapkfcnlc), + "FKKJGHHANAM_CLANNPPJEFO" => Some(Self::Clannppjefo), + "FKKJGHHANAM_COGGFCNLEHJ" => Some(Self::Coggfcnlehj), + "FKKJGHHANAM_ANLEKNBFHNE" => Some(Self::Anleknbfhne), + "FKKJGHHANAM_ODHCKGBKHBI" => Some(Self::Odhckgbkhbi), + "FKKJGHHANAM_ECJIOHLLIHM" => Some(Self::Ecjiohllihm), + "FKKJGHHANAM_MMBLMGPJKIG" => Some(Self::Mmblmgpjkig), + "FKKJGHHANAM_BJIFCPIMBPG" => Some(Self::Bjifcpimbpg), + "FKKJGHHANAM_JOGCNIDCAFC" => Some(Self::Jogcnidcafc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nimcpooddnc { + ToBigTv = 0, + ToNormalTv = 1, +} +impl Nimcpooddnc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ToBigTv => "NIMCPOODDNC_TO_BIG_TV", + Self::ToNormalTv => "NIMCPOODDNC_TO_NORMAL_TV", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NIMCPOODDNC_TO_BIG_TV" => Some(Self::ToBigTv), + "NIMCPOODDNC_TO_NORMAL_TV" => Some(Self::ToNormalTv), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jkgnphbpinn { + Gjehpjoheca = 0, + Opaclfokkji = 1, + Felmpfpnbpi = 2, + Lfnkceaidbm = 3, +} +impl Jkgnphbpinn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gjehpjoheca => "JKGNPHBPINN_GJEHPJOHECA", + Self::Opaclfokkji => "JKGNPHBPINN_OPACLFOKKJI", + Self::Felmpfpnbpi => "JKGNPHBPINN_FELMPFPNBPI", + Self::Lfnkceaidbm => "JKGNPHBPINN_LFNKCEAIDBM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JKGNPHBPINN_GJEHPJOHECA" => Some(Self::Gjehpjoheca), + "JKGNPHBPINN_OPACLFOKKJI" => Some(Self::Opaclfokkji), + "JKGNPHBPINN_FELMPFPNBPI" => Some(Self::Felmpfpnbpi), + "JKGNPHBPINN_LFNKCEAIDBM" => Some(Self::Lfnkceaidbm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ogmpkhagmjp { + Apnlcagmhih = 0, + Gnhiejjiike = 1, + Oejodmloljd = 2, + Dcokldcfpcb = 3, +} +impl Ogmpkhagmjp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Apnlcagmhih => "OGMPKHAGMJP_APNLCAGMHIH", + Self::Gnhiejjiike => "OGMPKHAGMJP_GNHIEJJIIKE", + Self::Oejodmloljd => "OGMPKHAGMJP_OEJODMLOLJD", + Self::Dcokldcfpcb => "OGMPKHAGMJP_DCOKLDCFPCB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OGMPKHAGMJP_APNLCAGMHIH" => Some(Self::Apnlcagmhih), + "OGMPKHAGMJP_GNHIEJJIIKE" => Some(Self::Gnhiejjiike), + "OGMPKHAGMJP_OEJODMLOLJD" => Some(Self::Oejodmloljd), + "OGMPKHAGMJP_DCOKLDCFPCB" => Some(Self::Dcokldcfpcb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ddidachclhl { + Greater = 0, + GreaterEqual = 1, + Equal = 2, + Less = 3, + LessEqual = 4, + NotEqual = 6, +} +impl Ddidachclhl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Greater => "DDIDACHCLHL_GREATER", + Self::GreaterEqual => "DDIDACHCLHL_GREATER_EQUAL", + Self::Equal => "DDIDACHCLHL_EQUAL", + Self::Less => "DDIDACHCLHL_LESS", + Self::LessEqual => "DDIDACHCLHL_LESS_EQUAL", + Self::NotEqual => "DDIDACHCLHL_NOT_EQUAL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DDIDACHCLHL_GREATER" => Some(Self::Greater), + "DDIDACHCLHL_GREATER_EQUAL" => Some(Self::GreaterEqual), + "DDIDACHCLHL_EQUAL" => Some(Self::Equal), + "DDIDACHCLHL_LESS" => Some(Self::Less), + "DDIDACHCLHL_LESS_EQUAL" => Some(Self::LessEqual), + "DDIDACHCLHL_NOT_EQUAL" => Some(Self::NotEqual), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pemhjpjlabj { + Einjkmcclok = 0, +} +impl Pemhjpjlabj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Einjkmcclok => "PEMHJPJLABJ_EINJKMCCLOK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PEMHJPJLABJ_EINJKMCCLOK" => Some(Self::Einjkmcclok), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dlgeieelplp { + HollowScriptTargetScriptOwner = 0, + HollowScriptTargetGlobalEvent = 1, + HollowScriptTargetGrid = 2, + HollowScriptTargetNpc = 3, +} +impl Dlgeieelplp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowScriptTargetScriptOwner => { + "DLGEIEELPLP_HOLLOW_SCRIPT_TARGET_SCRIPT_OWNER" + } + Self::HollowScriptTargetGlobalEvent => { + "DLGEIEELPLP_HOLLOW_SCRIPT_TARGET_GLOBAL_EVENT" + } + Self::HollowScriptTargetGrid => "DLGEIEELPLP_HOLLOW_SCRIPT_TARGET_GRID", + Self::HollowScriptTargetNpc => "DLGEIEELPLP_HOLLOW_SCRIPT_TARGET_NPC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DLGEIEELPLP_HOLLOW_SCRIPT_TARGET_SCRIPT_OWNER" => { + Some(Self::HollowScriptTargetScriptOwner) + } + "DLGEIEELPLP_HOLLOW_SCRIPT_TARGET_GLOBAL_EVENT" => { + Some(Self::HollowScriptTargetGlobalEvent) + } + "DLGEIEELPLP_HOLLOW_SCRIPT_TARGET_GRID" => Some(Self::HollowScriptTargetGrid), + "DLGEIEELPLP_HOLLOW_SCRIPT_TARGET_NPC" => Some(Self::HollowScriptTargetNpc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jbciadhplme { + GridStaminaTypeNone = 0, + GridStaminaTypeDefault = 1, + GridStaminaTypeNoStamina = 2, + GridStaminaTypeStamina = 3, +} +impl Jbciadhplme { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::GridStaminaTypeNone => "JBCIADHPLME_GRID_STAMINA_TYPE_NONE", + Self::GridStaminaTypeDefault => "JBCIADHPLME_GRID_STAMINA_TYPE_DEFAULT", + Self::GridStaminaTypeNoStamina => "JBCIADHPLME_GRID_STAMINA_TYPE_NO_STAMINA", + Self::GridStaminaTypeStamina => "JBCIADHPLME_GRID_STAMINA_TYPE_STAMINA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JBCIADHPLME_GRID_STAMINA_TYPE_NONE" => Some(Self::GridStaminaTypeNone), + "JBCIADHPLME_GRID_STAMINA_TYPE_DEFAULT" => Some(Self::GridStaminaTypeDefault), + "JBCIADHPLME_GRID_STAMINA_TYPE_NO_STAMINA" => { + Some(Self::GridStaminaTypeNoStamina) + } + "JBCIADHPLME_GRID_STAMINA_TYPE_STAMINA" => Some(Self::GridStaminaTypeStamina), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Degaflkgcfa { + Ippkilnfiig = 0, + Dcbmaofhcih = 1, + Oadcbkjkemh = 2, + Joaoaeonghn = 3, +} +impl Degaflkgcfa { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ippkilnfiig => "DEGAFLKGCFA_IPPKILNFIIG", + Self::Dcbmaofhcih => "DEGAFLKGCFA_DCBMAOFHCIH", + Self::Oadcbkjkemh => "DEGAFLKGCFA_OADCBKJKEMH", + Self::Joaoaeonghn => "DEGAFLKGCFA_JOAOAEONGHN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DEGAFLKGCFA_IPPKILNFIIG" => Some(Self::Ippkilnfiig), + "DEGAFLKGCFA_DCBMAOFHCIH" => Some(Self::Dcbmaofhcih), + "DEGAFLKGCFA_OADCBKJKEMH" => Some(Self::Oadcbkjkemh), + "DEGAFLKGCFA_JOAOAEONGHN" => Some(Self::Joaoaeonghn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cogldeciemj { + Mnhbpbpjngp = 0, + Gdppkcfehga = 1, + Ppjomaflcam = 2, + Hboghjkphfp = 3, +} +impl Cogldeciemj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mnhbpbpjngp => "COGLDECIEMJ_MNHBPBPJNGP", + Self::Gdppkcfehga => "COGLDECIEMJ_GDPPKCFEHGA", + Self::Ppjomaflcam => "COGLDECIEMJ_PPJOMAFLCAM", + Self::Hboghjkphfp => "COGLDECIEMJ_HBOGHJKPHFP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "COGLDECIEMJ_MNHBPBPJNGP" => Some(Self::Mnhbpbpjngp), + "COGLDECIEMJ_GDPPKCFEHGA" => Some(Self::Gdppkcfehga), + "COGLDECIEMJ_PPJOMAFLCAM" => Some(Self::Ppjomaflcam), + "COGLDECIEMJ_HBOGHJKPHFP" => Some(Self::Hboghjkphfp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ocfjlplibpn { + Mbkbdonobho = 0, + Cnmlhkgfacn = 1, + Gimhecmbonh = 2, + Nfdnkoniijn = 3, +} +impl Ocfjlplibpn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mbkbdonobho => "OCFJLPLIBPN_MBKBDONOBHO", + Self::Cnmlhkgfacn => "OCFJLPLIBPN_CNMLHKGFACN", + Self::Gimhecmbonh => "OCFJLPLIBPN_GIMHECMBONH", + Self::Nfdnkoniijn => "OCFJLPLIBPN_NFDNKONIIJN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OCFJLPLIBPN_MBKBDONOBHO" => Some(Self::Mbkbdonobho), + "OCFJLPLIBPN_CNMLHKGFACN" => Some(Self::Cnmlhkgfacn), + "OCFJLPLIBPN_GIMHECMBONH" => Some(Self::Gimhecmbonh), + "OCFJLPLIBPN_NFDNKONIIJN" => Some(Self::Nfdnkoniijn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nhgfapkplhd { + Fcbahhnjjoj = 0, + Conjlgknjei = 1, +} +impl Nhgfapkplhd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fcbahhnjjoj => "NHGFAPKPLHD_FCBAHHNJJOJ", + Self::Conjlgknjei => "NHGFAPKPLHD_CONJLGKNJEI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NHGFAPKPLHD_FCBAHHNJJOJ" => Some(Self::Fcbahhnjjoj), + "NHGFAPKPLHD_CONJLGKNJEI" => Some(Self::Conjlgknjei), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lpplpamphae { + Pnpbpbhkecm = 0, + Gglmflpbakg = 1, + Cihgcehdiff = 2, + Pfkpancnmim = 3, +} +impl Lpplpamphae { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pnpbpbhkecm => "LPPLPAMPHAE_PNPBPBHKECM", + Self::Gglmflpbakg => "LPPLPAMPHAE_GGLMFLPBAKG", + Self::Cihgcehdiff => "LPPLPAMPHAE_CIHGCEHDIFF", + Self::Pfkpancnmim => "LPPLPAMPHAE_PFKPANCNMIM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LPPLPAMPHAE_PNPBPBHKECM" => Some(Self::Pnpbpbhkecm), + "LPPLPAMPHAE_GGLMFLPBAKG" => Some(Self::Gglmflpbakg), + "LPPLPAMPHAE_CIHGCEHDIFF" => Some(Self::Cihgcehdiff), + "LPPLPAMPHAE_PFKPANCNMIM" => Some(Self::Pfkpancnmim), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Blnjcdfaobb { + Hakncmkgdkj = 0, + Pbihpcpehbo = 1, + Ihbbigdkbhf = 2, + Cfcglblblei = 3, +} +impl Blnjcdfaobb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hakncmkgdkj => "BLNJCDFAOBB_HAKNCMKGDKJ", + Self::Pbihpcpehbo => "BLNJCDFAOBB_PBIHPCPEHBO", + Self::Ihbbigdkbhf => "BLNJCDFAOBB_IHBBIGDKBHF", + Self::Cfcglblblei => "BLNJCDFAOBB_CFCGLBLBLEI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BLNJCDFAOBB_HAKNCMKGDKJ" => Some(Self::Hakncmkgdkj), + "BLNJCDFAOBB_PBIHPCPEHBO" => Some(Self::Pbihpcpehbo), + "BLNJCDFAOBB_IHBBIGDKBHF" => Some(Self::Ihbbigdkbhf), + "BLNJCDFAOBB_CFCGLBLBLEI" => Some(Self::Cfcglblblei), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mdfnaamohio { + Ehhjigoegcj = 0, + Iidopdbkkpm = 1, + Jhbbjhlmcnm = 2, + Iemafdjejkj = 3, + Adccinijocd = 4, + Haapgipkcpd = 5, + Pakgimalmeb = 6, + Fbpnhglkpie = 7, + Ekdakhommdn = 8, + Pkmbfedfkpj = 9, + Egcienodcef = 10, +} +impl Mdfnaamohio { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ehhjigoegcj => "MDFNAAMOHIO_EHHJIGOEGCJ", + Self::Iidopdbkkpm => "MDFNAAMOHIO_IIDOPDBKKPM", + Self::Jhbbjhlmcnm => "MDFNAAMOHIO_JHBBJHLMCNM", + Self::Iemafdjejkj => "MDFNAAMOHIO_IEMAFDJEJKJ", + Self::Adccinijocd => "MDFNAAMOHIO_ADCCINIJOCD", + Self::Haapgipkcpd => "MDFNAAMOHIO_HAAPGIPKCPD", + Self::Pakgimalmeb => "MDFNAAMOHIO_PAKGIMALMEB", + Self::Fbpnhglkpie => "MDFNAAMOHIO_FBPNHGLKPIE", + Self::Ekdakhommdn => "MDFNAAMOHIO_EKDAKHOMMDN", + Self::Pkmbfedfkpj => "MDFNAAMOHIO_PKMBFEDFKPJ", + Self::Egcienodcef => "MDFNAAMOHIO_EGCIENODCEF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MDFNAAMOHIO_EHHJIGOEGCJ" => Some(Self::Ehhjigoegcj), + "MDFNAAMOHIO_IIDOPDBKKPM" => Some(Self::Iidopdbkkpm), + "MDFNAAMOHIO_JHBBJHLMCNM" => Some(Self::Jhbbjhlmcnm), + "MDFNAAMOHIO_IEMAFDJEJKJ" => Some(Self::Iemafdjejkj), + "MDFNAAMOHIO_ADCCINIJOCD" => Some(Self::Adccinijocd), + "MDFNAAMOHIO_HAAPGIPKCPD" => Some(Self::Haapgipkcpd), + "MDFNAAMOHIO_PAKGIMALMEB" => Some(Self::Pakgimalmeb), + "MDFNAAMOHIO_FBPNHGLKPIE" => Some(Self::Fbpnhglkpie), + "MDFNAAMOHIO_EKDAKHOMMDN" => Some(Self::Ekdakhommdn), + "MDFNAAMOHIO_PKMBFEDFKPJ" => Some(Self::Pkmbfedfkpj), + "MDFNAAMOHIO_EGCIENODCEF" => Some(Self::Egcienodcef), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kmmjkeefded { + Mecggpkokbo = 0, + Genhngolbli = 1, + Kiegbkpgefb = 2, + Aiacciliekc = 3, +} +impl Kmmjkeefded { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mecggpkokbo => "KMMJKEEFDED_MECGGPKOKBO", + Self::Genhngolbli => "KMMJKEEFDED_GENHNGOLBLI", + Self::Kiegbkpgefb => "KMMJKEEFDED_KIEGBKPGEFB", + Self::Aiacciliekc => "KMMJKEEFDED_AIACCILIEKC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KMMJKEEFDED_MECGGPKOKBO" => Some(Self::Mecggpkokbo), + "KMMJKEEFDED_GENHNGOLBLI" => Some(Self::Genhngolbli), + "KMMJKEEFDED_KIEGBKPGEFB" => Some(Self::Kiegbkpgefb), + "KMMJKEEFDED_AIACCILIEKC" => Some(Self::Aiacciliekc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cghjibhphid { + Cpdalojnlia = 0, + Fdenmloalkn = 1, + Lkehpcoepnk = 2, + Celhnefmlnk = 3, + Jblfgnpanhm = 4, + Knidklijpdk = 5, + Hblpnoodngk = 6, + Kekconjfhag = 7, + Bndecopdkda = 8, + Bgpbopedmhg = 9, + Phgbgoeojje = 12, + Pfbapilmpfc = 13, + Gkkdmleihmc = 14, + Dfabjpkenle = 15, + Jghiaflhedf = 16, + Dkdbmioaaph = 17, + Fhnmmgljceh = 18, + Jgjieahceil = 19, + Enfhpdbbmel = 20, + Ceaoiddmjfc = 21, + Dgcdamfenki = 22, + Eoagadkened = 23, + Cinmhncinml = 24, + Nahjpfhlned = 25, + Jcgdpofgpgm = 26, + Gmfacdeielb = 27, +} +impl Cghjibhphid { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cpdalojnlia => "CGHJIBHPHID_CPDALOJNLIA", + Self::Fdenmloalkn => "CGHJIBHPHID_FDENMLOALKN", + Self::Lkehpcoepnk => "CGHJIBHPHID_LKEHPCOEPNK", + Self::Celhnefmlnk => "CGHJIBHPHID_CELHNEFMLNK", + Self::Jblfgnpanhm => "CGHJIBHPHID_JBLFGNPANHM", + Self::Knidklijpdk => "CGHJIBHPHID_KNIDKLIJPDK", + Self::Hblpnoodngk => "CGHJIBHPHID_HBLPNOODNGK", + Self::Kekconjfhag => "CGHJIBHPHID_KEKCONJFHAG", + Self::Bndecopdkda => "CGHJIBHPHID_BNDECOPDKDA", + Self::Bgpbopedmhg => "CGHJIBHPHID_BGPBOPEDMHG", + Self::Phgbgoeojje => "CGHJIBHPHID_PHGBGOEOJJE", + Self::Pfbapilmpfc => "CGHJIBHPHID_PFBAPILMPFC", + Self::Gkkdmleihmc => "CGHJIBHPHID_GKKDMLEIHMC", + Self::Dfabjpkenle => "CGHJIBHPHID_DFABJPKENLE", + Self::Jghiaflhedf => "CGHJIBHPHID_JGHIAFLHEDF", + Self::Dkdbmioaaph => "CGHJIBHPHID_DKDBMIOAAPH", + Self::Fhnmmgljceh => "CGHJIBHPHID_FHNMMGLJCEH", + Self::Jgjieahceil => "CGHJIBHPHID_JGJIEAHCEIL", + Self::Enfhpdbbmel => "CGHJIBHPHID_ENFHPDBBMEL", + Self::Ceaoiddmjfc => "CGHJIBHPHID_CEAOIDDMJFC", + Self::Dgcdamfenki => "CGHJIBHPHID_DGCDAMFENKI", + Self::Eoagadkened => "CGHJIBHPHID_EOAGADKENED", + Self::Cinmhncinml => "CGHJIBHPHID_CINMHNCINML", + Self::Nahjpfhlned => "CGHJIBHPHID_NAHJPFHLNED", + Self::Jcgdpofgpgm => "CGHJIBHPHID_JCGDPOFGPGM", + Self::Gmfacdeielb => "CGHJIBHPHID_GMFACDEIELB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CGHJIBHPHID_CPDALOJNLIA" => Some(Self::Cpdalojnlia), + "CGHJIBHPHID_FDENMLOALKN" => Some(Self::Fdenmloalkn), + "CGHJIBHPHID_LKEHPCOEPNK" => Some(Self::Lkehpcoepnk), + "CGHJIBHPHID_CELHNEFMLNK" => Some(Self::Celhnefmlnk), + "CGHJIBHPHID_JBLFGNPANHM" => Some(Self::Jblfgnpanhm), + "CGHJIBHPHID_KNIDKLIJPDK" => Some(Self::Knidklijpdk), + "CGHJIBHPHID_HBLPNOODNGK" => Some(Self::Hblpnoodngk), + "CGHJIBHPHID_KEKCONJFHAG" => Some(Self::Kekconjfhag), + "CGHJIBHPHID_BNDECOPDKDA" => Some(Self::Bndecopdkda), + "CGHJIBHPHID_BGPBOPEDMHG" => Some(Self::Bgpbopedmhg), + "CGHJIBHPHID_PHGBGOEOJJE" => Some(Self::Phgbgoeojje), + "CGHJIBHPHID_PFBAPILMPFC" => Some(Self::Pfbapilmpfc), + "CGHJIBHPHID_GKKDMLEIHMC" => Some(Self::Gkkdmleihmc), + "CGHJIBHPHID_DFABJPKENLE" => Some(Self::Dfabjpkenle), + "CGHJIBHPHID_JGHIAFLHEDF" => Some(Self::Jghiaflhedf), + "CGHJIBHPHID_DKDBMIOAAPH" => Some(Self::Dkdbmioaaph), + "CGHJIBHPHID_FHNMMGLJCEH" => Some(Self::Fhnmmgljceh), + "CGHJIBHPHID_JGJIEAHCEIL" => Some(Self::Jgjieahceil), + "CGHJIBHPHID_ENFHPDBBMEL" => Some(Self::Enfhpdbbmel), + "CGHJIBHPHID_CEAOIDDMJFC" => Some(Self::Ceaoiddmjfc), + "CGHJIBHPHID_DGCDAMFENKI" => Some(Self::Dgcdamfenki), + "CGHJIBHPHID_EOAGADKENED" => Some(Self::Eoagadkened), + "CGHJIBHPHID_CINMHNCINML" => Some(Self::Cinmhncinml), + "CGHJIBHPHID_NAHJPFHLNED" => Some(Self::Nahjpfhlned), + "CGHJIBHPHID_JCGDPOFGPGM" => Some(Self::Jcgdpofgpgm), + "CGHJIBHPHID_GMFACDEIELB" => Some(Self::Gmfacdeielb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gapnnaieocb { + Ppobbbkfahp = 0, +} +impl Gapnnaieocb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ppobbbkfahp => "GAPNNAIEOCB_PPOBBBKFAHP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GAPNNAIEOCB_PPOBBBKFAHP" => Some(Self::Ppobbbkfahp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Daeakceedfa { + Nllickobmfc = 0, + Mcngladoeia = 1, + Bejjhhkafcf = 2, + Caeffikgdgk = 3, + Pijbnakjfgo = 4, + Daihnhfpaho = 5, + Dpilnfheepj = 6, + Lgildniinep = 7, + Nkofnmllbli = 8, + Hdaligkhddc = 100, + Nhhiaimmiel = 101, + Hnnoagdbjmn = 102, +} +impl Daeakceedfa { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nllickobmfc => "DAEAKCEEDFA_NLLICKOBMFC", + Self::Mcngladoeia => "DAEAKCEEDFA_MCNGLADOEIA", + Self::Bejjhhkafcf => "DAEAKCEEDFA_BEJJHHKAFCF", + Self::Caeffikgdgk => "DAEAKCEEDFA_CAEFFIKGDGK", + Self::Pijbnakjfgo => "DAEAKCEEDFA_PIJBNAKJFGO", + Self::Daihnhfpaho => "DAEAKCEEDFA_DAIHNHFPAHO", + Self::Dpilnfheepj => "DAEAKCEEDFA_DPILNFHEEPJ", + Self::Lgildniinep => "DAEAKCEEDFA_LGILDNIINEP", + Self::Nkofnmllbli => "DAEAKCEEDFA_NKOFNMLLBLI", + Self::Hdaligkhddc => "DAEAKCEEDFA_HDALIGKHDDC", + Self::Nhhiaimmiel => "DAEAKCEEDFA_NHHIAIMMIEL", + Self::Hnnoagdbjmn => "DAEAKCEEDFA_HNNOAGDBJMN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DAEAKCEEDFA_NLLICKOBMFC" => Some(Self::Nllickobmfc), + "DAEAKCEEDFA_MCNGLADOEIA" => Some(Self::Mcngladoeia), + "DAEAKCEEDFA_BEJJHHKAFCF" => Some(Self::Bejjhhkafcf), + "DAEAKCEEDFA_CAEFFIKGDGK" => Some(Self::Caeffikgdgk), + "DAEAKCEEDFA_PIJBNAKJFGO" => Some(Self::Pijbnakjfgo), + "DAEAKCEEDFA_DAIHNHFPAHO" => Some(Self::Daihnhfpaho), + "DAEAKCEEDFA_DPILNFHEEPJ" => Some(Self::Dpilnfheepj), + "DAEAKCEEDFA_LGILDNIINEP" => Some(Self::Lgildniinep), + "DAEAKCEEDFA_NKOFNMLLBLI" => Some(Self::Nkofnmllbli), + "DAEAKCEEDFA_HDALIGKHDDC" => Some(Self::Hdaligkhddc), + "DAEAKCEEDFA_NHHIAIMMIEL" => Some(Self::Nhhiaimmiel), + "DAEAKCEEDFA_HNNOAGDBJMN" => Some(Self::Hnnoagdbjmn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eeimdaoodaf { + Labbiiliejm = 0, + Ekaogfbfken = 1, + Hekoboibgnf = 2, + Cpaeflfhdoe = 3, +} +impl Eeimdaoodaf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Labbiiliejm => "EEIMDAOODAF_LABBIILIEJM", + Self::Ekaogfbfken => "EEIMDAOODAF_EKAOGFBFKEN", + Self::Hekoboibgnf => "EEIMDAOODAF_HEKOBOIBGNF", + Self::Cpaeflfhdoe => "EEIMDAOODAF_CPAEFLFHDOE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EEIMDAOODAF_LABBIILIEJM" => Some(Self::Labbiiliejm), + "EEIMDAOODAF_EKAOGFBFKEN" => Some(Self::Ekaogfbfken), + "EEIMDAOODAF_HEKOBOIBGNF" => Some(Self::Hekoboibgnf), + "EEIMDAOODAF_CPAEFLFHDOE" => Some(Self::Cpaeflfhdoe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Aldcdjmlbpg { + Ooafmjdilnl = 0, +} +impl Aldcdjmlbpg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ooafmjdilnl => "ALDCDJMLBPG_OOAFMJDILNL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ALDCDJMLBPG_OOAFMJDILNL" => Some(Self::Ooafmjdilnl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pdkeimmagep { + Micpicahhmc = 0, + Mdgfpcaaahe = 1, +} +impl Pdkeimmagep { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Micpicahhmc => "PDKEIMMAGEP_MICPICAHHMC", + Self::Mdgfpcaaahe => "PDKEIMMAGEP_MDGFPCAAAHE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PDKEIMMAGEP_MICPICAHHMC" => Some(Self::Micpicahhmc), + "PDKEIMMAGEP_MDGFPCAAAHE" => Some(Self::Mdgfpcaaahe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kfnfpjnpfal { + Ipeofclpden = 0, +} +impl Kfnfpjnpfal { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ipeofclpden => "KFNFPJNPFAL_IPEOFCLPDEN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KFNFPJNPFAL_IPEOFCLPDEN" => Some(Self::Ipeofclpden), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bbnjmpdcffj { + Bnldhclkagl = 0, + Jenbenehikg = 1, +} +impl Bbnjmpdcffj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bnldhclkagl => "BBNJMPDCFFJ_BNLDHCLKAGL", + Self::Jenbenehikg => "BBNJMPDCFFJ_JENBENEHIKG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BBNJMPDCFFJ_BNLDHCLKAGL" => Some(Self::Bnldhclkagl), + "BBNJMPDCFFJ_JENBENEHIKG" => Some(Self::Jenbenehikg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mjbphpaajob { + Agbniapeaoj = 0, + Cnjjohaojnl = 1, + Mnpojgchfie = 2, +} +impl Mjbphpaajob { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Agbniapeaoj => "MJBPHPAAJOB_AGBNIAPEAOJ", + Self::Cnjjohaojnl => "MJBPHPAAJOB_CNJJOHAOJNL", + Self::Mnpojgchfie => "MJBPHPAAJOB_MNPOJGCHFIE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MJBPHPAAJOB_AGBNIAPEAOJ" => Some(Self::Agbniapeaoj), + "MJBPHPAAJOB_CNJJOHAOJNL" => Some(Self::Cnjjohaojnl), + "MJBPHPAAJOB_MNPOJGCHFIE" => Some(Self::Mnpojgchfie), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jgjclnpmiap { + Ebajkmnemje = 0, + Naflikdakeg = 1, + Kijpeoledko = 2, +} +impl Jgjclnpmiap { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ebajkmnemje => "JGJCLNPMIAP_EBAJKMNEMJE", + Self::Naflikdakeg => "JGJCLNPMIAP_NAFLIKDAKEG", + Self::Kijpeoledko => "JGJCLNPMIAP_KIJPEOLEDKO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JGJCLNPMIAP_EBAJKMNEMJE" => Some(Self::Ebajkmnemje), + "JGJCLNPMIAP_NAFLIKDAKEG" => Some(Self::Naflikdakeg), + "JGJCLNPMIAP_KIJPEOLEDKO" => Some(Self::Kijpeoledko), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dehcmjdlile { + VariableScopeNone = 0, + Scene = 1, + Section = 2, + ScriptGlobal = 3, + Script = 4, + Function = 5, + HollowQuest = 6, + HallGame = 7, + Quest = 8, +} +impl Dehcmjdlile { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::VariableScopeNone => "DEHCMJDLILE_VARIABLE_SCOPE_NONE", + Self::Scene => "DEHCMJDLILE_SCENE", + Self::Section => "DEHCMJDLILE_SECTION", + Self::ScriptGlobal => "DEHCMJDLILE_SCRIPT_GLOBAL", + Self::Script => "DEHCMJDLILE_SCRIPT", + Self::Function => "DEHCMJDLILE_FUNCTION", + Self::HollowQuest => "DEHCMJDLILE_HOLLOW_QUEST", + Self::HallGame => "DEHCMJDLILE_HALL_GAME", + Self::Quest => "DEHCMJDLILE_QUEST", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DEHCMJDLILE_VARIABLE_SCOPE_NONE" => Some(Self::VariableScopeNone), + "DEHCMJDLILE_SCENE" => Some(Self::Scene), + "DEHCMJDLILE_SECTION" => Some(Self::Section), + "DEHCMJDLILE_SCRIPT_GLOBAL" => Some(Self::ScriptGlobal), + "DEHCMJDLILE_SCRIPT" => Some(Self::Script), + "DEHCMJDLILE_FUNCTION" => Some(Self::Function), + "DEHCMJDLILE_HOLLOW_QUEST" => Some(Self::HollowQuest), + "DEHCMJDLILE_HALL_GAME" => Some(Self::HallGame), + "DEHCMJDLILE_QUEST" => Some(Self::Quest), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fbabdggglbo { + Mnoekjkdnod = 0, + Jjiedkcjaha = 1, + Khfopkgkcdh = 2, +} +impl Fbabdggglbo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mnoekjkdnod => "FBABDGGGLBO_MNOEKJKDNOD", + Self::Jjiedkcjaha => "FBABDGGGLBO_JJIEDKCJAHA", + Self::Khfopkgkcdh => "FBABDGGGLBO_KHFOPKGKCDH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FBABDGGGLBO_MNOEKJKDNOD" => Some(Self::Mnoekjkdnod), + "FBABDGGGLBO_JJIEDKCJAHA" => Some(Self::Jjiedkcjaha), + "FBABDGGGLBO_KHFOPKGKCDH" => Some(Self::Khfopkgkcdh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ogedfjjfgnf { + Count = 0, + Pop = 1, +} +impl Ogedfjjfgnf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Count => "OGEDFJJFGNF_COUNT", + Self::Pop => "OGEDFJJFGNF_POP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OGEDFJJFGNF_COUNT" => Some(Self::Count), + "OGEDFJJFGNF_POP" => Some(Self::Pop), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eohblkeaiop { + Oiahmbdfcod = 0, +} +impl Eohblkeaiop { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Oiahmbdfcod => "EOHBLKEAIOP_OIAHMBDFCOD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EOHBLKEAIOP_OIAHMBDFCOD" => Some(Self::Oiahmbdfcod), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hmbfajajjld { + Cnlnjokjabg = 0, +} +impl Hmbfajajjld { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cnlnjokjabg => "HMBFAJAJJLD_CNLNJOKJABG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HMBFAJAJJLD_CNLNJOKJABG" => Some(Self::Cnlnjokjabg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lncpablamfl { + Ecfelminpml = 0, + Ocpkaekdjmj = 3, + Effhamkmdpe = 4, +} +impl Lncpablamfl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ecfelminpml => "LNCPABLAMFL_ECFELMINPML", + Self::Ocpkaekdjmj => "LNCPABLAMFL_OCPKAEKDJMJ", + Self::Effhamkmdpe => "LNCPABLAMFL_EFFHAMKMDPE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LNCPABLAMFL_ECFELMINPML" => Some(Self::Ecfelminpml), + "LNCPABLAMFL_OCPKAEKDJMJ" => Some(Self::Ocpkaekdjmj), + "LNCPABLAMFL_EFFHAMKMDPE" => Some(Self::Effhamkmdpe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Oljfinoealg { + Fbpoildfndc = 0, + Ipmhpeljjle = 1, + Chehknkoomd = 2, +} +impl Oljfinoealg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fbpoildfndc => "OLJFINOEALG_FBPOILDFNDC", + Self::Ipmhpeljjle => "OLJFINOEALG_IPMHPELJJLE", + Self::Chehknkoomd => "OLJFINOEALG_CHEHKNKOOMD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OLJFINOEALG_FBPOILDFNDC" => Some(Self::Fbpoildfndc), + "OLJFINOEALG_IPMHPELJJLE" => Some(Self::Ipmhpeljjle), + "OLJFINOEALG_CHEHKNKOOMD" => Some(Self::Chehknkoomd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ajkgjniphkn { + Bagapamfngm = 0, +} +impl Ajkgjniphkn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bagapamfngm => "AJKGJNIPHKN_BAGAPAMFNGM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AJKGJNIPHKN_BAGAPAMFNGM" => Some(Self::Bagapamfngm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Naloedhhbgi { + Iedpdclpjme = 0, + Ampcdinokon = 1, + Mcafhmgnnhf = 2, +} +impl Naloedhhbgi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Iedpdclpjme => "NALOEDHHBGI_IEDPDCLPJME", + Self::Ampcdinokon => "NALOEDHHBGI_AMPCDINOKON", + Self::Mcafhmgnnhf => "NALOEDHHBGI_MCAFHMGNNHF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NALOEDHHBGI_IEDPDCLPJME" => Some(Self::Iedpdclpjme), + "NALOEDHHBGI_AMPCDINOKON" => Some(Self::Ampcdinokon), + "NALOEDHHBGI_MCAFHMGNNHF" => Some(Self::Mcafhmgnnhf), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hibhhpocofh { + Jigcnbfmkek = 0, + Hjkcbhgdpko = 1, +} +impl Hibhhpocofh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jigcnbfmkek => "HIBHHPOCOFH_JIGCNBFMKEK", + Self::Hjkcbhgdpko => "HIBHHPOCOFH_HJKCBHGDPKO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HIBHHPOCOFH_JIGCNBFMKEK" => Some(Self::Jigcnbfmkek), + "HIBHHPOCOFH_HJKCBHGDPKO" => Some(Self::Hjkcbhgdpko), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mgedbhiclfb { + Hgedacmdipf = 0, + Npmlmdojccn = 1, + Eecpmaejnna = 2, + Bafdhanpbpc = 3, +} +impl Mgedbhiclfb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hgedacmdipf => "MGEDBHICLFB_HGEDACMDIPF", + Self::Npmlmdojccn => "MGEDBHICLFB_NPMLMDOJCCN", + Self::Eecpmaejnna => "MGEDBHICLFB_EECPMAEJNNA", + Self::Bafdhanpbpc => "MGEDBHICLFB_BAFDHANPBPC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MGEDBHICLFB_HGEDACMDIPF" => Some(Self::Hgedacmdipf), + "MGEDBHICLFB_NPMLMDOJCCN" => Some(Self::Npmlmdojccn), + "MGEDBHICLFB_EECPMAEJNNA" => Some(Self::Eecpmaejnna), + "MGEDBHICLFB_BAFDHANPBPC" => Some(Self::Bafdhanpbpc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kenlkcajhpe { + Omnkamoaaeo = 0, + Hlljolpjbha = 1, + Odjombpfpel = 2, + Cbgnnnbjgod = 3, + Cfakdgjoicd = 4, +} +impl Kenlkcajhpe { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Omnkamoaaeo => "KENLKCAJHPE_OMNKAMOAAEO", + Self::Hlljolpjbha => "KENLKCAJHPE_HLLJOLPJBHA", + Self::Odjombpfpel => "KENLKCAJHPE_ODJOMBPFPEL", + Self::Cbgnnnbjgod => "KENLKCAJHPE_CBGNNNBJGOD", + Self::Cfakdgjoicd => "KENLKCAJHPE_CFAKDGJOICD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KENLKCAJHPE_OMNKAMOAAEO" => Some(Self::Omnkamoaaeo), + "KENLKCAJHPE_HLLJOLPJBHA" => Some(Self::Hlljolpjbha), + "KENLKCAJHPE_ODJOMBPFPEL" => Some(Self::Odjombpfpel), + "KENLKCAJHPE_CBGNNNBJGOD" => Some(Self::Cbgnnnbjgod), + "KENLKCAJHPE_CFAKDGJOICD" => Some(Self::Cfakdgjoicd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hdkcgiclnel { + Bjkgfnfahhn = 0, + Gifilpijmpa = 1, + Obcjbjmecmh = 2, +} +impl Hdkcgiclnel { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bjkgfnfahhn => "HDKCGICLNEL_BJKGFNFAHHN", + Self::Gifilpijmpa => "HDKCGICLNEL_GIFILPIJMPA", + Self::Obcjbjmecmh => "HDKCGICLNEL_OBCJBJMECMH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HDKCGICLNEL_BJKGFNFAHHN" => Some(Self::Bjkgfnfahhn), + "HDKCGICLNEL_GIFILPIJMPA" => Some(Self::Gifilpijmpa), + "HDKCGICLNEL_OBCJBJMECMH" => Some(Self::Obcjbjmecmh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ipnjfbhifep { + Ploiniibhjm = 0, + Hjbdpnbalif = 1, + Lajkhohmeip = 2, + Ekeeaimkolb = 3, +} +impl Ipnjfbhifep { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ploiniibhjm => "IPNJFBHIFEP_PLOINIIBHJM", + Self::Hjbdpnbalif => "IPNJFBHIFEP_HJBDPNBALIF", + Self::Lajkhohmeip => "IPNJFBHIFEP_LAJKHOHMEIP", + Self::Ekeeaimkolb => "IPNJFBHIFEP_EKEEAIMKOLB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IPNJFBHIFEP_PLOINIIBHJM" => Some(Self::Ploiniibhjm), + "IPNJFBHIFEP_HJBDPNBALIF" => Some(Self::Hjbdpnbalif), + "IPNJFBHIFEP_LAJKHOHMEIP" => Some(Self::Lajkhohmeip), + "IPNJFBHIFEP_EKEEAIMKOLB" => Some(Self::Ekeeaimkolb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hdgfnhklmcm { + Kihnhlejjgk = 0, + Obdaooolkdc = 1, + Icocncenfeb = 2, + Ehlpocakged = 3, + Bogkbgfmddi = 4, + Jfiinikcamo = 5, +} +impl Hdgfnhklmcm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kihnhlejjgk => "HDGFNHKLMCM_KIHNHLEJJGK", + Self::Obdaooolkdc => "HDGFNHKLMCM_OBDAOOOLKDC", + Self::Icocncenfeb => "HDGFNHKLMCM_ICOCNCENFEB", + Self::Ehlpocakged => "HDGFNHKLMCM_EHLPOCAKGED", + Self::Bogkbgfmddi => "HDGFNHKLMCM_BOGKBGFMDDI", + Self::Jfiinikcamo => "HDGFNHKLMCM_JFIINIKCAMO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HDGFNHKLMCM_KIHNHLEJJGK" => Some(Self::Kihnhlejjgk), + "HDGFNHKLMCM_OBDAOOOLKDC" => Some(Self::Obdaooolkdc), + "HDGFNHKLMCM_ICOCNCENFEB" => Some(Self::Icocncenfeb), + "HDGFNHKLMCM_EHLPOCAKGED" => Some(Self::Ehlpocakged), + "HDGFNHKLMCM_BOGKBGFMDDI" => Some(Self::Bogkbgfmddi), + "HDGFNHKLMCM_JFIINIKCAMO" => Some(Self::Jfiinikcamo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fhhckhdmfnc { + Giajdkganbc = 0, + Kobhhpedbkp = 1, + Dpgcmlgalac = 2, +} +impl Fhhckhdmfnc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Giajdkganbc => "FHHCKHDMFNC_GIAJDKGANBC", + Self::Kobhhpedbkp => "FHHCKHDMFNC_KOBHHPEDBKP", + Self::Dpgcmlgalac => "FHHCKHDMFNC_DPGCMLGALAC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FHHCKHDMFNC_GIAJDKGANBC" => Some(Self::Giajdkganbc), + "FHHCKHDMFNC_KOBHHPEDBKP" => Some(Self::Kobhhpedbkp), + "FHHCKHDMFNC_DPGCMLGALAC" => Some(Self::Dpgcmlgalac), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Njoklhpgmfk { + Johljkmhcgb = 0, +} +impl Njoklhpgmfk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Johljkmhcgb => "NJOKLHPGMFK_JOHLJKMHCGB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NJOKLHPGMFK_JOHLJKMHCGB" => Some(Self::Johljkmhcgb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Aihfnegegne { + Pihlokbbmei = 0, + Jdfknhfkokm = 1, + Giagechiknl = 5, + Lpekignkkam = 6, + Jhdcjbecdcn = 7, + Ejlcpiacmib = 8, +} +impl Aihfnegegne { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pihlokbbmei => "AIHFNEGEGNE_PIHLOKBBMEI", + Self::Jdfknhfkokm => "AIHFNEGEGNE_JDFKNHFKOKM", + Self::Giagechiknl => "AIHFNEGEGNE_GIAGECHIKNL", + Self::Lpekignkkam => "AIHFNEGEGNE_LPEKIGNKKAM", + Self::Jhdcjbecdcn => "AIHFNEGEGNE_JHDCJBECDCN", + Self::Ejlcpiacmib => "AIHFNEGEGNE_EJLCPIACMIB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AIHFNEGEGNE_PIHLOKBBMEI" => Some(Self::Pihlokbbmei), + "AIHFNEGEGNE_JDFKNHFKOKM" => Some(Self::Jdfknhfkokm), + "AIHFNEGEGNE_GIAGECHIKNL" => Some(Self::Giagechiknl), + "AIHFNEGEGNE_LPEKIGNKKAM" => Some(Self::Lpekignkkam), + "AIHFNEGEGNE_JHDCJBECDCN" => Some(Self::Jhdcjbecdcn), + "AIHFNEGEGNE_EJLCPIACMIB" => Some(Self::Ejlcpiacmib), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Clikfcphigm { + Eonljdckhec = 0, + Mppkalgfkpc = 1, +} +impl Clikfcphigm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Eonljdckhec => "CLIKFCPHIGM_EONLJDCKHEC", + Self::Mppkalgfkpc => "CLIKFCPHIGM_MPPKALGFKPC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CLIKFCPHIGM_EONLJDCKHEC" => Some(Self::Eonljdckhec), + "CLIKFCPHIGM_MPPKALGFKPC" => Some(Self::Mppkalgfkpc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dpgolacegma { + Aepccfbpkmi = 0, +} +impl Dpgolacegma { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Aepccfbpkmi => "DPGOLACEGMA_AEPCCFBPKMI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DPGOLACEGMA_AEPCCFBPKMI" => Some(Self::Aepccfbpkmi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bipegafgmem { + Hgemkgobbfc = 0, +} +impl Bipegafgmem { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hgemkgobbfc => "BIPEGAFGMEM_HGEMKGOBBFC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BIPEGAFGMEM_HGEMKGOBBFC" => Some(Self::Hgemkgobbfc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Heoilddoioo { + TypeOfFunctionReturnDefault = 0, + TypeOfFunctionReturnOut = 1, +} +impl Heoilddoioo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::TypeOfFunctionReturnDefault => { + "HEOILDDOIOO_TYPE_OF_FUNCTION_RETURN_DEFAULT" + } + Self::TypeOfFunctionReturnOut => "HEOILDDOIOO_TYPE_OF_FUNCTION_RETURN_OUT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HEOILDDOIOO_TYPE_OF_FUNCTION_RETURN_DEFAULT" => { + Some(Self::TypeOfFunctionReturnDefault) + } + "HEOILDDOIOO_TYPE_OF_FUNCTION_RETURN_OUT" => { + Some(Self::TypeOfFunctionReturnOut) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cnpcnhicbeg { + None = 0, + Head = 1, + Tail = 2, +} +impl Cnpcnhicbeg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::None => "CNPCNHICBEG_NONE", + Self::Head => "CNPCNHICBEG_HEAD", + Self::Tail => "CNPCNHICBEG_TAIL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CNPCNHICBEG_NONE" => Some(Self::None), + "CNPCNHICBEG_HEAD" => Some(Self::Head), + "CNPCNHICBEG_TAIL" => Some(Self::Tail), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Baeagglbbfc { + WayOfRemoveCurseNone = 0, + WayOfRemoveCurseInitiative = 1, + WayOfRemoveCursePassive = 2, +} +impl Baeagglbbfc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::WayOfRemoveCurseNone => "BAEAGGLBBFC_WAY_OF_REMOVE_CURSE_NONE", + Self::WayOfRemoveCurseInitiative => { + "BAEAGGLBBFC_WAY_OF_REMOVE_CURSE_INITIATIVE" + } + Self::WayOfRemoveCursePassive => "BAEAGGLBBFC_WAY_OF_REMOVE_CURSE_PASSIVE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BAEAGGLBBFC_WAY_OF_REMOVE_CURSE_NONE" => Some(Self::WayOfRemoveCurseNone), + "BAEAGGLBBFC_WAY_OF_REMOVE_CURSE_INITIATIVE" => { + Some(Self::WayOfRemoveCurseInitiative) + } + "BAEAGGLBBFC_WAY_OF_REMOVE_CURSE_PASSIVE" => { + Some(Self::WayOfRemoveCursePassive) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Peggggdhiho { + Kdkeikppagk = 0, + Adlbbapbmoj = 1, + Nfnpljojpdg = 2, +} +impl Peggggdhiho { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kdkeikppagk => "PEGGGGDHIHO_KDKEIKPPAGK", + Self::Adlbbapbmoj => "PEGGGGDHIHO_ADLBBAPBMOJ", + Self::Nfnpljojpdg => "PEGGGGDHIHO_NFNPLJOJPDG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PEGGGGDHIHO_KDKEIKPPAGK" => Some(Self::Kdkeikppagk), + "PEGGGGDHIHO_ADLBBAPBMOJ" => Some(Self::Adlbbapbmoj), + "PEGGGGDHIHO_NFNPLJOJPDG" => Some(Self::Nfnpljojpdg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dfcboegdocn { + TimeSegmentIndexTypeNone = 0, + TimeSegmentIndexTypeSelf = 1, + TimeSegmentIndexTypeIndex = 2, + TimeSegmentIndexTypeUid = 3, +} +impl Dfcboegdocn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::TimeSegmentIndexTypeNone => "DFCBOEGDOCN_TIME_SEGMENT_INDEX_TYPE_NONE", + Self::TimeSegmentIndexTypeSelf => "DFCBOEGDOCN_TIME_SEGMENT_INDEX_TYPE_SELF", + Self::TimeSegmentIndexTypeIndex => { + "DFCBOEGDOCN_TIME_SEGMENT_INDEX_TYPE_INDEX" + } + Self::TimeSegmentIndexTypeUid => "DFCBOEGDOCN_TIME_SEGMENT_INDEX_TYPE_UID", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DFCBOEGDOCN_TIME_SEGMENT_INDEX_TYPE_NONE" => { + Some(Self::TimeSegmentIndexTypeNone) + } + "DFCBOEGDOCN_TIME_SEGMENT_INDEX_TYPE_SELF" => { + Some(Self::TimeSegmentIndexTypeSelf) + } + "DFCBOEGDOCN_TIME_SEGMENT_INDEX_TYPE_INDEX" => { + Some(Self::TimeSegmentIndexTypeIndex) + } + "DFCBOEGDOCN_TIME_SEGMENT_INDEX_TYPE_UID" => { + Some(Self::TimeSegmentIndexTypeUid) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pdlknecljoi { + Bdmboeacfbc = 0, +} +impl Pdlknecljoi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bdmboeacfbc => "PDLKNECLJOI_BDMBOEACFBC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PDLKNECLJOI_BDMBOEACFBC" => Some(Self::Bdmboeacfbc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mohidahpnhm { + Lmohaecfamk = 0, +} +impl Mohidahpnhm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lmohaecfamk => "MOHIDAHPNHM_LMOHAECFAMK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MOHIDAHPNHM_LMOHAECFAMK" => Some(Self::Lmohaecfamk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Amdkkgilblh { + Diabdkpfgln = 0, + Kbbngmckdma = 1, + Ogbpkmkjboa = 2, + Lfphkjnimmj = 3, + Hnaldhkihfc = 4, + Ndpgimjiihc = 5, + Ogldhpeaofc = 6, + Klmebdmappe = 7, +} +impl Amdkkgilblh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Diabdkpfgln => "AMDKKGILBLH_DIABDKPFGLN", + Self::Kbbngmckdma => "AMDKKGILBLH_KBBNGMCKDMA", + Self::Ogbpkmkjboa => "AMDKKGILBLH_OGBPKMKJBOA", + Self::Lfphkjnimmj => "AMDKKGILBLH_LFPHKJNIMMJ", + Self::Hnaldhkihfc => "AMDKKGILBLH_HNALDHKIHFC", + Self::Ndpgimjiihc => "AMDKKGILBLH_NDPGIMJIIHC", + Self::Ogldhpeaofc => "AMDKKGILBLH_OGLDHPEAOFC", + Self::Klmebdmappe => "AMDKKGILBLH_KLMEBDMAPPE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AMDKKGILBLH_DIABDKPFGLN" => Some(Self::Diabdkpfgln), + "AMDKKGILBLH_KBBNGMCKDMA" => Some(Self::Kbbngmckdma), + "AMDKKGILBLH_OGBPKMKJBOA" => Some(Self::Ogbpkmkjboa), + "AMDKKGILBLH_LFPHKJNIMMJ" => Some(Self::Lfphkjnimmj), + "AMDKKGILBLH_HNALDHKIHFC" => Some(Self::Hnaldhkihfc), + "AMDKKGILBLH_NDPGIMJIIHC" => Some(Self::Ndpgimjiihc), + "AMDKKGILBLH_OGLDHPEAOFC" => Some(Self::Ogldhpeaofc), + "AMDKKGILBLH_KLMEBDMAPPE" => Some(Self::Klmebdmappe), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Djjllhhphka { + Pfkgodlmkgj = 0, +} +impl Djjllhhphka { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pfkgodlmkgj => "DJJLLHHPHKA_PFKGODLMKGJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DJJLLHHPHKA_PFKGODLMKGJ" => Some(Self::Pfkgodlmkgj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ehhncfjphom { + Ndmicdkgnbl = 0, + Gkonnhjhagj = 1, + Ihfkfbidppg = 2, + Jginhlpflhp = 3, + Dngfgnaenpd = 4, + Pjgdhjdamfc = 5, + Nomcijndmai = 6, +} +impl Ehhncfjphom { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ndmicdkgnbl => "EHHNCFJPHOM_NDMICDKGNBL", + Self::Gkonnhjhagj => "EHHNCFJPHOM_GKONNHJHAGJ", + Self::Ihfkfbidppg => "EHHNCFJPHOM_IHFKFBIDPPG", + Self::Jginhlpflhp => "EHHNCFJPHOM_JGINHLPFLHP", + Self::Dngfgnaenpd => "EHHNCFJPHOM_DNGFGNAENPD", + Self::Pjgdhjdamfc => "EHHNCFJPHOM_PJGDHJDAMFC", + Self::Nomcijndmai => "EHHNCFJPHOM_NOMCIJNDMAI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EHHNCFJPHOM_NDMICDKGNBL" => Some(Self::Ndmicdkgnbl), + "EHHNCFJPHOM_GKONNHJHAGJ" => Some(Self::Gkonnhjhagj), + "EHHNCFJPHOM_IHFKFBIDPPG" => Some(Self::Ihfkfbidppg), + "EHHNCFJPHOM_JGINHLPFLHP" => Some(Self::Jginhlpflhp), + "EHHNCFJPHOM_DNGFGNAENPD" => Some(Self::Dngfgnaenpd), + "EHHNCFJPHOM_PJGDHJDAMFC" => Some(Self::Pjgdhjdamfc), + "EHHNCFJPHOM_NOMCIJNDMAI" => Some(Self::Nomcijndmai), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eajmgeodcif { + Lbdbohfnnmf = 0, + Idhkipnfnfa = 1, + Ceekoeoincg = 2, +} +impl Eajmgeodcif { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lbdbohfnnmf => "EAJMGEODCIF_LBDBOHFNNMF", + Self::Idhkipnfnfa => "EAJMGEODCIF_IDHKIPNFNFA", + Self::Ceekoeoincg => "EAJMGEODCIF_CEEKOEOINCG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EAJMGEODCIF_LBDBOHFNNMF" => Some(Self::Lbdbohfnnmf), + "EAJMGEODCIF_IDHKIPNFNFA" => Some(Self::Idhkipnfnfa), + "EAJMGEODCIF_CEEKOEOINCG" => Some(Self::Ceekoeoincg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Abbfkbhpmim { + Mkpkniifnie = 0, + Ohgffmbdpdo = 1, + Engfccbfmjn = 2, +} +impl Abbfkbhpmim { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mkpkniifnie => "ABBFKBHPMIM_MKPKNIIFNIE", + Self::Ohgffmbdpdo => "ABBFKBHPMIM_OHGFFMBDPDO", + Self::Engfccbfmjn => "ABBFKBHPMIM_ENGFCCBFMJN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ABBFKBHPMIM_MKPKNIIFNIE" => Some(Self::Mkpkniifnie), + "ABBFKBHPMIM_OHGFFMBDPDO" => Some(Self::Ohgffmbdpdo), + "ABBFKBHPMIM_ENGFCCBFMJN" => Some(Self::Engfccbfmjn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lalljimiflp { + Lmhjchhkiap = 0, + Dhbjkjogloj = 1, + Klcnldajdmf = 2, + Ppdjiiogobj = 3, + Nljepblhlmj = 4, + Ffcdocgafca = 5, + Eacddpommhf = 6, + Ibhbifiijbd = 7, + Ggnkicollci = 8, + Mkfjlpfleea = 9, +} +impl Lalljimiflp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lmhjchhkiap => "LALLJIMIFLP_LMHJCHHKIAP", + Self::Dhbjkjogloj => "LALLJIMIFLP_DHBJKJOGLOJ", + Self::Klcnldajdmf => "LALLJIMIFLP_KLCNLDAJDMF", + Self::Ppdjiiogobj => "LALLJIMIFLP_PPDJIIOGOBJ", + Self::Nljepblhlmj => "LALLJIMIFLP_NLJEPBLHLMJ", + Self::Ffcdocgafca => "LALLJIMIFLP_FFCDOCGAFCA", + Self::Eacddpommhf => "LALLJIMIFLP_EACDDPOMMHF", + Self::Ibhbifiijbd => "LALLJIMIFLP_IBHBIFIIJBD", + Self::Ggnkicollci => "LALLJIMIFLP_GGNKICOLLCI", + Self::Mkfjlpfleea => "LALLJIMIFLP_MKFJLPFLEEA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LALLJIMIFLP_LMHJCHHKIAP" => Some(Self::Lmhjchhkiap), + "LALLJIMIFLP_DHBJKJOGLOJ" => Some(Self::Dhbjkjogloj), + "LALLJIMIFLP_KLCNLDAJDMF" => Some(Self::Klcnldajdmf), + "LALLJIMIFLP_PPDJIIOGOBJ" => Some(Self::Ppdjiiogobj), + "LALLJIMIFLP_NLJEPBLHLMJ" => Some(Self::Nljepblhlmj), + "LALLJIMIFLP_FFCDOCGAFCA" => Some(Self::Ffcdocgafca), + "LALLJIMIFLP_EACDDPOMMHF" => Some(Self::Eacddpommhf), + "LALLJIMIFLP_IBHBIFIIJBD" => Some(Self::Ibhbifiijbd), + "LALLJIMIFLP_GGNKICOLLCI" => Some(Self::Ggnkicollci), + "LALLJIMIFLP_MKFJLPFLEEA" => Some(Self::Mkfjlpfleea), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mhgphjliecb { + Cndflibndjp = 0, + Blcpfknaadj = 1, + Bjmdhodldck = 2, +} +impl Mhgphjliecb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cndflibndjp => "MHGPHJLIECB_CNDFLIBNDJP", + Self::Blcpfknaadj => "MHGPHJLIECB_BLCPFKNAADJ", + Self::Bjmdhodldck => "MHGPHJLIECB_BJMDHODLDCK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MHGPHJLIECB_CNDFLIBNDJP" => Some(Self::Cndflibndjp), + "MHGPHJLIECB_BLCPFKNAADJ" => Some(Self::Blcpfknaadj), + "MHGPHJLIECB_BJMDHODLDCK" => Some(Self::Bjmdhodldck), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum HollowSystemType { + HollowSystemTypeNone = 0, + HollowSystemTypeCard = 1, + HollowSystemTypeMemu = 2, + HollowSystemTypeCurse = 3, + HollowSystemTypeBag = 4, + HollowSystemTypeHollowItem = 5, + HollowSystemTypeHollowResultPage = 6, + HollowSystemTypeCurseInfo = 7, + HollowSystemTypeHollowBottom = 8, +} +impl HollowSystemType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowSystemTypeNone => "HollowSystemType_HOLLOW_SYSTEM_TYPE_NONE", + Self::HollowSystemTypeCard => "HollowSystemType_HOLLOW_SYSTEM_TYPE_CARD", + Self::HollowSystemTypeMemu => "HollowSystemType_HOLLOW_SYSTEM_TYPE_MEMU", + Self::HollowSystemTypeCurse => "HollowSystemType_HOLLOW_SYSTEM_TYPE_CURSE", + Self::HollowSystemTypeBag => "HollowSystemType_HOLLOW_SYSTEM_TYPE_BAG", + Self::HollowSystemTypeHollowItem => { + "HollowSystemType_HOLLOW_SYSTEM_TYPE_HOLLOW_ITEM" + } + Self::HollowSystemTypeHollowResultPage => { + "HollowSystemType_HOLLOW_SYSTEM_TYPE_HOLLOW_RESULT_PAGE" + } + Self::HollowSystemTypeCurseInfo => { + "HollowSystemType_HOLLOW_SYSTEM_TYPE_CURSE_INFO" + } + Self::HollowSystemTypeHollowBottom => { + "HollowSystemType_HOLLOW_SYSTEM_TYPE_HOLLOW_BOTTOM" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HollowSystemType_HOLLOW_SYSTEM_TYPE_NONE" => { + Some(Self::HollowSystemTypeNone) + } + "HollowSystemType_HOLLOW_SYSTEM_TYPE_CARD" => { + Some(Self::HollowSystemTypeCard) + } + "HollowSystemType_HOLLOW_SYSTEM_TYPE_MEMU" => { + Some(Self::HollowSystemTypeMemu) + } + "HollowSystemType_HOLLOW_SYSTEM_TYPE_CURSE" => { + Some(Self::HollowSystemTypeCurse) + } + "HollowSystemType_HOLLOW_SYSTEM_TYPE_BAG" => Some(Self::HollowSystemTypeBag), + "HollowSystemType_HOLLOW_SYSTEM_TYPE_HOLLOW_ITEM" => { + Some(Self::HollowSystemTypeHollowItem) + } + "HollowSystemType_HOLLOW_SYSTEM_TYPE_HOLLOW_RESULT_PAGE" => { + Some(Self::HollowSystemTypeHollowResultPage) + } + "HollowSystemType_HOLLOW_SYSTEM_TYPE_CURSE_INFO" => { + Some(Self::HollowSystemTypeCurseInfo) + } + "HollowSystemType_HOLLOW_SYSTEM_TYPE_HOLLOW_BOTTOM" => { + Some(Self::HollowSystemTypeHollowBottom) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ekmegdhncbg { + Ljdfiledcbp = 0, + Dbpjjcbfnmn = 1, + Iljkdllbcej = 2, + Jangjaljkeb = 3, + Negjlbjglbk = 4, + Aadnbdilpdb = 5, + Adddgohcopd = 6, +} +impl Ekmegdhncbg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ljdfiledcbp => "EKMEGDHNCBG_LJDFILEDCBP", + Self::Dbpjjcbfnmn => "EKMEGDHNCBG_DBPJJCBFNMN", + Self::Iljkdllbcej => "EKMEGDHNCBG_ILJKDLLBCEJ", + Self::Jangjaljkeb => "EKMEGDHNCBG_JANGJALJKEB", + Self::Negjlbjglbk => "EKMEGDHNCBG_NEGJLBJGLBK", + Self::Aadnbdilpdb => "EKMEGDHNCBG_AADNBDILPDB", + Self::Adddgohcopd => "EKMEGDHNCBG_ADDDGOHCOPD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EKMEGDHNCBG_LJDFILEDCBP" => Some(Self::Ljdfiledcbp), + "EKMEGDHNCBG_DBPJJCBFNMN" => Some(Self::Dbpjjcbfnmn), + "EKMEGDHNCBG_ILJKDLLBCEJ" => Some(Self::Iljkdllbcej), + "EKMEGDHNCBG_JANGJALJKEB" => Some(Self::Jangjaljkeb), + "EKMEGDHNCBG_NEGJLBJGLBK" => Some(Self::Negjlbjglbk), + "EKMEGDHNCBG_AADNBDILPDB" => Some(Self::Aadnbdilpdb), + "EKMEGDHNCBG_ADDDGOHCOPD" => Some(Self::Adddgohcopd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Coblfjadkia { + Ofeacabicmg = 0, +} +impl Coblfjadkia { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ofeacabicmg => "COBLFJADKIA_OFEACABICMG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "COBLFJADKIA_OFEACABICMG" => Some(Self::Ofeacabicmg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Egdcdcoeacc { + Kocllnecgdo = 0, + Iieaepldcam = 1, + Gaalojeclke = 2, + Ahnabgohnff = 3, +} +impl Egdcdcoeacc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kocllnecgdo => "EGDCDCOEACC_KOCLLNECGDO", + Self::Iieaepldcam => "EGDCDCOEACC_IIEAEPLDCAM", + Self::Gaalojeclke => "EGDCDCOEACC_GAALOJECLKE", + Self::Ahnabgohnff => "EGDCDCOEACC_AHNABGOHNFF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EGDCDCOEACC_KOCLLNECGDO" => Some(Self::Kocllnecgdo), + "EGDCDCOEACC_IIEAEPLDCAM" => Some(Self::Iieaepldcam), + "EGDCDCOEACC_GAALOJECLKE" => Some(Self::Gaalojeclke), + "EGDCDCOEACC_AHNABGOHNFF" => Some(Self::Ahnabgohnff), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Flmhmhjmeob { + Kdmffhoolab = 0, + Mhoainenaep = 1, + Ljjjdpgeecd = 2, + Ejljjcfhjil = 3, + Bpnhjhcofof = 4, +} +impl Flmhmhjmeob { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kdmffhoolab => "FLMHMHJMEOB_KDMFFHOOLAB", + Self::Mhoainenaep => "FLMHMHJMEOB_MHOAINENAEP", + Self::Ljjjdpgeecd => "FLMHMHJMEOB_LJJJDPGEECD", + Self::Ejljjcfhjil => "FLMHMHJMEOB_EJLJJCFHJIL", + Self::Bpnhjhcofof => "FLMHMHJMEOB_BPNHJHCOFOF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FLMHMHJMEOB_KDMFFHOOLAB" => Some(Self::Kdmffhoolab), + "FLMHMHJMEOB_MHOAINENAEP" => Some(Self::Mhoainenaep), + "FLMHMHJMEOB_LJJJDPGEECD" => Some(Self::Ljjjdpgeecd), + "FLMHMHJMEOB_EJLJJCFHJIL" => Some(Self::Ejljjcfhjil), + "FLMHMHJMEOB_BPNHJHCOFOF" => Some(Self::Bpnhjhcofof), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Legnhajmbgm { + Babgdnpnaco = 0, + Ielpgnnahmb = 1, + Dbbmoahkehi = 2, +} +impl Legnhajmbgm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Babgdnpnaco => "LEGNHAJMBGM_BABGDNPNACO", + Self::Ielpgnnahmb => "LEGNHAJMBGM_IELPGNNAHMB", + Self::Dbbmoahkehi => "LEGNHAJMBGM_DBBMOAHKEHI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LEGNHAJMBGM_BABGDNPNACO" => Some(Self::Babgdnpnaco), + "LEGNHAJMBGM_IELPGNNAHMB" => Some(Self::Ielpgnnahmb), + "LEGNHAJMBGM_DBBMOAHKEHI" => Some(Self::Dbbmoahkehi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Copcmdocafi { + Nlfoepjbboo = 0, + Eeochbdgckd = 1, + Aeaaeadnbag = 2, + Lddcohccagd = 3, + Ppicaekgimf = 4, + Cdcmdhjbfjc = 5, + Facbocajmle = 6, + Epdefgeakpi = 7, + Oebkinfohdj = 8, + Depbimllgeo = 9, + Jpkjhcmljko = 10, + Gkmgfbdkbaf = 11, +} +impl Copcmdocafi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nlfoepjbboo => "COPCMDOCAFI_NLFOEPJBBOO", + Self::Eeochbdgckd => "COPCMDOCAFI_EEOCHBDGCKD", + Self::Aeaaeadnbag => "COPCMDOCAFI_AEAAEADNBAG", + Self::Lddcohccagd => "COPCMDOCAFI_LDDCOHCCAGD", + Self::Ppicaekgimf => "COPCMDOCAFI_PPICAEKGIMF", + Self::Cdcmdhjbfjc => "COPCMDOCAFI_CDCMDHJBFJC", + Self::Facbocajmle => "COPCMDOCAFI_FACBOCAJMLE", + Self::Epdefgeakpi => "COPCMDOCAFI_EPDEFGEAKPI", + Self::Oebkinfohdj => "COPCMDOCAFI_OEBKINFOHDJ", + Self::Depbimllgeo => "COPCMDOCAFI_DEPBIMLLGEO", + Self::Jpkjhcmljko => "COPCMDOCAFI_JPKJHCMLJKO", + Self::Gkmgfbdkbaf => "COPCMDOCAFI_GKMGFBDKBAF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "COPCMDOCAFI_NLFOEPJBBOO" => Some(Self::Nlfoepjbboo), + "COPCMDOCAFI_EEOCHBDGCKD" => Some(Self::Eeochbdgckd), + "COPCMDOCAFI_AEAAEADNBAG" => Some(Self::Aeaaeadnbag), + "COPCMDOCAFI_LDDCOHCCAGD" => Some(Self::Lddcohccagd), + "COPCMDOCAFI_PPICAEKGIMF" => Some(Self::Ppicaekgimf), + "COPCMDOCAFI_CDCMDHJBFJC" => Some(Self::Cdcmdhjbfjc), + "COPCMDOCAFI_FACBOCAJMLE" => Some(Self::Facbocajmle), + "COPCMDOCAFI_EPDEFGEAKPI" => Some(Self::Epdefgeakpi), + "COPCMDOCAFI_OEBKINFOHDJ" => Some(Self::Oebkinfohdj), + "COPCMDOCAFI_DEPBIMLLGEO" => Some(Self::Depbimllgeo), + "COPCMDOCAFI_JPKJHCMLJKO" => Some(Self::Jpkjhcmljko), + "COPCMDOCAFI_GKMGFBDKBAF" => Some(Self::Gkmgfbdkbaf), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lnopoknjklg { + Kdjiocpleim = 0, + Hcceiieiiie = 1, + Ddekaoinccg = 2, +} +impl Lnopoknjklg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kdjiocpleim => "LNOPOKNJKLG_KDJIOCPLEIM", + Self::Hcceiieiiie => "LNOPOKNJKLG_HCCEIIEIIIE", + Self::Ddekaoinccg => "LNOPOKNJKLG_DDEKAOINCCG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LNOPOKNJKLG_KDJIOCPLEIM" => Some(Self::Kdjiocpleim), + "LNOPOKNJKLG_HCCEIIEIIIE" => Some(Self::Hcceiieiiie), + "LNOPOKNJKLG_DDEKAOINCCG" => Some(Self::Ddekaoinccg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fchgmmocbfd { + Kpedejhgjii = 0, + Bmdipmjionp = 1, + Amneinaojhi = 2, + Eadmcboolnj = 3, + Iibajlbhjmb = 4, +} +impl Fchgmmocbfd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kpedejhgjii => "FCHGMMOCBFD_KPEDEJHGJII", + Self::Bmdipmjionp => "FCHGMMOCBFD_BMDIPMJIONP", + Self::Amneinaojhi => "FCHGMMOCBFD_AMNEINAOJHI", + Self::Eadmcboolnj => "FCHGMMOCBFD_EADMCBOOLNJ", + Self::Iibajlbhjmb => "FCHGMMOCBFD_IIBAJLBHJMB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FCHGMMOCBFD_KPEDEJHGJII" => Some(Self::Kpedejhgjii), + "FCHGMMOCBFD_BMDIPMJIONP" => Some(Self::Bmdipmjionp), + "FCHGMMOCBFD_AMNEINAOJHI" => Some(Self::Amneinaojhi), + "FCHGMMOCBFD_EADMCBOOLNJ" => Some(Self::Eadmcboolnj), + "FCHGMMOCBFD_IIBAJLBHJMB" => Some(Self::Iibajlbhjmb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lbjegnaomkn { + Lahggkcgeaj = 0, + Iafdmcjmidi = 1, + Mmpejmcilfm = 2, +} +impl Lbjegnaomkn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lahggkcgeaj => "LBJEGNAOMKN_LAHGGKCGEAJ", + Self::Iafdmcjmidi => "LBJEGNAOMKN_IAFDMCJMIDI", + Self::Mmpejmcilfm => "LBJEGNAOMKN_MMPEJMCILFM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LBJEGNAOMKN_LAHGGKCGEAJ" => Some(Self::Lahggkcgeaj), + "LBJEGNAOMKN_IAFDMCJMIDI" => Some(Self::Iafdmcjmidi), + "LBJEGNAOMKN_MMPEJMCILFM" => Some(Self::Mmpejmcilfm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Alnddejneak { + Mepjppeknif = 0, + Pfficfmmpfa = 1, + Mchpdjgjbka = 2, + Hajcmlgaglp = 3, + Ndajakplfoe = 4, + Gkckhiafahe = 5, + Afbddllbcik = 6, + Oobkodmbnop = 7, + Mgembjoacba = 8, + Lggaepldbhg = 9, + Fhepbgijoig = 10, + Lfjjcffoojf = 11, + Chjbchdgfmg = 12, + Blbcejfdfih = 13, + Fmlebenfcnj = 14, + Iialcbcdjnm = 15, + Nbjeoeoblda = 16, + Nakbfpdfoah = 17, + Jclgkakhhol = 18, + Bciaaefnode = 19, +} +impl Alnddejneak { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mepjppeknif => "ALNDDEJNEAK_MEPJPPEKNIF", + Self::Pfficfmmpfa => "ALNDDEJNEAK_PFFICFMMPFA", + Self::Mchpdjgjbka => "ALNDDEJNEAK_MCHPDJGJBKA", + Self::Hajcmlgaglp => "ALNDDEJNEAK_HAJCMLGAGLP", + Self::Ndajakplfoe => "ALNDDEJNEAK_NDAJAKPLFOE", + Self::Gkckhiafahe => "ALNDDEJNEAK_GKCKHIAFAHE", + Self::Afbddllbcik => "ALNDDEJNEAK_AFBDDLLBCIK", + Self::Oobkodmbnop => "ALNDDEJNEAK_OOBKODMBNOP", + Self::Mgembjoacba => "ALNDDEJNEAK_MGEMBJOACBA", + Self::Lggaepldbhg => "ALNDDEJNEAK_LGGAEPLDBHG", + Self::Fhepbgijoig => "ALNDDEJNEAK_FHEPBGIJOIG", + Self::Lfjjcffoojf => "ALNDDEJNEAK_LFJJCFFOOJF", + Self::Chjbchdgfmg => "ALNDDEJNEAK_CHJBCHDGFMG", + Self::Blbcejfdfih => "ALNDDEJNEAK_BLBCEJFDFIH", + Self::Fmlebenfcnj => "ALNDDEJNEAK_FMLEBENFCNJ", + Self::Iialcbcdjnm => "ALNDDEJNEAK_IIALCBCDJNM", + Self::Nbjeoeoblda => "ALNDDEJNEAK_NBJEOEOBLDA", + Self::Nakbfpdfoah => "ALNDDEJNEAK_NAKBFPDFOAH", + Self::Jclgkakhhol => "ALNDDEJNEAK_JCLGKAKHHOL", + Self::Bciaaefnode => "ALNDDEJNEAK_BCIAAEFNODE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ALNDDEJNEAK_MEPJPPEKNIF" => Some(Self::Mepjppeknif), + "ALNDDEJNEAK_PFFICFMMPFA" => Some(Self::Pfficfmmpfa), + "ALNDDEJNEAK_MCHPDJGJBKA" => Some(Self::Mchpdjgjbka), + "ALNDDEJNEAK_HAJCMLGAGLP" => Some(Self::Hajcmlgaglp), + "ALNDDEJNEAK_NDAJAKPLFOE" => Some(Self::Ndajakplfoe), + "ALNDDEJNEAK_GKCKHIAFAHE" => Some(Self::Gkckhiafahe), + "ALNDDEJNEAK_AFBDDLLBCIK" => Some(Self::Afbddllbcik), + "ALNDDEJNEAK_OOBKODMBNOP" => Some(Self::Oobkodmbnop), + "ALNDDEJNEAK_MGEMBJOACBA" => Some(Self::Mgembjoacba), + "ALNDDEJNEAK_LGGAEPLDBHG" => Some(Self::Lggaepldbhg), + "ALNDDEJNEAK_FHEPBGIJOIG" => Some(Self::Fhepbgijoig), + "ALNDDEJNEAK_LFJJCFFOOJF" => Some(Self::Lfjjcffoojf), + "ALNDDEJNEAK_CHJBCHDGFMG" => Some(Self::Chjbchdgfmg), + "ALNDDEJNEAK_BLBCEJFDFIH" => Some(Self::Blbcejfdfih), + "ALNDDEJNEAK_FMLEBENFCNJ" => Some(Self::Fmlebenfcnj), + "ALNDDEJNEAK_IIALCBCDJNM" => Some(Self::Iialcbcdjnm), + "ALNDDEJNEAK_NBJEOEOBLDA" => Some(Self::Nbjeoeoblda), + "ALNDDEJNEAK_NAKBFPDFOAH" => Some(Self::Nakbfpdfoah), + "ALNDDEJNEAK_JCLGKAKHHOL" => Some(Self::Jclgkakhhol), + "ALNDDEJNEAK_BCIAAEFNODE" => Some(Self::Bciaaefnode), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pplfkljbamj { + None = 0, + InstancedAbilityId = 1, + InstancedModifierId = 2, +} +impl Pplfkljbamj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::None => "PPLFKLJBAMJ_None", + Self::InstancedAbilityId => "PPLFKLJBAMJ_InstancedAbilityId", + Self::InstancedModifierId => "PPLFKLJBAMJ_InstancedModifierId", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PPLFKLJBAMJ_None" => Some(Self::None), + "PPLFKLJBAMJ_InstancedAbilityId" => Some(Self::InstancedAbilityId), + "PPLFKLJBAMJ_InstancedModifierId" => Some(Self::InstancedModifierId), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lbkbdiddfcd { + Dincppdpapo = 0, + Nckjafdgbed = 1, +} +impl Lbkbdiddfcd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dincppdpapo => "LBKBDIDDFCD_DINCPPDPAPO", + Self::Nckjafdgbed => "LBKBDIDDFCD_NCKJAFDGBED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LBKBDIDDFCD_DINCPPDPAPO" => Some(Self::Dincppdpapo), + "LBKBDIDDFCD_NCKJAFDGBED" => Some(Self::Nckjafdgbed), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cpppmchgkel { + Jcakcfhlnmb = 0, + Gphphmfffli = 1, +} +impl Cpppmchgkel { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jcakcfhlnmb => "CPPPMCHGKEL_JCAKCFHLNMB", + Self::Gphphmfffli => "CPPPMCHGKEL_GPHPHMFFFLI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CPPPMCHGKEL_JCAKCFHLNMB" => Some(Self::Jcakcfhlnmb), + "CPPPMCHGKEL_GPHPHMFFFLI" => Some(Self::Gphphmfffli), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bhjfllngkmn { + Mjnhhfpljpo = 0, + Klkalcgaoao = 1, + Pmkhhfaacpi = 2, +} +impl Bhjfllngkmn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mjnhhfpljpo => "BHJFLLNGKMN_MJNHHFPLJPO", + Self::Klkalcgaoao => "BHJFLLNGKMN_KLKALCGAOAO", + Self::Pmkhhfaacpi => "BHJFLLNGKMN_PMKHHFAACPI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BHJFLLNGKMN_MJNHHFPLJPO" => Some(Self::Mjnhhfpljpo), + "BHJFLLNGKMN_KLKALCGAOAO" => Some(Self::Klkalcgaoao), + "BHJFLLNGKMN_PMKHHFAACPI" => Some(Self::Pmkhhfaacpi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Epnnmhlfemo { + Dlfgbjbalmf = 0, + Jkdmilemafa = 1, + Gohdoiiamhe = 2, + Mahigfhjflg = 3, + Nmjdpnilheo = 4, +} +impl Epnnmhlfemo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dlfgbjbalmf => "EPNNMHLFEMO_DLFGBJBALMF", + Self::Jkdmilemafa => "EPNNMHLFEMO_JKDMILEMAFA", + Self::Gohdoiiamhe => "EPNNMHLFEMO_GOHDOIIAMHE", + Self::Mahigfhjflg => "EPNNMHLFEMO_MAHIGFHJFLG", + Self::Nmjdpnilheo => "EPNNMHLFEMO_NMJDPNILHEO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EPNNMHLFEMO_DLFGBJBALMF" => Some(Self::Dlfgbjbalmf), + "EPNNMHLFEMO_JKDMILEMAFA" => Some(Self::Jkdmilemafa), + "EPNNMHLFEMO_GOHDOIIAMHE" => Some(Self::Gohdoiiamhe), + "EPNNMHLFEMO_MAHIGFHJFLG" => Some(Self::Mahigfhjflg), + "EPNNMHLFEMO_NMJDPNILHEO" => Some(Self::Nmjdpnilheo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mpjmenbpkpg { + Hacmnopldpn = 0, + Hommlmkbgcd = 1, + Klnhnjdeanb = 2, + Nkhjihihepa = 3, + Lejbflcgafc = 4, + Efemljjlnjd = 5, + Knibfpeecco = 6, + Hpndeaddgpm = 7, + Ldibibjlfpd = 8, + Lfpcpocgcak = 9, + Hmnfajloela = 10, + Cgllejabkee = 11, + Gdaapaibohi = 12, + Mbkmekomkjd = 13, + Iabmbflefga = 14, + Hkjmciickdf = 15, + Agmabcoenmf = 16, + Mogenhnfkhf = 17, + Fmenebcppcd = 18, + Dpakpoclhpc = 19, + Bnclpockonk = 20, + Hglanaeiglk = 21, +} +impl Mpjmenbpkpg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hacmnopldpn => "MPJMENBPKPG_HACMNOPLDPN", + Self::Hommlmkbgcd => "MPJMENBPKPG_HOMMLMKBGCD", + Self::Klnhnjdeanb => "MPJMENBPKPG_KLNHNJDEANB", + Self::Nkhjihihepa => "MPJMENBPKPG_NKHJIHIHEPA", + Self::Lejbflcgafc => "MPJMENBPKPG_LEJBFLCGAFC", + Self::Efemljjlnjd => "MPJMENBPKPG_EFEMLJJLNJD", + Self::Knibfpeecco => "MPJMENBPKPG_KNIBFPEECCO", + Self::Hpndeaddgpm => "MPJMENBPKPG_HPNDEADDGPM", + Self::Ldibibjlfpd => "MPJMENBPKPG_LDIBIBJLFPD", + Self::Lfpcpocgcak => "MPJMENBPKPG_LFPCPOCGCAK", + Self::Hmnfajloela => "MPJMENBPKPG_HMNFAJLOELA", + Self::Cgllejabkee => "MPJMENBPKPG_CGLLEJABKEE", + Self::Gdaapaibohi => "MPJMENBPKPG_GDAAPAIBOHI", + Self::Mbkmekomkjd => "MPJMENBPKPG_MBKMEKOMKJD", + Self::Iabmbflefga => "MPJMENBPKPG_IABMBFLEFGA", + Self::Hkjmciickdf => "MPJMENBPKPG_HKJMCIICKDF", + Self::Agmabcoenmf => "MPJMENBPKPG_AGMABCOENMF", + Self::Mogenhnfkhf => "MPJMENBPKPG_MOGENHNFKHF", + Self::Fmenebcppcd => "MPJMENBPKPG_FMENEBCPPCD", + Self::Dpakpoclhpc => "MPJMENBPKPG_DPAKPOCLHPC", + Self::Bnclpockonk => "MPJMENBPKPG_BNCLPOCKONK", + Self::Hglanaeiglk => "MPJMENBPKPG_HGLANAEIGLK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MPJMENBPKPG_HACMNOPLDPN" => Some(Self::Hacmnopldpn), + "MPJMENBPKPG_HOMMLMKBGCD" => Some(Self::Hommlmkbgcd), + "MPJMENBPKPG_KLNHNJDEANB" => Some(Self::Klnhnjdeanb), + "MPJMENBPKPG_NKHJIHIHEPA" => Some(Self::Nkhjihihepa), + "MPJMENBPKPG_LEJBFLCGAFC" => Some(Self::Lejbflcgafc), + "MPJMENBPKPG_EFEMLJJLNJD" => Some(Self::Efemljjlnjd), + "MPJMENBPKPG_KNIBFPEECCO" => Some(Self::Knibfpeecco), + "MPJMENBPKPG_HPNDEADDGPM" => Some(Self::Hpndeaddgpm), + "MPJMENBPKPG_LDIBIBJLFPD" => Some(Self::Ldibibjlfpd), + "MPJMENBPKPG_LFPCPOCGCAK" => Some(Self::Lfpcpocgcak), + "MPJMENBPKPG_HMNFAJLOELA" => Some(Self::Hmnfajloela), + "MPJMENBPKPG_CGLLEJABKEE" => Some(Self::Cgllejabkee), + "MPJMENBPKPG_GDAAPAIBOHI" => Some(Self::Gdaapaibohi), + "MPJMENBPKPG_MBKMEKOMKJD" => Some(Self::Mbkmekomkjd), + "MPJMENBPKPG_IABMBFLEFGA" => Some(Self::Iabmbflefga), + "MPJMENBPKPG_HKJMCIICKDF" => Some(Self::Hkjmciickdf), + "MPJMENBPKPG_AGMABCOENMF" => Some(Self::Agmabcoenmf), + "MPJMENBPKPG_MOGENHNFKHF" => Some(Self::Mogenhnfkhf), + "MPJMENBPKPG_FMENEBCPPCD" => Some(Self::Fmenebcppcd), + "MPJMENBPKPG_DPAKPOCLHPC" => Some(Self::Dpakpoclhpc), + "MPJMENBPKPG_BNCLPOCKONK" => Some(Self::Bnclpockonk), + "MPJMENBPKPG_HGLANAEIGLK" => Some(Self::Hglanaeiglk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ifhccgbeckn { + None = 0, + MiniGameParam = 1, + ActGameParam = 2, + HollowParam = 3, + PartyGameParam = 4, +} +impl Ifhccgbeckn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::None => "IFHCCGBECKN_None", + Self::MiniGameParam => "IFHCCGBECKN_MiniGameParam", + Self::ActGameParam => "IFHCCGBECKN_ActGameParam", + Self::HollowParam => "IFHCCGBECKN_HollowParam", + Self::PartyGameParam => "IFHCCGBECKN_PartyGameParam", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IFHCCGBECKN_None" => Some(Self::None), + "IFHCCGBECKN_MiniGameParam" => Some(Self::MiniGameParam), + "IFHCCGBECKN_ActGameParam" => Some(Self::ActGameParam), + "IFHCCGBECKN_HollowParam" => Some(Self::HollowParam), + "IFHCCGBECKN_PartyGameParam" => Some(Self::PartyGameParam), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fpoahpdbiip { + Lilnpaohijh = 0, + Bokbiehdbbj = 1, + Ogijlhbofpn = 2, + Kjhknfkbmjj = 3, + Kpfgejbmabm = 4, + Knpmbognhgl = 5, + Egocipoafli = 6, + Pmfhiahklpj = 7, + Kmcngomjijm = 8, +} +impl Fpoahpdbiip { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lilnpaohijh => "FPOAHPDBIIP_LILNPAOHIJH", + Self::Bokbiehdbbj => "FPOAHPDBIIP_BOKBIEHDBBJ", + Self::Ogijlhbofpn => "FPOAHPDBIIP_OGIJLHBOFPN", + Self::Kjhknfkbmjj => "FPOAHPDBIIP_KJHKNFKBMJJ", + Self::Kpfgejbmabm => "FPOAHPDBIIP_KPFGEJBMABM", + Self::Knpmbognhgl => "FPOAHPDBIIP_KNPMBOGNHGL", + Self::Egocipoafli => "FPOAHPDBIIP_EGOCIPOAFLI", + Self::Pmfhiahklpj => "FPOAHPDBIIP_PMFHIAHKLPJ", + Self::Kmcngomjijm => "FPOAHPDBIIP_KMCNGOMJIJM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FPOAHPDBIIP_LILNPAOHIJH" => Some(Self::Lilnpaohijh), + "FPOAHPDBIIP_BOKBIEHDBBJ" => Some(Self::Bokbiehdbbj), + "FPOAHPDBIIP_OGIJLHBOFPN" => Some(Self::Ogijlhbofpn), + "FPOAHPDBIIP_KJHKNFKBMJJ" => Some(Self::Kjhknfkbmjj), + "FPOAHPDBIIP_KPFGEJBMABM" => Some(Self::Kpfgejbmabm), + "FPOAHPDBIIP_KNPMBOGNHGL" => Some(Self::Knpmbognhgl), + "FPOAHPDBIIP_EGOCIPOAFLI" => Some(Self::Egocipoafli), + "FPOAHPDBIIP_PMFHIAHKLPJ" => Some(Self::Pmfhiahklpj), + "FPOAHPDBIIP_KMCNGOMJIJM" => Some(Self::Kmcngomjijm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eikonjoedci { + Gghfiecjebd = 0, + Klbmgeenpmm = 2, + Dipmkfdcjoa = 3, + Kpgjlhelejo = 4, + Dmmifgnomkc = 5, + Bkaooijkcgi = 6, + Opobcmlcmdo = 7, + Ebmjfchbeap = 8, + Kfemcccpimm = 9, + Opolllmcppg = 10, + Pgbafbmigcg = 11, + Cdnhamggbjn = 12, + Ieppoaokkkj = 16, + Iafgcgpcine = 17, + Jfbgbpjhgme = 18, + Mipnodndafp = 19, + Jjmkgoiieof = 20, + Gkdgjokeicc = 21, + Efohleooacf = 22, + Jncmhdlnkma = 23, + Ijheiommiak = 24, + Oiedfojcijn = 25, + Jkdchifjagd = 26, + Pechbnnkhep = 28, + Ccgmbpoedfp = 29, + Jhiaeeoklgh = 30, + Acaidbckdhl = 31, + Ofdafcmkdlo = 32, + Oobfkomopec = 33, + Dkdlnbnogkn = 34, + Ikjgpdapgpg = 35, + Gabpbbajnao = 36, + Polppknbdlg = 38, + Afnpbkllfpk = 39, + Dnejhnekbhf = 40, + Ljjkgfmgajg = 41, + Nnpaecbgeop = 42, + Pdjelppjnai = 43, + Cnjlilkefla = 45, + Nbfjinbgknb = 46, + Kcncakgliik = 49, + Joehbbkenhi = 52, + Ggkgdodnjgp = 53, + Ifdhnddcgii = 54, + Kkcbhjdjnie = 55, + Bmkkcbogkeg = 56, + Giogaenmhac = 57, + Memicjjmfal = 58, + Jeolcnllcbf = 59, + Jnkcjicehmm = 60, + Iobgnjpppoh = 62, + Nfinencbhpc = 63, + Eoaknhbefkl = 64, + Cihfckjgifk = 67, + Gpcoepeccdh = 68, + Abjehmmkhdb = 69, + Hmighhjjbmg = 70, + Bfkkbaiijoa = 73, + Ingjncllmlj = 74, + Cfkahmcmpef = 75, + Edbkgpldjpf = 76, + Jpnddiefnol = 77, + Kmibjpacmdf = 78, + Cmfnnjhfnmn = 79, + Cfdljlnefgm = 81, + Pbjnponhghp = 82, + Fgilhpecgag = 83, + Admpmeobaik = 84, + Pohlkioibcc = 85, + Bfhncjooljm = 86, + Nfedbihhffj = 87, + Glnmhbalcfg = 88, + Moedloifidl = 89, + Lfgmkppakpe = 90, + Appjmgbnpkn = 91, + Acpflmciako = 92, + Gcllgoioccg = 93, + Pndnaioajie = 94, + Biphlikjfmm = 95, + Hljlkmpbfac = 96, + Jopdelakeco = 97, + Ebjhmpoffgg = 98, + Lgnmmnbfdhj = 99, + Nengpnpmjee = 100, + Lbcfnnkobfj = 101, + Jebbjkbngce = 103, + Iikgncaegbf = 104, + Mnkbbglobla = 105, + Bekpknodbme = 106, + Hmfhgjcldeo = 107, + Fjebjhhgpgl = 108, + Aaohkdimflf = 109, + Nkfghbddhbf = 110, + Opnhhlabonf = 112, + Cnfindjcnmj = 113, + Cpgbhbiddea = 114, + Deplllcnhpb = 115, + Mebgnippjnj = 116, + Ekhjcnjolko = 117, + Mhnllkedepa = 118, + Hiopblbolco = 119, + Mhkjojfmaan = 120, + Eimokliajmb = 121, + Fhkohiljanh = 122, + Leaikdfbane = 123, + Lpngfjnohmp = 124, + Copnmfpjhmb = 125, + Bbbdhjlndhk = 126, + Oenjdbkgknl = 127, + Ikpifgofoof = 128, + Jjcpebpmhfh = 129, + Aogldidiblp = 130, + Ilmioahildp = 131, + Iimgcknmgic = 132, + Enenediodge = 133, + Khcbcapfcgd = 134, + Cepclbeplnl = 135, + Ahboaclbekg = 136, + Ahnhkpogfff = 137, + Ghbaagbkegd = 138, + Hhdfnnhikjg = 139, + Ilnlagpaggp = 140, + Menhngfbiii = 141, + Jooidngkcdn = 142, + Lgghoimbdgn = 143, + Pgbbmfdgkph = 144, + Iiklielhpmh = 145, + Dmgjihibimd = 146, + Oglhmfjhfeg = 147, + Kcggjamgfek = 148, + Gnhonponaeb = 149, + Immfkbppfgg = 150, + Pnhnkcimpke = 151, + Fbfflpcddah = 152, + Jbbhooppema = 153, + Ignmfihjehn = 154, + Bfmcglameim = 155, + Akmmfkggojm = 156, + Bkbbgmjbalg = 157, + Hhamdfplpbf = 158, + Pjdegnockfl = 159, + Hdoenffcacl = 160, + Kokhfpaidcm = 161, + Flcinaalbha = 162, + Gaglgfjldfe = 163, + Jljlignikmk = 164, + Hajnpbghmdi = 165, + Dpegjakfpoe = 166, + Dnjdjlemejl = 167, + Lhhnfdnhihk = 168, + Ikmaghhapaj = 169, + Kopoadenebp = 170, + Ocljlbmmced = 171, + Nmfaiaimakc = 172, + Moeekfgkmhb = 173, + Cadheiclcdl = 174, + Mhiklkgleph = 175, + Khlpcabeikf = 176, + Lcedeplgdgn = 177, + Heeodkgpiio = 178, + Gglpjkpkgcm = 179, + Fepdbdecfpo = 180, + Jcdoeaiagbl = 181, + Fmknemjaiai = 182, + Hnplllbaofi = 183, + Jjofmpfioll = 184, + Lhpbbdnooni = 185, + Gfbpciobbio = 187, + Nclmiljphoo = 188, + Nmejjfdmhkl = 189, + Cecifdipjoe = 190, + Gfmncbpoimh = 191, + Polhicglmpm = 192, + Bnepcikimjn = 193, + Gpoojpdeood = 194, + Ihnckocjdnp = 195, + Aahakmikdcd = 196, + Elhjfbpgfpl = 197, + Jpponikakgf = 198, + Jnpiemaaidm = 199, + Kacpllpdldp = 200, + Fcofhopomgb = 201, + Fimchnfkoaa = 202, + Oihooodplln = 203, + Jbgendppljc = 204, + Mjklkgncjoh = 206, + Pafokocdaol = 207, + Ohnbcgebhjf = 208, + Geijmnhddki = 209, + Pmlggdjjiem = 210, + Ljcdjkgcfag = 211, + Kcdobkdjgkl = 213, + Epghejkgcaf = 214, + Oglcjhljeio = 215, + Pjhilfcgfdk = 216, + Dboeacfhhdg = 217, + Gcogchpdimo = 218, + Jfmlakcpjmc = 219, + Dgoodmjnhfc = 220, + Lgcbjicfdgl = 221, + Fammnogkkig = 222, + Bbhpdpgmbij = 223, + Gdbhceedhgk = 224, + Bopfplkeeml = 225, + Dgonncgpkjm = 226, + Ipnklcaaogn = 227, + Ineokkinofn = 228, + Mcjnlfhpdoc = 229, + Pioilffeoep = 230, + Gjccnnoaloa = 231, + Eibligjeeeb = 232, + Pploilojbag = 233, + Agadmhgiokb = 234, + Jdhfnahnphf = 235, + Ijfmapolopl = 236, + Plaeeebfphp = 237, + Cjfbngpiboc = 238, + Emdheogipfg = 239, +} +impl Eikonjoedci { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gghfiecjebd => "EIKONJOEDCI_GGHFIECJEBD", + Self::Klbmgeenpmm => "EIKONJOEDCI_KLBMGEENPMM", + Self::Dipmkfdcjoa => "EIKONJOEDCI_DIPMKFDCJOA", + Self::Kpgjlhelejo => "EIKONJOEDCI_KPGJLHELEJO", + Self::Dmmifgnomkc => "EIKONJOEDCI_DMMIFGNOMKC", + Self::Bkaooijkcgi => "EIKONJOEDCI_BKAOOIJKCGI", + Self::Opobcmlcmdo => "EIKONJOEDCI_OPOBCMLCMDO", + Self::Ebmjfchbeap => "EIKONJOEDCI_EBMJFCHBEAP", + Self::Kfemcccpimm => "EIKONJOEDCI_KFEMCCCPIMM", + Self::Opolllmcppg => "EIKONJOEDCI_OPOLLLMCPPG", + Self::Pgbafbmigcg => "EIKONJOEDCI_PGBAFBMIGCG", + Self::Cdnhamggbjn => "EIKONJOEDCI_CDNHAMGGBJN", + Self::Ieppoaokkkj => "EIKONJOEDCI_IEPPOAOKKKJ", + Self::Iafgcgpcine => "EIKONJOEDCI_IAFGCGPCINE", + Self::Jfbgbpjhgme => "EIKONJOEDCI_JFBGBPJHGME", + Self::Mipnodndafp => "EIKONJOEDCI_MIPNODNDAFP", + Self::Jjmkgoiieof => "EIKONJOEDCI_JJMKGOIIEOF", + Self::Gkdgjokeicc => "EIKONJOEDCI_GKDGJOKEICC", + Self::Efohleooacf => "EIKONJOEDCI_EFOHLEOOACF", + Self::Jncmhdlnkma => "EIKONJOEDCI_JNCMHDLNKMA", + Self::Ijheiommiak => "EIKONJOEDCI_IJHEIOMMIAK", + Self::Oiedfojcijn => "EIKONJOEDCI_OIEDFOJCIJN", + Self::Jkdchifjagd => "EIKONJOEDCI_JKDCHIFJAGD", + Self::Pechbnnkhep => "EIKONJOEDCI_PECHBNNKHEP", + Self::Ccgmbpoedfp => "EIKONJOEDCI_CCGMBPOEDFP", + Self::Jhiaeeoklgh => "EIKONJOEDCI_JHIAEEOKLGH", + Self::Acaidbckdhl => "EIKONJOEDCI_ACAIDBCKDHL", + Self::Ofdafcmkdlo => "EIKONJOEDCI_OFDAFCMKDLO", + Self::Oobfkomopec => "EIKONJOEDCI_OOBFKOMOPEC", + Self::Dkdlnbnogkn => "EIKONJOEDCI_DKDLNBNOGKN", + Self::Ikjgpdapgpg => "EIKONJOEDCI_IKJGPDAPGPG", + Self::Gabpbbajnao => "EIKONJOEDCI_GABPBBAJNAO", + Self::Polppknbdlg => "EIKONJOEDCI_POLPPKNBDLG", + Self::Afnpbkllfpk => "EIKONJOEDCI_AFNPBKLLFPK", + Self::Dnejhnekbhf => "EIKONJOEDCI_DNEJHNEKBHF", + Self::Ljjkgfmgajg => "EIKONJOEDCI_LJJKGFMGAJG", + Self::Nnpaecbgeop => "EIKONJOEDCI_NNPAECBGEOP", + Self::Pdjelppjnai => "EIKONJOEDCI_PDJELPPJNAI", + Self::Cnjlilkefla => "EIKONJOEDCI_CNJLILKEFLA", + Self::Nbfjinbgknb => "EIKONJOEDCI_NBFJINBGKNB", + Self::Kcncakgliik => "EIKONJOEDCI_KCNCAKGLIIK", + Self::Joehbbkenhi => "EIKONJOEDCI_JOEHBBKENHI", + Self::Ggkgdodnjgp => "EIKONJOEDCI_GGKGDODNJGP", + Self::Ifdhnddcgii => "EIKONJOEDCI_IFDHNDDCGII", + Self::Kkcbhjdjnie => "EIKONJOEDCI_KKCBHJDJNIE", + Self::Bmkkcbogkeg => "EIKONJOEDCI_BMKKCBOGKEG", + Self::Giogaenmhac => "EIKONJOEDCI_GIOGAENMHAC", + Self::Memicjjmfal => "EIKONJOEDCI_MEMICJJMFAL", + Self::Jeolcnllcbf => "EIKONJOEDCI_JEOLCNLLCBF", + Self::Jnkcjicehmm => "EIKONJOEDCI_JNKCJICEHMM", + Self::Iobgnjpppoh => "EIKONJOEDCI_IOBGNJPPPOH", + Self::Nfinencbhpc => "EIKONJOEDCI_NFINENCBHPC", + Self::Eoaknhbefkl => "EIKONJOEDCI_EOAKNHBEFKL", + Self::Cihfckjgifk => "EIKONJOEDCI_CIHFCKJGIFK", + Self::Gpcoepeccdh => "EIKONJOEDCI_GPCOEPECCDH", + Self::Abjehmmkhdb => "EIKONJOEDCI_ABJEHMMKHDB", + Self::Hmighhjjbmg => "EIKONJOEDCI_HMIGHHJJBMG", + Self::Bfkkbaiijoa => "EIKONJOEDCI_BFKKBAIIJOA", + Self::Ingjncllmlj => "EIKONJOEDCI_INGJNCLLMLJ", + Self::Cfkahmcmpef => "EIKONJOEDCI_CFKAHMCMPEF", + Self::Edbkgpldjpf => "EIKONJOEDCI_EDBKGPLDJPF", + Self::Jpnddiefnol => "EIKONJOEDCI_JPNDDIEFNOL", + Self::Kmibjpacmdf => "EIKONJOEDCI_KMIBJPACMDF", + Self::Cmfnnjhfnmn => "EIKONJOEDCI_CMFNNJHFNMN", + Self::Cfdljlnefgm => "EIKONJOEDCI_CFDLJLNEFGM", + Self::Pbjnponhghp => "EIKONJOEDCI_PBJNPONHGHP", + Self::Fgilhpecgag => "EIKONJOEDCI_FGILHPECGAG", + Self::Admpmeobaik => "EIKONJOEDCI_ADMPMEOBAIK", + Self::Pohlkioibcc => "EIKONJOEDCI_POHLKIOIBCC", + Self::Bfhncjooljm => "EIKONJOEDCI_BFHNCJOOLJM", + Self::Nfedbihhffj => "EIKONJOEDCI_NFEDBIHHFFJ", + Self::Glnmhbalcfg => "EIKONJOEDCI_GLNMHBALCFG", + Self::Moedloifidl => "EIKONJOEDCI_MOEDLOIFIDL", + Self::Lfgmkppakpe => "EIKONJOEDCI_LFGMKPPAKPE", + Self::Appjmgbnpkn => "EIKONJOEDCI_APPJMGBNPKN", + Self::Acpflmciako => "EIKONJOEDCI_ACPFLMCIAKO", + Self::Gcllgoioccg => "EIKONJOEDCI_GCLLGOIOCCG", + Self::Pndnaioajie => "EIKONJOEDCI_PNDNAIOAJIE", + Self::Biphlikjfmm => "EIKONJOEDCI_BIPHLIKJFMM", + Self::Hljlkmpbfac => "EIKONJOEDCI_HLJLKMPBFAC", + Self::Jopdelakeco => "EIKONJOEDCI_JOPDELAKECO", + Self::Ebjhmpoffgg => "EIKONJOEDCI_EBJHMPOFFGG", + Self::Lgnmmnbfdhj => "EIKONJOEDCI_LGNMMNBFDHJ", + Self::Nengpnpmjee => "EIKONJOEDCI_NENGPNPMJEE", + Self::Lbcfnnkobfj => "EIKONJOEDCI_LBCFNNKOBFJ", + Self::Jebbjkbngce => "EIKONJOEDCI_JEBBJKBNGCE", + Self::Iikgncaegbf => "EIKONJOEDCI_IIKGNCAEGBF", + Self::Mnkbbglobla => "EIKONJOEDCI_MNKBBGLOBLA", + Self::Bekpknodbme => "EIKONJOEDCI_BEKPKNODBME", + Self::Hmfhgjcldeo => "EIKONJOEDCI_HMFHGJCLDEO", + Self::Fjebjhhgpgl => "EIKONJOEDCI_FJEBJHHGPGL", + Self::Aaohkdimflf => "EIKONJOEDCI_AAOHKDIMFLF", + Self::Nkfghbddhbf => "EIKONJOEDCI_NKFGHBDDHBF", + Self::Opnhhlabonf => "EIKONJOEDCI_OPNHHLABONF", + Self::Cnfindjcnmj => "EIKONJOEDCI_CNFINDJCNMJ", + Self::Cpgbhbiddea => "EIKONJOEDCI_CPGBHBIDDEA", + Self::Deplllcnhpb => "EIKONJOEDCI_DEPLLLCNHPB", + Self::Mebgnippjnj => "EIKONJOEDCI_MEBGNIPPJNJ", + Self::Ekhjcnjolko => "EIKONJOEDCI_EKHJCNJOLKO", + Self::Mhnllkedepa => "EIKONJOEDCI_MHNLLKEDEPA", + Self::Hiopblbolco => "EIKONJOEDCI_HIOPBLBOLCO", + Self::Mhkjojfmaan => "EIKONJOEDCI_MHKJOJFMAAN", + Self::Eimokliajmb => "EIKONJOEDCI_EIMOKLIAJMB", + Self::Fhkohiljanh => "EIKONJOEDCI_FHKOHILJANH", + Self::Leaikdfbane => "EIKONJOEDCI_LEAIKDFBANE", + Self::Lpngfjnohmp => "EIKONJOEDCI_LPNGFJNOHMP", + Self::Copnmfpjhmb => "EIKONJOEDCI_COPNMFPJHMB", + Self::Bbbdhjlndhk => "EIKONJOEDCI_BBBDHJLNDHK", + Self::Oenjdbkgknl => "EIKONJOEDCI_OENJDBKGKNL", + Self::Ikpifgofoof => "EIKONJOEDCI_IKPIFGOFOOF", + Self::Jjcpebpmhfh => "EIKONJOEDCI_JJCPEBPMHFH", + Self::Aogldidiblp => "EIKONJOEDCI_AOGLDIDIBLP", + Self::Ilmioahildp => "EIKONJOEDCI_ILMIOAHILDP", + Self::Iimgcknmgic => "EIKONJOEDCI_IIMGCKNMGIC", + Self::Enenediodge => "EIKONJOEDCI_ENENEDIODGE", + Self::Khcbcapfcgd => "EIKONJOEDCI_KHCBCAPFCGD", + Self::Cepclbeplnl => "EIKONJOEDCI_CEPCLBEPLNL", + Self::Ahboaclbekg => "EIKONJOEDCI_AHBOACLBEKG", + Self::Ahnhkpogfff => "EIKONJOEDCI_AHNHKPOGFFF", + Self::Ghbaagbkegd => "EIKONJOEDCI_GHBAAGBKEGD", + Self::Hhdfnnhikjg => "EIKONJOEDCI_HHDFNNHIKJG", + Self::Ilnlagpaggp => "EIKONJOEDCI_ILNLAGPAGGP", + Self::Menhngfbiii => "EIKONJOEDCI_MENHNGFBIII", + Self::Jooidngkcdn => "EIKONJOEDCI_JOOIDNGKCDN", + Self::Lgghoimbdgn => "EIKONJOEDCI_LGGHOIMBDGN", + Self::Pgbbmfdgkph => "EIKONJOEDCI_PGBBMFDGKPH", + Self::Iiklielhpmh => "EIKONJOEDCI_IIKLIELHPMH", + Self::Dmgjihibimd => "EIKONJOEDCI_DMGJIHIBIMD", + Self::Oglhmfjhfeg => "EIKONJOEDCI_OGLHMFJHFEG", + Self::Kcggjamgfek => "EIKONJOEDCI_KCGGJAMGFEK", + Self::Gnhonponaeb => "EIKONJOEDCI_GNHONPONAEB", + Self::Immfkbppfgg => "EIKONJOEDCI_IMMFKBPPFGG", + Self::Pnhnkcimpke => "EIKONJOEDCI_PNHNKCIMPKE", + Self::Fbfflpcddah => "EIKONJOEDCI_FBFFLPCDDAH", + Self::Jbbhooppema => "EIKONJOEDCI_JBBHOOPPEMA", + Self::Ignmfihjehn => "EIKONJOEDCI_IGNMFIHJEHN", + Self::Bfmcglameim => "EIKONJOEDCI_BFMCGLAMEIM", + Self::Akmmfkggojm => "EIKONJOEDCI_AKMMFKGGOJM", + Self::Bkbbgmjbalg => "EIKONJOEDCI_BKBBGMJBALG", + Self::Hhamdfplpbf => "EIKONJOEDCI_HHAMDFPLPBF", + Self::Pjdegnockfl => "EIKONJOEDCI_PJDEGNOCKFL", + Self::Hdoenffcacl => "EIKONJOEDCI_HDOENFFCACL", + Self::Kokhfpaidcm => "EIKONJOEDCI_KOKHFPAIDCM", + Self::Flcinaalbha => "EIKONJOEDCI_FLCINAALBHA", + Self::Gaglgfjldfe => "EIKONJOEDCI_GAGLGFJLDFE", + Self::Jljlignikmk => "EIKONJOEDCI_JLJLIGNIKMK", + Self::Hajnpbghmdi => "EIKONJOEDCI_HAJNPBGHMDI", + Self::Dpegjakfpoe => "EIKONJOEDCI_DPEGJAKFPOE", + Self::Dnjdjlemejl => "EIKONJOEDCI_DNJDJLEMEJL", + Self::Lhhnfdnhihk => "EIKONJOEDCI_LHHNFDNHIHK", + Self::Ikmaghhapaj => "EIKONJOEDCI_IKMAGHHAPAJ", + Self::Kopoadenebp => "EIKONJOEDCI_KOPOADENEBP", + Self::Ocljlbmmced => "EIKONJOEDCI_OCLJLBMMCED", + Self::Nmfaiaimakc => "EIKONJOEDCI_NMFAIAIMAKC", + Self::Moeekfgkmhb => "EIKONJOEDCI_MOEEKFGKMHB", + Self::Cadheiclcdl => "EIKONJOEDCI_CADHEICLCDL", + Self::Mhiklkgleph => "EIKONJOEDCI_MHIKLKGLEPH", + Self::Khlpcabeikf => "EIKONJOEDCI_KHLPCABEIKF", + Self::Lcedeplgdgn => "EIKONJOEDCI_LCEDEPLGDGN", + Self::Heeodkgpiio => "EIKONJOEDCI_HEEODKGPIIO", + Self::Gglpjkpkgcm => "EIKONJOEDCI_GGLPJKPKGCM", + Self::Fepdbdecfpo => "EIKONJOEDCI_FEPDBDECFPO", + Self::Jcdoeaiagbl => "EIKONJOEDCI_JCDOEAIAGBL", + Self::Fmknemjaiai => "EIKONJOEDCI_FMKNEMJAIAI", + Self::Hnplllbaofi => "EIKONJOEDCI_HNPLLLBAOFI", + Self::Jjofmpfioll => "EIKONJOEDCI_JJOFMPFIOLL", + Self::Lhpbbdnooni => "EIKONJOEDCI_LHPBBDNOONI", + Self::Gfbpciobbio => "EIKONJOEDCI_GFBPCIOBBIO", + Self::Nclmiljphoo => "EIKONJOEDCI_NCLMILJPHOO", + Self::Nmejjfdmhkl => "EIKONJOEDCI_NMEJJFDMHKL", + Self::Cecifdipjoe => "EIKONJOEDCI_CECIFDIPJOE", + Self::Gfmncbpoimh => "EIKONJOEDCI_GFMNCBPOIMH", + Self::Polhicglmpm => "EIKONJOEDCI_POLHICGLMPM", + Self::Bnepcikimjn => "EIKONJOEDCI_BNEPCIKIMJN", + Self::Gpoojpdeood => "EIKONJOEDCI_GPOOJPDEOOD", + Self::Ihnckocjdnp => "EIKONJOEDCI_IHNCKOCJDNP", + Self::Aahakmikdcd => "EIKONJOEDCI_AAHAKMIKDCD", + Self::Elhjfbpgfpl => "EIKONJOEDCI_ELHJFBPGFPL", + Self::Jpponikakgf => "EIKONJOEDCI_JPPONIKAKGF", + Self::Jnpiemaaidm => "EIKONJOEDCI_JNPIEMAAIDM", + Self::Kacpllpdldp => "EIKONJOEDCI_KACPLLPDLDP", + Self::Fcofhopomgb => "EIKONJOEDCI_FCOFHOPOMGB", + Self::Fimchnfkoaa => "EIKONJOEDCI_FIMCHNFKOAA", + Self::Oihooodplln => "EIKONJOEDCI_OIHOOODPLLN", + Self::Jbgendppljc => "EIKONJOEDCI_JBGENDPPLJC", + Self::Mjklkgncjoh => "EIKONJOEDCI_MJKLKGNCJOH", + Self::Pafokocdaol => "EIKONJOEDCI_PAFOKOCDAOL", + Self::Ohnbcgebhjf => "EIKONJOEDCI_OHNBCGEBHJF", + Self::Geijmnhddki => "EIKONJOEDCI_GEIJMNHDDKI", + Self::Pmlggdjjiem => "EIKONJOEDCI_PMLGGDJJIEM", + Self::Ljcdjkgcfag => "EIKONJOEDCI_LJCDJKGCFAG", + Self::Kcdobkdjgkl => "EIKONJOEDCI_KCDOBKDJGKL", + Self::Epghejkgcaf => "EIKONJOEDCI_EPGHEJKGCAF", + Self::Oglcjhljeio => "EIKONJOEDCI_OGLCJHLJEIO", + Self::Pjhilfcgfdk => "EIKONJOEDCI_PJHILFCGFDK", + Self::Dboeacfhhdg => "EIKONJOEDCI_DBOEACFHHDG", + Self::Gcogchpdimo => "EIKONJOEDCI_GCOGCHPDIMO", + Self::Jfmlakcpjmc => "EIKONJOEDCI_JFMLAKCPJMC", + Self::Dgoodmjnhfc => "EIKONJOEDCI_DGOODMJNHFC", + Self::Lgcbjicfdgl => "EIKONJOEDCI_LGCBJICFDGL", + Self::Fammnogkkig => "EIKONJOEDCI_FAMMNOGKKIG", + Self::Bbhpdpgmbij => "EIKONJOEDCI_BBHPDPGMBIJ", + Self::Gdbhceedhgk => "EIKONJOEDCI_GDBHCEEDHGK", + Self::Bopfplkeeml => "EIKONJOEDCI_BOPFPLKEEML", + Self::Dgonncgpkjm => "EIKONJOEDCI_DGONNCGPKJM", + Self::Ipnklcaaogn => "EIKONJOEDCI_IPNKLCAAOGN", + Self::Ineokkinofn => "EIKONJOEDCI_INEOKKINOFN", + Self::Mcjnlfhpdoc => "EIKONJOEDCI_MCJNLFHPDOC", + Self::Pioilffeoep => "EIKONJOEDCI_PIOILFFEOEP", + Self::Gjccnnoaloa => "EIKONJOEDCI_GJCCNNOALOA", + Self::Eibligjeeeb => "EIKONJOEDCI_EIBLIGJEEEB", + Self::Pploilojbag => "EIKONJOEDCI_PPLOILOJBAG", + Self::Agadmhgiokb => "EIKONJOEDCI_AGADMHGIOKB", + Self::Jdhfnahnphf => "EIKONJOEDCI_JDHFNAHNPHF", + Self::Ijfmapolopl => "EIKONJOEDCI_IJFMAPOLOPL", + Self::Plaeeebfphp => "EIKONJOEDCI_PLAEEEBFPHP", + Self::Cjfbngpiboc => "EIKONJOEDCI_CJFBNGPIBOC", + Self::Emdheogipfg => "EIKONJOEDCI_EMDHEOGIPFG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EIKONJOEDCI_GGHFIECJEBD" => Some(Self::Gghfiecjebd), + "EIKONJOEDCI_KLBMGEENPMM" => Some(Self::Klbmgeenpmm), + "EIKONJOEDCI_DIPMKFDCJOA" => Some(Self::Dipmkfdcjoa), + "EIKONJOEDCI_KPGJLHELEJO" => Some(Self::Kpgjlhelejo), + "EIKONJOEDCI_DMMIFGNOMKC" => Some(Self::Dmmifgnomkc), + "EIKONJOEDCI_BKAOOIJKCGI" => Some(Self::Bkaooijkcgi), + "EIKONJOEDCI_OPOBCMLCMDO" => Some(Self::Opobcmlcmdo), + "EIKONJOEDCI_EBMJFCHBEAP" => Some(Self::Ebmjfchbeap), + "EIKONJOEDCI_KFEMCCCPIMM" => Some(Self::Kfemcccpimm), + "EIKONJOEDCI_OPOLLLMCPPG" => Some(Self::Opolllmcppg), + "EIKONJOEDCI_PGBAFBMIGCG" => Some(Self::Pgbafbmigcg), + "EIKONJOEDCI_CDNHAMGGBJN" => Some(Self::Cdnhamggbjn), + "EIKONJOEDCI_IEPPOAOKKKJ" => Some(Self::Ieppoaokkkj), + "EIKONJOEDCI_IAFGCGPCINE" => Some(Self::Iafgcgpcine), + "EIKONJOEDCI_JFBGBPJHGME" => Some(Self::Jfbgbpjhgme), + "EIKONJOEDCI_MIPNODNDAFP" => Some(Self::Mipnodndafp), + "EIKONJOEDCI_JJMKGOIIEOF" => Some(Self::Jjmkgoiieof), + "EIKONJOEDCI_GKDGJOKEICC" => Some(Self::Gkdgjokeicc), + "EIKONJOEDCI_EFOHLEOOACF" => Some(Self::Efohleooacf), + "EIKONJOEDCI_JNCMHDLNKMA" => Some(Self::Jncmhdlnkma), + "EIKONJOEDCI_IJHEIOMMIAK" => Some(Self::Ijheiommiak), + "EIKONJOEDCI_OIEDFOJCIJN" => Some(Self::Oiedfojcijn), + "EIKONJOEDCI_JKDCHIFJAGD" => Some(Self::Jkdchifjagd), + "EIKONJOEDCI_PECHBNNKHEP" => Some(Self::Pechbnnkhep), + "EIKONJOEDCI_CCGMBPOEDFP" => Some(Self::Ccgmbpoedfp), + "EIKONJOEDCI_JHIAEEOKLGH" => Some(Self::Jhiaeeoklgh), + "EIKONJOEDCI_ACAIDBCKDHL" => Some(Self::Acaidbckdhl), + "EIKONJOEDCI_OFDAFCMKDLO" => Some(Self::Ofdafcmkdlo), + "EIKONJOEDCI_OOBFKOMOPEC" => Some(Self::Oobfkomopec), + "EIKONJOEDCI_DKDLNBNOGKN" => Some(Self::Dkdlnbnogkn), + "EIKONJOEDCI_IKJGPDAPGPG" => Some(Self::Ikjgpdapgpg), + "EIKONJOEDCI_GABPBBAJNAO" => Some(Self::Gabpbbajnao), + "EIKONJOEDCI_POLPPKNBDLG" => Some(Self::Polppknbdlg), + "EIKONJOEDCI_AFNPBKLLFPK" => Some(Self::Afnpbkllfpk), + "EIKONJOEDCI_DNEJHNEKBHF" => Some(Self::Dnejhnekbhf), + "EIKONJOEDCI_LJJKGFMGAJG" => Some(Self::Ljjkgfmgajg), + "EIKONJOEDCI_NNPAECBGEOP" => Some(Self::Nnpaecbgeop), + "EIKONJOEDCI_PDJELPPJNAI" => Some(Self::Pdjelppjnai), + "EIKONJOEDCI_CNJLILKEFLA" => Some(Self::Cnjlilkefla), + "EIKONJOEDCI_NBFJINBGKNB" => Some(Self::Nbfjinbgknb), + "EIKONJOEDCI_KCNCAKGLIIK" => Some(Self::Kcncakgliik), + "EIKONJOEDCI_JOEHBBKENHI" => Some(Self::Joehbbkenhi), + "EIKONJOEDCI_GGKGDODNJGP" => Some(Self::Ggkgdodnjgp), + "EIKONJOEDCI_IFDHNDDCGII" => Some(Self::Ifdhnddcgii), + "EIKONJOEDCI_KKCBHJDJNIE" => Some(Self::Kkcbhjdjnie), + "EIKONJOEDCI_BMKKCBOGKEG" => Some(Self::Bmkkcbogkeg), + "EIKONJOEDCI_GIOGAENMHAC" => Some(Self::Giogaenmhac), + "EIKONJOEDCI_MEMICJJMFAL" => Some(Self::Memicjjmfal), + "EIKONJOEDCI_JEOLCNLLCBF" => Some(Self::Jeolcnllcbf), + "EIKONJOEDCI_JNKCJICEHMM" => Some(Self::Jnkcjicehmm), + "EIKONJOEDCI_IOBGNJPPPOH" => Some(Self::Iobgnjpppoh), + "EIKONJOEDCI_NFINENCBHPC" => Some(Self::Nfinencbhpc), + "EIKONJOEDCI_EOAKNHBEFKL" => Some(Self::Eoaknhbefkl), + "EIKONJOEDCI_CIHFCKJGIFK" => Some(Self::Cihfckjgifk), + "EIKONJOEDCI_GPCOEPECCDH" => Some(Self::Gpcoepeccdh), + "EIKONJOEDCI_ABJEHMMKHDB" => Some(Self::Abjehmmkhdb), + "EIKONJOEDCI_HMIGHHJJBMG" => Some(Self::Hmighhjjbmg), + "EIKONJOEDCI_BFKKBAIIJOA" => Some(Self::Bfkkbaiijoa), + "EIKONJOEDCI_INGJNCLLMLJ" => Some(Self::Ingjncllmlj), + "EIKONJOEDCI_CFKAHMCMPEF" => Some(Self::Cfkahmcmpef), + "EIKONJOEDCI_EDBKGPLDJPF" => Some(Self::Edbkgpldjpf), + "EIKONJOEDCI_JPNDDIEFNOL" => Some(Self::Jpnddiefnol), + "EIKONJOEDCI_KMIBJPACMDF" => Some(Self::Kmibjpacmdf), + "EIKONJOEDCI_CMFNNJHFNMN" => Some(Self::Cmfnnjhfnmn), + "EIKONJOEDCI_CFDLJLNEFGM" => Some(Self::Cfdljlnefgm), + "EIKONJOEDCI_PBJNPONHGHP" => Some(Self::Pbjnponhghp), + "EIKONJOEDCI_FGILHPECGAG" => Some(Self::Fgilhpecgag), + "EIKONJOEDCI_ADMPMEOBAIK" => Some(Self::Admpmeobaik), + "EIKONJOEDCI_POHLKIOIBCC" => Some(Self::Pohlkioibcc), + "EIKONJOEDCI_BFHNCJOOLJM" => Some(Self::Bfhncjooljm), + "EIKONJOEDCI_NFEDBIHHFFJ" => Some(Self::Nfedbihhffj), + "EIKONJOEDCI_GLNMHBALCFG" => Some(Self::Glnmhbalcfg), + "EIKONJOEDCI_MOEDLOIFIDL" => Some(Self::Moedloifidl), + "EIKONJOEDCI_LFGMKPPAKPE" => Some(Self::Lfgmkppakpe), + "EIKONJOEDCI_APPJMGBNPKN" => Some(Self::Appjmgbnpkn), + "EIKONJOEDCI_ACPFLMCIAKO" => Some(Self::Acpflmciako), + "EIKONJOEDCI_GCLLGOIOCCG" => Some(Self::Gcllgoioccg), + "EIKONJOEDCI_PNDNAIOAJIE" => Some(Self::Pndnaioajie), + "EIKONJOEDCI_BIPHLIKJFMM" => Some(Self::Biphlikjfmm), + "EIKONJOEDCI_HLJLKMPBFAC" => Some(Self::Hljlkmpbfac), + "EIKONJOEDCI_JOPDELAKECO" => Some(Self::Jopdelakeco), + "EIKONJOEDCI_EBJHMPOFFGG" => Some(Self::Ebjhmpoffgg), + "EIKONJOEDCI_LGNMMNBFDHJ" => Some(Self::Lgnmmnbfdhj), + "EIKONJOEDCI_NENGPNPMJEE" => Some(Self::Nengpnpmjee), + "EIKONJOEDCI_LBCFNNKOBFJ" => Some(Self::Lbcfnnkobfj), + "EIKONJOEDCI_JEBBJKBNGCE" => Some(Self::Jebbjkbngce), + "EIKONJOEDCI_IIKGNCAEGBF" => Some(Self::Iikgncaegbf), + "EIKONJOEDCI_MNKBBGLOBLA" => Some(Self::Mnkbbglobla), + "EIKONJOEDCI_BEKPKNODBME" => Some(Self::Bekpknodbme), + "EIKONJOEDCI_HMFHGJCLDEO" => Some(Self::Hmfhgjcldeo), + "EIKONJOEDCI_FJEBJHHGPGL" => Some(Self::Fjebjhhgpgl), + "EIKONJOEDCI_AAOHKDIMFLF" => Some(Self::Aaohkdimflf), + "EIKONJOEDCI_NKFGHBDDHBF" => Some(Self::Nkfghbddhbf), + "EIKONJOEDCI_OPNHHLABONF" => Some(Self::Opnhhlabonf), + "EIKONJOEDCI_CNFINDJCNMJ" => Some(Self::Cnfindjcnmj), + "EIKONJOEDCI_CPGBHBIDDEA" => Some(Self::Cpgbhbiddea), + "EIKONJOEDCI_DEPLLLCNHPB" => Some(Self::Deplllcnhpb), + "EIKONJOEDCI_MEBGNIPPJNJ" => Some(Self::Mebgnippjnj), + "EIKONJOEDCI_EKHJCNJOLKO" => Some(Self::Ekhjcnjolko), + "EIKONJOEDCI_MHNLLKEDEPA" => Some(Self::Mhnllkedepa), + "EIKONJOEDCI_HIOPBLBOLCO" => Some(Self::Hiopblbolco), + "EIKONJOEDCI_MHKJOJFMAAN" => Some(Self::Mhkjojfmaan), + "EIKONJOEDCI_EIMOKLIAJMB" => Some(Self::Eimokliajmb), + "EIKONJOEDCI_FHKOHILJANH" => Some(Self::Fhkohiljanh), + "EIKONJOEDCI_LEAIKDFBANE" => Some(Self::Leaikdfbane), + "EIKONJOEDCI_LPNGFJNOHMP" => Some(Self::Lpngfjnohmp), + "EIKONJOEDCI_COPNMFPJHMB" => Some(Self::Copnmfpjhmb), + "EIKONJOEDCI_BBBDHJLNDHK" => Some(Self::Bbbdhjlndhk), + "EIKONJOEDCI_OENJDBKGKNL" => Some(Self::Oenjdbkgknl), + "EIKONJOEDCI_IKPIFGOFOOF" => Some(Self::Ikpifgofoof), + "EIKONJOEDCI_JJCPEBPMHFH" => Some(Self::Jjcpebpmhfh), + "EIKONJOEDCI_AOGLDIDIBLP" => Some(Self::Aogldidiblp), + "EIKONJOEDCI_ILMIOAHILDP" => Some(Self::Ilmioahildp), + "EIKONJOEDCI_IIMGCKNMGIC" => Some(Self::Iimgcknmgic), + "EIKONJOEDCI_ENENEDIODGE" => Some(Self::Enenediodge), + "EIKONJOEDCI_KHCBCAPFCGD" => Some(Self::Khcbcapfcgd), + "EIKONJOEDCI_CEPCLBEPLNL" => Some(Self::Cepclbeplnl), + "EIKONJOEDCI_AHBOACLBEKG" => Some(Self::Ahboaclbekg), + "EIKONJOEDCI_AHNHKPOGFFF" => Some(Self::Ahnhkpogfff), + "EIKONJOEDCI_GHBAAGBKEGD" => Some(Self::Ghbaagbkegd), + "EIKONJOEDCI_HHDFNNHIKJG" => Some(Self::Hhdfnnhikjg), + "EIKONJOEDCI_ILNLAGPAGGP" => Some(Self::Ilnlagpaggp), + "EIKONJOEDCI_MENHNGFBIII" => Some(Self::Menhngfbiii), + "EIKONJOEDCI_JOOIDNGKCDN" => Some(Self::Jooidngkcdn), + "EIKONJOEDCI_LGGHOIMBDGN" => Some(Self::Lgghoimbdgn), + "EIKONJOEDCI_PGBBMFDGKPH" => Some(Self::Pgbbmfdgkph), + "EIKONJOEDCI_IIKLIELHPMH" => Some(Self::Iiklielhpmh), + "EIKONJOEDCI_DMGJIHIBIMD" => Some(Self::Dmgjihibimd), + "EIKONJOEDCI_OGLHMFJHFEG" => Some(Self::Oglhmfjhfeg), + "EIKONJOEDCI_KCGGJAMGFEK" => Some(Self::Kcggjamgfek), + "EIKONJOEDCI_GNHONPONAEB" => Some(Self::Gnhonponaeb), + "EIKONJOEDCI_IMMFKBPPFGG" => Some(Self::Immfkbppfgg), + "EIKONJOEDCI_PNHNKCIMPKE" => Some(Self::Pnhnkcimpke), + "EIKONJOEDCI_FBFFLPCDDAH" => Some(Self::Fbfflpcddah), + "EIKONJOEDCI_JBBHOOPPEMA" => Some(Self::Jbbhooppema), + "EIKONJOEDCI_IGNMFIHJEHN" => Some(Self::Ignmfihjehn), + "EIKONJOEDCI_BFMCGLAMEIM" => Some(Self::Bfmcglameim), + "EIKONJOEDCI_AKMMFKGGOJM" => Some(Self::Akmmfkggojm), + "EIKONJOEDCI_BKBBGMJBALG" => Some(Self::Bkbbgmjbalg), + "EIKONJOEDCI_HHAMDFPLPBF" => Some(Self::Hhamdfplpbf), + "EIKONJOEDCI_PJDEGNOCKFL" => Some(Self::Pjdegnockfl), + "EIKONJOEDCI_HDOENFFCACL" => Some(Self::Hdoenffcacl), + "EIKONJOEDCI_KOKHFPAIDCM" => Some(Self::Kokhfpaidcm), + "EIKONJOEDCI_FLCINAALBHA" => Some(Self::Flcinaalbha), + "EIKONJOEDCI_GAGLGFJLDFE" => Some(Self::Gaglgfjldfe), + "EIKONJOEDCI_JLJLIGNIKMK" => Some(Self::Jljlignikmk), + "EIKONJOEDCI_HAJNPBGHMDI" => Some(Self::Hajnpbghmdi), + "EIKONJOEDCI_DPEGJAKFPOE" => Some(Self::Dpegjakfpoe), + "EIKONJOEDCI_DNJDJLEMEJL" => Some(Self::Dnjdjlemejl), + "EIKONJOEDCI_LHHNFDNHIHK" => Some(Self::Lhhnfdnhihk), + "EIKONJOEDCI_IKMAGHHAPAJ" => Some(Self::Ikmaghhapaj), + "EIKONJOEDCI_KOPOADENEBP" => Some(Self::Kopoadenebp), + "EIKONJOEDCI_OCLJLBMMCED" => Some(Self::Ocljlbmmced), + "EIKONJOEDCI_NMFAIAIMAKC" => Some(Self::Nmfaiaimakc), + "EIKONJOEDCI_MOEEKFGKMHB" => Some(Self::Moeekfgkmhb), + "EIKONJOEDCI_CADHEICLCDL" => Some(Self::Cadheiclcdl), + "EIKONJOEDCI_MHIKLKGLEPH" => Some(Self::Mhiklkgleph), + "EIKONJOEDCI_KHLPCABEIKF" => Some(Self::Khlpcabeikf), + "EIKONJOEDCI_LCEDEPLGDGN" => Some(Self::Lcedeplgdgn), + "EIKONJOEDCI_HEEODKGPIIO" => Some(Self::Heeodkgpiio), + "EIKONJOEDCI_GGLPJKPKGCM" => Some(Self::Gglpjkpkgcm), + "EIKONJOEDCI_FEPDBDECFPO" => Some(Self::Fepdbdecfpo), + "EIKONJOEDCI_JCDOEAIAGBL" => Some(Self::Jcdoeaiagbl), + "EIKONJOEDCI_FMKNEMJAIAI" => Some(Self::Fmknemjaiai), + "EIKONJOEDCI_HNPLLLBAOFI" => Some(Self::Hnplllbaofi), + "EIKONJOEDCI_JJOFMPFIOLL" => Some(Self::Jjofmpfioll), + "EIKONJOEDCI_LHPBBDNOONI" => Some(Self::Lhpbbdnooni), + "EIKONJOEDCI_GFBPCIOBBIO" => Some(Self::Gfbpciobbio), + "EIKONJOEDCI_NCLMILJPHOO" => Some(Self::Nclmiljphoo), + "EIKONJOEDCI_NMEJJFDMHKL" => Some(Self::Nmejjfdmhkl), + "EIKONJOEDCI_CECIFDIPJOE" => Some(Self::Cecifdipjoe), + "EIKONJOEDCI_GFMNCBPOIMH" => Some(Self::Gfmncbpoimh), + "EIKONJOEDCI_POLHICGLMPM" => Some(Self::Polhicglmpm), + "EIKONJOEDCI_BNEPCIKIMJN" => Some(Self::Bnepcikimjn), + "EIKONJOEDCI_GPOOJPDEOOD" => Some(Self::Gpoojpdeood), + "EIKONJOEDCI_IHNCKOCJDNP" => Some(Self::Ihnckocjdnp), + "EIKONJOEDCI_AAHAKMIKDCD" => Some(Self::Aahakmikdcd), + "EIKONJOEDCI_ELHJFBPGFPL" => Some(Self::Elhjfbpgfpl), + "EIKONJOEDCI_JPPONIKAKGF" => Some(Self::Jpponikakgf), + "EIKONJOEDCI_JNPIEMAAIDM" => Some(Self::Jnpiemaaidm), + "EIKONJOEDCI_KACPLLPDLDP" => Some(Self::Kacpllpdldp), + "EIKONJOEDCI_FCOFHOPOMGB" => Some(Self::Fcofhopomgb), + "EIKONJOEDCI_FIMCHNFKOAA" => Some(Self::Fimchnfkoaa), + "EIKONJOEDCI_OIHOOODPLLN" => Some(Self::Oihooodplln), + "EIKONJOEDCI_JBGENDPPLJC" => Some(Self::Jbgendppljc), + "EIKONJOEDCI_MJKLKGNCJOH" => Some(Self::Mjklkgncjoh), + "EIKONJOEDCI_PAFOKOCDAOL" => Some(Self::Pafokocdaol), + "EIKONJOEDCI_OHNBCGEBHJF" => Some(Self::Ohnbcgebhjf), + "EIKONJOEDCI_GEIJMNHDDKI" => Some(Self::Geijmnhddki), + "EIKONJOEDCI_PMLGGDJJIEM" => Some(Self::Pmlggdjjiem), + "EIKONJOEDCI_LJCDJKGCFAG" => Some(Self::Ljcdjkgcfag), + "EIKONJOEDCI_KCDOBKDJGKL" => Some(Self::Kcdobkdjgkl), + "EIKONJOEDCI_EPGHEJKGCAF" => Some(Self::Epghejkgcaf), + "EIKONJOEDCI_OGLCJHLJEIO" => Some(Self::Oglcjhljeio), + "EIKONJOEDCI_PJHILFCGFDK" => Some(Self::Pjhilfcgfdk), + "EIKONJOEDCI_DBOEACFHHDG" => Some(Self::Dboeacfhhdg), + "EIKONJOEDCI_GCOGCHPDIMO" => Some(Self::Gcogchpdimo), + "EIKONJOEDCI_JFMLAKCPJMC" => Some(Self::Jfmlakcpjmc), + "EIKONJOEDCI_DGOODMJNHFC" => Some(Self::Dgoodmjnhfc), + "EIKONJOEDCI_LGCBJICFDGL" => Some(Self::Lgcbjicfdgl), + "EIKONJOEDCI_FAMMNOGKKIG" => Some(Self::Fammnogkkig), + "EIKONJOEDCI_BBHPDPGMBIJ" => Some(Self::Bbhpdpgmbij), + "EIKONJOEDCI_GDBHCEEDHGK" => Some(Self::Gdbhceedhgk), + "EIKONJOEDCI_BOPFPLKEEML" => Some(Self::Bopfplkeeml), + "EIKONJOEDCI_DGONNCGPKJM" => Some(Self::Dgonncgpkjm), + "EIKONJOEDCI_IPNKLCAAOGN" => Some(Self::Ipnklcaaogn), + "EIKONJOEDCI_INEOKKINOFN" => Some(Self::Ineokkinofn), + "EIKONJOEDCI_MCJNLFHPDOC" => Some(Self::Mcjnlfhpdoc), + "EIKONJOEDCI_PIOILFFEOEP" => Some(Self::Pioilffeoep), + "EIKONJOEDCI_GJCCNNOALOA" => Some(Self::Gjccnnoaloa), + "EIKONJOEDCI_EIBLIGJEEEB" => Some(Self::Eibligjeeeb), + "EIKONJOEDCI_PPLOILOJBAG" => Some(Self::Pploilojbag), + "EIKONJOEDCI_AGADMHGIOKB" => Some(Self::Agadmhgiokb), + "EIKONJOEDCI_JDHFNAHNPHF" => Some(Self::Jdhfnahnphf), + "EIKONJOEDCI_IJFMAPOLOPL" => Some(Self::Ijfmapolopl), + "EIKONJOEDCI_PLAEEEBFPHP" => Some(Self::Plaeeebfphp), + "EIKONJOEDCI_CJFBNGPIBOC" => Some(Self::Cjfbngpiboc), + "EIKONJOEDCI_EMDHEOGIPFG" => Some(Self::Emdheogipfg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nhgjmkhaoin { + None = 0, + MpBattleInfo = 6, + PartyGameInfo = 15, +} +impl Nhgjmkhaoin { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::None => "NHGJMKHAOIN_None", + Self::MpBattleInfo => "NHGJMKHAOIN_MpBattleInfo", + Self::PartyGameInfo => "NHGJMKHAOIN_PartyGameInfo", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NHGJMKHAOIN_None" => Some(Self::None), + "NHGJMKHAOIN_MpBattleInfo" => Some(Self::MpBattleInfo), + "NHGJMKHAOIN_PartyGameInfo" => Some(Self::PartyGameInfo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum AvatarShowWeaponType { + ShowWeaponLock = 0, + ShowWeaponActive = 1, + ShowWeaponInactive = 2, +} +impl AvatarShowWeaponType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ShowWeaponLock => "AvatarShowWeaponType_SHOW_WEAPON_LOCK", + Self::ShowWeaponActive => "AvatarShowWeaponType_SHOW_WEAPON_ACTIVE", + Self::ShowWeaponInactive => "AvatarShowWeaponType_SHOW_WEAPON_INACTIVE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AvatarShowWeaponType_SHOW_WEAPON_LOCK" => Some(Self::ShowWeaponLock), + "AvatarShowWeaponType_SHOW_WEAPON_ACTIVE" => Some(Self::ShowWeaponActive), + "AvatarShowWeaponType_SHOW_WEAPON_INACTIVE" => Some(Self::ShowWeaponInactive), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ddollgfoblc { + Jcipgeaagno = 0, + Jampjkcmkdl = 1, + Eceigccfpfd = 2, + Afhcpjkgglk = 3, + Kahbnncpckp = 4, +} +impl Ddollgfoblc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jcipgeaagno => "DDOLLGFOBLC_JCIPGEAAGNO", + Self::Jampjkcmkdl => "DDOLLGFOBLC_JAMPJKCMKDL", + Self::Eceigccfpfd => "DDOLLGFOBLC_ECEIGCCFPFD", + Self::Afhcpjkgglk => "DDOLLGFOBLC_AFHCPJKGGLK", + Self::Kahbnncpckp => "DDOLLGFOBLC_KAHBNNCPCKP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DDOLLGFOBLC_JCIPGEAAGNO" => Some(Self::Jcipgeaagno), + "DDOLLGFOBLC_JAMPJKCMKDL" => Some(Self::Jampjkcmkdl), + "DDOLLGFOBLC_ECEIGCCFPFD" => Some(Self::Eceigccfpfd), + "DDOLLGFOBLC_AFHCPJKGGLK" => Some(Self::Afhcpjkgglk), + "DDOLLGFOBLC_KAHBNNCPCKP" => Some(Self::Kahbnncpckp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dgpdcechpak { + Blmpdcpnicc = 0, + Ebljjgmkell = 1, + Hkebnljehdo = 2, +} +impl Dgpdcechpak { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Blmpdcpnicc => "DGPDCECHPAK_BLMPDCPNICC", + Self::Ebljjgmkell => "DGPDCECHPAK_EBLJJGMKELL", + Self::Hkebnljehdo => "DGPDCECHPAK_HKEBNLJEHDO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DGPDCECHPAK_BLMPDCPNICC" => Some(Self::Blmpdcpnicc), + "DGPDCECHPAK_EBLJJGMKELL" => Some(Self::Ebljjgmkell), + "DGPDCECHPAK_HKEBNLJEHDO" => Some(Self::Hkebnljehdo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nkdiflgpnnm { + Jgdkicfnaff = 0, + Banlpcbhjcg = 1, + Cmdkbgfnokn = 2, + Eefckkfdafc = 3, + Obbbciegcaa = 4, + Gcpihkcakbd = 5, +} +impl Nkdiflgpnnm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jgdkicfnaff => "NKDIFLGPNNM_JGDKICFNAFF", + Self::Banlpcbhjcg => "NKDIFLGPNNM_BANLPCBHJCG", + Self::Cmdkbgfnokn => "NKDIFLGPNNM_CMDKBGFNOKN", + Self::Eefckkfdafc => "NKDIFLGPNNM_EEFCKKFDAFC", + Self::Obbbciegcaa => "NKDIFLGPNNM_OBBBCIEGCAA", + Self::Gcpihkcakbd => "NKDIFLGPNNM_GCPIHKCAKBD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NKDIFLGPNNM_JGDKICFNAFF" => Some(Self::Jgdkicfnaff), + "NKDIFLGPNNM_BANLPCBHJCG" => Some(Self::Banlpcbhjcg), + "NKDIFLGPNNM_CMDKBGFNOKN" => Some(Self::Cmdkbgfnokn), + "NKDIFLGPNNM_EEFCKKFDAFC" => Some(Self::Eefckkfdafc), + "NKDIFLGPNNM_OBBBCIEGCAA" => Some(Self::Obbbciegcaa), + "NKDIFLGPNNM_GCPIHKCAKBD" => Some(Self::Gcpihkcakbd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Icddmmjcepd { + Default = 0, + HollowNpc = 1, + HollowEvent = 2, +} +impl Icddmmjcepd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Default => "ICDDMMJCEPD_DEFAULT", + Self::HollowNpc => "ICDDMMJCEPD_HOLLOW_NPC", + Self::HollowEvent => "ICDDMMJCEPD_HOLLOW_EVENT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ICDDMMJCEPD_DEFAULT" => Some(Self::Default), + "ICDDMMJCEPD_HOLLOW_NPC" => Some(Self::HollowNpc), + "ICDDMMJCEPD_HOLLOW_EVENT" => Some(Self::HollowEvent), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Igbokblaojl { + Agopcopcdab = 0, + Dhnpopfnbpa = 1, +} +impl Igbokblaojl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Agopcopcdab => "IGBOKBLAOJL_AGOPCOPCDAB", + Self::Dhnpopfnbpa => "IGBOKBLAOJL_DHNPOPFNBPA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IGBOKBLAOJL_AGOPCOPCDAB" => Some(Self::Agopcopcdab), + "IGBOKBLAOJL_DHNPOPFNBPA" => Some(Self::Dhnpopfnbpa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fmaggncjaip { + WayOfCheckHollowNpcExistNone = 0, + CheckHollowNpcExistByUid = 1, + CheckHollowNpcExistByPos = 2, +} +impl Fmaggncjaip { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::WayOfCheckHollowNpcExistNone => { + "FMAGGNCJAIP_WAY_OF_CHECK_HOLLOW_NPC_EXIST_NONE" + } + Self::CheckHollowNpcExistByUid => "FMAGGNCJAIP_CHECK_HOLLOW_NPC_EXIST_BY_UID", + Self::CheckHollowNpcExistByPos => "FMAGGNCJAIP_CHECK_HOLLOW_NPC_EXIST_BY_POS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FMAGGNCJAIP_WAY_OF_CHECK_HOLLOW_NPC_EXIST_NONE" => { + Some(Self::WayOfCheckHollowNpcExistNone) + } + "FMAGGNCJAIP_CHECK_HOLLOW_NPC_EXIST_BY_UID" => { + Some(Self::CheckHollowNpcExistByUid) + } + "FMAGGNCJAIP_CHECK_HOLLOW_NPC_EXIST_BY_POS" => { + Some(Self::CheckHollowNpcExistByPos) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dlhmmpkaanl { + Mgfplgocoki = 0, +} +impl Dlhmmpkaanl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mgfplgocoki => "DLHMMPKAANL_MGFPLGOCOKI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DLHMMPKAANL_MGFPLGOCOKI" => Some(Self::Mgfplgocoki), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hcdaialhpji { + Ekgdkdpgfhb = 0, + Hpecfohdbjl = 5, +} +impl Hcdaialhpji { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ekgdkdpgfhb => "HCDAIALHPJI_EKGDKDPGFHB", + Self::Hpecfohdbjl => "HCDAIALHPJI_HPECFOHDBJL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HCDAIALHPJI_EKGDKDPGFHB" => Some(Self::Ekgdkdpgfhb), + "HCDAIALHPJI_HPECFOHDBJL" => Some(Self::Hpecfohdbjl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Obpmijdabca { + Ickmbdbhllj = 0, + Jijbmienjoo = 1, + Lkkocinbjij = 2, + Kgkapddceil = 3, + Aebiigdpgbp = 4, + Ecgnhbikipm = 5, + Keedfjpinhc = 6, +} +impl Obpmijdabca { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ickmbdbhllj => "OBPMIJDABCA_ICKMBDBHLLJ", + Self::Jijbmienjoo => "OBPMIJDABCA_JIJBMIENJOO", + Self::Lkkocinbjij => "OBPMIJDABCA_LKKOCINBJIJ", + Self::Kgkapddceil => "OBPMIJDABCA_KGKAPDDCEIL", + Self::Aebiigdpgbp => "OBPMIJDABCA_AEBIIGDPGBP", + Self::Ecgnhbikipm => "OBPMIJDABCA_ECGNHBIKIPM", + Self::Keedfjpinhc => "OBPMIJDABCA_KEEDFJPINHC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OBPMIJDABCA_ICKMBDBHLLJ" => Some(Self::Ickmbdbhllj), + "OBPMIJDABCA_JIJBMIENJOO" => Some(Self::Jijbmienjoo), + "OBPMIJDABCA_LKKOCINBJIJ" => Some(Self::Lkkocinbjij), + "OBPMIJDABCA_KGKAPDDCEIL" => Some(Self::Kgkapddceil), + "OBPMIJDABCA_AEBIIGDPGBP" => Some(Self::Aebiigdpgbp), + "OBPMIJDABCA_ECGNHBIKIPM" => Some(Self::Ecgnhbikipm), + "OBPMIJDABCA_KEEDFJPINHC" => Some(Self::Keedfjpinhc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ipdlipadjnb { + PathBlockTypeNone = 0, + PathBlockUpIn = 1, + PathBlockDownIn = 2, + PathBlockLeftIn = 4, + PathBlockRightIn = 8, + PathBlockUpOut = 16, + PathBlockDownOut = 32, + PathBlockLeftOut = 64, + PathBlockRightOut = 128, +} +impl Ipdlipadjnb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::PathBlockTypeNone => "IPDLIPADJNB_PATH_BLOCK_TYPE_NONE", + Self::PathBlockUpIn => "IPDLIPADJNB_PATH_BLOCK_UP_IN", + Self::PathBlockDownIn => "IPDLIPADJNB_PATH_BLOCK_DOWN_IN", + Self::PathBlockLeftIn => "IPDLIPADJNB_PATH_BLOCK_LEFT_IN", + Self::PathBlockRightIn => "IPDLIPADJNB_PATH_BLOCK_RIGHT_IN", + Self::PathBlockUpOut => "IPDLIPADJNB_PATH_BLOCK_UP_OUT", + Self::PathBlockDownOut => "IPDLIPADJNB_PATH_BLOCK_DOWN_OUT", + Self::PathBlockLeftOut => "IPDLIPADJNB_PATH_BLOCK_LEFT_OUT", + Self::PathBlockRightOut => "IPDLIPADJNB_PATH_BLOCK_RIGHT_OUT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IPDLIPADJNB_PATH_BLOCK_TYPE_NONE" => Some(Self::PathBlockTypeNone), + "IPDLIPADJNB_PATH_BLOCK_UP_IN" => Some(Self::PathBlockUpIn), + "IPDLIPADJNB_PATH_BLOCK_DOWN_IN" => Some(Self::PathBlockDownIn), + "IPDLIPADJNB_PATH_BLOCK_LEFT_IN" => Some(Self::PathBlockLeftIn), + "IPDLIPADJNB_PATH_BLOCK_RIGHT_IN" => Some(Self::PathBlockRightIn), + "IPDLIPADJNB_PATH_BLOCK_UP_OUT" => Some(Self::PathBlockUpOut), + "IPDLIPADJNB_PATH_BLOCK_DOWN_OUT" => Some(Self::PathBlockDownOut), + "IPDLIPADJNB_PATH_BLOCK_LEFT_OUT" => Some(Self::PathBlockLeftOut), + "IPDLIPADJNB_PATH_BLOCK_RIGHT_OUT" => Some(Self::PathBlockRightOut), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lehkajephbp { + TypeOfEntityParamNone = 0, + TypeOfEntityParamInt = 1, + TypeOfEntityParamVec2 = 2, +} +impl Lehkajephbp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::TypeOfEntityParamNone => "LEHKAJEPHBP_TYPE_OF_ENTITY_PARAM_NONE", + Self::TypeOfEntityParamInt => "LEHKAJEPHBP_TYPE_OF_ENTITY_PARAM_INT", + Self::TypeOfEntityParamVec2 => "LEHKAJEPHBP_TYPE_OF_ENTITY_PARAM_VEC2", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LEHKAJEPHBP_TYPE_OF_ENTITY_PARAM_NONE" => Some(Self::TypeOfEntityParamNone), + "LEHKAJEPHBP_TYPE_OF_ENTITY_PARAM_INT" => Some(Self::TypeOfEntityParamInt), + "LEHKAJEPHBP_TYPE_OF_ENTITY_PARAM_VEC2" => Some(Self::TypeOfEntityParamVec2), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kbfbbhhhibl { + Jbplcljfjdb = 0, + Kimicoiibon = 1, + Pnclapkoppd = 2, + Ojeidmingll = 3, +} +impl Kbfbbhhhibl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jbplcljfjdb => "KBFBBHHHIBL_JBPLCLJFJDB", + Self::Kimicoiibon => "KBFBBHHHIBL_KIMICOIIBON", + Self::Pnclapkoppd => "KBFBBHHHIBL_PNCLAPKOPPD", + Self::Ojeidmingll => "KBFBBHHHIBL_OJEIDMINGLL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KBFBBHHHIBL_JBPLCLJFJDB" => Some(Self::Jbplcljfjdb), + "KBFBBHHHIBL_KIMICOIIBON" => Some(Self::Kimicoiibon), + "KBFBBHHHIBL_PNCLAPKOPPD" => Some(Self::Pnclapkoppd), + "KBFBBHHHIBL_OJEIDMINGLL" => Some(Self::Ojeidmingll), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ligambmllkb { + Hdifcpiinli = 0, + Mcoiplgcohg = 1, + Cjkfdigpmla = 2, + Blpiihnjdmk = 3, + Ffhhlgioejj = 4, +} +impl Ligambmllkb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hdifcpiinli => "LIGAMBMLLKB_HDIFCPIINLI", + Self::Mcoiplgcohg => "LIGAMBMLLKB_MCOIPLGCOHG", + Self::Cjkfdigpmla => "LIGAMBMLLKB_CJKFDIGPMLA", + Self::Blpiihnjdmk => "LIGAMBMLLKB_BLPIIHNJDMK", + Self::Ffhhlgioejj => "LIGAMBMLLKB_FFHHLGIOEJJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LIGAMBMLLKB_HDIFCPIINLI" => Some(Self::Hdifcpiinli), + "LIGAMBMLLKB_MCOIPLGCOHG" => Some(Self::Mcoiplgcohg), + "LIGAMBMLLKB_CJKFDIGPMLA" => Some(Self::Cjkfdigpmla), + "LIGAMBMLLKB_BLPIIHNJDMK" => Some(Self::Blpiihnjdmk), + "LIGAMBMLLKB_FFHHLGIOEJJ" => Some(Self::Ffhhlgioejj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hohjefknnfp { + Bakpkidkobh = 0, + Ikjepkkoklp = 1, + Cdimacggpbi = 2, +} +impl Hohjefknnfp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bakpkidkobh => "HOHJEFKNNFP_BAKPKIDKOBH", + Self::Ikjepkkoklp => "HOHJEFKNNFP_IKJEPKKOKLP", + Self::Cdimacggpbi => "HOHJEFKNNFP_CDIMACGGPBI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HOHJEFKNNFP_BAKPKIDKOBH" => Some(Self::Bakpkidkobh), + "HOHJEFKNNFP_IKJEPKKOKLP" => Some(Self::Ikjepkkoklp), + "HOHJEFKNNFP_CDIMACGGPBI" => Some(Self::Cdimacggpbi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kbanedlaolm { + ByPremise = 0, + NotByPremise = 1, +} +impl Kbanedlaolm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ByPremise => "KBANEDLAOLM_BY_PREMISE", + Self::NotByPremise => "KBANEDLAOLM_NOT_BY_PREMISE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KBANEDLAOLM_BY_PREMISE" => Some(Self::ByPremise), + "KBANEDLAOLM_NOT_BY_PREMISE" => Some(Self::NotByPremise), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jjjgehejeag { + Pflpalicpjb = 0, + Kcnjjgknmdf = 1, +} +impl Jjjgehejeag { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pflpalicpjb => "JJJGEHEJEAG_PFLPALICPJB", + Self::Kcnjjgknmdf => "JJJGEHEJEAG_KCNJJGKNMDF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JJJGEHEJEAG_PFLPALICPJB" => Some(Self::Pflpalicpjb), + "JJJGEHEJEAG_KCNJJGKNMDF" => Some(Self::Kcnjjgknmdf), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Oocndpdlina { + PartnerEventStateNone = 0, + PartnerEventStateStart = 1, +} +impl Oocndpdlina { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::PartnerEventStateNone => "OOCNDPDLINA_PARTNER_EVENT_STATE_NONE", + Self::PartnerEventStateStart => "OOCNDPDLINA_PARTNER_EVENT_STATE_START", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OOCNDPDLINA_PARTNER_EVENT_STATE_NONE" => Some(Self::PartnerEventStateNone), + "OOCNDPDLINA_PARTNER_EVENT_STATE_START" => Some(Self::PartnerEventStateStart), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cklkihhippl { + Bbdaghjjkci = 0, + Jgggodfbnmg = 1, + Cfnhiiglkpa = 2, + Khfjipeakam = 3, + Kdipjgihkkc = 4, + Miclheejaao = 5, + Kdbkbcdbked = 6, + Ebkeneflnnn = 7, + Bgdfgbmeaan = 8, + Hioblhlbkko = 9, + Pchhkcojbnh = 10, + Kageachnfif = 11, + Phjalpnpijg = 20, + Igpajnkkdll = 21, + Pnfikhnckpk = 22, + Cfkhbdohjgd = 23, + Gbeeggkcden = 24, + Mggclmgibjf = 25, + Ohdfehojocn = 26, + Jbldnmificb = 64, +} +impl Cklkihhippl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bbdaghjjkci => "CKLKIHHIPPL_BBDAGHJJKCI", + Self::Jgggodfbnmg => "CKLKIHHIPPL_JGGGODFBNMG", + Self::Cfnhiiglkpa => "CKLKIHHIPPL_CFNHIIGLKPA", + Self::Khfjipeakam => "CKLKIHHIPPL_KHFJIPEAKAM", + Self::Kdipjgihkkc => "CKLKIHHIPPL_KDIPJGIHKKC", + Self::Miclheejaao => "CKLKIHHIPPL_MICLHEEJAAO", + Self::Kdbkbcdbked => "CKLKIHHIPPL_KDBKBCDBKED", + Self::Ebkeneflnnn => "CKLKIHHIPPL_EBKENEFLNNN", + Self::Bgdfgbmeaan => "CKLKIHHIPPL_BGDFGBMEAAN", + Self::Hioblhlbkko => "CKLKIHHIPPL_HIOBLHLBKKO", + Self::Pchhkcojbnh => "CKLKIHHIPPL_PCHHKCOJBNH", + Self::Kageachnfif => "CKLKIHHIPPL_KAGEACHNFIF", + Self::Phjalpnpijg => "CKLKIHHIPPL_PHJALPNPIJG", + Self::Igpajnkkdll => "CKLKIHHIPPL_IGPAJNKKDLL", + Self::Pnfikhnckpk => "CKLKIHHIPPL_PNFIKHNCKPK", + Self::Cfkhbdohjgd => "CKLKIHHIPPL_CFKHBDOHJGD", + Self::Gbeeggkcden => "CKLKIHHIPPL_GBEEGGKCDEN", + Self::Mggclmgibjf => "CKLKIHHIPPL_MGGCLMGIBJF", + Self::Ohdfehojocn => "CKLKIHHIPPL_OHDFEHOJOCN", + Self::Jbldnmificb => "CKLKIHHIPPL_JBLDNMIFICB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CKLKIHHIPPL_BBDAGHJJKCI" => Some(Self::Bbdaghjjkci), + "CKLKIHHIPPL_JGGGODFBNMG" => Some(Self::Jgggodfbnmg), + "CKLKIHHIPPL_CFNHIIGLKPA" => Some(Self::Cfnhiiglkpa), + "CKLKIHHIPPL_KHFJIPEAKAM" => Some(Self::Khfjipeakam), + "CKLKIHHIPPL_KDIPJGIHKKC" => Some(Self::Kdipjgihkkc), + "CKLKIHHIPPL_MICLHEEJAAO" => Some(Self::Miclheejaao), + "CKLKIHHIPPL_KDBKBCDBKED" => Some(Self::Kdbkbcdbked), + "CKLKIHHIPPL_EBKENEFLNNN" => Some(Self::Ebkeneflnnn), + "CKLKIHHIPPL_BGDFGBMEAAN" => Some(Self::Bgdfgbmeaan), + "CKLKIHHIPPL_HIOBLHLBKKO" => Some(Self::Hioblhlbkko), + "CKLKIHHIPPL_PCHHKCOJBNH" => Some(Self::Pchhkcojbnh), + "CKLKIHHIPPL_KAGEACHNFIF" => Some(Self::Kageachnfif), + "CKLKIHHIPPL_PHJALPNPIJG" => Some(Self::Phjalpnpijg), + "CKLKIHHIPPL_IGPAJNKKDLL" => Some(Self::Igpajnkkdll), + "CKLKIHHIPPL_PNFIKHNCKPK" => Some(Self::Pnfikhnckpk), + "CKLKIHHIPPL_CFKHBDOHJGD" => Some(Self::Cfkhbdohjgd), + "CKLKIHHIPPL_GBEEGGKCDEN" => Some(Self::Gbeeggkcden), + "CKLKIHHIPPL_MGGCLMGIBJF" => Some(Self::Mggclmgibjf), + "CKLKIHHIPPL_OHDFEHOJOCN" => Some(Self::Ohdfehojocn), + "CKLKIHHIPPL_JBLDNMIFICB" => Some(Self::Jbldnmificb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dopalhjpcip { + Ncigjabejld = 0, + Ocibpifhado = 1, +} +impl Dopalhjpcip { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ncigjabejld => "DOPALHJPCIP_NCIGJABEJLD", + Self::Ocibpifhado => "DOPALHJPCIP_OCIBPIFHADO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DOPALHJPCIP_NCIGJABEJLD" => Some(Self::Ncigjabejld), + "DOPALHJPCIP_OCIBPIFHADO" => Some(Self::Ocibpifhado), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ldiipefkoda { + DropTypeVariableList = 0, + DropTypeDirectlyAdd = 1, +} +impl Ldiipefkoda { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::DropTypeVariableList => "LDIIPEFKODA_DROP_TYPE_VARIABLE_LIST", + Self::DropTypeDirectlyAdd => "LDIIPEFKODA_DROP_TYPE_DIRECTLY_ADD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LDIIPEFKODA_DROP_TYPE_VARIABLE_LIST" => Some(Self::DropTypeVariableList), + "LDIIPEFKODA_DROP_TYPE_DIRECTLY_ADD" => Some(Self::DropTypeDirectlyAdd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pmpclckbgod { + Pdblmhipmkk = 0, + Anikklglnkl = 1, + Ekfiggolebj = 2, + Ejcapmnbion = 3, + Mcblofbmcmm = 4, + Fbaejiohpfg = 5, +} +impl Pmpclckbgod { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pdblmhipmkk => "PMPCLCKBGOD_PDBLMHIPMKK", + Self::Anikklglnkl => "PMPCLCKBGOD_ANIKKLGLNKL", + Self::Ekfiggolebj => "PMPCLCKBGOD_EKFIGGOLEBJ", + Self::Ejcapmnbion => "PMPCLCKBGOD_EJCAPMNBION", + Self::Mcblofbmcmm => "PMPCLCKBGOD_MCBLOFBMCMM", + Self::Fbaejiohpfg => "PMPCLCKBGOD_FBAEJIOHPFG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PMPCLCKBGOD_PDBLMHIPMKK" => Some(Self::Pdblmhipmkk), + "PMPCLCKBGOD_ANIKKLGLNKL" => Some(Self::Anikklglnkl), + "PMPCLCKBGOD_EKFIGGOLEBJ" => Some(Self::Ekfiggolebj), + "PMPCLCKBGOD_EJCAPMNBION" => Some(Self::Ejcapmnbion), + "PMPCLCKBGOD_MCBLOFBMCMM" => Some(Self::Mcblofbmcmm), + "PMPCLCKBGOD_FBAEJIOHPFG" => Some(Self::Fbaejiohpfg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bbpkejalhpa { + Kdhbjfopaeg = 0, + Haigpfeaanm = 1, +} +impl Bbpkejalhpa { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kdhbjfopaeg => "BBPKEJALHPA_KDHBJFOPAEG", + Self::Haigpfeaanm => "BBPKEJALHPA_HAIGPFEAANM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BBPKEJALHPA_KDHBJFOPAEG" => Some(Self::Kdhbjfopaeg), + "BBPKEJALHPA_HAIGPFEAANM" => Some(Self::Haigpfeaanm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ifeppejhpia { + Padfmgdgmhj = 0, + Jkaddkplohi = 1, + Hmekaecncje = 2, + Ohdedcoacmo = 3, + Jdpdoephgie = 4, + Efhmpagdidi = 5, +} +impl Ifeppejhpia { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Padfmgdgmhj => "IFEPPEJHPIA_PADFMGDGMHJ", + Self::Jkaddkplohi => "IFEPPEJHPIA_JKADDKPLOHI", + Self::Hmekaecncje => "IFEPPEJHPIA_HMEKAECNCJE", + Self::Ohdedcoacmo => "IFEPPEJHPIA_OHDEDCOACMO", + Self::Jdpdoephgie => "IFEPPEJHPIA_JDPDOEPHGIE", + Self::Efhmpagdidi => "IFEPPEJHPIA_EFHMPAGDIDI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IFEPPEJHPIA_PADFMGDGMHJ" => Some(Self::Padfmgdgmhj), + "IFEPPEJHPIA_JKADDKPLOHI" => Some(Self::Jkaddkplohi), + "IFEPPEJHPIA_HMEKAECNCJE" => Some(Self::Hmekaecncje), + "IFEPPEJHPIA_OHDEDCOACMO" => Some(Self::Ohdedcoacmo), + "IFEPPEJHPIA_JDPDOEPHGIE" => Some(Self::Jdpdoephgie), + "IFEPPEJHPIA_EFHMPAGDIDI" => Some(Self::Efhmpagdidi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mfkjmibnini { + Fmhlffjejom = 0, + Hipplbdddlc = 1, + Kanfofohcgf = 2, + Mgojepdkkan = 3, + Lbdoghnnfmb = 4, +} +impl Mfkjmibnini { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fmhlffjejom => "MFKJMIBNINI_FMHLFFJEJOM", + Self::Hipplbdddlc => "MFKJMIBNINI_HIPPLBDDDLC", + Self::Kanfofohcgf => "MFKJMIBNINI_KANFOFOHCGF", + Self::Mgojepdkkan => "MFKJMIBNINI_MGOJEPDKKAN", + Self::Lbdoghnnfmb => "MFKJMIBNINI_LBDOGHNNFMB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MFKJMIBNINI_FMHLFFJEJOM" => Some(Self::Fmhlffjejom), + "MFKJMIBNINI_HIPPLBDDDLC" => Some(Self::Hipplbdddlc), + "MFKJMIBNINI_KANFOFOHCGF" => Some(Self::Kanfofohcgf), + "MFKJMIBNINI_MGOJEPDKKAN" => Some(Self::Mgojepdkkan), + "MFKJMIBNINI_LBDOGHNNFMB" => Some(Self::Lbdoghnnfmb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Keaedpaemkn { + Dhicpbajioc = 0, + Fhpieiiipoa = 1, + Kpaaingepkm = 2, + Ecbdamaledp = 3, + Gaccgoapkmg = 4, +} +impl Keaedpaemkn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dhicpbajioc => "KEAEDPAEMKN_DHICPBAJIOC", + Self::Fhpieiiipoa => "KEAEDPAEMKN_FHPIEIIIPOA", + Self::Kpaaingepkm => "KEAEDPAEMKN_KPAAINGEPKM", + Self::Ecbdamaledp => "KEAEDPAEMKN_ECBDAMALEDP", + Self::Gaccgoapkmg => "KEAEDPAEMKN_GACCGOAPKMG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KEAEDPAEMKN_DHICPBAJIOC" => Some(Self::Dhicpbajioc), + "KEAEDPAEMKN_FHPIEIIIPOA" => Some(Self::Fhpieiiipoa), + "KEAEDPAEMKN_KPAAINGEPKM" => Some(Self::Kpaaingepkm), + "KEAEDPAEMKN_ECBDAMALEDP" => Some(Self::Ecbdamaledp), + "KEAEDPAEMKN_GACCGOAPKMG" => Some(Self::Gaccgoapkmg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Blabihelibg { + Peogpnmenfi = 0, +} +impl Blabihelibg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Peogpnmenfi => "BLABIHELIBG_PEOGPNMENFI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BLABIHELIBG_PEOGPNMENFI" => Some(Self::Peogpnmenfi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum HollowEntityType { + HollowEntityTypeNone = 0, + HollowEntityTypePlayer = 1, + HollowEntityTypeNpc = 2, + HollowEntityTypeGrid = 3, + HollowEntityTypeEvent = 4, + HollowEntityTypeLight = 5, + HollowEntityTypePin = 6, + HollowEntityTypeSection = 7, + HollowEntityTypeGlobal = 9, + HollowEntityTypeBarrier = 10, + HollowEntityTypeSectionEvent = 11, + HollowEntityTypeTerrain = 12, +} +impl HollowEntityType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowEntityTypeNone => "HollowEntityType_HOLLOW_ENTITY_TYPE_NONE", + Self::HollowEntityTypePlayer => "HollowEntityType_HOLLOW_ENTITY_TYPE_PLAYER", + Self::HollowEntityTypeNpc => "HollowEntityType_HOLLOW_ENTITY_TYPE_NPC", + Self::HollowEntityTypeGrid => "HollowEntityType_HOLLOW_ENTITY_TYPE_GRID", + Self::HollowEntityTypeEvent => "HollowEntityType_HOLLOW_ENTITY_TYPE_EVENT", + Self::HollowEntityTypeLight => "HollowEntityType_HOLLOW_ENTITY_TYPE_LIGHT", + Self::HollowEntityTypePin => "HollowEntityType_HOLLOW_ENTITY_TYPE_PIN", + Self::HollowEntityTypeSection => { + "HollowEntityType_HOLLOW_ENTITY_TYPE_SECTION" + } + Self::HollowEntityTypeGlobal => "HollowEntityType_HOLLOW_ENTITY_TYPE_GLOBAL", + Self::HollowEntityTypeBarrier => { + "HollowEntityType_HOLLOW_ENTITY_TYPE_BARRIER" + } + Self::HollowEntityTypeSectionEvent => { + "HollowEntityType_HOLLOW_ENTITY_TYPE_SECTION_EVENT" + } + Self::HollowEntityTypeTerrain => { + "HollowEntityType_HOLLOW_ENTITY_TYPE_TERRAIN" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HollowEntityType_HOLLOW_ENTITY_TYPE_NONE" => { + Some(Self::HollowEntityTypeNone) + } + "HollowEntityType_HOLLOW_ENTITY_TYPE_PLAYER" => { + Some(Self::HollowEntityTypePlayer) + } + "HollowEntityType_HOLLOW_ENTITY_TYPE_NPC" => Some(Self::HollowEntityTypeNpc), + "HollowEntityType_HOLLOW_ENTITY_TYPE_GRID" => { + Some(Self::HollowEntityTypeGrid) + } + "HollowEntityType_HOLLOW_ENTITY_TYPE_EVENT" => { + Some(Self::HollowEntityTypeEvent) + } + "HollowEntityType_HOLLOW_ENTITY_TYPE_LIGHT" => { + Some(Self::HollowEntityTypeLight) + } + "HollowEntityType_HOLLOW_ENTITY_TYPE_PIN" => Some(Self::HollowEntityTypePin), + "HollowEntityType_HOLLOW_ENTITY_TYPE_SECTION" => { + Some(Self::HollowEntityTypeSection) + } + "HollowEntityType_HOLLOW_ENTITY_TYPE_GLOBAL" => { + Some(Self::HollowEntityTypeGlobal) + } + "HollowEntityType_HOLLOW_ENTITY_TYPE_BARRIER" => { + Some(Self::HollowEntityTypeBarrier) + } + "HollowEntityType_HOLLOW_ENTITY_TYPE_SECTION_EVENT" => { + Some(Self::HollowEntityTypeSectionEvent) + } + "HollowEntityType_HOLLOW_ENTITY_TYPE_TERRAIN" => { + Some(Self::HollowEntityTypeTerrain) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fdneoihdjod { + Gimjgjelndj = 0, +} +impl Fdneoihdjod { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gimjgjelndj => "FDNEOIHDJOD_GIMJGJELNDJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FDNEOIHDJOD_GIMJGJELNDJ" => Some(Self::Gimjgjelndj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pfmepddlpjj { + Pobcmjabddd = 0, + Kdedngghaji = 1, + Gjllpkbommh = 2, + Cfnmhdoiide = 3, + Inaifopekpo = 4, +} +impl Pfmepddlpjj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pobcmjabddd => "PFMEPDDLPJJ_POBCMJABDDD", + Self::Kdedngghaji => "PFMEPDDLPJJ_KDEDNGGHAJI", + Self::Gjllpkbommh => "PFMEPDDLPJJ_GJLLPKBOMMH", + Self::Cfnmhdoiide => "PFMEPDDLPJJ_CFNMHDOIIDE", + Self::Inaifopekpo => "PFMEPDDLPJJ_INAIFOPEKPO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PFMEPDDLPJJ_POBCMJABDDD" => Some(Self::Pobcmjabddd), + "PFMEPDDLPJJ_KDEDNGGHAJI" => Some(Self::Kdedngghaji), + "PFMEPDDLPJJ_GJLLPKBOMMH" => Some(Self::Gjllpkbommh), + "PFMEPDDLPJJ_CFNMHDOIIDE" => Some(Self::Cfnmhdoiide), + "PFMEPDDLPJJ_INAIFOPEKPO" => Some(Self::Inaifopekpo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Igahmlfaocn { + Mpanjegljfl = 0, + Oancbledeoj = 1, + Cbebomckjah = 2, +} +impl Igahmlfaocn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mpanjegljfl => "IGAHMLFAOCN_MPANJEGLJFL", + Self::Oancbledeoj => "IGAHMLFAOCN_OANCBLEDEOJ", + Self::Cbebomckjah => "IGAHMLFAOCN_CBEBOMCKJAH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IGAHMLFAOCN_MPANJEGLJFL" => Some(Self::Mpanjegljfl), + "IGAHMLFAOCN_OANCBLEDEOJ" => Some(Self::Oancbledeoj), + "IGAHMLFAOCN_CBEBOMCKJAH" => Some(Self::Cbebomckjah), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ahfcgbljdin { + Pabjaechdgc = 0, +} +impl Ahfcgbljdin { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pabjaechdgc => "AHFCGBLJDIN_PABJAECHDGC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AHFCGBLJDIN_PABJAECHDGC" => Some(Self::Pabjaechdgc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Egekhcbjeen { + HollowMiniGameTypeNone = 0, + HollowMiniGameTypeHacker = 1, +} +impl Egekhcbjeen { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowMiniGameTypeNone => "EGEKHCBJEEN_HOLLOW_MINI_GAME_TYPE_NONE", + Self::HollowMiniGameTypeHacker => "EGEKHCBJEEN_HOLLOW_MINI_GAME_TYPE_HACKER", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EGEKHCBJEEN_HOLLOW_MINI_GAME_TYPE_NONE" => { + Some(Self::HollowMiniGameTypeNone) + } + "EGEKHCBJEEN_HOLLOW_MINI_GAME_TYPE_HACKER" => { + Some(Self::HollowMiniGameTypeHacker) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lhdefhkgjip { + ModifyStackOrderUp = 0, + ModifyStackOrderDown = 1, + ModifyStackOrderTop = 2, + ModifyStackOrderBottom = 3, + ModifyStackOrderList = 4, +} +impl Lhdefhkgjip { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ModifyStackOrderUp => "LHDEFHKGJIP_MODIFY_STACK_ORDER_UP", + Self::ModifyStackOrderDown => "LHDEFHKGJIP_MODIFY_STACK_ORDER_DOWN", + Self::ModifyStackOrderTop => "LHDEFHKGJIP_MODIFY_STACK_ORDER_TOP", + Self::ModifyStackOrderBottom => "LHDEFHKGJIP_MODIFY_STACK_ORDER_BOTTOM", + Self::ModifyStackOrderList => "LHDEFHKGJIP_MODIFY_STACK_ORDER_LIST", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LHDEFHKGJIP_MODIFY_STACK_ORDER_UP" => Some(Self::ModifyStackOrderUp), + "LHDEFHKGJIP_MODIFY_STACK_ORDER_DOWN" => Some(Self::ModifyStackOrderDown), + "LHDEFHKGJIP_MODIFY_STACK_ORDER_TOP" => Some(Self::ModifyStackOrderTop), + "LHDEFHKGJIP_MODIFY_STACK_ORDER_BOTTOM" => Some(Self::ModifyStackOrderBottom), + "LHDEFHKGJIP_MODIFY_STACK_ORDER_LIST" => Some(Self::ModifyStackOrderList), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jjcggcmgpjh { + Kepibpeaimk = 0, + Akakiljanif = 1, + Njmbpenkglo = 2, + Mgomgdgibmc = 3, + Mmakhocpbej = 4, + Dgkbbbkpjah = 5, + Pligigbgcpe = 6, + Nnkfkjdkleo = 7, +} +impl Jjcggcmgpjh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kepibpeaimk => "JJCGGCMGPJH_KEPIBPEAIMK", + Self::Akakiljanif => "JJCGGCMGPJH_AKAKILJANIF", + Self::Njmbpenkglo => "JJCGGCMGPJH_NJMBPENKGLO", + Self::Mgomgdgibmc => "JJCGGCMGPJH_MGOMGDGIBMC", + Self::Mmakhocpbej => "JJCGGCMGPJH_MMAKHOCPBEJ", + Self::Dgkbbbkpjah => "JJCGGCMGPJH_DGKBBBKPJAH", + Self::Pligigbgcpe => "JJCGGCMGPJH_PLIGIGBGCPE", + Self::Nnkfkjdkleo => "JJCGGCMGPJH_NNKFKJDKLEO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JJCGGCMGPJH_KEPIBPEAIMK" => Some(Self::Kepibpeaimk), + "JJCGGCMGPJH_AKAKILJANIF" => Some(Self::Akakiljanif), + "JJCGGCMGPJH_NJMBPENKGLO" => Some(Self::Njmbpenkglo), + "JJCGGCMGPJH_MGOMGDGIBMC" => Some(Self::Mgomgdgibmc), + "JJCGGCMGPJH_MMAKHOCPBEJ" => Some(Self::Mmakhocpbej), + "JJCGGCMGPJH_DGKBBBKPJAH" => Some(Self::Dgkbbbkpjah), + "JJCGGCMGPJH_PLIGIGBGCPE" => Some(Self::Pligigbgcpe), + "JJCGGCMGPJH_NNKFKJDKLEO" => Some(Self::Nnkfkjdkleo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Canpnepmhib { + Ggebfmchckf = 0, + Bgcogkgggee = 1, +} +impl Canpnepmhib { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ggebfmchckf => "CANPNEPMHIB_GGEBFMCHCKF", + Self::Bgcogkgggee => "CANPNEPMHIB_BGCOGKGGGEE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CANPNEPMHIB_GGEBFMCHCKF" => Some(Self::Ggebfmchckf), + "CANPNEPMHIB_BGCOGKGGGEE" => Some(Self::Bgcogkgggee), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pampmpkdfno { + Ikfemfhdocj = 0, +} +impl Pampmpkdfno { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ikfemfhdocj => "PAMPMPKDFNO_IKFEMFHDOCJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PAMPMPKDFNO_IKFEMFHDOCJ" => Some(Self::Ikfemfhdocj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hdpnglcnofm { + Bioocpggkdo = 0, +} +impl Hdpnglcnofm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bioocpggkdo => "HDPNGLCNOFM_BIOOCPGGKDO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HDPNGLCNOFM_BIOOCPGGKDO" => Some(Self::Bioocpggkdo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ldokmmjmcln { + PrepareDataTypeNone = 0, + PrepareDataTypeMessage = 1, + PrepareDataTypeInterknot = 2, +} +impl Ldokmmjmcln { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::PrepareDataTypeNone => "LDOKMMJMCLN_PREPARE_DATA_TYPE_NONE", + Self::PrepareDataTypeMessage => "LDOKMMJMCLN_PREPARE_DATA_TYPE_MESSAGE", + Self::PrepareDataTypeInterknot => "LDOKMMJMCLN_PREPARE_DATA_TYPE_INTERKNOT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LDOKMMJMCLN_PREPARE_DATA_TYPE_NONE" => Some(Self::PrepareDataTypeNone), + "LDOKMMJMCLN_PREPARE_DATA_TYPE_MESSAGE" => Some(Self::PrepareDataTypeMessage), + "LDOKMMJMCLN_PREPARE_DATA_TYPE_INTERKNOT" => { + Some(Self::PrepareDataTypeInterknot) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mcgcifkgpba { + Phaimjpfkdp = 0, + Ncnblfdlffc = 1, +} +impl Mcgcifkgpba { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Phaimjpfkdp => "MCGCIFKGPBA_PHAIMJPFKDP", + Self::Ncnblfdlffc => "MCGCIFKGPBA_NCNBLFDLFFC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MCGCIFKGPBA_PHAIMJPFKDP" => Some(Self::Phaimjpfkdp), + "MCGCIFKGPBA_NCNBLFDLFFC" => Some(Self::Ncnblfdlffc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ahlkghibicb { + Lgjkiclmlbm = 0, + Epmaihgnmag = 1, + Cgcpnhednpa = 2, + Blnjekghgmi = 3, + Ikckhecbihg = 4, + Hnolicohmki = 5, +} +impl Ahlkghibicb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lgjkiclmlbm => "AHLKGHIBICB_LGJKICLMLBM", + Self::Epmaihgnmag => "AHLKGHIBICB_EPMAIHGNMAG", + Self::Cgcpnhednpa => "AHLKGHIBICB_CGCPNHEDNPA", + Self::Blnjekghgmi => "AHLKGHIBICB_BLNJEKGHGMI", + Self::Ikckhecbihg => "AHLKGHIBICB_IKCKHECBIHG", + Self::Hnolicohmki => "AHLKGHIBICB_HNOLICOHMKI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AHLKGHIBICB_LGJKICLMLBM" => Some(Self::Lgjkiclmlbm), + "AHLKGHIBICB_EPMAIHGNMAG" => Some(Self::Epmaihgnmag), + "AHLKGHIBICB_CGCPNHEDNPA" => Some(Self::Cgcpnhednpa), + "AHLKGHIBICB_BLNJEKGHGMI" => Some(Self::Blnjekghgmi), + "AHLKGHIBICB_IKCKHECBIHG" => Some(Self::Ikckhecbihg), + "AHLKGHIBICB_HNOLICOHMKI" => Some(Self::Hnolicohmki), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lplccnacikg { + Bidikeidlje = 0, + Jeipmjmgeeb = 1, +} +impl Lplccnacikg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bidikeidlje => "LPLCCNACIKG_BIDIKEIDLJE", + Self::Jeipmjmgeeb => "LPLCCNACIKG_JEIPMJMGEEB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LPLCCNACIKG_BIDIKEIDLJE" => Some(Self::Bidikeidlje), + "LPLCCNACIKG_JEIPMJMGEEB" => Some(Self::Jeipmjmgeeb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ebmeohgifld { + Okgpcimehge = 0, + Nmgbhiifgim = 1, + Lpblbfceglh = 2, +} +impl Ebmeohgifld { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Okgpcimehge => "EBMEOHGIFLD_OKGPCIMEHGE", + Self::Nmgbhiifgim => "EBMEOHGIFLD_NMGBHIIFGIM", + Self::Lpblbfceglh => "EBMEOHGIFLD_LPBLBFCEGLH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EBMEOHGIFLD_OKGPCIMEHGE" => Some(Self::Okgpcimehge), + "EBMEOHGIFLD_NMGBHIIFGIM" => Some(Self::Nmgbhiifgim), + "EBMEOHGIFLD_LPBLBFCEGLH" => Some(Self::Lpblbfceglh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Opbmhmmibdn { + HenshinTypeNone = 0, + DefaultPlayer = 1, + Pacmanv1 = 2, + Pacmanv2 = 3, + Bomber = 4, + BomberTick0 = 5, + BomberTick1 = 6, + BomberTick2 = 7, + BomberTick3 = 8, + BomberTick4 = 9, + BomberTick5 = 10, + Tugger = 11, + NightMode = 12, + RinaBangboo1 = 13, + RinaBangboo2 = 14, + GoodsLoader = 15, + QinYi = 16, + AvatarCorin = 17, + AvatarNekomiya = 18, + SpeedupMove = 19, + SpeedupRush = 20, + ActivityHacker = 21, +} +impl Opbmhmmibdn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HenshinTypeNone => "OPBMHMMIBDN_HENSHIN_TYPE_NONE", + Self::DefaultPlayer => "OPBMHMMIBDN_DEFAULT_PLAYER", + Self::Pacmanv1 => "OPBMHMMIBDN_PACMANV1", + Self::Pacmanv2 => "OPBMHMMIBDN_PACMANV2", + Self::Bomber => "OPBMHMMIBDN_BOMBER", + Self::BomberTick0 => "OPBMHMMIBDN_Bomber_Tick0", + Self::BomberTick1 => "OPBMHMMIBDN_Bomber_Tick1", + Self::BomberTick2 => "OPBMHMMIBDN_Bomber_Tick2", + Self::BomberTick3 => "OPBMHMMIBDN_Bomber_Tick3", + Self::BomberTick4 => "OPBMHMMIBDN_Bomber_Tick4", + Self::BomberTick5 => "OPBMHMMIBDN_Bomber_Tick5", + Self::Tugger => "OPBMHMMIBDN_Tugger", + Self::NightMode => "OPBMHMMIBDN_NIGHT_MODE", + Self::RinaBangboo1 => "OPBMHMMIBDN_Rina_Bangboo1", + Self::RinaBangboo2 => "OPBMHMMIBDN_Rina_Bangboo2", + Self::GoodsLoader => "OPBMHMMIBDN_GoodsLoader", + Self::QinYi => "OPBMHMMIBDN_QinYi", + Self::AvatarCorin => "OPBMHMMIBDN_Avatar_Corin", + Self::AvatarNekomiya => "OPBMHMMIBDN_Avatar_Nekomiya", + Self::SpeedupMove => "OPBMHMMIBDN_Speedup_Move", + Self::SpeedupRush => "OPBMHMMIBDN_Speedup_Rush", + Self::ActivityHacker => "OPBMHMMIBDN_Activity_Hacker", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OPBMHMMIBDN_HENSHIN_TYPE_NONE" => Some(Self::HenshinTypeNone), + "OPBMHMMIBDN_DEFAULT_PLAYER" => Some(Self::DefaultPlayer), + "OPBMHMMIBDN_PACMANV1" => Some(Self::Pacmanv1), + "OPBMHMMIBDN_PACMANV2" => Some(Self::Pacmanv2), + "OPBMHMMIBDN_BOMBER" => Some(Self::Bomber), + "OPBMHMMIBDN_Bomber_Tick0" => Some(Self::BomberTick0), + "OPBMHMMIBDN_Bomber_Tick1" => Some(Self::BomberTick1), + "OPBMHMMIBDN_Bomber_Tick2" => Some(Self::BomberTick2), + "OPBMHMMIBDN_Bomber_Tick3" => Some(Self::BomberTick3), + "OPBMHMMIBDN_Bomber_Tick4" => Some(Self::BomberTick4), + "OPBMHMMIBDN_Bomber_Tick5" => Some(Self::BomberTick5), + "OPBMHMMIBDN_Tugger" => Some(Self::Tugger), + "OPBMHMMIBDN_NIGHT_MODE" => Some(Self::NightMode), + "OPBMHMMIBDN_Rina_Bangboo1" => Some(Self::RinaBangboo1), + "OPBMHMMIBDN_Rina_Bangboo2" => Some(Self::RinaBangboo2), + "OPBMHMMIBDN_GoodsLoader" => Some(Self::GoodsLoader), + "OPBMHMMIBDN_QinYi" => Some(Self::QinYi), + "OPBMHMMIBDN_Avatar_Corin" => Some(Self::AvatarCorin), + "OPBMHMMIBDN_Avatar_Nekomiya" => Some(Self::AvatarNekomiya), + "OPBMHMMIBDN_Speedup_Move" => Some(Self::SpeedupMove), + "OPBMHMMIBDN_Speedup_Rush" => Some(Self::SpeedupRush), + "OPBMHMMIBDN_Activity_Hacker" => Some(Self::ActivityHacker), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ceekplahlda { + Fdabnkpiman = 0, + Hdcpngjaeic = 1, + Ccopljcgpil = 2, + Ljmeiibbgic = 3, + Oonglghimam = 4, + Jhpefjbnlnc = 5, +} +impl Ceekplahlda { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fdabnkpiman => "CEEKPLAHLDA_FDABNKPIMAN", + Self::Hdcpngjaeic => "CEEKPLAHLDA_HDCPNGJAEIC", + Self::Ccopljcgpil => "CEEKPLAHLDA_CCOPLJCGPIL", + Self::Ljmeiibbgic => "CEEKPLAHLDA_LJMEIIBBGIC", + Self::Oonglghimam => "CEEKPLAHLDA_OONGLGHIMAM", + Self::Jhpefjbnlnc => "CEEKPLAHLDA_JHPEFJBNLNC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CEEKPLAHLDA_FDABNKPIMAN" => Some(Self::Fdabnkpiman), + "CEEKPLAHLDA_HDCPNGJAEIC" => Some(Self::Hdcpngjaeic), + "CEEKPLAHLDA_CCOPLJCGPIL" => Some(Self::Ccopljcgpil), + "CEEKPLAHLDA_LJMEIIBBGIC" => Some(Self::Ljmeiibbgic), + "CEEKPLAHLDA_OONGLGHIMAM" => Some(Self::Oonglghimam), + "CEEKPLAHLDA_JHPEFJBNLNC" => Some(Self::Jhpefjbnlnc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Egfgglpajoo { + HollowElevatorDirectionNone = 0, + HollowElevatorDirectionUp = 1, + HollowElevatorDirectionDown = 2, +} +impl Egfgglpajoo { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowElevatorDirectionNone => { + "EGFGGLPAJOO_HOLLOW_ELEVATOR_DIRECTION_NONE" + } + Self::HollowElevatorDirectionUp => "EGFGGLPAJOO_HOLLOW_ELEVATOR_DIRECTION_UP", + Self::HollowElevatorDirectionDown => { + "EGFGGLPAJOO_HOLLOW_ELEVATOR_DIRECTION_DOWN" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EGFGGLPAJOO_HOLLOW_ELEVATOR_DIRECTION_NONE" => { + Some(Self::HollowElevatorDirectionNone) + } + "EGFGGLPAJOO_HOLLOW_ELEVATOR_DIRECTION_UP" => { + Some(Self::HollowElevatorDirectionUp) + } + "EGFGGLPAJOO_HOLLOW_ELEVATOR_DIRECTION_DOWN" => { + Some(Self::HollowElevatorDirectionDown) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bmmclbbnhnl { + Cdeofpfjhlk = 0, + Mhpapceamkb = 1, + Dlbbmmckbgf = 2, +} +impl Bmmclbbnhnl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cdeofpfjhlk => "BMMCLBBNHNL_CDEOFPFJHLK", + Self::Mhpapceamkb => "BMMCLBBNHNL_MHPAPCEAMKB", + Self::Dlbbmmckbgf => "BMMCLBBNHNL_DLBBMMCKBGF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BMMCLBBNHNL_CDEOFPFJHLK" => Some(Self::Cdeofpfjhlk), + "BMMCLBBNHNL_MHPAPCEAMKB" => Some(Self::Mhpapceamkb), + "BMMCLBBNHNL_DLBBMMCKBGF" => Some(Self::Dlbbmmckbgf), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ffheeeijpod { + VhsFlowBuffSourceNone = 0, + VhsFlowBuffSourceQuest = 1, +} +impl Ffheeeijpod { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::VhsFlowBuffSourceNone => "FFHEEEIJPOD_VHS_FLOW_BUFF_SOURCE_NONE", + Self::VhsFlowBuffSourceQuest => "FFHEEEIJPOD_VHS_FLOW_BUFF_SOURCE_QUEST", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FFHEEEIJPOD_VHS_FLOW_BUFF_SOURCE_NONE" => Some(Self::VhsFlowBuffSourceNone), + "FFHEEEIJPOD_VHS_FLOW_BUFF_SOURCE_QUEST" => { + Some(Self::VhsFlowBuffSourceQuest) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cfnalckaabl { + Akdeilmnjnk = 0, + Oilfmppjfli = 1, + Anfbjhfnold = 2, +} +impl Cfnalckaabl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Akdeilmnjnk => "CFNALCKAABL_AKDEILMNJNK", + Self::Oilfmppjfli => "CFNALCKAABL_OILFMPPJFLI", + Self::Anfbjhfnold => "CFNALCKAABL_ANFBJHFNOLD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CFNALCKAABL_AKDEILMNJNK" => Some(Self::Akdeilmnjnk), + "CFNALCKAABL_OILFMPPJFLI" => Some(Self::Oilfmppjfli), + "CFNALCKAABL_ANFBJHFNOLD" => Some(Self::Anfbjhfnold), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gichkpcdgak { + Klcamocming = 0, +} +impl Gichkpcdgak { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Klcamocming => "GICHKPCDGAK_KLCAMOCMING", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GICHKPCDGAK_KLCAMOCMING" => Some(Self::Klcamocming), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Doeghoapppe { + FreezeCameraTypeNone = 0, + FreezeCameraTypeManual = 1, + FreezeCameraTypeCenter = 2, +} +impl Doeghoapppe { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::FreezeCameraTypeNone => "DOEGHOAPPPE_FREEZE_CAMERA_TYPE_NONE", + Self::FreezeCameraTypeManual => "DOEGHOAPPPE_FREEZE_CAMERA_TYPE_MANUAL", + Self::FreezeCameraTypeCenter => "DOEGHOAPPPE_FREEZE_CAMERA_TYPE_CENTER", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DOEGHOAPPPE_FREEZE_CAMERA_TYPE_NONE" => Some(Self::FreezeCameraTypeNone), + "DOEGHOAPPPE_FREEZE_CAMERA_TYPE_MANUAL" => Some(Self::FreezeCameraTypeManual), + "DOEGHOAPPPE_FREEZE_CAMERA_TYPE_CENTER" => Some(Self::FreezeCameraTypeCenter), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dkniaphegfi { + HollowComponentTypeNone = 0, + IdComponent = 1, + PosComponent = 2, + HollowGridComponent = 3, + LightInteractionComponent = 4, + OwnedEntityComponent = 5, + ChessUiComponent = 6, + HollowEventComponent = 7, + CategoryComponent = 8, + BehaviorComponent = 9, + OwnerComponent = 10, + HollowNpcComponent = 11, + HollowSnakeComponent = 12, + HollowLightComponent = 13, + ExtScriptVariableComponent = 14, + ConwayLifeGameLifeStateComponent = 15, + EntityPriorityComponent = 16, + BigTvChessUiComponent = 17, + GridStateComponent = 18, + SpringComponent = 19, + BlockComponent = 20, + ConwayLifeGameMgrComponent = 21, + HollowScriptSequenceComponent = 22, + HollowSnapshotComponent = 23, + HollowMapComponent = 24, + HollowPluginCollectionComponent = 25, + InnerWorldPlugin = 26, + HollowLightPlugin = 27, + HollowNpcMgrComponent = 28, + HollowTimeRewindComponent = 29, + NpcPosExt = 30, + ClientStateComponent = 31, + PlayerPosExt = 33, + HollowRepairZoneComponent = 34, + HollowGlobalComponent = 35, + AimRectComponent = 36, + SignalMgrComponent = 37, + HollowFloorMgrComponent = 39, + AreaCameraComponent = 40, + GridInnerWorldComponent = 41, + HollowSectionComponent = 42, + BigWorldComponent = 44, + ElevatorGridComponent = 45, + HideComponent = 46, + HollowSpawnerComponent = 47, + HollowHackerGameComponent = 48, + PopInteractComponent = 49, + AbilityMarkComponent = 50, +} +impl Dkniaphegfi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowComponentTypeNone => "DKNIAPHEGFI_HOLLOW_COMPONENT_TYPE_NONE", + Self::IdComponent => "DKNIAPHEGFI_ID_COMPONENT", + Self::PosComponent => "DKNIAPHEGFI_POS_COMPONENT", + Self::HollowGridComponent => "DKNIAPHEGFI_HOLLOW_GRID_COMPONENT", + Self::LightInteractionComponent => "DKNIAPHEGFI_LIGHT_INTERACTION_COMPONENT", + Self::OwnedEntityComponent => "DKNIAPHEGFI_OWNED_ENTITY_COMPONENT", + Self::ChessUiComponent => "DKNIAPHEGFI_CHESS_UI_COMPONENT", + Self::HollowEventComponent => "DKNIAPHEGFI_HOLLOW_EVENT_COMPONENT", + Self::CategoryComponent => "DKNIAPHEGFI_CATEGORY_COMPONENT", + Self::BehaviorComponent => "DKNIAPHEGFI_BEHAVIOR_COMPONENT", + Self::OwnerComponent => "DKNIAPHEGFI_OWNER_COMPONENT", + Self::HollowNpcComponent => "DKNIAPHEGFI_HOLLOW_NPC_COMPONENT", + Self::HollowSnakeComponent => "DKNIAPHEGFI_HOLLOW_SNAKE_COMPONENT", + Self::HollowLightComponent => "DKNIAPHEGFI_HOLLOW_LIGHT_COMPONENT", + Self::ExtScriptVariableComponent => { + "DKNIAPHEGFI_EXT_SCRIPT_VARIABLE_COMPONENT" + } + Self::ConwayLifeGameLifeStateComponent => { + "DKNIAPHEGFI_CONWAY_LIFE_GAME_LIFE_STATE_COMPONENT" + } + Self::EntityPriorityComponent => "DKNIAPHEGFI_ENTITY_PRIORITY_COMPONENT", + Self::BigTvChessUiComponent => "DKNIAPHEGFI_BIG_TV_CHESS_UI_COMPONENT", + Self::GridStateComponent => "DKNIAPHEGFI_GRID_STATE_COMPONENT", + Self::SpringComponent => "DKNIAPHEGFI_SPRING_COMPONENT", + Self::BlockComponent => "DKNIAPHEGFI_BLOCK_COMPONENT", + Self::ConwayLifeGameMgrComponent => { + "DKNIAPHEGFI_CONWAY_LIFE_GAME_MGR_COMPONENT" + } + Self::HollowScriptSequenceComponent => { + "DKNIAPHEGFI_HOLLOW_SCRIPT_SEQUENCE_COMPONENT" + } + Self::HollowSnapshotComponent => "DKNIAPHEGFI_HOLLOW_SNAPSHOT_COMPONENT", + Self::HollowMapComponent => "DKNIAPHEGFI_HOLLOW_MAP_COMPONENT", + Self::HollowPluginCollectionComponent => { + "DKNIAPHEGFI_HOLLOW_PLUGIN_COLLECTION_COMPONENT" + } + Self::InnerWorldPlugin => "DKNIAPHEGFI_INNER_WORLD_PLUGIN", + Self::HollowLightPlugin => "DKNIAPHEGFI_HOLLOW_LIGHT_PLUGIN", + Self::HollowNpcMgrComponent => "DKNIAPHEGFI_HOLLOW_NPC_MGR_COMPONENT", + Self::HollowTimeRewindComponent => "DKNIAPHEGFI_HOLLOW_TIME_REWIND_COMPONENT", + Self::NpcPosExt => "DKNIAPHEGFI_NPC_POS_EXT", + Self::ClientStateComponent => "DKNIAPHEGFI_CLIENT_STATE_COMPONENT", + Self::PlayerPosExt => "DKNIAPHEGFI_PLAYER_POS_EXT", + Self::HollowRepairZoneComponent => "DKNIAPHEGFI_HOLLOW_REPAIR_ZONE_COMPONENT", + Self::HollowGlobalComponent => "DKNIAPHEGFI_HOLLOW_GLOBAL_COMPONENT", + Self::AimRectComponent => "DKNIAPHEGFI_AIM_RECT_COMPONENT", + Self::SignalMgrComponent => "DKNIAPHEGFI_SIGNAL_MGR_COMPONENT", + Self::HollowFloorMgrComponent => "DKNIAPHEGFI_HOLLOW_FLOOR_MGR_COMPONENT", + Self::AreaCameraComponent => "DKNIAPHEGFI_AREA_CAMERA_COMPONENT", + Self::GridInnerWorldComponent => "DKNIAPHEGFI_GRID_INNER_WORLD_COMPONENT", + Self::HollowSectionComponent => "DKNIAPHEGFI_HOLLOW_SECTION_COMPONENT", + Self::BigWorldComponent => "DKNIAPHEGFI_BIG_WORLD_COMPONENT", + Self::ElevatorGridComponent => "DKNIAPHEGFI_ELEVATOR_GRID_COMPONENT", + Self::HideComponent => "DKNIAPHEGFI_HIDE_COMPONENT", + Self::HollowSpawnerComponent => "DKNIAPHEGFI_HOLLOW_SPAWNER_COMPONENT", + Self::HollowHackerGameComponent => "DKNIAPHEGFI_HOLLOW_HACKER_GAME_COMPONENT", + Self::PopInteractComponent => "DKNIAPHEGFI_POP_INTERACT_COMPONENT", + Self::AbilityMarkComponent => "DKNIAPHEGFI_ABILITY_MARK_COMPONENT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DKNIAPHEGFI_HOLLOW_COMPONENT_TYPE_NONE" => { + Some(Self::HollowComponentTypeNone) + } + "DKNIAPHEGFI_ID_COMPONENT" => Some(Self::IdComponent), + "DKNIAPHEGFI_POS_COMPONENT" => Some(Self::PosComponent), + "DKNIAPHEGFI_HOLLOW_GRID_COMPONENT" => Some(Self::HollowGridComponent), + "DKNIAPHEGFI_LIGHT_INTERACTION_COMPONENT" => { + Some(Self::LightInteractionComponent) + } + "DKNIAPHEGFI_OWNED_ENTITY_COMPONENT" => Some(Self::OwnedEntityComponent), + "DKNIAPHEGFI_CHESS_UI_COMPONENT" => Some(Self::ChessUiComponent), + "DKNIAPHEGFI_HOLLOW_EVENT_COMPONENT" => Some(Self::HollowEventComponent), + "DKNIAPHEGFI_CATEGORY_COMPONENT" => Some(Self::CategoryComponent), + "DKNIAPHEGFI_BEHAVIOR_COMPONENT" => Some(Self::BehaviorComponent), + "DKNIAPHEGFI_OWNER_COMPONENT" => Some(Self::OwnerComponent), + "DKNIAPHEGFI_HOLLOW_NPC_COMPONENT" => Some(Self::HollowNpcComponent), + "DKNIAPHEGFI_HOLLOW_SNAKE_COMPONENT" => Some(Self::HollowSnakeComponent), + "DKNIAPHEGFI_HOLLOW_LIGHT_COMPONENT" => Some(Self::HollowLightComponent), + "DKNIAPHEGFI_EXT_SCRIPT_VARIABLE_COMPONENT" => { + Some(Self::ExtScriptVariableComponent) + } + "DKNIAPHEGFI_CONWAY_LIFE_GAME_LIFE_STATE_COMPONENT" => { + Some(Self::ConwayLifeGameLifeStateComponent) + } + "DKNIAPHEGFI_ENTITY_PRIORITY_COMPONENT" => { + Some(Self::EntityPriorityComponent) + } + "DKNIAPHEGFI_BIG_TV_CHESS_UI_COMPONENT" => Some(Self::BigTvChessUiComponent), + "DKNIAPHEGFI_GRID_STATE_COMPONENT" => Some(Self::GridStateComponent), + "DKNIAPHEGFI_SPRING_COMPONENT" => Some(Self::SpringComponent), + "DKNIAPHEGFI_BLOCK_COMPONENT" => Some(Self::BlockComponent), + "DKNIAPHEGFI_CONWAY_LIFE_GAME_MGR_COMPONENT" => { + Some(Self::ConwayLifeGameMgrComponent) + } + "DKNIAPHEGFI_HOLLOW_SCRIPT_SEQUENCE_COMPONENT" => { + Some(Self::HollowScriptSequenceComponent) + } + "DKNIAPHEGFI_HOLLOW_SNAPSHOT_COMPONENT" => { + Some(Self::HollowSnapshotComponent) + } + "DKNIAPHEGFI_HOLLOW_MAP_COMPONENT" => Some(Self::HollowMapComponent), + "DKNIAPHEGFI_HOLLOW_PLUGIN_COLLECTION_COMPONENT" => { + Some(Self::HollowPluginCollectionComponent) + } + "DKNIAPHEGFI_INNER_WORLD_PLUGIN" => Some(Self::InnerWorldPlugin), + "DKNIAPHEGFI_HOLLOW_LIGHT_PLUGIN" => Some(Self::HollowLightPlugin), + "DKNIAPHEGFI_HOLLOW_NPC_MGR_COMPONENT" => Some(Self::HollowNpcMgrComponent), + "DKNIAPHEGFI_HOLLOW_TIME_REWIND_COMPONENT" => { + Some(Self::HollowTimeRewindComponent) + } + "DKNIAPHEGFI_NPC_POS_EXT" => Some(Self::NpcPosExt), + "DKNIAPHEGFI_CLIENT_STATE_COMPONENT" => Some(Self::ClientStateComponent), + "DKNIAPHEGFI_PLAYER_POS_EXT" => Some(Self::PlayerPosExt), + "DKNIAPHEGFI_HOLLOW_REPAIR_ZONE_COMPONENT" => { + Some(Self::HollowRepairZoneComponent) + } + "DKNIAPHEGFI_HOLLOW_GLOBAL_COMPONENT" => Some(Self::HollowGlobalComponent), + "DKNIAPHEGFI_AIM_RECT_COMPONENT" => Some(Self::AimRectComponent), + "DKNIAPHEGFI_SIGNAL_MGR_COMPONENT" => Some(Self::SignalMgrComponent), + "DKNIAPHEGFI_HOLLOW_FLOOR_MGR_COMPONENT" => { + Some(Self::HollowFloorMgrComponent) + } + "DKNIAPHEGFI_AREA_CAMERA_COMPONENT" => Some(Self::AreaCameraComponent), + "DKNIAPHEGFI_GRID_INNER_WORLD_COMPONENT" => { + Some(Self::GridInnerWorldComponent) + } + "DKNIAPHEGFI_HOLLOW_SECTION_COMPONENT" => Some(Self::HollowSectionComponent), + "DKNIAPHEGFI_BIG_WORLD_COMPONENT" => Some(Self::BigWorldComponent), + "DKNIAPHEGFI_ELEVATOR_GRID_COMPONENT" => Some(Self::ElevatorGridComponent), + "DKNIAPHEGFI_HIDE_COMPONENT" => Some(Self::HideComponent), + "DKNIAPHEGFI_HOLLOW_SPAWNER_COMPONENT" => Some(Self::HollowSpawnerComponent), + "DKNIAPHEGFI_HOLLOW_HACKER_GAME_COMPONENT" => { + Some(Self::HollowHackerGameComponent) + } + "DKNIAPHEGFI_POP_INTERACT_COMPONENT" => Some(Self::PopInteractComponent), + "DKNIAPHEGFI_ABILITY_MARK_COMPONENT" => Some(Self::AbilityMarkComponent), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cigfckmpjdh { + Eaphmonkein = 0, + Mjdhibfkcmh = 1, + Ldaienapnfb = 2, + Kolajknjkld = 3, +} +impl Cigfckmpjdh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Eaphmonkein => "CIGFCKMPJDH_EAPHMONKEIN", + Self::Mjdhibfkcmh => "CIGFCKMPJDH_MJDHIBFKCMH", + Self::Ldaienapnfb => "CIGFCKMPJDH_LDAIENAPNFB", + Self::Kolajknjkld => "CIGFCKMPJDH_KOLAJKNJKLD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CIGFCKMPJDH_EAPHMONKEIN" => Some(Self::Eaphmonkein), + "CIGFCKMPJDH_MJDHIBFKCMH" => Some(Self::Mjdhibfkcmh), + "CIGFCKMPJDH_LDAIENAPNFB" => Some(Self::Ldaienapnfb), + "CIGFCKMPJDH_KOLAJKNJKLD" => Some(Self::Kolajknjkld), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dfjgogmpcen { + Iogddidjlij = 0, + Mpogdhidoon = 1, + Ckipmcnpekk = 2, + Kiejccemijd = 3, + Jmdkaonfilk = 4, + Biobmlnmaap = 5, + Mepificbjfi = 6, +} +impl Dfjgogmpcen { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Iogddidjlij => "DFJGOGMPCEN_IOGDDIDJLIJ", + Self::Mpogdhidoon => "DFJGOGMPCEN_MPOGDHIDOON", + Self::Ckipmcnpekk => "DFJGOGMPCEN_CKIPMCNPEKK", + Self::Kiejccemijd => "DFJGOGMPCEN_KIEJCCEMIJD", + Self::Jmdkaonfilk => "DFJGOGMPCEN_JMDKAONFILK", + Self::Biobmlnmaap => "DFJGOGMPCEN_BIOBMLNMAAP", + Self::Mepificbjfi => "DFJGOGMPCEN_MEPIFICBJFI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DFJGOGMPCEN_IOGDDIDJLIJ" => Some(Self::Iogddidjlij), + "DFJGOGMPCEN_MPOGDHIDOON" => Some(Self::Mpogdhidoon), + "DFJGOGMPCEN_CKIPMCNPEKK" => Some(Self::Ckipmcnpekk), + "DFJGOGMPCEN_KIEJCCEMIJD" => Some(Self::Kiejccemijd), + "DFJGOGMPCEN_JMDKAONFILK" => Some(Self::Jmdkaonfilk), + "DFJGOGMPCEN_BIOBMLNMAAP" => Some(Self::Biobmlnmaap), + "DFJGOGMPCEN_MEPIFICBJFI" => Some(Self::Mepificbjfi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Behdaedmnae { + Efpiagoalpn = 0, + Ogmikahnhjj = 1, + Lmehhoembhg = 2, +} +impl Behdaedmnae { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Efpiagoalpn => "BEHDAEDMNAE_EFPIAGOALPN", + Self::Ogmikahnhjj => "BEHDAEDMNAE_OGMIKAHNHJJ", + Self::Lmehhoembhg => "BEHDAEDMNAE_LMEHHOEMBHG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BEHDAEDMNAE_EFPIAGOALPN" => Some(Self::Efpiagoalpn), + "BEHDAEDMNAE_OGMIKAHNHJJ" => Some(Self::Ogmikahnhjj), + "BEHDAEDMNAE_LMEHHOEMBHG" => Some(Self::Lmehhoembhg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cbobgjgfdhi { + Jpmniopaikn = 0, + Bdmbmgjbini = 1, + Mpgbjgajbgo = 2, +} +impl Cbobgjgfdhi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jpmniopaikn => "CBOBGJGFDHI_JPMNIOPAIKN", + Self::Bdmbmgjbini => "CBOBGJGFDHI_BDMBMGJBINI", + Self::Mpgbjgajbgo => "CBOBGJGFDHI_MPGBJGAJBGO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CBOBGJGFDHI_JPMNIOPAIKN" => Some(Self::Jpmniopaikn), + "CBOBGJGFDHI_BDMBMGJBINI" => Some(Self::Bdmbmgjbini), + "CBOBGJGFDHI_MPGBJGAJBGO" => Some(Self::Mpgbjgajbgo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ecpohmllppi { + HollowItemOptionTypeNone = 0, + HollowItemOptionTypeDrop = 1, + HollowItemOptionTypeReplace = 2, + HollowItemOptionTypeAdd = 3, +} +impl Ecpohmllppi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowItemOptionTypeNone => "ECPOHMLLPPI_HOLLOW_ITEM_OPTION_TYPE_NONE", + Self::HollowItemOptionTypeDrop => "ECPOHMLLPPI_HOLLOW_ITEM_OPTION_TYPE_DROP", + Self::HollowItemOptionTypeReplace => { + "ECPOHMLLPPI_HOLLOW_ITEM_OPTION_TYPE_REPLACE" + } + Self::HollowItemOptionTypeAdd => "ECPOHMLLPPI_HOLLOW_ITEM_OPTION_TYPE_ADD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ECPOHMLLPPI_HOLLOW_ITEM_OPTION_TYPE_NONE" => { + Some(Self::HollowItemOptionTypeNone) + } + "ECPOHMLLPPI_HOLLOW_ITEM_OPTION_TYPE_DROP" => { + Some(Self::HollowItemOptionTypeDrop) + } + "ECPOHMLLPPI_HOLLOW_ITEM_OPTION_TYPE_REPLACE" => { + Some(Self::HollowItemOptionTypeReplace) + } + "ECPOHMLLPPI_HOLLOW_ITEM_OPTION_TYPE_ADD" => { + Some(Self::HollowItemOptionTypeAdd) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Majghphpmdh { + Djcmjjmappa = 0, +} +impl Majghphpmdh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Djcmjjmappa => "MAJGHPHPMDH_DJCMJJMAPPA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MAJGHPHPMDH_DJCMJJMAPPA" => Some(Self::Djcmjjmappa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ejlmllcliak { + Mhahjnheani = 0, + Eencfglohao = 10001, +} +impl Ejlmllcliak { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mhahjnheani => "EJLMLLCLIAK_MHAHJNHEANI", + Self::Eencfglohao => "EJLMLLCLIAK_EENCFGLOHAO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EJLMLLCLIAK_MHAHJNHEANI" => Some(Self::Mhahjnheani), + "EJLMLLCLIAK_EENCFGLOHAO" => Some(Self::Eencfglohao), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nhbgllmbclg { + Amlaflfgfmm = 0, + Fdmbcopiolh = 1, + Bcgclcfhhmb = 2, + Nnikheocblg = 3, + Hhpmbinmkgh = 4, + Ldkhlemeaef = 5, + Daiifhgcfkb = 6, + Ldijebijlln = 7, + Aipgpnppdhf = 8, + Mjccaimkjpc = 9, + Bdheplboehf = 10, + Lnakcodekio = 11, + Lemdbojaegp = 12, + Jgpobcjebaa = 13, + Ebhaiccbcec = 14, + Ohamhnagpdd = 15, + Gagjlhkdegg = 16, + Hclnieoialn = 17, + Hacmfljbcam = 18, + Adaclioeeoi = 19, + Gpcdmjmfonh = 20, + Odmnkjoookp = 21, + Llncfdcfgfn = 22, + Nljhfcdpale = 23, + Jiiohaeggbh = 24, + Bmelmcmehmk = 25, + Bdnajjdnhbm = 26, + Idoghinbhgd = 27, + Femnhpmdjmm = 28, + Jaoolfmmfon = 29, + Hajaandpmog = 30, + Gpckmmecgca = 31, + Ipaamioonme = 33, + Mbllejamlei = 34, + Mdbmkipklal = 35, + Anfpjbnaien = 36, + Ccfhnihnkna = 37, + Jnmmpgjmgmd = 38, + Nbcggjolijj = 99, +} +impl Nhbgllmbclg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Amlaflfgfmm => "NHBGLLMBCLG_AMLAFLFGFMM", + Self::Fdmbcopiolh => "NHBGLLMBCLG_FDMBCOPIOLH", + Self::Bcgclcfhhmb => "NHBGLLMBCLG_BCGCLCFHHMB", + Self::Nnikheocblg => "NHBGLLMBCLG_NNIKHEOCBLG", + Self::Hhpmbinmkgh => "NHBGLLMBCLG_HHPMBINMKGH", + Self::Ldkhlemeaef => "NHBGLLMBCLG_LDKHLEMEAEF", + Self::Daiifhgcfkb => "NHBGLLMBCLG_DAIIFHGCFKB", + Self::Ldijebijlln => "NHBGLLMBCLG_LDIJEBIJLLN", + Self::Aipgpnppdhf => "NHBGLLMBCLG_AIPGPNPPDHF", + Self::Mjccaimkjpc => "NHBGLLMBCLG_MJCCAIMKJPC", + Self::Bdheplboehf => "NHBGLLMBCLG_BDHEPLBOEHF", + Self::Lnakcodekio => "NHBGLLMBCLG_LNAKCODEKIO", + Self::Lemdbojaegp => "NHBGLLMBCLG_LEMDBOJAEGP", + Self::Jgpobcjebaa => "NHBGLLMBCLG_JGPOBCJEBAA", + Self::Ebhaiccbcec => "NHBGLLMBCLG_EBHAICCBCEC", + Self::Ohamhnagpdd => "NHBGLLMBCLG_OHAMHNAGPDD", + Self::Gagjlhkdegg => "NHBGLLMBCLG_GAGJLHKDEGG", + Self::Hclnieoialn => "NHBGLLMBCLG_HCLNIEOIALN", + Self::Hacmfljbcam => "NHBGLLMBCLG_HACMFLJBCAM", + Self::Adaclioeeoi => "NHBGLLMBCLG_ADACLIOEEOI", + Self::Gpcdmjmfonh => "NHBGLLMBCLG_GPCDMJMFONH", + Self::Odmnkjoookp => "NHBGLLMBCLG_ODMNKJOOOKP", + Self::Llncfdcfgfn => "NHBGLLMBCLG_LLNCFDCFGFN", + Self::Nljhfcdpale => "NHBGLLMBCLG_NLJHFCDPALE", + Self::Jiiohaeggbh => "NHBGLLMBCLG_JIIOHAEGGBH", + Self::Bmelmcmehmk => "NHBGLLMBCLG_BMELMCMEHMK", + Self::Bdnajjdnhbm => "NHBGLLMBCLG_BDNAJJDNHBM", + Self::Idoghinbhgd => "NHBGLLMBCLG_IDOGHINBHGD", + Self::Femnhpmdjmm => "NHBGLLMBCLG_FEMNHPMDJMM", + Self::Jaoolfmmfon => "NHBGLLMBCLG_JAOOLFMMFON", + Self::Hajaandpmog => "NHBGLLMBCLG_HAJAANDPMOG", + Self::Gpckmmecgca => "NHBGLLMBCLG_GPCKMMECGCA", + Self::Ipaamioonme => "NHBGLLMBCLG_IPAAMIOONME", + Self::Mbllejamlei => "NHBGLLMBCLG_MBLLEJAMLEI", + Self::Mdbmkipklal => "NHBGLLMBCLG_MDBMKIPKLAL", + Self::Anfpjbnaien => "NHBGLLMBCLG_ANFPJBNAIEN", + Self::Ccfhnihnkna => "NHBGLLMBCLG_CCFHNIHNKNA", + Self::Jnmmpgjmgmd => "NHBGLLMBCLG_JNMMPGJMGMD", + Self::Nbcggjolijj => "NHBGLLMBCLG_NBCGGJOLIJJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NHBGLLMBCLG_AMLAFLFGFMM" => Some(Self::Amlaflfgfmm), + "NHBGLLMBCLG_FDMBCOPIOLH" => Some(Self::Fdmbcopiolh), + "NHBGLLMBCLG_BCGCLCFHHMB" => Some(Self::Bcgclcfhhmb), + "NHBGLLMBCLG_NNIKHEOCBLG" => Some(Self::Nnikheocblg), + "NHBGLLMBCLG_HHPMBINMKGH" => Some(Self::Hhpmbinmkgh), + "NHBGLLMBCLG_LDKHLEMEAEF" => Some(Self::Ldkhlemeaef), + "NHBGLLMBCLG_DAIIFHGCFKB" => Some(Self::Daiifhgcfkb), + "NHBGLLMBCLG_LDIJEBIJLLN" => Some(Self::Ldijebijlln), + "NHBGLLMBCLG_AIPGPNPPDHF" => Some(Self::Aipgpnppdhf), + "NHBGLLMBCLG_MJCCAIMKJPC" => Some(Self::Mjccaimkjpc), + "NHBGLLMBCLG_BDHEPLBOEHF" => Some(Self::Bdheplboehf), + "NHBGLLMBCLG_LNAKCODEKIO" => Some(Self::Lnakcodekio), + "NHBGLLMBCLG_LEMDBOJAEGP" => Some(Self::Lemdbojaegp), + "NHBGLLMBCLG_JGPOBCJEBAA" => Some(Self::Jgpobcjebaa), + "NHBGLLMBCLG_EBHAICCBCEC" => Some(Self::Ebhaiccbcec), + "NHBGLLMBCLG_OHAMHNAGPDD" => Some(Self::Ohamhnagpdd), + "NHBGLLMBCLG_GAGJLHKDEGG" => Some(Self::Gagjlhkdegg), + "NHBGLLMBCLG_HCLNIEOIALN" => Some(Self::Hclnieoialn), + "NHBGLLMBCLG_HACMFLJBCAM" => Some(Self::Hacmfljbcam), + "NHBGLLMBCLG_ADACLIOEEOI" => Some(Self::Adaclioeeoi), + "NHBGLLMBCLG_GPCDMJMFONH" => Some(Self::Gpcdmjmfonh), + "NHBGLLMBCLG_ODMNKJOOOKP" => Some(Self::Odmnkjoookp), + "NHBGLLMBCLG_LLNCFDCFGFN" => Some(Self::Llncfdcfgfn), + "NHBGLLMBCLG_NLJHFCDPALE" => Some(Self::Nljhfcdpale), + "NHBGLLMBCLG_JIIOHAEGGBH" => Some(Self::Jiiohaeggbh), + "NHBGLLMBCLG_BMELMCMEHMK" => Some(Self::Bmelmcmehmk), + "NHBGLLMBCLG_BDNAJJDNHBM" => Some(Self::Bdnajjdnhbm), + "NHBGLLMBCLG_IDOGHINBHGD" => Some(Self::Idoghinbhgd), + "NHBGLLMBCLG_FEMNHPMDJMM" => Some(Self::Femnhpmdjmm), + "NHBGLLMBCLG_JAOOLFMMFON" => Some(Self::Jaoolfmmfon), + "NHBGLLMBCLG_HAJAANDPMOG" => Some(Self::Hajaandpmog), + "NHBGLLMBCLG_GPCKMMECGCA" => Some(Self::Gpckmmecgca), + "NHBGLLMBCLG_IPAAMIOONME" => Some(Self::Ipaamioonme), + "NHBGLLMBCLG_MBLLEJAMLEI" => Some(Self::Mbllejamlei), + "NHBGLLMBCLG_MDBMKIPKLAL" => Some(Self::Mdbmkipklal), + "NHBGLLMBCLG_ANFPJBNAIEN" => Some(Self::Anfpjbnaien), + "NHBGLLMBCLG_CCFHNIHNKNA" => Some(Self::Ccfhnihnkna), + "NHBGLLMBCLG_JNMMPGJMGMD" => Some(Self::Jnmmpgjmgmd), + "NHBGLLMBCLG_NBCGGJOLIJJ" => Some(Self::Nbcggjolijj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Icbpianokgd { + PlayerTypeAll = 0, + TeamCharacter1 = 1, + TeamCharacter2 = 2, + TeamCharacter3 = 3, +} +impl Icbpianokgd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::PlayerTypeAll => "ICBPIANOKGD_PLAYER_TYPE_ALL", + Self::TeamCharacter1 => "ICBPIANOKGD_TEAM_CHARACTER1", + Self::TeamCharacter2 => "ICBPIANOKGD_TEAM_CHARACTER2", + Self::TeamCharacter3 => "ICBPIANOKGD_TEAM_CHARACTER3", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ICBPIANOKGD_PLAYER_TYPE_ALL" => Some(Self::PlayerTypeAll), + "ICBPIANOKGD_TEAM_CHARACTER1" => Some(Self::TeamCharacter1), + "ICBPIANOKGD_TEAM_CHARACTER2" => Some(Self::TeamCharacter2), + "ICBPIANOKGD_TEAM_CHARACTER3" => Some(Self::TeamCharacter3), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ogpinjgjfbm { + HackerGameParamTypeNone = 0, + HackerGameParamTypeLevel = 1, + HackerGameParamTypeCurrency = 2, + HackerGameParamTypeDurability = 3, + HackerGameParamTypeEnergy = 4, + HackerGameParamTypeFever = 5, + HackerGameParamTypeDurabilityLimit = 6, + HackerGameParamTypeEnergyLimit = 7, + HackerGameParamTypeFeverLimit = 8, +} +impl Ogpinjgjfbm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HackerGameParamTypeNone => "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_NONE", + Self::HackerGameParamTypeLevel => "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_LEVEL", + Self::HackerGameParamTypeCurrency => { + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_CURRENCY" + } + Self::HackerGameParamTypeDurability => { + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_DURABILITY" + } + Self::HackerGameParamTypeEnergy => { + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_ENERGY" + } + Self::HackerGameParamTypeFever => "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_FEVER", + Self::HackerGameParamTypeDurabilityLimit => { + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_DURABILITY_LIMIT" + } + Self::HackerGameParamTypeEnergyLimit => { + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_ENERGY_LIMIT" + } + Self::HackerGameParamTypeFeverLimit => { + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_FEVER_LIMIT" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_NONE" => { + Some(Self::HackerGameParamTypeNone) + } + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_LEVEL" => { + Some(Self::HackerGameParamTypeLevel) + } + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_CURRENCY" => { + Some(Self::HackerGameParamTypeCurrency) + } + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_DURABILITY" => { + Some(Self::HackerGameParamTypeDurability) + } + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_ENERGY" => { + Some(Self::HackerGameParamTypeEnergy) + } + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_FEVER" => { + Some(Self::HackerGameParamTypeFever) + } + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_DURABILITY_LIMIT" => { + Some(Self::HackerGameParamTypeDurabilityLimit) + } + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_ENERGY_LIMIT" => { + Some(Self::HackerGameParamTypeEnergyLimit) + } + "OGPINJGJFBM_HACKER_GAME_PARAM_TYPE_FEVER_LIMIT" => { + Some(Self::HackerGameParamTypeFeverLimit) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lhlnkeggbdp { + Dhhabidmihd = 0, + Bmlpaleagpc = 1003, + Fhlknoejjlp = 1020, + Nmcinopagnk = 1029, + Icnifpgnmno = 1036, + Momjhhgmggg = 1038, + Ockhnidomge = 1040, + Gbgpgogfglp = 1042, + Jnlkipdonne = 1052, + Hanmghaakeh = 1063, + Aomjkjbenca = 1064, + Cdfnnglhebf = 1066, + Omeiefekmkl = 1068, + Dcjkfcmofjj = 2000, + Ndhccljffda = 2001, + Nmpldmijldi = 10008, + Lhicbmncjoi = 10010, + Knbfpcchbbl = 10021, + Gijlplignid = 10022, + Ebhajnpnjlk = 10024, + Aighgjalamb = 10033, + Aclklddigbe = 10034, + Ajhccnbepdp = 10035, + Hoaghkhlpdi = 10038, + Bankmclhlii = 10040, + Ocnfliimmid = 10070, + Fibfbnmikia = 10080, + Lfmjjkeomln = 10087, + Hdnadlingpp = 10094, + Iaficgbkdik = 10100, + Ljnndbbnflf = 10101, + Jmkbhbmeohg = 30004, + Ipaobdlpaeb = 30005, + Bmiogcnligo = 30014, + Gkaidcokoim = 30015, + Mjgibppcaod = 30016, +} +impl Lhlnkeggbdp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dhhabidmihd => "LHLNKEGGBDP_DHHABIDMIHD", + Self::Bmlpaleagpc => "LHLNKEGGBDP_BMLPALEAGPC", + Self::Fhlknoejjlp => "LHLNKEGGBDP_FHLKNOEJJLP", + Self::Nmcinopagnk => "LHLNKEGGBDP_NMCINOPAGNK", + Self::Icnifpgnmno => "LHLNKEGGBDP_ICNIFPGNMNO", + Self::Momjhhgmggg => "LHLNKEGGBDP_MOMJHHGMGGG", + Self::Ockhnidomge => "LHLNKEGGBDP_OCKHNIDOMGE", + Self::Gbgpgogfglp => "LHLNKEGGBDP_GBGPGOGFGLP", + Self::Jnlkipdonne => "LHLNKEGGBDP_JNLKIPDONNE", + Self::Hanmghaakeh => "LHLNKEGGBDP_HANMGHAAKEH", + Self::Aomjkjbenca => "LHLNKEGGBDP_AOMJKJBENCA", + Self::Cdfnnglhebf => "LHLNKEGGBDP_CDFNNGLHEBF", + Self::Omeiefekmkl => "LHLNKEGGBDP_OMEIEFEKMKL", + Self::Dcjkfcmofjj => "LHLNKEGGBDP_DCJKFCMOFJJ", + Self::Ndhccljffda => "LHLNKEGGBDP_NDHCCLJFFDA", + Self::Nmpldmijldi => "LHLNKEGGBDP_NMPLDMIJLDI", + Self::Lhicbmncjoi => "LHLNKEGGBDP_LHICBMNCJOI", + Self::Knbfpcchbbl => "LHLNKEGGBDP_KNBFPCCHBBL", + Self::Gijlplignid => "LHLNKEGGBDP_GIJLPLIGNID", + Self::Ebhajnpnjlk => "LHLNKEGGBDP_EBHAJNPNJLK", + Self::Aighgjalamb => "LHLNKEGGBDP_AIGHGJALAMB", + Self::Aclklddigbe => "LHLNKEGGBDP_ACLKLDDIGBE", + Self::Ajhccnbepdp => "LHLNKEGGBDP_AJHCCNBEPDP", + Self::Hoaghkhlpdi => "LHLNKEGGBDP_HOAGHKHLPDI", + Self::Bankmclhlii => "LHLNKEGGBDP_BANKMCLHLII", + Self::Ocnfliimmid => "LHLNKEGGBDP_OCNFLIIMMID", + Self::Fibfbnmikia => "LHLNKEGGBDP_FIBFBNMIKIA", + Self::Lfmjjkeomln => "LHLNKEGGBDP_LFMJJKEOMLN", + Self::Hdnadlingpp => "LHLNKEGGBDP_HDNADLINGPP", + Self::Iaficgbkdik => "LHLNKEGGBDP_IAFICGBKDIK", + Self::Ljnndbbnflf => "LHLNKEGGBDP_LJNNDBBNFLF", + Self::Jmkbhbmeohg => "LHLNKEGGBDP_JMKBHBMEOHG", + Self::Ipaobdlpaeb => "LHLNKEGGBDP_IPAOBDLPAEB", + Self::Bmiogcnligo => "LHLNKEGGBDP_BMIOGCNLIGO", + Self::Gkaidcokoim => "LHLNKEGGBDP_GKAIDCOKOIM", + Self::Mjgibppcaod => "LHLNKEGGBDP_MJGIBPPCAOD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LHLNKEGGBDP_DHHABIDMIHD" => Some(Self::Dhhabidmihd), + "LHLNKEGGBDP_BMLPALEAGPC" => Some(Self::Bmlpaleagpc), + "LHLNKEGGBDP_FHLKNOEJJLP" => Some(Self::Fhlknoejjlp), + "LHLNKEGGBDP_NMCINOPAGNK" => Some(Self::Nmcinopagnk), + "LHLNKEGGBDP_ICNIFPGNMNO" => Some(Self::Icnifpgnmno), + "LHLNKEGGBDP_MOMJHHGMGGG" => Some(Self::Momjhhgmggg), + "LHLNKEGGBDP_OCKHNIDOMGE" => Some(Self::Ockhnidomge), + "LHLNKEGGBDP_GBGPGOGFGLP" => Some(Self::Gbgpgogfglp), + "LHLNKEGGBDP_JNLKIPDONNE" => Some(Self::Jnlkipdonne), + "LHLNKEGGBDP_HANMGHAAKEH" => Some(Self::Hanmghaakeh), + "LHLNKEGGBDP_AOMJKJBENCA" => Some(Self::Aomjkjbenca), + "LHLNKEGGBDP_CDFNNGLHEBF" => Some(Self::Cdfnnglhebf), + "LHLNKEGGBDP_OMEIEFEKMKL" => Some(Self::Omeiefekmkl), + "LHLNKEGGBDP_DCJKFCMOFJJ" => Some(Self::Dcjkfcmofjj), + "LHLNKEGGBDP_NDHCCLJFFDA" => Some(Self::Ndhccljffda), + "LHLNKEGGBDP_NMPLDMIJLDI" => Some(Self::Nmpldmijldi), + "LHLNKEGGBDP_LHICBMNCJOI" => Some(Self::Lhicbmncjoi), + "LHLNKEGGBDP_KNBFPCCHBBL" => Some(Self::Knbfpcchbbl), + "LHLNKEGGBDP_GIJLPLIGNID" => Some(Self::Gijlplignid), + "LHLNKEGGBDP_EBHAJNPNJLK" => Some(Self::Ebhajnpnjlk), + "LHLNKEGGBDP_AIGHGJALAMB" => Some(Self::Aighgjalamb), + "LHLNKEGGBDP_ACLKLDDIGBE" => Some(Self::Aclklddigbe), + "LHLNKEGGBDP_AJHCCNBEPDP" => Some(Self::Ajhccnbepdp), + "LHLNKEGGBDP_HOAGHKHLPDI" => Some(Self::Hoaghkhlpdi), + "LHLNKEGGBDP_BANKMCLHLII" => Some(Self::Bankmclhlii), + "LHLNKEGGBDP_OCNFLIIMMID" => Some(Self::Ocnfliimmid), + "LHLNKEGGBDP_FIBFBNMIKIA" => Some(Self::Fibfbnmikia), + "LHLNKEGGBDP_LFMJJKEOMLN" => Some(Self::Lfmjjkeomln), + "LHLNKEGGBDP_HDNADLINGPP" => Some(Self::Hdnadlingpp), + "LHLNKEGGBDP_IAFICGBKDIK" => Some(Self::Iaficgbkdik), + "LHLNKEGGBDP_LJNNDBBNFLF" => Some(Self::Ljnndbbnflf), + "LHLNKEGGBDP_JMKBHBMEOHG" => Some(Self::Jmkbhbmeohg), + "LHLNKEGGBDP_IPAOBDLPAEB" => Some(Self::Ipaobdlpaeb), + "LHLNKEGGBDP_BMIOGCNLIGO" => Some(Self::Bmiogcnligo), + "LHLNKEGGBDP_GKAIDCOKOIM" => Some(Self::Gkaidcokoim), + "LHLNKEGGBDP_MJGIBPPCAOD" => Some(Self::Mjgibppcaod), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Khlpocjgchk { + Gjbfledjnlg = 0, + Eeccponaobe = 1, + Gffeahhofon = 2, +} +impl Khlpocjgchk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gjbfledjnlg => "KHLPOCJGCHK_GJBFLEDJNLG", + Self::Eeccponaobe => "KHLPOCJGCHK_EECCPONAOBE", + Self::Gffeahhofon => "KHLPOCJGCHK_GFFEAHHOFON", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KHLPOCJGCHK_GJBFLEDJNLG" => Some(Self::Gjbfledjnlg), + "KHLPOCJGCHK_EECCPONAOBE" => Some(Self::Eeccponaobe), + "KHLPOCJGCHK_GFFEAHHOFON" => Some(Self::Gffeahhofon), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gpeodomglhc { + Dmblebmngpl = 0, +} +impl Gpeodomglhc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dmblebmngpl => "GPEODOMGLHC_DMBLEBMNGPL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GPEODOMGLHC_DMBLEBMNGPL" => Some(Self::Dmblebmngpl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cegekjfilbn { + Moclflhmkjp = 0, + Gmkhhnoolnh = 1, + Cncohfgcobh = 2, + Hllnlhonndp = 3, + Fhcjbjfidkc = 4, + Jdepebjeecg = 5, + Komkenikhka = 6, + Gklhmaogdmo = 7, + Fphenfenlnn = 50, + Ikolapanlfo = 100, + Nengkfkakki = 101, + Pcfpfbbogah = 102, + Iillcgjmbdo = 103, + Labpamaloie = 104, + Dliplmhenmg = 105, + Gbnkipmjggb = 106, + Lbklfojjdch = 107, + Ppojikdoeki = 108, + Plkkbagaimh = 109, +} +impl Cegekjfilbn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Moclflhmkjp => "CEGEKJFILBN_MOCLFLHMKJP", + Self::Gmkhhnoolnh => "CEGEKJFILBN_GMKHHNOOLNH", + Self::Cncohfgcobh => "CEGEKJFILBN_CNCOHFGCOBH", + Self::Hllnlhonndp => "CEGEKJFILBN_HLLNLHONNDP", + Self::Fhcjbjfidkc => "CEGEKJFILBN_FHCJBJFIDKC", + Self::Jdepebjeecg => "CEGEKJFILBN_JDEPEBJEECG", + Self::Komkenikhka => "CEGEKJFILBN_KOMKENIKHKA", + Self::Gklhmaogdmo => "CEGEKJFILBN_GKLHMAOGDMO", + Self::Fphenfenlnn => "CEGEKJFILBN_FPHENFENLNN", + Self::Ikolapanlfo => "CEGEKJFILBN_IKOLAPANLFO", + Self::Nengkfkakki => "CEGEKJFILBN_NENGKFKAKKI", + Self::Pcfpfbbogah => "CEGEKJFILBN_PCFPFBBOGAH", + Self::Iillcgjmbdo => "CEGEKJFILBN_IILLCGJMBDO", + Self::Labpamaloie => "CEGEKJFILBN_LABPAMALOIE", + Self::Dliplmhenmg => "CEGEKJFILBN_DLIPLMHENMG", + Self::Gbnkipmjggb => "CEGEKJFILBN_GBNKIPMJGGB", + Self::Lbklfojjdch => "CEGEKJFILBN_LBKLFOJJDCH", + Self::Ppojikdoeki => "CEGEKJFILBN_PPOJIKDOEKI", + Self::Plkkbagaimh => "CEGEKJFILBN_PLKKBAGAIMH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CEGEKJFILBN_MOCLFLHMKJP" => Some(Self::Moclflhmkjp), + "CEGEKJFILBN_GMKHHNOOLNH" => Some(Self::Gmkhhnoolnh), + "CEGEKJFILBN_CNCOHFGCOBH" => Some(Self::Cncohfgcobh), + "CEGEKJFILBN_HLLNLHONNDP" => Some(Self::Hllnlhonndp), + "CEGEKJFILBN_FHCJBJFIDKC" => Some(Self::Fhcjbjfidkc), + "CEGEKJFILBN_JDEPEBJEECG" => Some(Self::Jdepebjeecg), + "CEGEKJFILBN_KOMKENIKHKA" => Some(Self::Komkenikhka), + "CEGEKJFILBN_GKLHMAOGDMO" => Some(Self::Gklhmaogdmo), + "CEGEKJFILBN_FPHENFENLNN" => Some(Self::Fphenfenlnn), + "CEGEKJFILBN_IKOLAPANLFO" => Some(Self::Ikolapanlfo), + "CEGEKJFILBN_NENGKFKAKKI" => Some(Self::Nengkfkakki), + "CEGEKJFILBN_PCFPFBBOGAH" => Some(Self::Pcfpfbbogah), + "CEGEKJFILBN_IILLCGJMBDO" => Some(Self::Iillcgjmbdo), + "CEGEKJFILBN_LABPAMALOIE" => Some(Self::Labpamaloie), + "CEGEKJFILBN_DLIPLMHENMG" => Some(Self::Dliplmhenmg), + "CEGEKJFILBN_GBNKIPMJGGB" => Some(Self::Gbnkipmjggb), + "CEGEKJFILBN_LBKLFOJJDCH" => Some(Self::Lbklfojjdch), + "CEGEKJFILBN_PPOJIKDOEKI" => Some(Self::Ppojikdoeki), + "CEGEKJFILBN_PLKKBAGAIMH" => Some(Self::Plkkbagaimh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Njogdniciaa { + Jfehhpgcmdn = 0, +} +impl Njogdniciaa { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jfehhpgcmdn => "NJOGDNICIAA_JFEHHPGCMDN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NJOGDNICIAA_JFEHHPGCMDN" => Some(Self::Jfehhpgcmdn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ehmcmphamkh { + Boklejckkfh = 0, + Mhdedndgcho = 6602, +} +impl Ehmcmphamkh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Boklejckkfh => "EHMCMPHAMKH_BOKLEJCKKFH", + Self::Mhdedndgcho => "EHMCMPHAMKH_MHDEDNDGCHO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EHMCMPHAMKH_BOKLEJCKKFH" => Some(Self::Boklejckkfh), + "EHMCMPHAMKH_MHDEDNDGCHO" => Some(Self::Mhdedndgcho), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ceamhfkodhf { + Hjafffhoepa = 0, +} +impl Ceamhfkodhf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hjafffhoepa => "CEAMHFKODHF_HJAFFFHOEPA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CEAMHFKODHF_HJAFFFHOEPA" => Some(Self::Hjafffhoepa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Miklejgbcbg { + HpRecover = 0, + HpDecrease = 1, + HpReplace = 2, +} +impl Miklejgbcbg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HpRecover => "MIKLEJGBCBG_HP_RECOVER", + Self::HpDecrease => "MIKLEJGBCBG_HP_DECREASE", + Self::HpReplace => "MIKLEJGBCBG_HP_REPLACE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MIKLEJGBCBG_HP_RECOVER" => Some(Self::HpRecover), + "MIKLEJGBCBG_HP_DECREASE" => Some(Self::HpDecrease), + "MIKLEJGBCBG_HP_REPLACE" => Some(Self::HpReplace), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Knpmmjigemp { + Mohbpnomhpb = 0, +} +impl Knpmmjigemp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mohbpnomhpb => "KNPMMJIGEMP_MOHBPNOMHPB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KNPMMJIGEMP_MOHBPNOMHPB" => Some(Self::Mohbpnomhpb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gakpepecijl { + TriggerPosition = 0, + Player = 1, + Center = 2, + CustomBound = 3, + Back = 4, +} +impl Gakpepecijl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::TriggerPosition => "GAKPEPECIJL_TRIGGER_POSITION", + Self::Player => "GAKPEPECIJL_PLAYER", + Self::Center => "GAKPEPECIJL_CENTER", + Self::CustomBound => "GAKPEPECIJL_CUSTOM_BOUND", + Self::Back => "GAKPEPECIJL_BACK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GAKPEPECIJL_TRIGGER_POSITION" => Some(Self::TriggerPosition), + "GAKPEPECIJL_PLAYER" => Some(Self::Player), + "GAKPEPECIJL_CENTER" => Some(Self::Center), + "GAKPEPECIJL_CUSTOM_BOUND" => Some(Self::CustomBound), + "GAKPEPECIJL_BACK" => Some(Self::Back), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ckgpkfdgenh { + OptionIconModeSingle = 0, + OptionIconModeAdd = 1, + OptionIconModeReplace = 2, + OptionIconModeReduce = 3, + OptionIconModeSuit = 4, + OptionIconModeSwitch = 5, + OptionIconModeUpgrade = 6, +} +impl Ckgpkfdgenh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::OptionIconModeSingle => "CKGPKFDGENH_OPTION_ICON_MODE_SINGLE", + Self::OptionIconModeAdd => "CKGPKFDGENH_OPTION_ICON_MODE_ADD", + Self::OptionIconModeReplace => "CKGPKFDGENH_OPTION_ICON_MODE_REPLACE", + Self::OptionIconModeReduce => "CKGPKFDGENH_OPTION_ICON_MODE_REDUCE", + Self::OptionIconModeSuit => "CKGPKFDGENH_OPTION_ICON_MODE_SUIT", + Self::OptionIconModeSwitch => "CKGPKFDGENH_OPTION_ICON_MODE_SWITCH", + Self::OptionIconModeUpgrade => "CKGPKFDGENH_OPTION_ICON_MODE_UPGRADE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CKGPKFDGENH_OPTION_ICON_MODE_SINGLE" => Some(Self::OptionIconModeSingle), + "CKGPKFDGENH_OPTION_ICON_MODE_ADD" => Some(Self::OptionIconModeAdd), + "CKGPKFDGENH_OPTION_ICON_MODE_REPLACE" => Some(Self::OptionIconModeReplace), + "CKGPKFDGENH_OPTION_ICON_MODE_REDUCE" => Some(Self::OptionIconModeReduce), + "CKGPKFDGENH_OPTION_ICON_MODE_SUIT" => Some(Self::OptionIconModeSuit), + "CKGPKFDGENH_OPTION_ICON_MODE_SWITCH" => Some(Self::OptionIconModeSwitch), + "CKGPKFDGENH_OPTION_ICON_MODE_UPGRADE" => Some(Self::OptionIconModeUpgrade), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Helikcgoekb { + Ejopndldnml = 0, + Nooggbkebdc = 1, + Dnfnooahime = 2, + Bbgmnbjnfjd = 3, + Kbfinahgpaj = 4, + Eckihhjejcc = 5, +} +impl Helikcgoekb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ejopndldnml => "HELIKCGOEKB_EJOPNDLDNML", + Self::Nooggbkebdc => "HELIKCGOEKB_NOOGGBKEBDC", + Self::Dnfnooahime => "HELIKCGOEKB_DNFNOOAHIME", + Self::Bbgmnbjnfjd => "HELIKCGOEKB_BBGMNBJNFJD", + Self::Kbfinahgpaj => "HELIKCGOEKB_KBFINAHGPAJ", + Self::Eckihhjejcc => "HELIKCGOEKB_ECKIHHJEJCC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HELIKCGOEKB_EJOPNDLDNML" => Some(Self::Ejopndldnml), + "HELIKCGOEKB_NOOGGBKEBDC" => Some(Self::Nooggbkebdc), + "HELIKCGOEKB_DNFNOOAHIME" => Some(Self::Dnfnooahime), + "HELIKCGOEKB_BBGMNBJNFJD" => Some(Self::Bbgmnbjnfjd), + "HELIKCGOEKB_KBFINAHGPAJ" => Some(Self::Kbfinahgpaj), + "HELIKCGOEKB_ECKIHHJEJCC" => Some(Self::Eckihhjejcc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Linpmemkpoc { + Ejajbhhkldd = 0, + Bkekbgjghoh = 1, + Olfpeifcbon = 2, +} +impl Linpmemkpoc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ejajbhhkldd => "LINPMEMKPOC_EJAJBHHKLDD", + Self::Bkekbgjghoh => "LINPMEMKPOC_BKEKBGJGHOH", + Self::Olfpeifcbon => "LINPMEMKPOC_OLFPEIFCBON", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LINPMEMKPOC_EJAJBHHKLDD" => Some(Self::Ejajbhhkldd), + "LINPMEMKPOC_BKEKBGJGHOH" => Some(Self::Bkekbgjghoh), + "LINPMEMKPOC_OLFPEIFCBON" => Some(Self::Olfpeifcbon), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ehkdbojpbha { + Efhdecohcno = 0, +} +impl Ehkdbojpbha { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Efhdecohcno => "EHKDBOJPBHA_EFHDECOHCNO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EHKDBOJPBHA_EFHDECOHCNO" => Some(Self::Efhdecohcno), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Meadbapniao { + Liilanbbhfe = 0, + Jljnpkkiobl = 1, + Gnkfcgppdhn = 2, + Oocalenelac = 3, + Gjmominndjg = 4, + Fianibioekl = 5, + Dpopcgkmkja = 6, + Dgofcheoddi = 7, + Igdjlnjjgca = 8, + Dlpakhmnbde = 9, + Ecloonobpei = 10, +} +impl Meadbapniao { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Liilanbbhfe => "MEADBAPNIAO_LIILANBBHFE", + Self::Jljnpkkiobl => "MEADBAPNIAO_JLJNPKKIOBL", + Self::Gnkfcgppdhn => "MEADBAPNIAO_GNKFCGPPDHN", + Self::Oocalenelac => "MEADBAPNIAO_OOCALENELAC", + Self::Gjmominndjg => "MEADBAPNIAO_GJMOMINNDJG", + Self::Fianibioekl => "MEADBAPNIAO_FIANIBIOEKL", + Self::Dpopcgkmkja => "MEADBAPNIAO_DPOPCGKMKJA", + Self::Dgofcheoddi => "MEADBAPNIAO_DGOFCHEODDI", + Self::Igdjlnjjgca => "MEADBAPNIAO_IGDJLNJJGCA", + Self::Dlpakhmnbde => "MEADBAPNIAO_DLPAKHMNBDE", + Self::Ecloonobpei => "MEADBAPNIAO_ECLOONOBPEI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MEADBAPNIAO_LIILANBBHFE" => Some(Self::Liilanbbhfe), + "MEADBAPNIAO_JLJNPKKIOBL" => Some(Self::Jljnpkkiobl), + "MEADBAPNIAO_GNKFCGPPDHN" => Some(Self::Gnkfcgppdhn), + "MEADBAPNIAO_OOCALENELAC" => Some(Self::Oocalenelac), + "MEADBAPNIAO_GJMOMINNDJG" => Some(Self::Gjmominndjg), + "MEADBAPNIAO_FIANIBIOEKL" => Some(Self::Fianibioekl), + "MEADBAPNIAO_DPOPCGKMKJA" => Some(Self::Dpopcgkmkja), + "MEADBAPNIAO_DGOFCHEODDI" => Some(Self::Dgofcheoddi), + "MEADBAPNIAO_IGDJLNJJGCA" => Some(Self::Igdjlnjjgca), + "MEADBAPNIAO_DLPAKHMNBDE" => Some(Self::Dlpakhmnbde), + "MEADBAPNIAO_ECLOONOBPEI" => Some(Self::Ecloonobpei), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lnopafgmdnb { + LinkEventModifyPush = 0, + LinkEventModifyBreak = 1, +} +impl Lnopafgmdnb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::LinkEventModifyPush => "LNOPAFGMDNB_LINK_EVENT_MODIFY_PUSH", + Self::LinkEventModifyBreak => "LNOPAFGMDNB_LINK_EVENT_MODIFY_BREAK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LNOPAFGMDNB_LINK_EVENT_MODIFY_PUSH" => Some(Self::LinkEventModifyPush), + "LNOPAFGMDNB_LINK_EVENT_MODIFY_BREAK" => Some(Self::LinkEventModifyBreak), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum DirectType { + DirectTypeNone = 0, + DirectUp = 1, + DirectDown = 2, + ChangeGrid = 3, + SwitchChessUp = 4, + SwitchChessDown = 5, + BigTvEnter = 6, + BigTvExit = 7, + ResetGrid = 8, + Repair = 9, + TimeRewindEnter = 10, + TimeRewindExit = 11, + TimeSegmentEnter = 12, + RepairExit = 13, +} +impl DirectType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::DirectTypeNone => "DirectType_DIRECT_TYPE_NONE", + Self::DirectUp => "DirectType_DIRECT_UP", + Self::DirectDown => "DirectType_DIRECT_DOWN", + Self::ChangeGrid => "DirectType_CHANGE_GRID", + Self::SwitchChessUp => "DirectType_SWITCH_CHESS_UP", + Self::SwitchChessDown => "DirectType_SWITCH_CHESS_DOWN", + Self::BigTvEnter => "DirectType_BIG_TV_ENTER", + Self::BigTvExit => "DirectType_BIG_TV_EXIT", + Self::ResetGrid => "DirectType_RESET_GRID", + Self::Repair => "DirectType_REPAIR", + Self::TimeRewindEnter => "DirectType_TIME_REWIND_ENTER", + Self::TimeRewindExit => "DirectType_TIME_REWIND_EXIT", + Self::TimeSegmentEnter => "DirectType_TIME_SEGMENT_ENTER", + Self::RepairExit => "DirectType_REPAIR_EXIT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DirectType_DIRECT_TYPE_NONE" => Some(Self::DirectTypeNone), + "DirectType_DIRECT_UP" => Some(Self::DirectUp), + "DirectType_DIRECT_DOWN" => Some(Self::DirectDown), + "DirectType_CHANGE_GRID" => Some(Self::ChangeGrid), + "DirectType_SWITCH_CHESS_UP" => Some(Self::SwitchChessUp), + "DirectType_SWITCH_CHESS_DOWN" => Some(Self::SwitchChessDown), + "DirectType_BIG_TV_ENTER" => Some(Self::BigTvEnter), + "DirectType_BIG_TV_EXIT" => Some(Self::BigTvExit), + "DirectType_RESET_GRID" => Some(Self::ResetGrid), + "DirectType_REPAIR" => Some(Self::Repair), + "DirectType_TIME_REWIND_ENTER" => Some(Self::TimeRewindEnter), + "DirectType_TIME_REWIND_EXIT" => Some(Self::TimeRewindExit), + "DirectType_TIME_SEGMENT_ENTER" => Some(Self::TimeSegmentEnter), + "DirectType_REPAIR_EXIT" => Some(Self::RepairExit), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Amnmghphfio { + Abhhecjfmnf = 0, + Nbajoohfabj = 1, + Mgcnfkafkid = 2, +} +impl Amnmghphfio { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Abhhecjfmnf => "AMNMGHPHFIO_ABHHECJFMNF", + Self::Nbajoohfabj => "AMNMGHPHFIO_NBAJOOHFABJ", + Self::Mgcnfkafkid => "AMNMGHPHFIO_MGCNFKAFKID", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AMNMGHPHFIO_ABHHECJFMNF" => Some(Self::Abhhecjfmnf), + "AMNMGHPHFIO_NBAJOOHFABJ" => Some(Self::Nbajoohfabj), + "AMNMGHPHFIO_MGCNFKAFKID" => Some(Self::Mgcnfkafkid), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Olgefppegjd { + HollowEventTypeNone = 0, + HollowEventTypeAll = 1, + Begin = 10, + End = 20, + InteractEnd = 21, + BattleEnd = 22, + ChangeLevelInteract = 23, + ChangeLevelFight = 24, + Battle = 30, + BattleNormal = 31, + BattleElite = 32, + BattleBoss = 33, + HollowEventTypeDialog = 40, + DialogPositive = 41, + DialogNegative = 42, + DialogSpecial = 43, +} +impl Olgefppegjd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowEventTypeNone => "OLGEFPPEGJD_HOLLOW_EVENT_TYPE_NONE", + Self::HollowEventTypeAll => "OLGEFPPEGJD_HOLLOW_EVENT_TYPE_ALL", + Self::Begin => "OLGEFPPEGJD_BEGIN", + Self::End => "OLGEFPPEGJD_END", + Self::InteractEnd => "OLGEFPPEGJD_INTERACT_END", + Self::BattleEnd => "OLGEFPPEGJD_BATTLE_END", + Self::ChangeLevelInteract => "OLGEFPPEGJD_CHANGE_LEVEL_INTERACT", + Self::ChangeLevelFight => "OLGEFPPEGJD_CHANGE_LEVEL_FIGHT", + Self::Battle => "OLGEFPPEGJD_BATTLE", + Self::BattleNormal => "OLGEFPPEGJD_BATTLE_NORMAL", + Self::BattleElite => "OLGEFPPEGJD_BATTLE_ELITE", + Self::BattleBoss => "OLGEFPPEGJD_BATTLE_BOSS", + Self::HollowEventTypeDialog => "OLGEFPPEGJD_HOLLOW_EVENT_TYPE_DIALOG", + Self::DialogPositive => "OLGEFPPEGJD_DIALOG_POSITIVE", + Self::DialogNegative => "OLGEFPPEGJD_DIALOG_NEGATIVE", + Self::DialogSpecial => "OLGEFPPEGJD_DIALOG_SPECIAL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OLGEFPPEGJD_HOLLOW_EVENT_TYPE_NONE" => Some(Self::HollowEventTypeNone), + "OLGEFPPEGJD_HOLLOW_EVENT_TYPE_ALL" => Some(Self::HollowEventTypeAll), + "OLGEFPPEGJD_BEGIN" => Some(Self::Begin), + "OLGEFPPEGJD_END" => Some(Self::End), + "OLGEFPPEGJD_INTERACT_END" => Some(Self::InteractEnd), + "OLGEFPPEGJD_BATTLE_END" => Some(Self::BattleEnd), + "OLGEFPPEGJD_CHANGE_LEVEL_INTERACT" => Some(Self::ChangeLevelInteract), + "OLGEFPPEGJD_CHANGE_LEVEL_FIGHT" => Some(Self::ChangeLevelFight), + "OLGEFPPEGJD_BATTLE" => Some(Self::Battle), + "OLGEFPPEGJD_BATTLE_NORMAL" => Some(Self::BattleNormal), + "OLGEFPPEGJD_BATTLE_ELITE" => Some(Self::BattleElite), + "OLGEFPPEGJD_BATTLE_BOSS" => Some(Self::BattleBoss), + "OLGEFPPEGJD_HOLLOW_EVENT_TYPE_DIALOG" => Some(Self::HollowEventTypeDialog), + "OLGEFPPEGJD_DIALOG_POSITIVE" => Some(Self::DialogPositive), + "OLGEFPPEGJD_DIALOG_NEGATIVE" => Some(Self::DialogNegative), + "OLGEFPPEGJD_DIALOG_SPECIAL" => Some(Self::DialogSpecial), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Edbpkikkkpa { + Hmblgojahha = 0, + Nobllbmpcjj = 1, +} +impl Edbpkikkkpa { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hmblgojahha => "EDBPKIKKKPA_HMBLGOJAHHA", + Self::Nobllbmpcjj => "EDBPKIKKKPA_NOBLLBMPCJJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EDBPKIKKKPA_HMBLGOJAHHA" => Some(Self::Hmblgojahha), + "EDBPKIKKKPA_NOBLLBMPCJJ" => Some(Self::Nobllbmpcjj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kaogepncedd { + Kfmhdkabeml = 0, + Pahekkddpnl = 1, + Ggpbpdnlckf = 2, +} +impl Kaogepncedd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kfmhdkabeml => "KAOGEPNCEDD_KFMHDKABEML", + Self::Pahekkddpnl => "KAOGEPNCEDD_PAHEKKDDPNL", + Self::Ggpbpdnlckf => "KAOGEPNCEDD_GGPBPDNLCKF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KAOGEPNCEDD_KFMHDKABEML" => Some(Self::Kfmhdkabeml), + "KAOGEPNCEDD_PAHEKKDDPNL" => Some(Self::Pahekkddpnl), + "KAOGEPNCEDD_GGPBPDNLCKF" => Some(Self::Ggpbpdnlckf), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nhekhffgfoe { + Oegbigbjnbb = 0, + Aifaihidaoh = 1, + Nmdckmdklki = 2, + Ageceagippg = 3, +} +impl Nhekhffgfoe { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Oegbigbjnbb => "NHEKHFFGFOE_OEGBIGBJNBB", + Self::Aifaihidaoh => "NHEKHFFGFOE_AIFAIHIDAOH", + Self::Nmdckmdklki => "NHEKHFFGFOE_NMDCKMDKLKI", + Self::Ageceagippg => "NHEKHFFGFOE_AGECEAGIPPG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NHEKHFFGFOE_OEGBIGBJNBB" => Some(Self::Oegbigbjnbb), + "NHEKHFFGFOE_AIFAIHIDAOH" => Some(Self::Aifaihidaoh), + "NHEKHFFGFOE_NMDCKMDKLKI" => Some(Self::Nmdckmdklki), + "NHEKHFFGFOE_AGECEAGIPPG" => Some(Self::Ageceagippg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ikbonkbkbcj { + Ekddcjkbmld = 0, +} +impl Ikbonkbkbcj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ekddcjkbmld => "IKBONKBKBCJ_EKDDCJKBMLD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IKBONKBKBCJ_EKDDCJKBMLD" => Some(Self::Ekddcjkbmld), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gfapaacbane { + Dfhghdmlmnp = 0, + Ackmeolmkgd = 1, + Llabpdjonph = 2, +} +impl Gfapaacbane { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dfhghdmlmnp => "GFAPAACBANE_DFHGHDMLMNP", + Self::Ackmeolmkgd => "GFAPAACBANE_ACKMEOLMKGD", + Self::Llabpdjonph => "GFAPAACBANE_LLABPDJONPH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GFAPAACBANE_DFHGHDMLMNP" => Some(Self::Dfhghdmlmnp), + "GFAPAACBANE_ACKMEOLMKGD" => Some(Self::Ackmeolmkgd), + "GFAPAACBANE_LLABPDJONPH" => Some(Self::Llabpdjonph), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bjbngoadfen { + Iakcmnijpdn = 0, + Odaioabnnmh = 1, + Jiafbfoenag = 2, + Eheoblcbpck = 4, + Leocmlikinc = 8, + Kafifhncnom = 16, + Nkabgebimjk = 32, + Fhdlkacpjma = 64, + Fjmjobiefim = 128, + Nnmcgekodap = 256, + Ndehbfjjepk = 512, + Kgflnamkdaf = 1024, + Klofkjdekgc = 2048, + Epjbodblgof = 4096, + Aglmgocelhk = 8192, + Coopdkkaono = 16384, + Hclmehembgk = 32768, + Ccjmgplijbf = 65536, + Dahmdbndodl = 131072, + Ememgkljedc = 262144, + Gohakmaobok = 524288, + Lojhkejdjgm = 1048576, + Ccilncafmcp = 2097152, + Mbkjdkedllc = 4194304, + Ighfgdhjcgf = 8388608, + Nmnjnhakjno = 16777216, + Pecgdpnbngk = 33554432, +} +impl Bjbngoadfen { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Iakcmnijpdn => "BJBNGOADFEN_IAKCMNIJPDN", + Self::Odaioabnnmh => "BJBNGOADFEN_ODAIOABNNMH", + Self::Jiafbfoenag => "BJBNGOADFEN_JIAFBFOENAG", + Self::Eheoblcbpck => "BJBNGOADFEN_EHEOBLCBPCK", + Self::Leocmlikinc => "BJBNGOADFEN_LEOCMLIKINC", + Self::Kafifhncnom => "BJBNGOADFEN_KAFIFHNCNOM", + Self::Nkabgebimjk => "BJBNGOADFEN_NKABGEBIMJK", + Self::Fhdlkacpjma => "BJBNGOADFEN_FHDLKACPJMA", + Self::Fjmjobiefim => "BJBNGOADFEN_FJMJOBIEFIM", + Self::Nnmcgekodap => "BJBNGOADFEN_NNMCGEKODAP", + Self::Ndehbfjjepk => "BJBNGOADFEN_NDEHBFJJEPK", + Self::Kgflnamkdaf => "BJBNGOADFEN_KGFLNAMKDAF", + Self::Klofkjdekgc => "BJBNGOADFEN_KLOFKJDEKGC", + Self::Epjbodblgof => "BJBNGOADFEN_EPJBODBLGOF", + Self::Aglmgocelhk => "BJBNGOADFEN_AGLMGOCELHK", + Self::Coopdkkaono => "BJBNGOADFEN_COOPDKKAONO", + Self::Hclmehembgk => "BJBNGOADFEN_HCLMEHEMBGK", + Self::Ccjmgplijbf => "BJBNGOADFEN_CCJMGPLIJBF", + Self::Dahmdbndodl => "BJBNGOADFEN_DAHMDBNDODL", + Self::Ememgkljedc => "BJBNGOADFEN_EMEMGKLJEDC", + Self::Gohakmaobok => "BJBNGOADFEN_GOHAKMAOBOK", + Self::Lojhkejdjgm => "BJBNGOADFEN_LOJHKEJDJGM", + Self::Ccilncafmcp => "BJBNGOADFEN_CCILNCAFMCP", + Self::Mbkjdkedllc => "BJBNGOADFEN_MBKJDKEDLLC", + Self::Ighfgdhjcgf => "BJBNGOADFEN_IGHFGDHJCGF", + Self::Nmnjnhakjno => "BJBNGOADFEN_NMNJNHAKJNO", + Self::Pecgdpnbngk => "BJBNGOADFEN_PECGDPNBNGK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BJBNGOADFEN_IAKCMNIJPDN" => Some(Self::Iakcmnijpdn), + "BJBNGOADFEN_ODAIOABNNMH" => Some(Self::Odaioabnnmh), + "BJBNGOADFEN_JIAFBFOENAG" => Some(Self::Jiafbfoenag), + "BJBNGOADFEN_EHEOBLCBPCK" => Some(Self::Eheoblcbpck), + "BJBNGOADFEN_LEOCMLIKINC" => Some(Self::Leocmlikinc), + "BJBNGOADFEN_KAFIFHNCNOM" => Some(Self::Kafifhncnom), + "BJBNGOADFEN_NKABGEBIMJK" => Some(Self::Nkabgebimjk), + "BJBNGOADFEN_FHDLKACPJMA" => Some(Self::Fhdlkacpjma), + "BJBNGOADFEN_FJMJOBIEFIM" => Some(Self::Fjmjobiefim), + "BJBNGOADFEN_NNMCGEKODAP" => Some(Self::Nnmcgekodap), + "BJBNGOADFEN_NDEHBFJJEPK" => Some(Self::Ndehbfjjepk), + "BJBNGOADFEN_KGFLNAMKDAF" => Some(Self::Kgflnamkdaf), + "BJBNGOADFEN_KLOFKJDEKGC" => Some(Self::Klofkjdekgc), + "BJBNGOADFEN_EPJBODBLGOF" => Some(Self::Epjbodblgof), + "BJBNGOADFEN_AGLMGOCELHK" => Some(Self::Aglmgocelhk), + "BJBNGOADFEN_COOPDKKAONO" => Some(Self::Coopdkkaono), + "BJBNGOADFEN_HCLMEHEMBGK" => Some(Self::Hclmehembgk), + "BJBNGOADFEN_CCJMGPLIJBF" => Some(Self::Ccjmgplijbf), + "BJBNGOADFEN_DAHMDBNDODL" => Some(Self::Dahmdbndodl), + "BJBNGOADFEN_EMEMGKLJEDC" => Some(Self::Ememgkljedc), + "BJBNGOADFEN_GOHAKMAOBOK" => Some(Self::Gohakmaobok), + "BJBNGOADFEN_LOJHKEJDJGM" => Some(Self::Lojhkejdjgm), + "BJBNGOADFEN_CCILNCAFMCP" => Some(Self::Ccilncafmcp), + "BJBNGOADFEN_MBKJDKEDLLC" => Some(Self::Mbkjdkedllc), + "BJBNGOADFEN_IGHFGDHJCGF" => Some(Self::Ighfgdhjcgf), + "BJBNGOADFEN_NMNJNHAKJNO" => Some(Self::Nmnjnhakjno), + "BJBNGOADFEN_PECGDPNBNGK" => Some(Self::Pecgdpnbngk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Iidhiaefppg { + Pbopejniinb = 0, +} +impl Iidhiaefppg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Pbopejniinb => "IIDHIAEFPPG_PBOPEJNIINB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IIDHIAEFPPG_PBOPEJNIINB" => Some(Self::Pbopejniinb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ndlifccmamp { + Kfpkjfjinee = 0, + Jpdikehoiob = 1, + Pjmmmjfdfee = 2, + Bfkoooenmoh = 3, +} +impl Ndlifccmamp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kfpkjfjinee => "NDLIFCCMAMP_KFPKJFJINEE", + Self::Jpdikehoiob => "NDLIFCCMAMP_JPDIKEHOIOB", + Self::Pjmmmjfdfee => "NDLIFCCMAMP_PJMMMJFDFEE", + Self::Bfkoooenmoh => "NDLIFCCMAMP_BFKOOOENMOH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NDLIFCCMAMP_KFPKJFJINEE" => Some(Self::Kfpkjfjinee), + "NDLIFCCMAMP_JPDIKEHOIOB" => Some(Self::Jpdikehoiob), + "NDLIFCCMAMP_PJMMMJFDFEE" => Some(Self::Pjmmmjfdfee), + "NDLIFCCMAMP_BFKOOOENMOH" => Some(Self::Bfkoooenmoh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dfhicpceahg { + Bjadellniih = 0, + Efgmboldacp = 1, + Ihhjflingfg = 2, +} +impl Dfhicpceahg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bjadellniih => "DFHICPCEAHG_BJADELLNIIH", + Self::Efgmboldacp => "DFHICPCEAHG_EFGMBOLDACP", + Self::Ihhjflingfg => "DFHICPCEAHG_IHHJFLINGFG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DFHICPCEAHG_BJADELLNIIH" => Some(Self::Bjadellniih), + "DFHICPCEAHG_EFGMBOLDACP" => Some(Self::Efgmboldacp), + "DFHICPCEAHG_IHHJFLINGFG" => Some(Self::Ihhjflingfg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fpnfdbadpaf { + Hgffdcphkda = 0, + Nhbgeeccbke = 1, + Dnpmgomegmj = 2, + Dpdhcndnemp = 3, + Mbbokndohaf = 4, + Lpdallfohlb = 5, +} +impl Fpnfdbadpaf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hgffdcphkda => "FPNFDBADPAF_HGFFDCPHKDA", + Self::Nhbgeeccbke => "FPNFDBADPAF_NHBGEECCBKE", + Self::Dnpmgomegmj => "FPNFDBADPAF_DNPMGOMEGMJ", + Self::Dpdhcndnemp => "FPNFDBADPAF_DPDHCNDNEMP", + Self::Mbbokndohaf => "FPNFDBADPAF_MBBOKNDOHAF", + Self::Lpdallfohlb => "FPNFDBADPAF_LPDALLFOHLB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FPNFDBADPAF_HGFFDCPHKDA" => Some(Self::Hgffdcphkda), + "FPNFDBADPAF_NHBGEECCBKE" => Some(Self::Nhbgeeccbke), + "FPNFDBADPAF_DNPMGOMEGMJ" => Some(Self::Dnpmgomegmj), + "FPNFDBADPAF_DPDHCNDNEMP" => Some(Self::Dpdhcndnemp), + "FPNFDBADPAF_MBBOKNDOHAF" => Some(Self::Mbbokndohaf), + "FPNFDBADPAF_LPDALLFOHLB" => Some(Self::Lpdallfohlb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nclgdbgdckd { + Relative = 0, + Absolute = 1, + EventPos = 2, + HollowNpcPos = 3, +} +impl Nclgdbgdckd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Relative => "NCLGDBGDCKD_RELATIVE", + Self::Absolute => "NCLGDBGDCKD_ABSOLUTE", + Self::EventPos => "NCLGDBGDCKD_EVENT_POS", + Self::HollowNpcPos => "NCLGDBGDCKD_HOLLOW_NPC_POS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NCLGDBGDCKD_RELATIVE" => Some(Self::Relative), + "NCLGDBGDCKD_ABSOLUTE" => Some(Self::Absolute), + "NCLGDBGDCKD_EVENT_POS" => Some(Self::EventPos), + "NCLGDBGDCKD_HOLLOW_NPC_POS" => Some(Self::HollowNpcPos), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Edfchgphhan { + Nnfbgmakcia = 0, + Hjeklpbpijf = 1, + Jofkacboiin = 2, +} +impl Edfchgphhan { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nnfbgmakcia => "EDFCHGPHHAN_NNFBGMAKCIA", + Self::Hjeklpbpijf => "EDFCHGPHHAN_HJEKLPBPIJF", + Self::Jofkacboiin => "EDFCHGPHHAN_JOFKACBOIIN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EDFCHGPHHAN_NNFBGMAKCIA" => Some(Self::Nnfbgmakcia), + "EDFCHGPHHAN_HJEKLPBPIJF" => Some(Self::Hjeklpbpijf), + "EDFCHGPHHAN_JOFKACBOIIN" => Some(Self::Jofkacboiin), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Geadfceeeei { + Gldkoleaopl = 0, + Gibgjoejcmg = 1, +} +impl Geadfceeeei { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gldkoleaopl => "GEADFCEEEEI_GLDKOLEAOPL", + Self::Gibgjoejcmg => "GEADFCEEEEI_GIBGJOEJCMG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GEADFCEEEEI_GLDKOLEAOPL" => Some(Self::Gldkoleaopl), + "GEADFCEEEEI_GIBGJOEJCMG" => Some(Self::Gibgjoejcmg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Edmihjgffpd { + MonsterWeaknessDefault = 0, + MonsterWeaknessPhysics = 200, + MonsterWeaknessFire = 201, + MonsterWeaknessIce = 202, + MonsterWeaknessElec = 203, + MonsterWeaknessEther = 205, +} +impl Edmihjgffpd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::MonsterWeaknessDefault => "EDMIHJGFFPD_MONSTER_WEAKNESS_DEFAULT", + Self::MonsterWeaknessPhysics => "EDMIHJGFFPD_MONSTER_WEAKNESS_PHYSICS", + Self::MonsterWeaknessFire => "EDMIHJGFFPD_MONSTER_WEAKNESS_FIRE", + Self::MonsterWeaknessIce => "EDMIHJGFFPD_MONSTER_WEAKNESS_ICE", + Self::MonsterWeaknessElec => "EDMIHJGFFPD_MONSTER_WEAKNESS_ELEC", + Self::MonsterWeaknessEther => "EDMIHJGFFPD_MONSTER_WEAKNESS_ETHER", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EDMIHJGFFPD_MONSTER_WEAKNESS_DEFAULT" => Some(Self::MonsterWeaknessDefault), + "EDMIHJGFFPD_MONSTER_WEAKNESS_PHYSICS" => Some(Self::MonsterWeaknessPhysics), + "EDMIHJGFFPD_MONSTER_WEAKNESS_FIRE" => Some(Self::MonsterWeaknessFire), + "EDMIHJGFFPD_MONSTER_WEAKNESS_ICE" => Some(Self::MonsterWeaknessIce), + "EDMIHJGFFPD_MONSTER_WEAKNESS_ELEC" => Some(Self::MonsterWeaknessElec), + "EDMIHJGFFPD_MONSTER_WEAKNESS_ETHER" => Some(Self::MonsterWeaknessEther), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dflomoiiddm { + Chpggkaehod = 0, + Pojflddklco = 1, + Bhfdecjpdde = 2, +} +impl Dflomoiiddm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Chpggkaehod => "DFLOMOIIDDM_CHPGGKAEHOD", + Self::Pojflddklco => "DFLOMOIIDDM_POJFLDDKLCO", + Self::Bhfdecjpdde => "DFLOMOIIDDM_BHFDECJPDDE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DFLOMOIIDDM_CHPGGKAEHOD" => Some(Self::Chpggkaehod), + "DFLOMOIIDDM_POJFLDDKLCO" => Some(Self::Pojflddklco), + "DFLOMOIIDDM_BHFDECJPDDE" => Some(Self::Bhfdecjpdde), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hgaoeimcoki { + MonsterTypeTagDefault = 0, + MonsterTypeTagEther = 1, + MonsterTypeTagCorrupted = 2, + MonsterTypeTagNeps = 3, + MonsterTypeTagThug = 4, + MonsterTypeTagArmy = 5, + MonsterTypeTagEnergy = 6, +} +impl Hgaoeimcoki { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::MonsterTypeTagDefault => "HGAOEIMCOKI_MONSTER_TYPE_TAG_DEFAULT", + Self::MonsterTypeTagEther => "HGAOEIMCOKI_MONSTER_TYPE_TAG_ETHER", + Self::MonsterTypeTagCorrupted => "HGAOEIMCOKI_MONSTER_TYPE_TAG_CORRUPTED", + Self::MonsterTypeTagNeps => "HGAOEIMCOKI_MONSTER_TYPE_TAG_NEPS", + Self::MonsterTypeTagThug => "HGAOEIMCOKI_MONSTER_TYPE_TAG_THUG", + Self::MonsterTypeTagArmy => "HGAOEIMCOKI_MONSTER_TYPE_TAG_ARMY", + Self::MonsterTypeTagEnergy => "HGAOEIMCOKI_MONSTER_TYPE_TAG_ENERGY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HGAOEIMCOKI_MONSTER_TYPE_TAG_DEFAULT" => Some(Self::MonsterTypeTagDefault), + "HGAOEIMCOKI_MONSTER_TYPE_TAG_ETHER" => Some(Self::MonsterTypeTagEther), + "HGAOEIMCOKI_MONSTER_TYPE_TAG_CORRUPTED" => { + Some(Self::MonsterTypeTagCorrupted) + } + "HGAOEIMCOKI_MONSTER_TYPE_TAG_NEPS" => Some(Self::MonsterTypeTagNeps), + "HGAOEIMCOKI_MONSTER_TYPE_TAG_THUG" => Some(Self::MonsterTypeTagThug), + "HGAOEIMCOKI_MONSTER_TYPE_TAG_ARMY" => Some(Self::MonsterTypeTagArmy), + "HGAOEIMCOKI_MONSTER_TYPE_TAG_ENERGY" => Some(Self::MonsterTypeTagEnergy), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pfpbpppkpki { + Gmmgbbmiegk = 0, + Pcgkemahhbb = 1, + Afeoiaejame = 2, +} +impl Pfpbpppkpki { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gmmgbbmiegk => "PFPBPPPKPKI_GMMGBBMIEGK", + Self::Pcgkemahhbb => "PFPBPPPKPKI_PCGKEMAHHBB", + Self::Afeoiaejame => "PFPBPPPKPKI_AFEOIAEJAME", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PFPBPPPKPKI_GMMGBBMIEGK" => Some(Self::Gmmgbbmiegk), + "PFPBPPPKPKI_PCGKEMAHHBB" => Some(Self::Pcgkemahhbb), + "PFPBPPPKPKI_AFEOIAEJAME" => Some(Self::Afeoiaejame), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Fmhkgnnphak { + Cecgadbdnkn = 0, +} +impl Fmhkgnnphak { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cecgadbdnkn => "FMHKGNNPHAK_CECGADBDNKN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FMHKGNNPHAK_CECGADBDNKN" => Some(Self::Cecgadbdnkn), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Oafmokacndg { + Loadlimffon = 0, + Oepdnbllmjj = 1, +} +impl Oafmokacndg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Loadlimffon => "OAFMOKACNDG_LOADLIMFFON", + Self::Oepdnbllmjj => "OAFMOKACNDG_OEPDNBLLMJJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OAFMOKACNDG_LOADLIMFFON" => Some(Self::Loadlimffon), + "OAFMOKACNDG_OEPDNBLLMJJ" => Some(Self::Oepdnbllmjj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jcjjfbjecmj { + Ekfnkmccneg = 0, + Pbnbbmcgklk = 1, +} +impl Jcjjfbjecmj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ekfnkmccneg => "JCJJFBJECMJ_EKFNKMCCNEG", + Self::Pbnbbmcgklk => "JCJJFBJECMJ_PBNBBMCGKLK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JCJJFBJECMJ_EKFNKMCCNEG" => Some(Self::Ekfnkmccneg), + "JCJJFBJECMJ_PBNBBMCGKLK" => Some(Self::Pbnbbmcgklk), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Danchgbnfff { + Bafhghbhndj = 0, + Gbfmnfgfngn = 1, + Igpbfinfcfc = 2, + Gofkcfelpod = 3, + Laenjdafomo = 5, + Aoldjlcbjki = 6, + Pngokpidpee = 7, + Ohbjkhedjja = 8, + Dbplikpacld = 9, + Nmddajcnbkf = 10, + Dokhojhdhnj = 11, + Fomodmhngld = 12, + Bjfihoeaahd = 20, + Feneigmpnmc = 21, + Oekmangicco = 22, + Jfpfhhamfma = 23, + Bpcbddhgbjo = 31, + Abcilmllgdg = 32, +} +impl Danchgbnfff { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Bafhghbhndj => "DANCHGBNFFF_BAFHGHBHNDJ", + Self::Gbfmnfgfngn => "DANCHGBNFFF_GBFMNFGFNGN", + Self::Igpbfinfcfc => "DANCHGBNFFF_IGPBFINFCFC", + Self::Gofkcfelpod => "DANCHGBNFFF_GOFKCFELPOD", + Self::Laenjdafomo => "DANCHGBNFFF_LAENJDAFOMO", + Self::Aoldjlcbjki => "DANCHGBNFFF_AOLDJLCBJKI", + Self::Pngokpidpee => "DANCHGBNFFF_PNGOKPIDPEE", + Self::Ohbjkhedjja => "DANCHGBNFFF_OHBJKHEDJJA", + Self::Dbplikpacld => "DANCHGBNFFF_DBPLIKPACLD", + Self::Nmddajcnbkf => "DANCHGBNFFF_NMDDAJCNBKF", + Self::Dokhojhdhnj => "DANCHGBNFFF_DOKHOJHDHNJ", + Self::Fomodmhngld => "DANCHGBNFFF_FOMODMHNGLD", + Self::Bjfihoeaahd => "DANCHGBNFFF_BJFIHOEAAHD", + Self::Feneigmpnmc => "DANCHGBNFFF_FENEIGMPNMC", + Self::Oekmangicco => "DANCHGBNFFF_OEKMANGICCO", + Self::Jfpfhhamfma => "DANCHGBNFFF_JFPFHHAMFMA", + Self::Bpcbddhgbjo => "DANCHGBNFFF_BPCBDDHGBJO", + Self::Abcilmllgdg => "DANCHGBNFFF_ABCILMLLGDG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DANCHGBNFFF_BAFHGHBHNDJ" => Some(Self::Bafhghbhndj), + "DANCHGBNFFF_GBFMNFGFNGN" => Some(Self::Gbfmnfgfngn), + "DANCHGBNFFF_IGPBFINFCFC" => Some(Self::Igpbfinfcfc), + "DANCHGBNFFF_GOFKCFELPOD" => Some(Self::Gofkcfelpod), + "DANCHGBNFFF_LAENJDAFOMO" => Some(Self::Laenjdafomo), + "DANCHGBNFFF_AOLDJLCBJKI" => Some(Self::Aoldjlcbjki), + "DANCHGBNFFF_PNGOKPIDPEE" => Some(Self::Pngokpidpee), + "DANCHGBNFFF_OHBJKHEDJJA" => Some(Self::Ohbjkhedjja), + "DANCHGBNFFF_DBPLIKPACLD" => Some(Self::Dbplikpacld), + "DANCHGBNFFF_NMDDAJCNBKF" => Some(Self::Nmddajcnbkf), + "DANCHGBNFFF_DOKHOJHDHNJ" => Some(Self::Dokhojhdhnj), + "DANCHGBNFFF_FOMODMHNGLD" => Some(Self::Fomodmhngld), + "DANCHGBNFFF_BJFIHOEAAHD" => Some(Self::Bjfihoeaahd), + "DANCHGBNFFF_FENEIGMPNMC" => Some(Self::Feneigmpnmc), + "DANCHGBNFFF_OEKMANGICCO" => Some(Self::Oekmangicco), + "DANCHGBNFFF_JFPFHHAMFMA" => Some(Self::Jfpfhhamfma), + "DANCHGBNFFF_BPCBDDHGBJO" => Some(Self::Bpcbddhgbjo), + "DANCHGBNFFF_ABCILMLLGDG" => Some(Self::Abcilmllgdg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ckkdhehlmge { + Nchhoadcoha = 0, +} +impl Ckkdhehlmge { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nchhoadcoha => "CKKDHEHLMGE_NCHHOADCOHA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CKKDHEHLMGE_NCHHOADCOHA" => Some(Self::Nchhoadcoha), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Boanhbehjkl { + Knmelbfhchg = 0, + Manknfocnof = 1, + Odhlbinphop = 2, +} +impl Boanhbehjkl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Knmelbfhchg => "BOANHBEHJKL_KNMELBFHCHG", + Self::Manknfocnof => "BOANHBEHJKL_MANKNFOCNOF", + Self::Odhlbinphop => "BOANHBEHJKL_ODHLBINPHOP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BOANHBEHJKL_KNMELBFHCHG" => Some(Self::Knmelbfhchg), + "BOANHBEHJKL_MANKNFOCNOF" => Some(Self::Manknfocnof), + "BOANHBEHJKL_ODHLBINPHOP" => Some(Self::Odhlbinphop), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ooamhgibfgi { + EghmPositionTypeNone = 0, + EghmPositionTypeZero = 1, + EghmPositionTypeStart = 2, +} +impl Ooamhgibfgi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::EghmPositionTypeNone => "OOAMHGIBFGI_EGHM_POSITION_TYPE_NONE", + Self::EghmPositionTypeZero => "OOAMHGIBFGI_EGHM_POSITION_TYPE_ZERO", + Self::EghmPositionTypeStart => "OOAMHGIBFGI_EGHM_POSITION_TYPE_START", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OOAMHGIBFGI_EGHM_POSITION_TYPE_NONE" => Some(Self::EghmPositionTypeNone), + "OOAMHGIBFGI_EGHM_POSITION_TYPE_ZERO" => Some(Self::EghmPositionTypeZero), + "OOAMHGIBFGI_EGHM_POSITION_TYPE_START" => Some(Self::EghmPositionTypeStart), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ancipggcjbe { + Beiencaempd = 0, + Eoggapnkpkn = 1, + Fecpgjaaagm = 2, + Ekabbmodghg = 4, + Laccaddiona = 5, + Blapjfhmjbi = 6, +} +impl Ancipggcjbe { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Beiencaempd => "ANCIPGGCJBE_BEIENCAEMPD", + Self::Eoggapnkpkn => "ANCIPGGCJBE_EOGGAPNKPKN", + Self::Fecpgjaaagm => "ANCIPGGCJBE_FECPGJAAAGM", + Self::Ekabbmodghg => "ANCIPGGCJBE_EKABBMODGHG", + Self::Laccaddiona => "ANCIPGGCJBE_LACCADDIONA", + Self::Blapjfhmjbi => "ANCIPGGCJBE_BLAPJFHMJBI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ANCIPGGCJBE_BEIENCAEMPD" => Some(Self::Beiencaempd), + "ANCIPGGCJBE_EOGGAPNKPKN" => Some(Self::Eoggapnkpkn), + "ANCIPGGCJBE_FECPGJAAAGM" => Some(Self::Fecpgjaaagm), + "ANCIPGGCJBE_EKABBMODGHG" => Some(Self::Ekabbmodghg), + "ANCIPGGCJBE_LACCADDIONA" => Some(Self::Laccaddiona), + "ANCIPGGCJBE_BLAPJFHMJBI" => Some(Self::Blapjfhmjbi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum NodeState { + NodeStateAll = 0, + Locked = 1, + Unlocked = 2, + Finished = 3, + ShowEvent = 4, + Door = 5, + Brighten = 6, + Guide = 7, + Target = 8, + BrightenOnlyVisible = 9, + Unstable = 10, + Empty = 11, + LockedWithStamina = 14, + UnEmpty = 15, +} +impl NodeState { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::NodeStateAll => "NodeState_NODE_STATE_ALL", + Self::Locked => "NodeState_LOCKED", + Self::Unlocked => "NodeState_UNLOCKED", + Self::Finished => "NodeState_FINISHED", + Self::ShowEvent => "NodeState_SHOW_EVENT", + Self::Door => "NodeState_DOOR", + Self::Brighten => "NodeState_BRIGHTEN", + Self::Guide => "NodeState_GUIDE", + Self::Target => "NodeState_TARGET", + Self::BrightenOnlyVisible => "NodeState_BRIGHTEN_ONLY_VISIBLE", + Self::Unstable => "NodeState_UNSTABLE", + Self::Empty => "NodeState_EMPTY", + Self::LockedWithStamina => "NodeState_LOCKED_WITH_STAMINA", + Self::UnEmpty => "NodeState_UN_EMPTY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NodeState_NODE_STATE_ALL" => Some(Self::NodeStateAll), + "NodeState_LOCKED" => Some(Self::Locked), + "NodeState_UNLOCKED" => Some(Self::Unlocked), + "NodeState_FINISHED" => Some(Self::Finished), + "NodeState_SHOW_EVENT" => Some(Self::ShowEvent), + "NodeState_DOOR" => Some(Self::Door), + "NodeState_BRIGHTEN" => Some(Self::Brighten), + "NodeState_GUIDE" => Some(Self::Guide), + "NodeState_TARGET" => Some(Self::Target), + "NodeState_BRIGHTEN_ONLY_VISIBLE" => Some(Self::BrightenOnlyVisible), + "NodeState_UNSTABLE" => Some(Self::Unstable), + "NodeState_EMPTY" => Some(Self::Empty), + "NodeState_LOCKED_WITH_STAMINA" => Some(Self::LockedWithStamina), + "NodeState_UN_EMPTY" => Some(Self::UnEmpty), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cmokhjokfhd { + Heefhldgmmb = 0, + Miohigaonbi = 1, +} +impl Cmokhjokfhd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Heefhldgmmb => "CMOKHJOKFHD_HEEFHLDGMMB", + Self::Miohigaonbi => "CMOKHJOKFHD_MIOHIGAONBI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CMOKHJOKFHD_HEEFHLDGMMB" => Some(Self::Heefhldgmmb), + "CMOKHJOKFHD_MIOHIGAONBI" => Some(Self::Miohigaonbi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Gmmhjmbkhgl { + Epflhpiabfg = 0, + Nncbfbipbjm = 1, + Iikejlnjldl = 2, +} +impl Gmmhjmbkhgl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Epflhpiabfg => "GMMHJMBKHGL_EPFLHPIABFG", + Self::Nncbfbipbjm => "GMMHJMBKHGL_NNCBFBIPBJM", + Self::Iikejlnjldl => "GMMHJMBKHGL_IIKEJLNJLDL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GMMHJMBKHGL_EPFLHPIABFG" => Some(Self::Epflhpiabfg), + "GMMHJMBKHGL_NNCBFBIPBJM" => Some(Self::Nncbfbipbjm), + "GMMHJMBKHGL_IIKEJLNJLDL" => Some(Self::Iikejlnjldl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kfdggljgegf { + ClientHollowEntityTypeNone = 0, + ClientHollowEntityTypeNoninteractor = 1, +} +impl Kfdggljgegf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ClientHollowEntityTypeNone => { + "KFDGGLJGEGF_CLIENT_HOLLOW_ENTITY_TYPE_NONE" + } + Self::ClientHollowEntityTypeNoninteractor => { + "KFDGGLJGEGF_CLIENT_HOLLOW_ENTITY_TYPE_NONINTERACTOR" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KFDGGLJGEGF_CLIENT_HOLLOW_ENTITY_TYPE_NONE" => { + Some(Self::ClientHollowEntityTypeNone) + } + "KFDGGLJGEGF_CLIENT_HOLLOW_ENTITY_TYPE_NONINTERACTOR" => { + Some(Self::ClientHollowEntityTypeNoninteractor) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Djjhbjlmiol { + Ajjpemkkpek = 0, +} +impl Djjhbjlmiol { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ajjpemkkpek => "DJJHBJLMIOL_AJJPEMKKPEK", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DJJHBJLMIOL_AJJPEMKKPEK" => Some(Self::Ajjpemkkpek), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nkkbkcehgae { + AtNone = 0, + AtMain = 1, + AtNoMain = 2, + AtCreateMale = 3, + AtCreateFemale = 4, + AtMale = 2011, + AtFemale = 2021, +} +impl Nkkbkcehgae { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::AtNone => "NKKBKCEHGAE_AT_NONE", + Self::AtMain => "NKKBKCEHGAE_AT_MAIN", + Self::AtNoMain => "NKKBKCEHGAE_AT_NO_MAIN", + Self::AtCreateMale => "NKKBKCEHGAE_AT_CREATE_MALE", + Self::AtCreateFemale => "NKKBKCEHGAE_AT_CREATE_FEMALE", + Self::AtMale => "NKKBKCEHGAE_AT_MALE", + Self::AtFemale => "NKKBKCEHGAE_AT_FEMALE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NKKBKCEHGAE_AT_NONE" => Some(Self::AtNone), + "NKKBKCEHGAE_AT_MAIN" => Some(Self::AtMain), + "NKKBKCEHGAE_AT_NO_MAIN" => Some(Self::AtNoMain), + "NKKBKCEHGAE_AT_CREATE_MALE" => Some(Self::AtCreateMale), + "NKKBKCEHGAE_AT_CREATE_FEMALE" => Some(Self::AtCreateFemale), + "NKKBKCEHGAE_AT_MALE" => Some(Self::AtMale), + "NKKBKCEHGAE_AT_FEMALE" => Some(Self::AtFemale), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Aaohoilnebi { + Dganikcehpc = 0, +} +impl Aaohoilnebi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dganikcehpc => "AAOHOILNEBI_DGANIKCEHPC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AAOHOILNEBI_DGANIKCEHPC" => Some(Self::Dganikcehpc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Cpildpbcdjb { + Chpnmlkjcla = 0, + Bdfhefhiedi = 1, + Gkbkbcikhnm = 2, + Lkdeinjgdfm = 3, +} +impl Cpildpbcdjb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Chpnmlkjcla => "CPILDPBCDJB_CHPNMLKJCLA", + Self::Bdfhefhiedi => "CPILDPBCDJB_BDFHEFHIEDI", + Self::Gkbkbcikhnm => "CPILDPBCDJB_GKBKBCIKHNM", + Self::Lkdeinjgdfm => "CPILDPBCDJB_LKDEINJGDFM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CPILDPBCDJB_CHPNMLKJCLA" => Some(Self::Chpnmlkjcla), + "CPILDPBCDJB_BDFHEFHIEDI" => Some(Self::Bdfhefhiedi), + "CPILDPBCDJB_GKBKBCIKHNM" => Some(Self::Gkbkbcikhnm), + "CPILDPBCDJB_LKDEINJGDFM" => Some(Self::Lkdeinjgdfm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Inbcamdafnm { + Dlbjecjkmae = 0, + Lfkbgiokhgm = 1, + Aekhcbjaafn = 2, + Cnkjjddoaoa = 3, + Fjiefjjgjfe = 4, + Dakemeikghm = 5, +} +impl Inbcamdafnm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dlbjecjkmae => "INBCAMDAFNM_DLBJECJKMAE", + Self::Lfkbgiokhgm => "INBCAMDAFNM_LFKBGIOKHGM", + Self::Aekhcbjaafn => "INBCAMDAFNM_AEKHCBJAAFN", + Self::Cnkjjddoaoa => "INBCAMDAFNM_CNKJJDDOAOA", + Self::Fjiefjjgjfe => "INBCAMDAFNM_FJIEFJJGJFE", + Self::Dakemeikghm => "INBCAMDAFNM_DAKEMEIKGHM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "INBCAMDAFNM_DLBJECJKMAE" => Some(Self::Dlbjecjkmae), + "INBCAMDAFNM_LFKBGIOKHGM" => Some(Self::Lfkbgiokhgm), + "INBCAMDAFNM_AEKHCBJAAFN" => Some(Self::Aekhcbjaafn), + "INBCAMDAFNM_CNKJJDDOAOA" => Some(Self::Cnkjjddoaoa), + "INBCAMDAFNM_FJIEFJJGJFE" => Some(Self::Fjiefjjgjfe), + "INBCAMDAFNM_DAKEMEIKGHM" => Some(Self::Dakemeikghm), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nlelekfgenp { + Ailladkemaj = 0, + Cgkamndglab = 1, + Iephhamgdno = 2, + Eccjodgdlck = 3, + Inlebdhbgai = 4, + Cgbbcbedcmo = 5, + Ccocckpiahp = 6, + Hcedkmhbhkd = 7, + Mommhihbiak = 9, + Beadgfbehli = 10, +} +impl Nlelekfgenp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ailladkemaj => "NLELEKFGENP_AILLADKEMAJ", + Self::Cgkamndglab => "NLELEKFGENP_CGKAMNDGLAB", + Self::Iephhamgdno => "NLELEKFGENP_IEPHHAMGDNO", + Self::Eccjodgdlck => "NLELEKFGENP_ECCJODGDLCK", + Self::Inlebdhbgai => "NLELEKFGENP_INLEBDHBGAI", + Self::Cgbbcbedcmo => "NLELEKFGENP_CGBBCBEDCMO", + Self::Ccocckpiahp => "NLELEKFGENP_CCOCCKPIAHP", + Self::Hcedkmhbhkd => "NLELEKFGENP_HCEDKMHBHKD", + Self::Mommhihbiak => "NLELEKFGENP_MOMMHIHBIAK", + Self::Beadgfbehli => "NLELEKFGENP_BEADGFBEHLI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NLELEKFGENP_AILLADKEMAJ" => Some(Self::Ailladkemaj), + "NLELEKFGENP_CGKAMNDGLAB" => Some(Self::Cgkamndglab), + "NLELEKFGENP_IEPHHAMGDNO" => Some(Self::Iephhamgdno), + "NLELEKFGENP_ECCJODGDLCK" => Some(Self::Eccjodgdlck), + "NLELEKFGENP_INLEBDHBGAI" => Some(Self::Inlebdhbgai), + "NLELEKFGENP_CGBBCBEDCMO" => Some(Self::Cgbbcbedcmo), + "NLELEKFGENP_CCOCCKPIAHP" => Some(Self::Ccocckpiahp), + "NLELEKFGENP_HCEDKMHBHKD" => Some(Self::Hcedkmhbhkd), + "NLELEKFGENP_MOMMHIHBIAK" => Some(Self::Mommhihbiak), + "NLELEKFGENP_BEADGFBEHLI" => Some(Self::Beadgfbehli), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Giodjgjiefp { + Lhjmgockhhh = 0, +} +impl Giodjgjiefp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lhjmgockhhh => "GIODJGJIEFP_LHJMGOCKHHH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "GIODJGJIEFP_LHJMGOCKHHH" => Some(Self::Lhjmgockhhh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dlbfjikbcnb { + Kmkikgmcmff = 0, + Fmfjeamdlpo = 1, + Nhflnlkcppm = 2, + Hajbmpihaeg = 3, + Flfepjpbjin = 4, +} +impl Dlbfjikbcnb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kmkikgmcmff => "DLBFJIKBCNB_KMKIKGMCMFF", + Self::Fmfjeamdlpo => "DLBFJIKBCNB_FMFJEAMDLPO", + Self::Nhflnlkcppm => "DLBFJIKBCNB_NHFLNLKCPPM", + Self::Hajbmpihaeg => "DLBFJIKBCNB_HAJBMPIHAEG", + Self::Flfepjpbjin => "DLBFJIKBCNB_FLFEPJPBJIN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DLBFJIKBCNB_KMKIKGMCMFF" => Some(Self::Kmkikgmcmff), + "DLBFJIKBCNB_FMFJEAMDLPO" => Some(Self::Fmfjeamdlpo), + "DLBFJIKBCNB_NHFLNLKCPPM" => Some(Self::Nhflnlkcppm), + "DLBFJIKBCNB_HAJBMPIHAEG" => Some(Self::Hajbmpihaeg), + "DLBFJIKBCNB_FLFEPJPBJIN" => Some(Self::Flfepjpbjin), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nhnfpfmmpcg { + Jmdnfgepihg = 0, +} +impl Nhnfpfmmpcg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Jmdnfgepihg => "NHNFPFMMPCG_JMDNFGEPIHG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NHNFPFMMPCG_JMDNFGEPIHG" => Some(Self::Jmdnfgepihg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dilgiggdncg { + Cfijcpahnkn = 0, + Lceiapeapme = 1, + Afkokfdobmb = 2, +} +impl Dilgiggdncg { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cfijcpahnkn => "DILGIGGDNCG_CFIJCPAHNKN", + Self::Lceiapeapme => "DILGIGGDNCG_LCEIAPEAPME", + Self::Afkokfdobmb => "DILGIGGDNCG_AFKOKFDOBMB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DILGIGGDNCG_CFIJCPAHNKN" => Some(Self::Cfijcpahnkn), + "DILGIGGDNCG_LCEIAPEAPME" => Some(Self::Lceiapeapme), + "DILGIGGDNCG_AFKOKFDOBMB" => Some(Self::Afkokfdobmb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bdfmgdciobd { + Npbenjmahfc = 0, + Bckngeefnbg = 1, + Bdjkkdhejej = 3, + Gdaehhkchpk = 4, + Ammdhpjchoi = 5, + Kipgjmliahh = 6, + Mpdjamgolbc = 100, +} +impl Bdfmgdciobd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Npbenjmahfc => "BDFMGDCIOBD_NPBENJMAHFC", + Self::Bckngeefnbg => "BDFMGDCIOBD_BCKNGEEFNBG", + Self::Bdjkkdhejej => "BDFMGDCIOBD_BDJKKDHEJEJ", + Self::Gdaehhkchpk => "BDFMGDCIOBD_GDAEHHKCHPK", + Self::Ammdhpjchoi => "BDFMGDCIOBD_AMMDHPJCHOI", + Self::Kipgjmliahh => "BDFMGDCIOBD_KIPGJMLIAHH", + Self::Mpdjamgolbc => "BDFMGDCIOBD_MPDJAMGOLBC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BDFMGDCIOBD_NPBENJMAHFC" => Some(Self::Npbenjmahfc), + "BDFMGDCIOBD_BCKNGEEFNBG" => Some(Self::Bckngeefnbg), + "BDFMGDCIOBD_BDJKKDHEJEJ" => Some(Self::Bdjkkdhejej), + "BDFMGDCIOBD_GDAEHHKCHPK" => Some(Self::Gdaehhkchpk), + "BDFMGDCIOBD_AMMDHPJCHOI" => Some(Self::Ammdhpjchoi), + "BDFMGDCIOBD_KIPGJMLIAHH" => Some(Self::Kipgjmliahh), + "BDFMGDCIOBD_MPDJAMGOLBC" => Some(Self::Mpdjamgolbc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nfgpbhalbbk { + Kclgahblfcb = 0, + Plecpgghjih = 1, + Bfnohcemdom = 2, + Jamhejnhobf = 3, + Mmfelfcenmg = 4, + Iejilcncmga = 5, + Jfimifkjcpo = 6, +} +impl Nfgpbhalbbk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kclgahblfcb => "NFGPBHALBBK_KCLGAHBLFCB", + Self::Plecpgghjih => "NFGPBHALBBK_PLECPGGHJIH", + Self::Bfnohcemdom => "NFGPBHALBBK_BFNOHCEMDOM", + Self::Jamhejnhobf => "NFGPBHALBBK_JAMHEJNHOBF", + Self::Mmfelfcenmg => "NFGPBHALBBK_MMFELFCENMG", + Self::Iejilcncmga => "NFGPBHALBBK_IEJILCNCMGA", + Self::Jfimifkjcpo => "NFGPBHALBBK_JFIMIFKJCPO", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NFGPBHALBBK_KCLGAHBLFCB" => Some(Self::Kclgahblfcb), + "NFGPBHALBBK_PLECPGGHJIH" => Some(Self::Plecpgghjih), + "NFGPBHALBBK_BFNOHCEMDOM" => Some(Self::Bfnohcemdom), + "NFGPBHALBBK_JAMHEJNHOBF" => Some(Self::Jamhejnhobf), + "NFGPBHALBBK_MMFELFCENMG" => Some(Self::Mmfelfcenmg), + "NFGPBHALBBK_IEJILCNCMGA" => Some(Self::Iejilcncmga), + "NFGPBHALBBK_JFIMIFKJCPO" => Some(Self::Jfimifkjcpo), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jidjjlbcjmn { + Mnbmikejpoh = 0, + Bflbljdaejh = 1, + Namgkcadfic = 2, + Mcempbmogan = 10, + Ibogbkkknln = 100, + Jbmgncdggae = 101, + Lhonjdcnfho = 110, + Gjmclibommm = 111, + Pnnnmpggaij = 112, + Ohepimolnhm = 118, + Ceoadooejca = 119, + Ljccigpkbdf = 201, + Eidehlmjdoe = 417, + Ccgplaegbib = 419, + Ccpdmihkbpg = 421, + Bamjmojkdfc = 422, + Pbihikcljdg = 501, + Ibjlholfdfh = 503, + Eoallppfnch = 150201, + Dignkkaimbk = 3000001, + Meepabdgodo = 3000100, + Enhellkclfa = 3000101, +} +impl Jidjjlbcjmn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Mnbmikejpoh => "JIDJJLBCJMN_MNBMIKEJPOH", + Self::Bflbljdaejh => "JIDJJLBCJMN_BFLBLJDAEJH", + Self::Namgkcadfic => "JIDJJLBCJMN_NAMGKCADFIC", + Self::Mcempbmogan => "JIDJJLBCJMN_MCEMPBMOGAN", + Self::Ibogbkkknln => "JIDJJLBCJMN_IBOGBKKKNLN", + Self::Jbmgncdggae => "JIDJJLBCJMN_JBMGNCDGGAE", + Self::Lhonjdcnfho => "JIDJJLBCJMN_LHONJDCNFHO", + Self::Gjmclibommm => "JIDJJLBCJMN_GJMCLIBOMMM", + Self::Pnnnmpggaij => "JIDJJLBCJMN_PNNNMPGGAIJ", + Self::Ohepimolnhm => "JIDJJLBCJMN_OHEPIMOLNHM", + Self::Ceoadooejca => "JIDJJLBCJMN_CEOADOOEJCA", + Self::Ljccigpkbdf => "JIDJJLBCJMN_LJCCIGPKBDF", + Self::Eidehlmjdoe => "JIDJJLBCJMN_EIDEHLMJDOE", + Self::Ccgplaegbib => "JIDJJLBCJMN_CCGPLAEGBIB", + Self::Ccpdmihkbpg => "JIDJJLBCJMN_CCPDMIHKBPG", + Self::Bamjmojkdfc => "JIDJJLBCJMN_BAMJMOJKDFC", + Self::Pbihikcljdg => "JIDJJLBCJMN_PBIHIKCLJDG", + Self::Ibjlholfdfh => "JIDJJLBCJMN_IBJLHOLFDFH", + Self::Eoallppfnch => "JIDJJLBCJMN_EOALLPPFNCH", + Self::Dignkkaimbk => "JIDJJLBCJMN_DIGNKKAIMBK", + Self::Meepabdgodo => "JIDJJLBCJMN_MEEPABDGODO", + Self::Enhellkclfa => "JIDJJLBCJMN_ENHELLKCLFA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JIDJJLBCJMN_MNBMIKEJPOH" => Some(Self::Mnbmikejpoh), + "JIDJJLBCJMN_BFLBLJDAEJH" => Some(Self::Bflbljdaejh), + "JIDJJLBCJMN_NAMGKCADFIC" => Some(Self::Namgkcadfic), + "JIDJJLBCJMN_MCEMPBMOGAN" => Some(Self::Mcempbmogan), + "JIDJJLBCJMN_IBOGBKKKNLN" => Some(Self::Ibogbkkknln), + "JIDJJLBCJMN_JBMGNCDGGAE" => Some(Self::Jbmgncdggae), + "JIDJJLBCJMN_LHONJDCNFHO" => Some(Self::Lhonjdcnfho), + "JIDJJLBCJMN_GJMCLIBOMMM" => Some(Self::Gjmclibommm), + "JIDJJLBCJMN_PNNNMPGGAIJ" => Some(Self::Pnnnmpggaij), + "JIDJJLBCJMN_OHEPIMOLNHM" => Some(Self::Ohepimolnhm), + "JIDJJLBCJMN_CEOADOOEJCA" => Some(Self::Ceoadooejca), + "JIDJJLBCJMN_LJCCIGPKBDF" => Some(Self::Ljccigpkbdf), + "JIDJJLBCJMN_EIDEHLMJDOE" => Some(Self::Eidehlmjdoe), + "JIDJJLBCJMN_CCGPLAEGBIB" => Some(Self::Ccgplaegbib), + "JIDJJLBCJMN_CCPDMIHKBPG" => Some(Self::Ccpdmihkbpg), + "JIDJJLBCJMN_BAMJMOJKDFC" => Some(Self::Bamjmojkdfc), + "JIDJJLBCJMN_PBIHIKCLJDG" => Some(Self::Pbihikcljdg), + "JIDJJLBCJMN_IBJLHOLFDFH" => Some(Self::Ibjlholfdfh), + "JIDJJLBCJMN_EOALLPPFNCH" => Some(Self::Eoallppfnch), + "JIDJJLBCJMN_DIGNKKAIMBK" => Some(Self::Dignkkaimbk), + "JIDJJLBCJMN_MEEPABDGODO" => Some(Self::Meepabdgodo), + "JIDJJLBCJMN_ENHELLKCLFA" => Some(Self::Enhellkclfa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dgcbledomge { + Cbkaoghenlo = 0, + Gceoodonfje = 1, + Njejnpbpjoo = 2, + Kegdplnlgid = 3, + Jfhpgeffhbk = 4, + Ofimeaghedn = 5, + Cphiglmcgbi = 6, +} +impl Dgcbledomge { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cbkaoghenlo => "DGCBLEDOMGE_CBKAOGHENLO", + Self::Gceoodonfje => "DGCBLEDOMGE_GCEOODONFJE", + Self::Njejnpbpjoo => "DGCBLEDOMGE_NJEJNPBPJOO", + Self::Kegdplnlgid => "DGCBLEDOMGE_KEGDPLNLGID", + Self::Jfhpgeffhbk => "DGCBLEDOMGE_JFHPGEFFHBK", + Self::Ofimeaghedn => "DGCBLEDOMGE_OFIMEAGHEDN", + Self::Cphiglmcgbi => "DGCBLEDOMGE_CPHIGLMCGBI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DGCBLEDOMGE_CBKAOGHENLO" => Some(Self::Cbkaoghenlo), + "DGCBLEDOMGE_GCEOODONFJE" => Some(Self::Gceoodonfje), + "DGCBLEDOMGE_NJEJNPBPJOO" => Some(Self::Njejnpbpjoo), + "DGCBLEDOMGE_KEGDPLNLGID" => Some(Self::Kegdplnlgid), + "DGCBLEDOMGE_JFHPGEFFHBK" => Some(Self::Jfhpgeffhbk), + "DGCBLEDOMGE_OFIMEAGHEDN" => Some(Self::Ofimeaghedn), + "DGCBLEDOMGE_CPHIGLMCGBI" => Some(Self::Cphiglmcgbi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pjjdmpgalph { + TimeEventStatusLock = 0, + TimeEventStatusUnlock = 1, + TimeEventStatusEnded = 2, +} +impl Pjjdmpgalph { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::TimeEventStatusLock => "PJJDMPGALPH_TIME_EVENT_STATUS_LOCK", + Self::TimeEventStatusUnlock => "PJJDMPGALPH_TIME_EVENT_STATUS_UNLOCK", + Self::TimeEventStatusEnded => "PJJDMPGALPH_TIME_EVENT_STATUS_ENDED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PJJDMPGALPH_TIME_EVENT_STATUS_LOCK" => Some(Self::TimeEventStatusLock), + "PJJDMPGALPH_TIME_EVENT_STATUS_UNLOCK" => Some(Self::TimeEventStatusUnlock), + "PJJDMPGALPH_TIME_EVENT_STATUS_ENDED" => Some(Self::TimeEventStatusEnded), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bjbjnpciikc { + Ejbfoofmghj = 0, + Dbjjdpcebdd = 1, + Aofkingikkn = 2, + Gmbcdcbflfn = 3, + Pkadiadlkkm = 4, + Bhbbgiaaooa = 5, +} +impl Bjbjnpciikc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ejbfoofmghj => "BJBJNPCIIKC_EJBFOOFMGHJ", + Self::Dbjjdpcebdd => "BJBJNPCIIKC_DBJJDPCEBDD", + Self::Aofkingikkn => "BJBJNPCIIKC_AOFKINGIKKN", + Self::Gmbcdcbflfn => "BJBJNPCIIKC_GMBCDCBFLFN", + Self::Pkadiadlkkm => "BJBJNPCIIKC_PKADIADLKKM", + Self::Bhbbgiaaooa => "BJBJNPCIIKC_BHBBGIAAOOA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BJBJNPCIIKC_EJBFOOFMGHJ" => Some(Self::Ejbfoofmghj), + "BJBJNPCIIKC_DBJJDPCEBDD" => Some(Self::Dbjjdpcebdd), + "BJBJNPCIIKC_AOFKINGIKKN" => Some(Self::Aofkingikkn), + "BJBJNPCIIKC_GMBCDCBFLFN" => Some(Self::Gmbcdcbflfn), + "BJBJNPCIIKC_PKADIADLKKM" => Some(Self::Pkadiadlkkm), + "BJBJNPCIIKC_BHBBGIAAOOA" => Some(Self::Bhbbgiaaooa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ebamlgppoch { + Lkhkcafffei = 0, + Hlnbleiiahi = 1, + Mnehhocedlg = 2, + Mjahmdoibao = 4, + Dmaefikodcg = 8, +} +impl Ebamlgppoch { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lkhkcafffei => "EBAMLGPPOCH_LKHKCAFFFEI", + Self::Hlnbleiiahi => "EBAMLGPPOCH_HLNBLEIIAHI", + Self::Mnehhocedlg => "EBAMLGPPOCH_MNEHHOCEDLG", + Self::Mjahmdoibao => "EBAMLGPPOCH_MJAHMDOIBAO", + Self::Dmaefikodcg => "EBAMLGPPOCH_DMAEFIKODCG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EBAMLGPPOCH_LKHKCAFFFEI" => Some(Self::Lkhkcafffei), + "EBAMLGPPOCH_HLNBLEIIAHI" => Some(Self::Hlnbleiiahi), + "EBAMLGPPOCH_MNEHHOCEDLG" => Some(Self::Mnehhocedlg), + "EBAMLGPPOCH_MJAHMDOIBAO" => Some(Self::Mjahmdoibao), + "EBAMLGPPOCH_DMAEFIKODCG" => Some(Self::Dmaefikodcg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Lbmiaciimap { + Ajbilgmgkfi = 0, +} +impl Lbmiaciimap { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ajbilgmgkfi => "LBMIACIIMAP_AJBILGMGKFI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LBMIACIIMAP_AJBILGMGKFI" => Some(Self::Ajbilgmgkfi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Piodnmjmiin { + Hhinkgmkokl = 0, + Cfacffnehii = 1, +} +impl Piodnmjmiin { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Hhinkgmkokl => "PIODNMJMIIN_HHINKGMKOKL", + Self::Cfacffnehii => "PIODNMJMIIN_CFACFFNEHII", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PIODNMJMIIN_HHINKGMKOKL" => Some(Self::Hhinkgmkokl), + "PIODNMJMIIN_CFACFFNEHII" => Some(Self::Cfacffnehii), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dcekieglead { + HollowPosChangedReasonNone = 0, + HollowPosChangedReasonMove = 1, + HollowPosChangedReasonTransfer = 2, + HollowPosChangedReasonPush = 3, +} +impl Dcekieglead { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowPosChangedReasonNone => { + "DCEKIEGLEAD_HOLLOW_POS_CHANGED_REASON_NONE" + } + Self::HollowPosChangedReasonMove => { + "DCEKIEGLEAD_HOLLOW_POS_CHANGED_REASON_MOVE" + } + Self::HollowPosChangedReasonTransfer => { + "DCEKIEGLEAD_HOLLOW_POS_CHANGED_REASON_TRANSFER" + } + Self::HollowPosChangedReasonPush => { + "DCEKIEGLEAD_HOLLOW_POS_CHANGED_REASON_PUSH" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DCEKIEGLEAD_HOLLOW_POS_CHANGED_REASON_NONE" => { + Some(Self::HollowPosChangedReasonNone) + } + "DCEKIEGLEAD_HOLLOW_POS_CHANGED_REASON_MOVE" => { + Some(Self::HollowPosChangedReasonMove) + } + "DCEKIEGLEAD_HOLLOW_POS_CHANGED_REASON_TRANSFER" => { + Some(Self::HollowPosChangedReasonTransfer) + } + "DCEKIEGLEAD_HOLLOW_POS_CHANGED_REASON_PUSH" => { + Some(Self::HollowPosChangedReasonPush) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ojbnpnldfgd { + Ocdcnnfgfcp = 0, + Idehjajegcc = 1, + Bhnbcdgkgkl = 2, + Pnmbnieaock = 3, + Bghjbcioijo = 4, + Bphnmmdlnfl = 5, + Geobdlhleok = 6, + Hnhocebhhfi = 7, + Ihabilfckin = 8, + Mfbhopbjaoj = 9, + Felbiheliea = 10, + Ccdlchgbnbj = 11, + Adbbmmacomi = 12, + Celdelmblcm = 13, + Koieikomgdf = 14, + Hchafemhnkg = 15, + Pbkadcbgmib = 16, + Ofjffadglpj = 17, + Cfihehancnj = 18, + Nempkkapibh = 19, + Aecanonjnla = 20, + Ekllkifanoc = 21, + Gpgmpcnojff = 22, + Ipkjinlimpd = 23, + Pgggihkmbfb = 24, + Odmbnjimdca = 25, + Clmbljbhlog = 26, + Fgolknbdkhg = 27, + Liagljbgjbf = 28, + Mdmpkhjdlge = 29, + Obhbpnphmjd = 30, + Bkenlpphonp = 31, + Gdjlklfecme = 32, + Dnkflknedbj = 33, + Lgkkdelnled = 34, + Kkaabgggcgo = 35, + Fceapapkmpg = 36, + Hmenobdbpln = 37, + Cdcgedakejc = 38, +} +impl Ojbnpnldfgd { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ocdcnnfgfcp => "OJBNPNLDFGD_OCDCNNFGFCP", + Self::Idehjajegcc => "OJBNPNLDFGD_IDEHJAJEGCC", + Self::Bhnbcdgkgkl => "OJBNPNLDFGD_BHNBCDGKGKL", + Self::Pnmbnieaock => "OJBNPNLDFGD_PNMBNIEAOCK", + Self::Bghjbcioijo => "OJBNPNLDFGD_BGHJBCIOIJO", + Self::Bphnmmdlnfl => "OJBNPNLDFGD_BPHNMMDLNFL", + Self::Geobdlhleok => "OJBNPNLDFGD_GEOBDLHLEOK", + Self::Hnhocebhhfi => "OJBNPNLDFGD_HNHOCEBHHFI", + Self::Ihabilfckin => "OJBNPNLDFGD_IHABILFCKIN", + Self::Mfbhopbjaoj => "OJBNPNLDFGD_MFBHOPBJAOJ", + Self::Felbiheliea => "OJBNPNLDFGD_FELBIHELIEA", + Self::Ccdlchgbnbj => "OJBNPNLDFGD_CCDLCHGBNBJ", + Self::Adbbmmacomi => "OJBNPNLDFGD_ADBBMMACOMI", + Self::Celdelmblcm => "OJBNPNLDFGD_CELDELMBLCM", + Self::Koieikomgdf => "OJBNPNLDFGD_KOIEIKOMGDF", + Self::Hchafemhnkg => "OJBNPNLDFGD_HCHAFEMHNKG", + Self::Pbkadcbgmib => "OJBNPNLDFGD_PBKADCBGMIB", + Self::Ofjffadglpj => "OJBNPNLDFGD_OFJFFADGLPJ", + Self::Cfihehancnj => "OJBNPNLDFGD_CFIHEHANCNJ", + Self::Nempkkapibh => "OJBNPNLDFGD_NEMPKKAPIBH", + Self::Aecanonjnla => "OJBNPNLDFGD_AECANONJNLA", + Self::Ekllkifanoc => "OJBNPNLDFGD_EKLLKIFANOC", + Self::Gpgmpcnojff => "OJBNPNLDFGD_GPGMPCNOJFF", + Self::Ipkjinlimpd => "OJBNPNLDFGD_IPKJINLIMPD", + Self::Pgggihkmbfb => "OJBNPNLDFGD_PGGGIHKMBFB", + Self::Odmbnjimdca => "OJBNPNLDFGD_ODMBNJIMDCA", + Self::Clmbljbhlog => "OJBNPNLDFGD_CLMBLJBHLOG", + Self::Fgolknbdkhg => "OJBNPNLDFGD_FGOLKNBDKHG", + Self::Liagljbgjbf => "OJBNPNLDFGD_LIAGLJBGJBF", + Self::Mdmpkhjdlge => "OJBNPNLDFGD_MDMPKHJDLGE", + Self::Obhbpnphmjd => "OJBNPNLDFGD_OBHBPNPHMJD", + Self::Bkenlpphonp => "OJBNPNLDFGD_BKENLPPHONP", + Self::Gdjlklfecme => "OJBNPNLDFGD_GDJLKLFECME", + Self::Dnkflknedbj => "OJBNPNLDFGD_DNKFLKNEDBJ", + Self::Lgkkdelnled => "OJBNPNLDFGD_LGKKDELNLED", + Self::Kkaabgggcgo => "OJBNPNLDFGD_KKAABGGGCGO", + Self::Fceapapkmpg => "OJBNPNLDFGD_FCEAPAPKMPG", + Self::Hmenobdbpln => "OJBNPNLDFGD_HMENOBDBPLN", + Self::Cdcgedakejc => "OJBNPNLDFGD_CDCGEDAKEJC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OJBNPNLDFGD_OCDCNNFGFCP" => Some(Self::Ocdcnnfgfcp), + "OJBNPNLDFGD_IDEHJAJEGCC" => Some(Self::Idehjajegcc), + "OJBNPNLDFGD_BHNBCDGKGKL" => Some(Self::Bhnbcdgkgkl), + "OJBNPNLDFGD_PNMBNIEAOCK" => Some(Self::Pnmbnieaock), + "OJBNPNLDFGD_BGHJBCIOIJO" => Some(Self::Bghjbcioijo), + "OJBNPNLDFGD_BPHNMMDLNFL" => Some(Self::Bphnmmdlnfl), + "OJBNPNLDFGD_GEOBDLHLEOK" => Some(Self::Geobdlhleok), + "OJBNPNLDFGD_HNHOCEBHHFI" => Some(Self::Hnhocebhhfi), + "OJBNPNLDFGD_IHABILFCKIN" => Some(Self::Ihabilfckin), + "OJBNPNLDFGD_MFBHOPBJAOJ" => Some(Self::Mfbhopbjaoj), + "OJBNPNLDFGD_FELBIHELIEA" => Some(Self::Felbiheliea), + "OJBNPNLDFGD_CCDLCHGBNBJ" => Some(Self::Ccdlchgbnbj), + "OJBNPNLDFGD_ADBBMMACOMI" => Some(Self::Adbbmmacomi), + "OJBNPNLDFGD_CELDELMBLCM" => Some(Self::Celdelmblcm), + "OJBNPNLDFGD_KOIEIKOMGDF" => Some(Self::Koieikomgdf), + "OJBNPNLDFGD_HCHAFEMHNKG" => Some(Self::Hchafemhnkg), + "OJBNPNLDFGD_PBKADCBGMIB" => Some(Self::Pbkadcbgmib), + "OJBNPNLDFGD_OFJFFADGLPJ" => Some(Self::Ofjffadglpj), + "OJBNPNLDFGD_CFIHEHANCNJ" => Some(Self::Cfihehancnj), + "OJBNPNLDFGD_NEMPKKAPIBH" => Some(Self::Nempkkapibh), + "OJBNPNLDFGD_AECANONJNLA" => Some(Self::Aecanonjnla), + "OJBNPNLDFGD_EKLLKIFANOC" => Some(Self::Ekllkifanoc), + "OJBNPNLDFGD_GPGMPCNOJFF" => Some(Self::Gpgmpcnojff), + "OJBNPNLDFGD_IPKJINLIMPD" => Some(Self::Ipkjinlimpd), + "OJBNPNLDFGD_PGGGIHKMBFB" => Some(Self::Pgggihkmbfb), + "OJBNPNLDFGD_ODMBNJIMDCA" => Some(Self::Odmbnjimdca), + "OJBNPNLDFGD_CLMBLJBHLOG" => Some(Self::Clmbljbhlog), + "OJBNPNLDFGD_FGOLKNBDKHG" => Some(Self::Fgolknbdkhg), + "OJBNPNLDFGD_LIAGLJBGJBF" => Some(Self::Liagljbgjbf), + "OJBNPNLDFGD_MDMPKHJDLGE" => Some(Self::Mdmpkhjdlge), + "OJBNPNLDFGD_OBHBPNPHMJD" => Some(Self::Obhbpnphmjd), + "OJBNPNLDFGD_BKENLPPHONP" => Some(Self::Bkenlpphonp), + "OJBNPNLDFGD_GDJLKLFECME" => Some(Self::Gdjlklfecme), + "OJBNPNLDFGD_DNKFLKNEDBJ" => Some(Self::Dnkflknedbj), + "OJBNPNLDFGD_LGKKDELNLED" => Some(Self::Lgkkdelnled), + "OJBNPNLDFGD_KKAABGGGCGO" => Some(Self::Kkaabgggcgo), + "OJBNPNLDFGD_FCEAPAPKMPG" => Some(Self::Fceapapkmpg), + "OJBNPNLDFGD_HMENOBDBPLN" => Some(Self::Hmenobdbpln), + "OJBNPNLDFGD_CDCGEDAKEJC" => Some(Self::Cdcgedakejc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Polldldncik { + Fbgkllgjecg = 0, + Emnolfbeinh = 1, + Mobolipcmal = 2, + Pgefocfeoke = 3, + Kmbblhnbklp = 4, + Mmlkhpoekpd = 5, + Hddfhlkcgfl = 6, + Jkfalagkjgg = 7, + Bkholkjnjjg = 8, + Mmdeinjkkee = 9, + Odaejoeecej = 10, + Anpddgddpkp = 11, + Bajpchdnmhd = 12, + Jdebkhdlpob = 13, +} +impl Polldldncik { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fbgkllgjecg => "POLLDLDNCIK_FBGKLLGJECG", + Self::Emnolfbeinh => "POLLDLDNCIK_EMNOLFBEINH", + Self::Mobolipcmal => "POLLDLDNCIK_MOBOLIPCMAL", + Self::Pgefocfeoke => "POLLDLDNCIK_PGEFOCFEOKE", + Self::Kmbblhnbklp => "POLLDLDNCIK_KMBBLHNBKLP", + Self::Mmlkhpoekpd => "POLLDLDNCIK_MMLKHPOEKPD", + Self::Hddfhlkcgfl => "POLLDLDNCIK_HDDFHLKCGFL", + Self::Jkfalagkjgg => "POLLDLDNCIK_JKFALAGKJGG", + Self::Bkholkjnjjg => "POLLDLDNCIK_BKHOLKJNJJG", + Self::Mmdeinjkkee => "POLLDLDNCIK_MMDEINJKKEE", + Self::Odaejoeecej => "POLLDLDNCIK_ODAEJOEECEJ", + Self::Anpddgddpkp => "POLLDLDNCIK_ANPDDGDDPKP", + Self::Bajpchdnmhd => "POLLDLDNCIK_BAJPCHDNMHD", + Self::Jdebkhdlpob => "POLLDLDNCIK_JDEBKHDLPOB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "POLLDLDNCIK_FBGKLLGJECG" => Some(Self::Fbgkllgjecg), + "POLLDLDNCIK_EMNOLFBEINH" => Some(Self::Emnolfbeinh), + "POLLDLDNCIK_MOBOLIPCMAL" => Some(Self::Mobolipcmal), + "POLLDLDNCIK_PGEFOCFEOKE" => Some(Self::Pgefocfeoke), + "POLLDLDNCIK_KMBBLHNBKLP" => Some(Self::Kmbblhnbklp), + "POLLDLDNCIK_MMLKHPOEKPD" => Some(Self::Mmlkhpoekpd), + "POLLDLDNCIK_HDDFHLKCGFL" => Some(Self::Hddfhlkcgfl), + "POLLDLDNCIK_JKFALAGKJGG" => Some(Self::Jkfalagkjgg), + "POLLDLDNCIK_BKHOLKJNJJG" => Some(Self::Bkholkjnjjg), + "POLLDLDNCIK_MMDEINJKKEE" => Some(Self::Mmdeinjkkee), + "POLLDLDNCIK_ODAEJOEECEJ" => Some(Self::Odaejoeecej), + "POLLDLDNCIK_ANPDDGDDPKP" => Some(Self::Anpddgddpkp), + "POLLDLDNCIK_BAJPCHDNMHD" => Some(Self::Bajpchdnmhd), + "POLLDLDNCIK_JDEBKHDLPOB" => Some(Self::Jdebkhdlpob), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ebnaojojdoj { + Gikkambmglm = 0, + Gmmmjhjnfom = 1, + Afppogbfjdd = 2, + Aepomccnekh = 3, +} +impl Ebnaojojdoj { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gikkambmglm => "EBNAOJOJDOJ_GIKKAMBMGLM", + Self::Gmmmjhjnfom => "EBNAOJOJDOJ_GMMMJHJNFOM", + Self::Afppogbfjdd => "EBNAOJOJDOJ_AFPPOGBFJDD", + Self::Aepomccnekh => "EBNAOJOJDOJ_AEPOMCCNEKH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EBNAOJOJDOJ_GIKKAMBMGLM" => Some(Self::Gikkambmglm), + "EBNAOJOJDOJ_GMMMJHJNFOM" => Some(Self::Gmmmjhjnfom), + "EBNAOJOJDOJ_AFPPOGBFJDD" => Some(Self::Afppogbfjdd), + "EBNAOJOJDOJ_AEPOMCCNEKH" => Some(Self::Aepomccnekh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pncknedkcnm { + HollowSearchGridTypeNone = 0, + HollowSearchGridTypeByPos = 1, + HollowSearchGridTypeByBound = 2, + HollowSearchGridTypeBySeed = 3, + HollowSearchGridTypeByIndex = 4, +} +impl Pncknedkcnm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowSearchGridTypeNone => "PNCKNEDKCNM_HOLLOW_SEARCH_GRID_TYPE_NONE", + Self::HollowSearchGridTypeByPos => { + "PNCKNEDKCNM_HOLLOW_SEARCH_GRID_TYPE_BY_POS" + } + Self::HollowSearchGridTypeByBound => { + "PNCKNEDKCNM_HOLLOW_SEARCH_GRID_TYPE_BY_BOUND" + } + Self::HollowSearchGridTypeBySeed => { + "PNCKNEDKCNM_HOLLOW_SEARCH_GRID_TYPE_BY_SEED" + } + Self::HollowSearchGridTypeByIndex => { + "PNCKNEDKCNM_HOLLOW_SEARCH_GRID_TYPE_BY_INDEX" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PNCKNEDKCNM_HOLLOW_SEARCH_GRID_TYPE_NONE" => { + Some(Self::HollowSearchGridTypeNone) + } + "PNCKNEDKCNM_HOLLOW_SEARCH_GRID_TYPE_BY_POS" => { + Some(Self::HollowSearchGridTypeByPos) + } + "PNCKNEDKCNM_HOLLOW_SEARCH_GRID_TYPE_BY_BOUND" => { + Some(Self::HollowSearchGridTypeByBound) + } + "PNCKNEDKCNM_HOLLOW_SEARCH_GRID_TYPE_BY_SEED" => { + Some(Self::HollowSearchGridTypeBySeed) + } + "PNCKNEDKCNM_HOLLOW_SEARCH_GRID_TYPE_BY_INDEX" => { + Some(Self::HollowSearchGridTypeByIndex) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Olbnjmfklmn { + ChangeHollowSectionPerformTypeNone = 0, + Type1 = 1, + Type2 = 2, + Type3 = 3, +} +impl Olbnjmfklmn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ChangeHollowSectionPerformTypeNone => { + "OLBNJMFKLMN_CHANGE_HOLLOW_SECTION_PERFORM_TYPE_NONE" + } + Self::Type1 => "OLBNJMFKLMN_TYPE1", + Self::Type2 => "OLBNJMFKLMN_TYPE2", + Self::Type3 => "OLBNJMFKLMN_TYPE3", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OLBNJMFKLMN_CHANGE_HOLLOW_SECTION_PERFORM_TYPE_NONE" => { + Some(Self::ChangeHollowSectionPerformTypeNone) + } + "OLBNJMFKLMN_TYPE1" => Some(Self::Type1), + "OLBNJMFKLMN_TYPE2" => Some(Self::Type2), + "OLBNJMFKLMN_TYPE3" => Some(Self::Type3), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Hdkgdpacchc { + ModifyAdd = 0, + ModifyReplace = 1, + ModifyReduce = 2, +} +impl Hdkgdpacchc { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ModifyAdd => "HDKGDPACCHC_MODIFY_ADD", + Self::ModifyReplace => "HDKGDPACCHC_MODIFY_REPLACE", + Self::ModifyReduce => "HDKGDPACCHC_MODIFY_REDUCE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "HDKGDPACCHC_MODIFY_ADD" => Some(Self::ModifyAdd), + "HDKGDPACCHC_MODIFY_REPLACE" => Some(Self::ModifyReplace), + "HDKGDPACCHC_MODIFY_REDUCE" => Some(Self::ModifyReduce), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Idehkgamkco { + RepairZoneTypeNone = 0, + RepairZoneTypeInit = 1, + RepairZoneTypeRemove = 2, + RepairZoneTypeReset = 3, +} +impl Idehkgamkco { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::RepairZoneTypeNone => "IDEHKGAMKCO_REPAIR_ZONE_TYPE_NONE", + Self::RepairZoneTypeInit => "IDEHKGAMKCO_REPAIR_ZONE_TYPE_INIT", + Self::RepairZoneTypeRemove => "IDEHKGAMKCO_REPAIR_ZONE_TYPE_REMOVE", + Self::RepairZoneTypeReset => "IDEHKGAMKCO_REPAIR_ZONE_TYPE_RESET", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IDEHKGAMKCO_REPAIR_ZONE_TYPE_NONE" => Some(Self::RepairZoneTypeNone), + "IDEHKGAMKCO_REPAIR_ZONE_TYPE_INIT" => Some(Self::RepairZoneTypeInit), + "IDEHKGAMKCO_REPAIR_ZONE_TYPE_REMOVE" => Some(Self::RepairZoneTypeRemove), + "IDEHKGAMKCO_REPAIR_ZONE_TYPE_RESET" => Some(Self::RepairZoneTypeReset), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ehecjjpfdak { + Dieknogphkl = 0, + Mefdhgnejcb = 1, + Jdkdjdidaai = 2, +} +impl Ehecjjpfdak { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dieknogphkl => "EHECJJPFDAK_DIEKNOGPHKL", + Self::Mefdhgnejcb => "EHECJJPFDAK_MEFDHGNEJCB", + Self::Jdkdjdidaai => "EHECJJPFDAK_JDKDJDIDAAI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EHECJJPFDAK_DIEKNOGPHKL" => Some(Self::Dieknogphkl), + "EHECJJPFDAK_MEFDHGNEJCB" => Some(Self::Mefdhgnejcb), + "EHECJJPFDAK_JDKDJDIDAAI" => Some(Self::Jdkdjdidaai), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kggopmcmkpm { + Fdaangkcdop = 0, + Cdkhjijbfbb = 1, +} +impl Kggopmcmkpm { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fdaangkcdop => "KGGOPMCMKPM_FDAANGKCDOP", + Self::Cdkhjijbfbb => "KGGOPMCMKPM_CDKHJIJBFBB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KGGOPMCMKPM_FDAANGKCDOP" => Some(Self::Fdaangkcdop), + "KGGOPMCMKPM_CDKHJIJBFBB" => Some(Self::Cdkhjijbfbb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dcmfdcbolni { + Ggebjhjlakf = 0, + Gfdckenhafa = 1, + Cmbaoajgild = 2, + Hgnclmfflhj = 3, +} +impl Dcmfdcbolni { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Ggebjhjlakf => "DCMFDCBOLNI_GGEBJHJLAKF", + Self::Gfdckenhafa => "DCMFDCBOLNI_GFDCKENHAFA", + Self::Cmbaoajgild => "DCMFDCBOLNI_CMBAOAJGILD", + Self::Hgnclmfflhj => "DCMFDCBOLNI_HGNCLMFFLHJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DCMFDCBOLNI_GGEBJHJLAKF" => Some(Self::Ggebjhjlakf), + "DCMFDCBOLNI_GFDCKENHAFA" => Some(Self::Gfdckenhafa), + "DCMFDCBOLNI_CMBAOAJGILD" => Some(Self::Cmbaoajgild), + "DCMFDCBOLNI_HGNCLMFFLHJ" => Some(Self::Hgnclmfflhj), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Nabnpklgafb { + Djlbkmojlgf = 0, + Admidcaolek = 1, + Fgmcjafpkpp = 2, +} +impl Nabnpklgafb { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Djlbkmojlgf => "NABNPKLGAFB_DJLBKMOJLGF", + Self::Admidcaolek => "NABNPKLGAFB_ADMIDCAOLEK", + Self::Fgmcjafpkpp => "NABNPKLGAFB_FGMCJAFPKPP", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NABNPKLGAFB_DJLBKMOJLGF" => Some(Self::Djlbkmojlgf), + "NABNPKLGAFB_ADMIDCAOLEK" => Some(Self::Admidcaolek), + "NABNPKLGAFB_FGMCJAFPKPP" => Some(Self::Fgmcjafpkpp), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum NodeVisible { + NodeVisibleAll = 0, + Visible = 1, + VisibleAtGridAround = 2, + VisibleByTriggerEvent = 3, + TemporaryVisibleAtAround = 4, + Blocked = 5, +} +impl NodeVisible { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::NodeVisibleAll => "NodeVisible_NODE_VISIBLE_ALL", + Self::Visible => "NodeVisible_VISIBLE", + Self::VisibleAtGridAround => "NodeVisible_VISIBLE_AT_GRID_AROUND", + Self::VisibleByTriggerEvent => "NodeVisible_VISIBLE_BY_TRIGGER_EVENT", + Self::TemporaryVisibleAtAround => "NodeVisible_TEMPORARY_VISIBLE_AT_AROUND", + Self::Blocked => "NodeVisible_BLOCKED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NodeVisible_NODE_VISIBLE_ALL" => Some(Self::NodeVisibleAll), + "NodeVisible_VISIBLE" => Some(Self::Visible), + "NodeVisible_VISIBLE_AT_GRID_AROUND" => Some(Self::VisibleAtGridAround), + "NodeVisible_VISIBLE_BY_TRIGGER_EVENT" => Some(Self::VisibleByTriggerEvent), + "NodeVisible_TEMPORARY_VISIBLE_AT_AROUND" => { + Some(Self::TemporaryVisibleAtAround) + } + "NodeVisible_BLOCKED" => Some(Self::Blocked), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ajeadcchdog { + Fmjfahibomc = 0, + Jcpajgbekjl = 1, +} +impl Ajeadcchdog { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Fmjfahibomc => "AJEADCCHDOG_FMJFAHIBOMC", + Self::Jcpajgbekjl => "AJEADCCHDOG_JCPAJGBEKJL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AJEADCCHDOG_FMJFAHIBOMC" => Some(Self::Fmjfahibomc), + "AJEADCCHDOG_JCPAJGBEKJL" => Some(Self::Jcpajgbekjl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Ijipdciklca { + Beminljkkip = 0, + Mafedplpplh = 1, + Fgdmgnhefkh = 2, +} +impl Ijipdciklca { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Beminljkkip => "IJIPDCIKLCA_BEMINLJKKIP", + Self::Mafedplpplh => "IJIPDCIKLCA_MAFEDPLPPLH", + Self::Fgdmgnhefkh => "IJIPDCIKLCA_FGDMGNHEFKH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IJIPDCIKLCA_BEMINLJKKIP" => Some(Self::Beminljkkip), + "IJIPDCIKLCA_MAFEDPLPPLH" => Some(Self::Mafedplpplh), + "IJIPDCIKLCA_FGDMGNHEFKH" => Some(Self::Fgdmgnhefkh), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Oegkeoahlkf { + Amjojchhmgm = 0, + Eplebhmpnla = 1, + Gcngdihlaij = 2, + Agakbgpdgjd = 3, + Pbgkimjmbei = 4, +} +impl Oegkeoahlkf { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Amjojchhmgm => "OEGKEOAHLKF_AMJOJCHHMGM", + Self::Eplebhmpnla => "OEGKEOAHLKF_EPLEBHMPNLA", + Self::Gcngdihlaij => "OEGKEOAHLKF_GCNGDIHLAIJ", + Self::Agakbgpdgjd => "OEGKEOAHLKF_AGAKBGPDGJD", + Self::Pbgkimjmbei => "OEGKEOAHLKF_PBGKIMJMBEI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OEGKEOAHLKF_AMJOJCHHMGM" => Some(Self::Amjojchhmgm), + "OEGKEOAHLKF_EPLEBHMPNLA" => Some(Self::Eplebhmpnla), + "OEGKEOAHLKF_GCNGDIHLAIJ" => Some(Self::Gcngdihlaij), + "OEGKEOAHLKF_AGAKBGPDGJD" => Some(Self::Agakbgpdgjd), + "OEGKEOAHLKF_PBGKIMJMBEI" => Some(Self::Pbgkimjmbei), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Onijdnhcjmk { + HollowLightTypeNone = 0, + HollowLightTypeDefault = 1, + HollowLightTypeGhost = 2, + HollowLightTypeUnstable = 3, +} +impl Onijdnhcjmk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowLightTypeNone => "ONIJDNHCJMK_HOLLOW_LIGHT_TYPE_NONE", + Self::HollowLightTypeDefault => "ONIJDNHCJMK_HOLLOW_LIGHT_TYPE_DEFAULT", + Self::HollowLightTypeGhost => "ONIJDNHCJMK_HOLLOW_LIGHT_TYPE_GHOST", + Self::HollowLightTypeUnstable => "ONIJDNHCJMK_HOLLOW_LIGHT_TYPE_UNSTABLE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ONIJDNHCJMK_HOLLOW_LIGHT_TYPE_NONE" => Some(Self::HollowLightTypeNone), + "ONIJDNHCJMK_HOLLOW_LIGHT_TYPE_DEFAULT" => Some(Self::HollowLightTypeDefault), + "ONIJDNHCJMK_HOLLOW_LIGHT_TYPE_GHOST" => Some(Self::HollowLightTypeGhost), + "ONIJDNHCJMK_HOLLOW_LIGHT_TYPE_UNSTABLE" => { + Some(Self::HollowLightTypeUnstable) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Llpmheafgck { + Npcahgnfkaf = 0, + Gonjbholdee = 1, + Fbpoejcblfg = 2, + Kbpamhmijka = 3, + Cimncjbenli = 4, + Lacopllohhd = 5, + Aoiockhjgpe = 7, + Aopohbfjanh = 8, + Mmkpmeencha = 9, + Lklnpflagin = 10, + Edlchpeiloi = 11, + Nplljlcocdl = 12, + Nbjafplpbhk = 13, + Lmpadodkcfp = 14, + Gahdpklhcpo = 15, + Doeggiiebjf = 16, + Dmhjgajoocf = 17, + Lgfhkcfpfjg = 18, + Omlkoheidfc = 19, + Fbmndgaejca = 20, + Meichjjlchg = 21, + Cekdpkokkha = 22, + Dfedkejcnee = 23, + Moohhpeonja = 31, + Fljdjnpneje = 32, + Iheilmmobnl = 34, + Ddgbcbdabim = 35, + Flanhidmkdc = 36, + Lfdkfmobghd = 37, + Bjmlohmbbol = 38, + Kkkcijpolkg = 51, + Ngncnicihbh = 52, + Jjoneldibmj = 61, + Icidkabicel = 62, + Hgglgjkppji = 63, + Doijhacghjk = 64, + Hhgjfneiacb = 65, + Aolggdfhgll = 67, + Laneahknjca = 68, + Kdicoeiipkl = 69, + Aipjfblbgdp = 70, + Amdaphljclm = 71, + Kaaeigdkika = 72, + Mjmioeggpjd = 73, + Kphlhediceo = 74, + Acokhoodmec = 75, + Cinnbfiefjm = 76, + Moafhdgjclf = 77, + Peohmkfanpa = 78, + Nmhjjmnenbb = 79, + Hdnhihocdnb = 80, + Neoomipjapd = 81, + Ljhcphcchjk = 83, + Pomiimajgmk = 84, + Chmaheoegkg = 85, + Ogcdjhmfimp = 86, + Lmhbfibeobc = 87, +} +impl Llpmheafgck { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Npcahgnfkaf => "LLPMHEAFGCK_NPCAHGNFKAF", + Self::Gonjbholdee => "LLPMHEAFGCK_GONJBHOLDEE", + Self::Fbpoejcblfg => "LLPMHEAFGCK_FBPOEJCBLFG", + Self::Kbpamhmijka => "LLPMHEAFGCK_KBPAMHMIJKA", + Self::Cimncjbenli => "LLPMHEAFGCK_CIMNCJBENLI", + Self::Lacopllohhd => "LLPMHEAFGCK_LACOPLLOHHD", + Self::Aoiockhjgpe => "LLPMHEAFGCK_AOIOCKHJGPE", + Self::Aopohbfjanh => "LLPMHEAFGCK_AOPOHBFJANH", + Self::Mmkpmeencha => "LLPMHEAFGCK_MMKPMEENCHA", + Self::Lklnpflagin => "LLPMHEAFGCK_LKLNPFLAGIN", + Self::Edlchpeiloi => "LLPMHEAFGCK_EDLCHPEILOI", + Self::Nplljlcocdl => "LLPMHEAFGCK_NPLLJLCOCDL", + Self::Nbjafplpbhk => "LLPMHEAFGCK_NBJAFPLPBHK", + Self::Lmpadodkcfp => "LLPMHEAFGCK_LMPADODKCFP", + Self::Gahdpklhcpo => "LLPMHEAFGCK_GAHDPKLHCPO", + Self::Doeggiiebjf => "LLPMHEAFGCK_DOEGGIIEBJF", + Self::Dmhjgajoocf => "LLPMHEAFGCK_DMHJGAJOOCF", + Self::Lgfhkcfpfjg => "LLPMHEAFGCK_LGFHKCFPFJG", + Self::Omlkoheidfc => "LLPMHEAFGCK_OMLKOHEIDFC", + Self::Fbmndgaejca => "LLPMHEAFGCK_FBMNDGAEJCA", + Self::Meichjjlchg => "LLPMHEAFGCK_MEICHJJLCHG", + Self::Cekdpkokkha => "LLPMHEAFGCK_CEKDPKOKKHA", + Self::Dfedkejcnee => "LLPMHEAFGCK_DFEDKEJCNEE", + Self::Moohhpeonja => "LLPMHEAFGCK_MOOHHPEONJA", + Self::Fljdjnpneje => "LLPMHEAFGCK_FLJDJNPNEJE", + Self::Iheilmmobnl => "LLPMHEAFGCK_IHEILMMOBNL", + Self::Ddgbcbdabim => "LLPMHEAFGCK_DDGBCBDABIM", + Self::Flanhidmkdc => "LLPMHEAFGCK_FLANHIDMKDC", + Self::Lfdkfmobghd => "LLPMHEAFGCK_LFDKFMOBGHD", + Self::Bjmlohmbbol => "LLPMHEAFGCK_BJMLOHMBBOL", + Self::Kkkcijpolkg => "LLPMHEAFGCK_KKKCIJPOLKG", + Self::Ngncnicihbh => "LLPMHEAFGCK_NGNCNICIHBH", + Self::Jjoneldibmj => "LLPMHEAFGCK_JJONELDIBMJ", + Self::Icidkabicel => "LLPMHEAFGCK_ICIDKABICEL", + Self::Hgglgjkppji => "LLPMHEAFGCK_HGGLGJKPPJI", + Self::Doijhacghjk => "LLPMHEAFGCK_DOIJHACGHJK", + Self::Hhgjfneiacb => "LLPMHEAFGCK_HHGJFNEIACB", + Self::Aolggdfhgll => "LLPMHEAFGCK_AOLGGDFHGLL", + Self::Laneahknjca => "LLPMHEAFGCK_LANEAHKNJCA", + Self::Kdicoeiipkl => "LLPMHEAFGCK_KDICOEIIPKL", + Self::Aipjfblbgdp => "LLPMHEAFGCK_AIPJFBLBGDP", + Self::Amdaphljclm => "LLPMHEAFGCK_AMDAPHLJCLM", + Self::Kaaeigdkika => "LLPMHEAFGCK_KAAEIGDKIKA", + Self::Mjmioeggpjd => "LLPMHEAFGCK_MJMIOEGGPJD", + Self::Kphlhediceo => "LLPMHEAFGCK_KPHLHEDICEO", + Self::Acokhoodmec => "LLPMHEAFGCK_ACOKHOODMEC", + Self::Cinnbfiefjm => "LLPMHEAFGCK_CINNBFIEFJM", + Self::Moafhdgjclf => "LLPMHEAFGCK_MOAFHDGJCLF", + Self::Peohmkfanpa => "LLPMHEAFGCK_PEOHMKFANPA", + Self::Nmhjjmnenbb => "LLPMHEAFGCK_NMHJJMNENBB", + Self::Hdnhihocdnb => "LLPMHEAFGCK_HDNHIHOCDNB", + Self::Neoomipjapd => "LLPMHEAFGCK_NEOOMIPJAPD", + Self::Ljhcphcchjk => "LLPMHEAFGCK_LJHCPHCCHJK", + Self::Pomiimajgmk => "LLPMHEAFGCK_POMIIMAJGMK", + Self::Chmaheoegkg => "LLPMHEAFGCK_CHMAHEOEGKG", + Self::Ogcdjhmfimp => "LLPMHEAFGCK_OGCDJHMFIMP", + Self::Lmhbfibeobc => "LLPMHEAFGCK_LMHBFIBEOBC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LLPMHEAFGCK_NPCAHGNFKAF" => Some(Self::Npcahgnfkaf), + "LLPMHEAFGCK_GONJBHOLDEE" => Some(Self::Gonjbholdee), + "LLPMHEAFGCK_FBPOEJCBLFG" => Some(Self::Fbpoejcblfg), + "LLPMHEAFGCK_KBPAMHMIJKA" => Some(Self::Kbpamhmijka), + "LLPMHEAFGCK_CIMNCJBENLI" => Some(Self::Cimncjbenli), + "LLPMHEAFGCK_LACOPLLOHHD" => Some(Self::Lacopllohhd), + "LLPMHEAFGCK_AOIOCKHJGPE" => Some(Self::Aoiockhjgpe), + "LLPMHEAFGCK_AOPOHBFJANH" => Some(Self::Aopohbfjanh), + "LLPMHEAFGCK_MMKPMEENCHA" => Some(Self::Mmkpmeencha), + "LLPMHEAFGCK_LKLNPFLAGIN" => Some(Self::Lklnpflagin), + "LLPMHEAFGCK_EDLCHPEILOI" => Some(Self::Edlchpeiloi), + "LLPMHEAFGCK_NPLLJLCOCDL" => Some(Self::Nplljlcocdl), + "LLPMHEAFGCK_NBJAFPLPBHK" => Some(Self::Nbjafplpbhk), + "LLPMHEAFGCK_LMPADODKCFP" => Some(Self::Lmpadodkcfp), + "LLPMHEAFGCK_GAHDPKLHCPO" => Some(Self::Gahdpklhcpo), + "LLPMHEAFGCK_DOEGGIIEBJF" => Some(Self::Doeggiiebjf), + "LLPMHEAFGCK_DMHJGAJOOCF" => Some(Self::Dmhjgajoocf), + "LLPMHEAFGCK_LGFHKCFPFJG" => Some(Self::Lgfhkcfpfjg), + "LLPMHEAFGCK_OMLKOHEIDFC" => Some(Self::Omlkoheidfc), + "LLPMHEAFGCK_FBMNDGAEJCA" => Some(Self::Fbmndgaejca), + "LLPMHEAFGCK_MEICHJJLCHG" => Some(Self::Meichjjlchg), + "LLPMHEAFGCK_CEKDPKOKKHA" => Some(Self::Cekdpkokkha), + "LLPMHEAFGCK_DFEDKEJCNEE" => Some(Self::Dfedkejcnee), + "LLPMHEAFGCK_MOOHHPEONJA" => Some(Self::Moohhpeonja), + "LLPMHEAFGCK_FLJDJNPNEJE" => Some(Self::Fljdjnpneje), + "LLPMHEAFGCK_IHEILMMOBNL" => Some(Self::Iheilmmobnl), + "LLPMHEAFGCK_DDGBCBDABIM" => Some(Self::Ddgbcbdabim), + "LLPMHEAFGCK_FLANHIDMKDC" => Some(Self::Flanhidmkdc), + "LLPMHEAFGCK_LFDKFMOBGHD" => Some(Self::Lfdkfmobghd), + "LLPMHEAFGCK_BJMLOHMBBOL" => Some(Self::Bjmlohmbbol), + "LLPMHEAFGCK_KKKCIJPOLKG" => Some(Self::Kkkcijpolkg), + "LLPMHEAFGCK_NGNCNICIHBH" => Some(Self::Ngncnicihbh), + "LLPMHEAFGCK_JJONELDIBMJ" => Some(Self::Jjoneldibmj), + "LLPMHEAFGCK_ICIDKABICEL" => Some(Self::Icidkabicel), + "LLPMHEAFGCK_HGGLGJKPPJI" => Some(Self::Hgglgjkppji), + "LLPMHEAFGCK_DOIJHACGHJK" => Some(Self::Doijhacghjk), + "LLPMHEAFGCK_HHGJFNEIACB" => Some(Self::Hhgjfneiacb), + "LLPMHEAFGCK_AOLGGDFHGLL" => Some(Self::Aolggdfhgll), + "LLPMHEAFGCK_LANEAHKNJCA" => Some(Self::Laneahknjca), + "LLPMHEAFGCK_KDICOEIIPKL" => Some(Self::Kdicoeiipkl), + "LLPMHEAFGCK_AIPJFBLBGDP" => Some(Self::Aipjfblbgdp), + "LLPMHEAFGCK_AMDAPHLJCLM" => Some(Self::Amdaphljclm), + "LLPMHEAFGCK_KAAEIGDKIKA" => Some(Self::Kaaeigdkika), + "LLPMHEAFGCK_MJMIOEGGPJD" => Some(Self::Mjmioeggpjd), + "LLPMHEAFGCK_KPHLHEDICEO" => Some(Self::Kphlhediceo), + "LLPMHEAFGCK_ACOKHOODMEC" => Some(Self::Acokhoodmec), + "LLPMHEAFGCK_CINNBFIEFJM" => Some(Self::Cinnbfiefjm), + "LLPMHEAFGCK_MOAFHDGJCLF" => Some(Self::Moafhdgjclf), + "LLPMHEAFGCK_PEOHMKFANPA" => Some(Self::Peohmkfanpa), + "LLPMHEAFGCK_NMHJJMNENBB" => Some(Self::Nmhjjmnenbb), + "LLPMHEAFGCK_HDNHIHOCDNB" => Some(Self::Hdnhihocdnb), + "LLPMHEAFGCK_NEOOMIPJAPD" => Some(Self::Neoomipjapd), + "LLPMHEAFGCK_LJHCPHCCHJK" => Some(Self::Ljhcphcchjk), + "LLPMHEAFGCK_POMIIMAJGMK" => Some(Self::Pomiimajgmk), + "LLPMHEAFGCK_CHMAHEOEGKG" => Some(Self::Chmaheoegkg), + "LLPMHEAFGCK_OGCDJHMFIMP" => Some(Self::Ogcdjhmfimp), + "LLPMHEAFGCK_LMHBFIBEOBC" => Some(Self::Lmhbfibeobc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Eaikfmobpdp { + Flbiilhlnnl = 0, + Njfioikcnkj = 1, + Chcikplcfap = 2, + Ahbgelheodj = 3, + Leijbbiebfa = 4, + Jpebfdmokbg = 6, +} +impl Eaikfmobpdp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Flbiilhlnnl => "EAIKFMOBPDP_FLBIILHLNNL", + Self::Njfioikcnkj => "EAIKFMOBPDP_NJFIOIKCNKJ", + Self::Chcikplcfap => "EAIKFMOBPDP_CHCIKPLCFAP", + Self::Ahbgelheodj => "EAIKFMOBPDP_AHBGELHEODJ", + Self::Leijbbiebfa => "EAIKFMOBPDP_LEIJBBIEBFA", + Self::Jpebfdmokbg => "EAIKFMOBPDP_JPEBFDMOKBG", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EAIKFMOBPDP_FLBIILHLNNL" => Some(Self::Flbiilhlnnl), + "EAIKFMOBPDP_NJFIOIKCNKJ" => Some(Self::Njfioikcnkj), + "EAIKFMOBPDP_CHCIKPLCFAP" => Some(Self::Chcikplcfap), + "EAIKFMOBPDP_AHBGELHEODJ" => Some(Self::Ahbgelheodj), + "EAIKFMOBPDP_LEIJBBIEBFA" => Some(Self::Leijbbiebfa), + "EAIKFMOBPDP_JPEBFDMOKBG" => Some(Self::Jpebfdmokbg), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jidaekecoel { + Cobeiglgimg = 0, + Emkopdlkkkc = 1, + Cnojeifhmpe = 2, + Jhomcmcigoa = 3, +} +impl Jidaekecoel { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cobeiglgimg => "JIDAEKECOEL_COBEIGLGIMG", + Self::Emkopdlkkkc => "JIDAEKECOEL_EMKOPDLKKKC", + Self::Cnojeifhmpe => "JIDAEKECOEL_CNOJEIFHMPE", + Self::Jhomcmcigoa => "JIDAEKECOEL_JHOMCMCIGOA", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JIDAEKECOEL_COBEIGLGIMG" => Some(Self::Cobeiglgimg), + "JIDAEKECOEL_EMKOPDLKKKC" => Some(Self::Emkopdlkkkc), + "JIDAEKECOEL_CNOJEIFHMPE" => Some(Self::Cnojeifhmpe), + "JIDAEKECOEL_JHOMCMCIGOA" => Some(Self::Jhomcmcigoa), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Clegiddanjn { + Gpfjfnkhkol = 0, + Bibeganlbml = 1, + Ffbeijlaobi = 2, +} +impl Clegiddanjn { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Gpfjfnkhkol => "CLEGIDDANJN_GPFJFNKHKOL", + Self::Bibeganlbml => "CLEGIDDANJN_BIBEGANLBML", + Self::Ffbeijlaobi => "CLEGIDDANJN_FFBEIJLAOBI", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CLEGIDDANJN_GPFJFNKHKOL" => Some(Self::Gpfjfnkhkol), + "CLEGIDDANJN_BIBEGANLBML" => Some(Self::Bibeganlbml), + "CLEGIDDANJN_FFBEIJLAOBI" => Some(Self::Ffbeijlaobi), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum ChessUiControlType { + ChessUiControlTypeNone = 0, + ChessUiControlTypeShow = 1, + ChessUiControlTypeHide = 2, +} +impl ChessUiControlType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::ChessUiControlTypeNone => { + "ChessUIControlType_CHESS_UI_CONTROL_TYPE_NONE" + } + Self::ChessUiControlTypeShow => { + "ChessUIControlType_CHESS_UI_CONTROL_TYPE_SHOW" + } + Self::ChessUiControlTypeHide => { + "ChessUIControlType_CHESS_UI_CONTROL_TYPE_HIDE" + } + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ChessUIControlType_CHESS_UI_CONTROL_TYPE_NONE" => { + Some(Self::ChessUiControlTypeNone) + } + "ChessUIControlType_CHESS_UI_CONTROL_TYPE_SHOW" => { + Some(Self::ChessUiControlTypeShow) + } + "ChessUIControlType_CHESS_UI_CONTROL_TYPE_HIDE" => { + Some(Self::ChessUiControlTypeHide) + } + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bkibembbgpl { + Cbgahofomjj = 0, + Dflhglpcoak = 1, + Obljgbajhnd = 2, +} +impl Bkibembbgpl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Cbgahofomjj => "BKIBEMBBGPL_CBGAHOFOMJJ", + Self::Dflhglpcoak => "BKIBEMBBGPL_DFLHGLPCOAK", + Self::Obljgbajhnd => "BKIBEMBBGPL_OBLJGBAJHND", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BKIBEMBBGPL_CBGAHOFOMJJ" => Some(Self::Cbgahofomjj), + "BKIBEMBBGPL_DFLHGLPCOAK" => Some(Self::Dflhglpcoak), + "BKIBEMBBGPL_OBLJGBAJHND" => Some(Self::Obljgbajhnd), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kdpijhnbjmk { + Akhfbajkkjd = 0, + Nlofecnjijl = 1, +} +impl Kdpijhnbjmk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Akhfbajkkjd => "KDPIJHNBJMK_AKHFBAJKKJD", + Self::Nlofecnjijl => "KDPIJHNBJMK_NLOFECNJIJL", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KDPIJHNBJMK_AKHFBAJKKJD" => Some(Self::Akhfbajkkjd), + "KDPIJHNBJMK_NLOFECNJIJL" => Some(Self::Nlofecnjijl), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Idbaelndehi { + Iahnphdaaio = 0, + Lokcmlenoml = 1, + Nleifmgldob = 2, +} +impl Idbaelndehi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Iahnphdaaio => "IDBAELNDEHI_IAHNPHDAAIO", + Self::Lokcmlenoml => "IDBAELNDEHI_LOKCMLENOML", + Self::Nleifmgldob => "IDBAELNDEHI_NLEIFMGLDOB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IDBAELNDEHI_IAHNPHDAAIO" => Some(Self::Iahnphdaaio), + "IDBAELNDEHI_LOKCMLENOML" => Some(Self::Lokcmlenoml), + "IDBAELNDEHI_NLEIFMGLDOB" => Some(Self::Nleifmgldob), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mijgaimmgmp { + HollowEventModificationTypeNone = 0, + Random = 1, + Foreach = 2, +} +impl Mijgaimmgmp { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::HollowEventModificationTypeNone => { + "MIJGAIMMGMP_HOLLOW_EVENT_MODIFICATION_TYPE_NONE" + } + Self::Random => "MIJGAIMMGMP_RANDOM", + Self::Foreach => "MIJGAIMMGMP_FOREACH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MIJGAIMMGMP_HOLLOW_EVENT_MODIFICATION_TYPE_NONE" => { + Some(Self::HollowEventModificationTypeNone) + } + "MIJGAIMMGMP_RANDOM" => Some(Self::Random), + "MIJGAIMMGMP_FOREACH" => Some(Self::Foreach), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Bkjpaljcifl { + Dpopkhmnbgb = 0, + Gdjmbgldamc = 1, +} +impl Bkjpaljcifl { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dpopkhmnbgb => "BKJPALJCIFL_DPOPKHMNBGB", + Self::Gdjmbgldamc => "BKJPALJCIFL_GDJMBGLDAMC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "BKJPALJCIFL_DPOPKHMNBGB" => Some(Self::Dpopkhmnbgb), + "BKJPALJCIFL_GDJMBGLDAMC" => Some(Self::Gdjmbgldamc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Kgpnabibgmi { + Nmjecadnopf = 0, + Okiooojoeif = 1, +} +impl Kgpnabibgmi { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Nmjecadnopf => "KGPNABIBGMI_NMJECADNOPF", + Self::Okiooojoeif => "KGPNABIBGMI_OKIOOOJOEIF", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "KGPNABIBGMI_NMJECADNOPF" => Some(Self::Nmjecadnopf), + "KGPNABIBGMI_OKIOOOJOEIF" => Some(Self::Okiooojoeif), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Meljmbclbbh { + Andcalgngoc = 0, + Fnpiapnimda = 1, + Emgifbhofpd = 2, + Cajbohbncio = 3, + Gomfnnnbcpg = 4, + Nmbngpdgcme = 5, + Bceffoogiki = 6, + Lgechebkihd = 7, + Kfnpmjnkdli = 8, + Nooappepkof = 9, + Cfhocceomcm = 11, + Akcdchmcmag = 12, + Inbdbdbnbfm = 13, + Bfjgimiinkb = 14, + Cpaeadnfklo = 15, + Dklhfgjijko = 101, + Jmemininbfb = 102, + Icaihglmjco = 103, + Llkkkcacbgo = 104, + Hlmgnbbbknh = 105, + Nmhkkajokcg = 106, + Nlmbnbmhpnf = 107, + Meclgcjacfi = 108, + Obihepdbkdp = 109, + Jbibacodeki = 110, + Moddbnofemi = 111, + Hacpkpfcipi = 112, + Jlhnpmejana = 113, + Ddkgheklmaj = 114, + Lhbljhidbjh = 115, + Bbhngjaejjh = 116, + Bimnpdgllah = 117, + Ocebeekkdkn = 118, + Anihkfhfjnp = 119, + Jolheppjeil = 120, + Ekbbmkgicea = 121, + Ldmomeaocak = 122, + Lljfdanbbld = 123, + Dbphkoeganc = 124, + Hjkmpfpfpmk = 125, + Ojkmgngomhn = 126, + Eilcpeimpli = 127, + Fkjgfjcchhb = 128, + Kchjndnhafd = 129, + Edhhlfeanid = 130, + Aoankclkkhe = 131, + Abocglalnml = 132, + Inhjjlmeode = 133, + Eelcnagebje = 134, + Jninbokchge = 998, + Npoihelbmje = 999, +} +impl Meljmbclbbh { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Andcalgngoc => "MELJMBCLBBH_ANDCALGNGOC", + Self::Fnpiapnimda => "MELJMBCLBBH_FNPIAPNIMDA", + Self::Emgifbhofpd => "MELJMBCLBBH_EMGIFBHOFPD", + Self::Cajbohbncio => "MELJMBCLBBH_CAJBOHBNCIO", + Self::Gomfnnnbcpg => "MELJMBCLBBH_GOMFNNNBCPG", + Self::Nmbngpdgcme => "MELJMBCLBBH_NMBNGPDGCME", + Self::Bceffoogiki => "MELJMBCLBBH_BCEFFOOGIKI", + Self::Lgechebkihd => "MELJMBCLBBH_LGECHEBKIHD", + Self::Kfnpmjnkdli => "MELJMBCLBBH_KFNPMJNKDLI", + Self::Nooappepkof => "MELJMBCLBBH_NOOAPPEPKOF", + Self::Cfhocceomcm => "MELJMBCLBBH_CFHOCCEOMCM", + Self::Akcdchmcmag => "MELJMBCLBBH_AKCDCHMCMAG", + Self::Inbdbdbnbfm => "MELJMBCLBBH_INBDBDBNBFM", + Self::Bfjgimiinkb => "MELJMBCLBBH_BFJGIMIINKB", + Self::Cpaeadnfklo => "MELJMBCLBBH_CPAEADNFKLO", + Self::Dklhfgjijko => "MELJMBCLBBH_DKLHFGJIJKO", + Self::Jmemininbfb => "MELJMBCLBBH_JMEMININBFB", + Self::Icaihglmjco => "MELJMBCLBBH_ICAIHGLMJCO", + Self::Llkkkcacbgo => "MELJMBCLBBH_LLKKKCACBGO", + Self::Hlmgnbbbknh => "MELJMBCLBBH_HLMGNBBBKNH", + Self::Nmhkkajokcg => "MELJMBCLBBH_NMHKKAJOKCG", + Self::Nlmbnbmhpnf => "MELJMBCLBBH_NLMBNBMHPNF", + Self::Meclgcjacfi => "MELJMBCLBBH_MECLGCJACFI", + Self::Obihepdbkdp => "MELJMBCLBBH_OBIHEPDBKDP", + Self::Jbibacodeki => "MELJMBCLBBH_JBIBACODEKI", + Self::Moddbnofemi => "MELJMBCLBBH_MODDBNOFEMI", + Self::Hacpkpfcipi => "MELJMBCLBBH_HACPKPFCIPI", + Self::Jlhnpmejana => "MELJMBCLBBH_JLHNPMEJANA", + Self::Ddkgheklmaj => "MELJMBCLBBH_DDKGHEKLMAJ", + Self::Lhbljhidbjh => "MELJMBCLBBH_LHBLJHIDBJH", + Self::Bbhngjaejjh => "MELJMBCLBBH_BBHNGJAEJJH", + Self::Bimnpdgllah => "MELJMBCLBBH_BIMNPDGLLAH", + Self::Ocebeekkdkn => "MELJMBCLBBH_OCEBEEKKDKN", + Self::Anihkfhfjnp => "MELJMBCLBBH_ANIHKFHFJNP", + Self::Jolheppjeil => "MELJMBCLBBH_JOLHEPPJEIL", + Self::Ekbbmkgicea => "MELJMBCLBBH_EKBBMKGICEA", + Self::Ldmomeaocak => "MELJMBCLBBH_LDMOMEAOCAK", + Self::Lljfdanbbld => "MELJMBCLBBH_LLJFDANBBLD", + Self::Dbphkoeganc => "MELJMBCLBBH_DBPHKOEGANC", + Self::Hjkmpfpfpmk => "MELJMBCLBBH_HJKMPFPFPMK", + Self::Ojkmgngomhn => "MELJMBCLBBH_OJKMGNGOMHN", + Self::Eilcpeimpli => "MELJMBCLBBH_EILCPEIMPLI", + Self::Fkjgfjcchhb => "MELJMBCLBBH_FKJGFJCCHHB", + Self::Kchjndnhafd => "MELJMBCLBBH_KCHJNDNHAFD", + Self::Edhhlfeanid => "MELJMBCLBBH_EDHHLFEANID", + Self::Aoankclkkhe => "MELJMBCLBBH_AOANKCLKKHE", + Self::Abocglalnml => "MELJMBCLBBH_ABOCGLALNML", + Self::Inhjjlmeode => "MELJMBCLBBH_INHJJLMEODE", + Self::Eelcnagebje => "MELJMBCLBBH_EELCNAGEBJE", + Self::Jninbokchge => "MELJMBCLBBH_JNINBOKCHGE", + Self::Npoihelbmje => "MELJMBCLBBH_NPOIHELBMJE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MELJMBCLBBH_ANDCALGNGOC" => Some(Self::Andcalgngoc), + "MELJMBCLBBH_FNPIAPNIMDA" => Some(Self::Fnpiapnimda), + "MELJMBCLBBH_EMGIFBHOFPD" => Some(Self::Emgifbhofpd), + "MELJMBCLBBH_CAJBOHBNCIO" => Some(Self::Cajbohbncio), + "MELJMBCLBBH_GOMFNNNBCPG" => Some(Self::Gomfnnnbcpg), + "MELJMBCLBBH_NMBNGPDGCME" => Some(Self::Nmbngpdgcme), + "MELJMBCLBBH_BCEFFOOGIKI" => Some(Self::Bceffoogiki), + "MELJMBCLBBH_LGECHEBKIHD" => Some(Self::Lgechebkihd), + "MELJMBCLBBH_KFNPMJNKDLI" => Some(Self::Kfnpmjnkdli), + "MELJMBCLBBH_NOOAPPEPKOF" => Some(Self::Nooappepkof), + "MELJMBCLBBH_CFHOCCEOMCM" => Some(Self::Cfhocceomcm), + "MELJMBCLBBH_AKCDCHMCMAG" => Some(Self::Akcdchmcmag), + "MELJMBCLBBH_INBDBDBNBFM" => Some(Self::Inbdbdbnbfm), + "MELJMBCLBBH_BFJGIMIINKB" => Some(Self::Bfjgimiinkb), + "MELJMBCLBBH_CPAEADNFKLO" => Some(Self::Cpaeadnfklo), + "MELJMBCLBBH_DKLHFGJIJKO" => Some(Self::Dklhfgjijko), + "MELJMBCLBBH_JMEMININBFB" => Some(Self::Jmemininbfb), + "MELJMBCLBBH_ICAIHGLMJCO" => Some(Self::Icaihglmjco), + "MELJMBCLBBH_LLKKKCACBGO" => Some(Self::Llkkkcacbgo), + "MELJMBCLBBH_HLMGNBBBKNH" => Some(Self::Hlmgnbbbknh), + "MELJMBCLBBH_NMHKKAJOKCG" => Some(Self::Nmhkkajokcg), + "MELJMBCLBBH_NLMBNBMHPNF" => Some(Self::Nlmbnbmhpnf), + "MELJMBCLBBH_MECLGCJACFI" => Some(Self::Meclgcjacfi), + "MELJMBCLBBH_OBIHEPDBKDP" => Some(Self::Obihepdbkdp), + "MELJMBCLBBH_JBIBACODEKI" => Some(Self::Jbibacodeki), + "MELJMBCLBBH_MODDBNOFEMI" => Some(Self::Moddbnofemi), + "MELJMBCLBBH_HACPKPFCIPI" => Some(Self::Hacpkpfcipi), + "MELJMBCLBBH_JLHNPMEJANA" => Some(Self::Jlhnpmejana), + "MELJMBCLBBH_DDKGHEKLMAJ" => Some(Self::Ddkgheklmaj), + "MELJMBCLBBH_LHBLJHIDBJH" => Some(Self::Lhbljhidbjh), + "MELJMBCLBBH_BBHNGJAEJJH" => Some(Self::Bbhngjaejjh), + "MELJMBCLBBH_BIMNPDGLLAH" => Some(Self::Bimnpdgllah), + "MELJMBCLBBH_OCEBEEKKDKN" => Some(Self::Ocebeekkdkn), + "MELJMBCLBBH_ANIHKFHFJNP" => Some(Self::Anihkfhfjnp), + "MELJMBCLBBH_JOLHEPPJEIL" => Some(Self::Jolheppjeil), + "MELJMBCLBBH_EKBBMKGICEA" => Some(Self::Ekbbmkgicea), + "MELJMBCLBBH_LDMOMEAOCAK" => Some(Self::Ldmomeaocak), + "MELJMBCLBBH_LLJFDANBBLD" => Some(Self::Lljfdanbbld), + "MELJMBCLBBH_DBPHKOEGANC" => Some(Self::Dbphkoeganc), + "MELJMBCLBBH_HJKMPFPFPMK" => Some(Self::Hjkmpfpfpmk), + "MELJMBCLBBH_OJKMGNGOMHN" => Some(Self::Ojkmgngomhn), + "MELJMBCLBBH_EILCPEIMPLI" => Some(Self::Eilcpeimpli), + "MELJMBCLBBH_FKJGFJCCHHB" => Some(Self::Fkjgfjcchhb), + "MELJMBCLBBH_KCHJNDNHAFD" => Some(Self::Kchjndnhafd), + "MELJMBCLBBH_EDHHLFEANID" => Some(Self::Edhhlfeanid), + "MELJMBCLBBH_AOANKCLKKHE" => Some(Self::Aoankclkkhe), + "MELJMBCLBBH_ABOCGLALNML" => Some(Self::Abocglalnml), + "MELJMBCLBBH_INHJJLMEODE" => Some(Self::Inhjjlmeode), + "MELJMBCLBBH_EELCNAGEBJE" => Some(Self::Eelcnagebje), + "MELJMBCLBBH_JNINBOKCHGE" => Some(Self::Jninbokchge), + "MELJMBCLBBH_NPOIHELBMJE" => Some(Self::Npoihelbmje), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Mbhmpopieco { + Phdfpchjnlk = 0, + Knojpoblagb = 1, + Ojnkakgpmkp = 2, + Jclnihlgfbe = 3, + Bpolgdohenb = 4, +} +impl Mbhmpopieco { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Phdfpchjnlk => "MBHMPOPIECO_PHDFPCHJNLK", + Self::Knojpoblagb => "MBHMPOPIECO_KNOJPOBLAGB", + Self::Ojnkakgpmkp => "MBHMPOPIECO_OJNKAKGPMKP", + Self::Jclnihlgfbe => "MBHMPOPIECO_JCLNIHLGFBE", + Self::Bpolgdohenb => "MBHMPOPIECO_BPOLGDOHENB", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MBHMPOPIECO_PHDFPCHJNLK" => Some(Self::Phdfpchjnlk), + "MBHMPOPIECO_KNOJPOBLAGB" => Some(Self::Knojpoblagb), + "MBHMPOPIECO_OJNKAKGPMKP" => Some(Self::Ojnkakgpmkp), + "MBHMPOPIECO_JCLNIHLGFBE" => Some(Self::Jclnihlgfbe), + "MBHMPOPIECO_BPOLGDOHENB" => Some(Self::Bpolgdohenb), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Dkjofnpnmef { + EndBlackMaskNone = 0, + EndBlackMaskWaitTransition = 1, + EndBlackMaskAutoClose = 2, +} +impl Dkjofnpnmef { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::EndBlackMaskNone => "DKJOFNPNMEF_END_BLACK_MASK_NONE", + Self::EndBlackMaskWaitTransition => { + "DKJOFNPNMEF_END_BLACK_MASK_WAIT_TRANSITION" + } + Self::EndBlackMaskAutoClose => "DKJOFNPNMEF_END_BLACK_MASK_AUTO_CLOSE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DKJOFNPNMEF_END_BLACK_MASK_NONE" => Some(Self::EndBlackMaskNone), + "DKJOFNPNMEF_END_BLACK_MASK_WAIT_TRANSITION" => { + Some(Self::EndBlackMaskWaitTransition) + } + "DKJOFNPNMEF_END_BLACK_MASK_AUTO_CLOSE" => Some(Self::EndBlackMaskAutoClose), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jbhmgcmmbae { + Lakhjealoag = 0, + Ejlopiacngh = 2, + Pkjfmphofoc = 4, + Pgigigpabih = 8, +} +impl Jbhmgcmmbae { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Lakhjealoag => "JBHMGCMMBAE_LAKHJEALOAG", + Self::Ejlopiacngh => "JBHMGCMMBAE_EJLOPIACNGH", + Self::Pkjfmphofoc => "JBHMGCMMBAE_PKJFMPHOFOC", + Self::Pgigigpabih => "JBHMGCMMBAE_PGIGIGPABIH", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JBHMGCMMBAE_LAKHJEALOAG" => Some(Self::Lakhjealoag), + "JBHMGCMMBAE_EJLOPIACNGH" => Some(Self::Ejlopiacngh), + "JBHMGCMMBAE_PKJFMPHOFOC" => Some(Self::Pkjfmphofoc), + "JBHMGCMMBAE_PGIGIGPABIH" => Some(Self::Pgigigpabih), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Jhaaieefkmk { + Dinngagfeap = 0, + Kgdgohckfbn = 1, + Onoglbcjpoe = 2, + Jdnmoiflokp = 3, + Jghephaghgc = 4, + Dcopligfhpc = 5, +} +impl Jhaaieefkmk { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Dinngagfeap => "JHAAIEEFKMK_DINNGAGFEAP", + Self::Kgdgohckfbn => "JHAAIEEFKMK_KGDGOHCKFBN", + Self::Onoglbcjpoe => "JHAAIEEFKMK_ONOGLBCJPOE", + Self::Jdnmoiflokp => "JHAAIEEFKMK_JDNMOIFLOKP", + Self::Jghephaghgc => "JHAAIEEFKMK_JGHEPHAGHGC", + Self::Dcopligfhpc => "JHAAIEEFKMK_DCOPLIGFHPC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JHAAIEEFKMK_DINNGAGFEAP" => Some(Self::Dinngagfeap), + "JHAAIEEFKMK_KGDGOHCKFBN" => Some(Self::Kgdgohckfbn), + "JHAAIEEFKMK_ONOGLBCJPOE" => Some(Self::Onoglbcjpoe), + "JHAAIEEFKMK_JDNMOIFLOKP" => Some(Self::Jdnmoiflokp), + "JHAAIEEFKMK_JGHEPHAGHGC" => Some(Self::Jghephaghgc), + "JHAAIEEFKMK_DCOPLIGFHPC" => Some(Self::Dcopligfhpc), + _ => None, + } + } +} +#[derive(trigger_protobuf_derive::CmdID)] +#[derive(trigger_protobuf_derive::XorFields)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum Pidocacccek { + Kecbicjmbpg = 0, + Deldhbogaoj = 1, +} +impl Pidocacccek { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Self::Kecbicjmbpg => "PIDOCACCCEK_KECBICJMBPG", + Self::Deldhbogaoj => "PIDOCACCCEK_DELDHBOGAOJ", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PIDOCACCCEK_KECBICJMBPG" => Some(Self::Kecbicjmbpg), + "PIDOCACCCEK_DELDHBOGAOJ" => Some(Self::Deldhbogaoj), + _ => None, + } + } +} \ No newline at end of file diff --git a/crates/trigger-protobuf/out/protocol_map.rs b/crates/trigger-protobuf/out/protocol_map.rs new file mode 100644 index 0000000..e728fa2 --- /dev/null +++ b/crates/trigger-protobuf/out/protocol_map.rs @@ -0,0 +1,7312 @@ +pub fn pb_to_common_protocol_unit( + pb_cmd_id: u16, + pb: &[u8], +) -> Result, crate::ProtobufDecodeError> { + match pb_cmd_id { + DrinkCafeScRsp::CMD_ID => { + let mut pb_message = DrinkCafeScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::DrinkCafeScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + InteractWithUnitCsReq::CMD_ID => { + let mut pb_message = InteractWithUnitCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::InteractWithUnitCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + EndBattleScRsp::CMD_ID => { + let mut pb_message = EndBattleScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::EndBattleScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + BattleReportCsReq::CMD_ID => { + let mut pb_message = BattleReportCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::BattleReportCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetAvatarDataCsReq::CMD_ID => { + let mut pb_message = GetAvatarDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetAvatarDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + SavePosInMainCityCsReq::CMD_ID => { + let mut pb_message = SavePosInMainCityCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::SavePosInMainCityCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + ActiveHollowCheckPointCsReq::CMD_ID => { + let mut pb_message = ActiveHollowCheckPointCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::ActiveHollowCheckPointCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + DelNewRamenCsReq::CMD_ID => { + let mut pb_message = DelNewRamenCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::DelNewRamenCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + SwitchRoleCsReq::CMD_ID => { + let mut pb_message = SwitchRoleCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::SwitchRoleCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetChatEmojiListScRsp::CMD_ID => { + let mut pb_message = GetChatEmojiListScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetChatEmojiListScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetAvatarDataScRsp::CMD_ID => { + let mut pb_message = GetAvatarDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetAvatarDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetWishlistDataCsReq::CMD_ID => { + let mut pb_message = GetWishlistDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetWishlistDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetBattleEventInfoCsReq::CMD_ID => { + let mut pb_message = GetBattleEventInfoCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetBattleEventInfoCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetEquipDataScRsp::CMD_ID => { + let mut pb_message = GetEquipDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetEquipDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + ReportUiLayoutPlatformCsReq::CMD_ID => { + let mut pb_message = ReportUiLayoutPlatformCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::ReportUiLayoutPlatformCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetCollectMapCsReq::CMD_ID => { + let mut pb_message = GetCollectMapCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetCollectMapCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + AbyssArpeggioGetDataCsReq::CMD_ID => { + let mut pb_message = AbyssArpeggioGetDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::AbyssArpeggioGetDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetFriendListCsReq::CMD_ID => { + let mut pb_message = GetFriendListCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetFriendListCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + RunEventGraphScRsp::CMD_ID => { + let mut pb_message = RunEventGraphScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::RunEventGraphScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetPrivateMessageDataCsReq::CMD_ID => { + let mut pb_message = GetPrivateMessageDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetPrivateMessageDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetBabelTowerDataCsReq::CMD_ID => { + let mut pb_message = GetBabelTowerDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetBabelTowerDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + ClickHollowSystemCsReq::CMD_ID => { + let mut pb_message = ClickHollowSystemCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::ClickHollowSystemCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + BeginArchiveBattleQuestScRsp::CMD_ID => { + let mut pb_message = BeginArchiveBattleQuestScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::BeginArchiveBattleQuestScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetFishingContestDataCsReq::CMD_ID => { + let mut pb_message = GetFishingContestDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetFishingContestDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetMiniscapeEntrustDataCsReq::CMD_ID => { + let mut pb_message = GetMiniscapeEntrustDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetMiniscapeEntrustDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetCafeDataScRsp::CMD_ID => { + let mut pb_message = GetCafeDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetCafeDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetBattlePassDataScRsp::CMD_ID => { + let mut pb_message = GetBattlePassDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetBattlePassDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + EatRamenCsReq::CMD_ID => { + let mut pb_message = EatRamenCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::EatRamenCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetExplorationDataScRsp::CMD_ID => { + let mut pb_message = GetExplorationDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetExplorationDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetFriendListScRsp::CMD_ID => { + let mut pb_message = GetFriendListScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetFriendListScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GameLogReportCsReq::CMD_ID => { + let mut pb_message = GameLogReportCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GameLogReportCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetVhsStoreDataCsReq::CMD_ID => { + let mut pb_message = GetVhsStoreDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetVhsStoreDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetResourceDataScRsp::CMD_ID => { + let mut pb_message = GetResourceDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetResourceDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetPlayerMailsCsReq::CMD_ID => { + let mut pb_message = GetPlayerMailsCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetPlayerMailsCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetOnlineFriendsListScRsp::CMD_ID => { + let mut pb_message = GetOnlineFriendsListScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetOnlineFriendsListScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetFashionStoreDataScRsp::CMD_ID => { + let mut pb_message = GetFashionStoreDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetFashionStoreDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetArcadeDataScRsp::CMD_ID => { + let mut pb_message = GetArcadeDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetArcadeDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + EnterWorldCsReq::CMD_ID => { + let mut pb_message = EnterWorldCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::EnterWorldCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + UndressEquipmentCsReq::CMD_ID => { + let mut pb_message = UndressEquipmentCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::UndressEquipmentCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetDisplayCaseDataCsReq::CMD_ID => { + let mut pb_message = GetDisplayCaseDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetDisplayCaseDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + PlayerOperationCsReq::CMD_ID => { + let mut pb_message = PlayerOperationCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::PlayerOperationCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetHollowDataScRsp::CMD_ID => { + let mut pb_message = GetHollowDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetHollowDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetClientSystemsDataCsReq::CMD_ID => { + let mut pb_message = GetClientSystemsDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetClientSystemsDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetCharacterQuestListScRsp::CMD_ID => { + let mut pb_message = GetCharacterQuestListScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetCharacterQuestListScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetCampIdleDataScRsp::CMD_ID => { + let mut pb_message = GetCampIdleDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetCampIdleDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetRewardBuffDataScRsp::CMD_ID => { + let mut pb_message = GetRewardBuffDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetRewardBuffDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + RechargeGetItemListScRsp::CMD_ID => { + let mut pb_message = RechargeGetItemListScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::RechargeGetItemListScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + EndBattleCsReq::CMD_ID => { + let mut pb_message = EndBattleCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::EndBattleCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + TalentSwitchCsReq::CMD_ID => { + let mut pb_message = TalentSwitchCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::TalentSwitchCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + ReportBattleTeamCsReq::CMD_ID => { + let mut pb_message = ReportBattleTeamCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::ReportBattleTeamCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + PostEnterWorldCsReq::CMD_ID => { + let mut pb_message = PostEnterWorldCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::PostEnterWorldCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetResourceDataCsReq::CMD_ID => { + let mut pb_message = GetResourceDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetResourceDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetPhotoWallDataCsReq::CMD_ID => { + let mut pb_message = GetPhotoWallDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetPhotoWallDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetDailyChallengeDataScRsp::CMD_ID => { + let mut pb_message = GetDailyChallengeDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetDailyChallengeDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetCharacterQuestListCsReq::CMD_ID => { + let mut pb_message = GetCharacterQuestListCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetCharacterQuestListCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetTipsInfoCsReq::CMD_ID => { + let mut pb_message = GetTipsInfoCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetTipsInfoCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetAvatarRecommendEquipCsReq::CMD_ID => { + let mut pb_message = GetAvatarRecommendEquipCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetAvatarRecommendEquipCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + BeginTrainingCourseBattleCsReq::CMD_ID => { + let mut pb_message = BeginTrainingCourseBattleCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::BeginTrainingCourseBattleCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + PerformTriggerScRsp::CMD_ID => { + let mut pb_message = PerformTriggerScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::PerformTriggerScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetArchiveDataScRsp::CMD_ID => { + let mut pb_message = GetArchiveDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetArchiveDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetArchiveDataCsReq::CMD_ID => { + let mut pb_message = GetArchiveDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetArchiveDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetRamenDataCsReq::CMD_ID => { + let mut pb_message = GetRamenDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetRamenDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetBattlePassDataCsReq::CMD_ID => { + let mut pb_message = GetBattlePassDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetBattlePassDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetFairyDataCsReq::CMD_ID => { + let mut pb_message = GetFairyDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetFairyDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetCollectMapScRsp::CMD_ID => { + let mut pb_message = GetCollectMapScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetCollectMapScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + FinishArchivePerformCsReq::CMD_ID => { + let mut pb_message = FinishArchivePerformCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::FinishArchivePerformCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetPrivateMessageDataScRsp::CMD_ID => { + let mut pb_message = GetPrivateMessageDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetPrivateMessageDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetJourneyDataScRsp::CMD_ID => { + let mut pb_message = GetJourneyDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetJourneyDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetTipsInfoScRsp::CMD_ID => { + let mut pb_message = GetTipsInfoScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetTipsInfoScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetFashionStoreDataCsReq::CMD_ID => { + let mut pb_message = GetFashionStoreDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetFashionStoreDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetNewsStandDataCsReq::CMD_ID => { + let mut pb_message = GetNewsStandDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetNewsStandDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetPlayerTransactionScRsp::CMD_ID => { + let mut pb_message = GetPlayerTransactionScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetPlayerTransactionScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetWebActivityDataScRsp::CMD_ID => { + let mut pb_message = GetWebActivityDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetWebActivityDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetBuddyDataCsReq::CMD_ID => { + let mut pb_message = GetBuddyDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetBuddyDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetCampIdleDataCsReq::CMD_ID => { + let mut pb_message = GetCampIdleDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetCampIdleDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetAuthkeyCsReq::CMD_ID => { + let mut pb_message = GetAuthkeyCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetAuthkeyCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetQuestionsAnswerGameDataScRsp::CMD_ID => { + let mut pb_message = GetQuestionsAnswerGameDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetQuestionsAnswerGameDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetRedDotListCsReq::CMD_ID => { + let mut pb_message = GetRedDotListCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetRedDotListCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetHadalZoneDataCsReq::CMD_ID => { + let mut pb_message = GetHadalZoneDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetHadalZoneDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + AbyssGetDataCsReq::CMD_ID => { + let mut pb_message = AbyssGetDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::AbyssGetDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetCafeDataCsReq::CMD_ID => { + let mut pb_message = GetCafeDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetCafeDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + BattleReportScRsp::CMD_ID => { + let mut pb_message = BattleReportScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::BattleReportScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetRidusGotBooDataCsReq::CMD_ID => { + let mut pb_message = GetRidusGotBooDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetRidusGotBooDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + DressEquipmentSuitCsReq::CMD_ID => { + let mut pb_message = DressEquipmentSuitCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::DressEquipmentSuitCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetQuestionsAnswerGameDataCsReq::CMD_ID => { + let mut pb_message = GetQuestionsAnswerGameDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetQuestionsAnswerGameDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetPlayerTransactionCsReq::CMD_ID => { + let mut pb_message = GetPlayerTransactionCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetPlayerTransactionCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetDailyChallengeDataCsReq::CMD_ID => { + let mut pb_message = GetDailyChallengeDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetDailyChallengeDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + PerformTriggerCsReq::CMD_ID => { + let mut pb_message = PerformTriggerCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::PerformTriggerCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + DressEquipmentCsReq::CMD_ID => { + let mut pb_message = DressEquipmentCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::DressEquipmentCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + PlayerLogoutCsReq::CMD_ID => { + let mut pb_message = PlayerLogoutCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::PlayerLogoutCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetGachaDataCsReq::CMD_ID => { + let mut pb_message = GetGachaDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetGachaDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetJourneyDataCsReq::CMD_ID => { + let mut pb_message = GetJourneyDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetJourneyDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + EnterSectionCompleteScRsp::CMD_ID => { + let mut pb_message = EnterSectionCompleteScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::EnterSectionCompleteScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetWebActivityDataCsReq::CMD_ID => { + let mut pb_message = GetWebActivityDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetWebActivityDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetOnlineFriendsListCsReq::CMD_ID => { + let mut pb_message = GetOnlineFriendsListCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetOnlineFriendsListCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetServerTimestampScRsp::CMD_ID => { + let mut pb_message = GetServerTimestampScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetServerTimestampScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetAuthkeyScRsp::CMD_ID => { + let mut pb_message = GetAuthkeyScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetAuthkeyScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetShoppingMallInfoScRsp::CMD_ID => { + let mut pb_message = GetShoppingMallInfoScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetShoppingMallInfoScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetAbyssRewardDataScRsp::CMD_ID => { + let mut pb_message = GetAbyssRewardDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetAbyssRewardDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + PerformEndCsReq::CMD_ID => { + let mut pb_message = PerformEndCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::PerformEndCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetRedDotListScRsp::CMD_ID => { + let mut pb_message = GetRedDotListScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetRedDotListScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetClientSystemsDataScRsp::CMD_ID => { + let mut pb_message = GetClientSystemsDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetClientSystemsDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + EnterWorldScRsp::CMD_ID => { + let mut pb_message = EnterWorldScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::EnterWorldScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetRamenDataScRsp::CMD_ID => { + let mut pb_message = GetRamenDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetRamenDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetWeaponDataScRsp::CMD_ID => { + let mut pb_message = GetWeaponDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetWeaponDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetMiniscapeEntrustDataScRsp::CMD_ID => { + let mut pb_message = GetMiniscapeEntrustDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetMiniscapeEntrustDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetArcadeDataCsReq::CMD_ID => { + let mut pb_message = GetArcadeDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetArcadeDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetTrashbinHermitDataCsReq::CMD_ID => { + let mut pb_message = GetTrashbinHermitDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetTrashbinHermitDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetVhsStoreDataScRsp::CMD_ID => { + let mut pb_message = GetVhsStoreDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetVhsStoreDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetActivityDataScRsp::CMD_ID => { + let mut pb_message = GetActivityDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetActivityDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetServerTimestampCsReq::CMD_ID => { + let mut pb_message = GetServerTimestampCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetServerTimestampCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetRoleCardDataCsReq::CMD_ID => { + let mut pb_message = GetRoleCardDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetRoleCardDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + SavePlayerSystemSettingCsReq::CMD_ID => { + let mut pb_message = SavePlayerSystemSettingCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::SavePlayerSystemSettingCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + PerformJumpCsReq::CMD_ID => { + let mut pb_message = PerformJumpCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::PerformJumpCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetQuestDataCsReq::CMD_ID => { + let mut pb_message = GetQuestDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetQuestDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetChatEmojiListCsReq::CMD_ID => { + let mut pb_message = GetChatEmojiListCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetChatEmojiListCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetQuestDataScRsp::CMD_ID => { + let mut pb_message = GetQuestDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetQuestDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetHollowDataCsReq::CMD_ID => { + let mut pb_message = GetHollowDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetHollowDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetMainCityRevivalDataScRsp::CMD_ID => { + let mut pb_message = GetMainCityRevivalDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetMainCityRevivalDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + PlayerSyncScNotify::CMD_ID => { + let mut pb_message = PlayerSyncScNotify::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::PlayerSyncScNotify::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + EnterSectionCsReq::CMD_ID => { + let mut pb_message = EnterSectionCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::EnterSectionCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + EnterSceneScNotify::CMD_ID => { + let mut pb_message = EnterSceneScNotify::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::EnterSceneScNotify::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetTrashbinHermitDataScRsp::CMD_ID => { + let mut pb_message = GetTrashbinHermitDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetTrashbinHermitDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetWeaponDataCsReq::CMD_ID => { + let mut pb_message = GetWeaponDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetWeaponDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + VideoGetInfoCsReq::CMD_ID => { + let mut pb_message = VideoGetInfoCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::VideoGetInfoCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + VideoGetInfoScRsp::CMD_ID => { + let mut pb_message = VideoGetInfoScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::VideoGetInfoScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + WeaponDressCsReq::CMD_ID => { + let mut pb_message = WeaponDressCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::WeaponDressCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + EnterSectionCompleteCsReq::CMD_ID => { + let mut pb_message = EnterSectionCompleteCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::EnterSectionCompleteCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetFishingContestDataScRsp::CMD_ID => { + let mut pb_message = GetFishingContestDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetFishingContestDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + PlaySongCsReq::CMD_ID => { + let mut pb_message = PlaySongCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::PlaySongCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + WorkbenchGetDataCsReq::CMD_ID => { + let mut pb_message = WorkbenchGetDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::WorkbenchGetDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + RunEventGraphCsReq::CMD_ID => { + let mut pb_message = RunEventGraphCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::RunEventGraphCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetMonthCardRewardListCsReq::CMD_ID => { + let mut pb_message = GetMonthCardRewardListCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetMonthCardRewardListCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + RefreshSectionScRsp::CMD_ID => { + let mut pb_message = RefreshSectionScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::RefreshSectionScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetBattleEventInfoScRsp::CMD_ID => { + let mut pb_message = GetBattleEventInfoScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetBattleEventInfoScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetWishlistDataScRsp::CMD_ID => { + let mut pb_message = GetWishlistDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetWishlistDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + LeaveCurSceneCsReq::CMD_ID => { + let mut pb_message = LeaveCurSceneCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::LeaveCurSceneCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + UpdateEventGraphScNotify::CMD_ID => { + let mut pb_message = UpdateEventGraphScNotify::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::UpdateEventGraphScNotify::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetShoppingMallInfoCsReq::CMD_ID => { + let mut pb_message = GetShoppingMallInfoCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetShoppingMallInfoCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetPlayerBasicInfoCsReq::CMD_ID => { + let mut pb_message = GetPlayerBasicInfoCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetPlayerBasicInfoCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + DrinkCafeCsReq::CMD_ID => { + let mut pb_message = DrinkCafeCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::DrinkCafeCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + SetMusicPlayerModeCsReq::CMD_ID => { + let mut pb_message = SetMusicPlayerModeCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::SetMusicPlayerModeCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + TriggerInteractCsReq::CMD_ID => { + let mut pb_message = TriggerInteractCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::TriggerInteractCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetFairyDataScRsp::CMD_ID => { + let mut pb_message = GetFairyDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetFairyDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetActivityDataCsReq::CMD_ID => { + let mut pb_message = GetActivityDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetActivityDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetPlayerBasicInfoScRsp::CMD_ID => { + let mut pb_message = GetPlayerBasicInfoScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetPlayerBasicInfoScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + RechargeGetItemListCsReq::CMD_ID => { + let mut pb_message = RechargeGetItemListCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::RechargeGetItemListCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + AbyssGetDataScRsp::CMD_ID => { + let mut pb_message = AbyssGetDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::AbyssGetDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + SyncEventInfoScNotify::CMD_ID => { + let mut pb_message = SyncEventInfoScNotify::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::SyncEventInfoScNotify::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetRewardBuffDataCsReq::CMD_ID => { + let mut pb_message = GetRewardBuffDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetRewardBuffDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetPlayerDisplayDataCsReq::CMD_ID => { + let mut pb_message = GetPlayerDisplayDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetPlayerDisplayDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetRoleCardDataScRsp::CMD_ID => { + let mut pb_message = GetRoleCardDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetRoleCardDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + StartHollowQuestCsReq::CMD_ID => { + let mut pb_message = StartHollowQuestCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::StartHollowQuestCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetRidusGotBooDataScRsp::CMD_ID => { + let mut pb_message = GetRidusGotBooDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetRidusGotBooDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + FinishArchivePerformScRsp::CMD_ID => { + let mut pb_message = FinishArchivePerformScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::FinishArchivePerformScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + SceneTransitionCsReq::CMD_ID => { + let mut pb_message = SceneTransitionCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::SceneTransitionCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + EatRamenScRsp::CMD_ID => { + let mut pb_message = EatRamenScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::EatRamenScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetExplorationDataCsReq::CMD_ID => { + let mut pb_message = GetExplorationDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetExplorationDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + StartHollowQuestScRsp::CMD_ID => { + let mut pb_message = StartHollowQuestScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::StartHollowQuestScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetAbyssRewardDataCsReq::CMD_ID => { + let mut pb_message = GetAbyssRewardDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetAbyssRewardDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + RefreshSectionCsReq::CMD_ID => { + let mut pb_message = RefreshSectionCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::RefreshSectionCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetNewsStandDataScRsp::CMD_ID => { + let mut pb_message = GetNewsStandDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetNewsStandDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + WeaponUnDressCsReq::CMD_ID => { + let mut pb_message = WeaponUnDressCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::WeaponUnDressCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetEquipDataCsReq::CMD_ID => { + let mut pb_message = GetEquipDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetEquipDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetMainCityRevivalDataCsReq::CMD_ID => { + let mut pb_message = GetMainCityRevivalDataCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetMainCityRevivalDataCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + BeginArchiveBattleQuestCsReq::CMD_ID => { + let mut pb_message = BeginArchiveBattleQuestCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::BeginArchiveBattleQuestCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetPlayerDisplayDataScRsp::CMD_ID => { + let mut pb_message = GetPlayerDisplayDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetPlayerDisplayDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + WorkbenchGetDataScRsp::CMD_ID => { + let mut pb_message = WorkbenchGetDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::WorkbenchGetDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + GetBuddyDataScRsp::CMD_ID => { + let mut pb_message = GetBuddyDataScRsp::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::GetBuddyDataScRsp::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + HollowDataRefreshCsReq::CMD_ID => { + let mut pb_message = HollowDataRefreshCsReq::decode(pb)?; + pb_message.xor_fields(); + let common_protocol_message = ::trigger_protocol::HollowDataRefreshCsReq::from( + pb_message, + ); + Ok(Some(common_protocol_message.into())) + } + _ => Ok(None), + } +} +pub fn common_protocol_unit_to_pb( + unit: &::trigger_protocol::util::ProtocolUnit, +) -> ::std::io::Result)>> { + use ::trigger_encoding::Decodeable; + use ::trigger_protocol::ClientCmdID; + match unit.cmd_id { + ::trigger_protocol::DrinkCafeScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::DrinkCafeScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = DrinkCafeScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((DrinkCafeScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::InteractWithUnitCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::InteractWithUnitCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = InteractWithUnitCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((InteractWithUnitCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::EndBattleScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::EndBattleScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = EndBattleScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((EndBattleScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::BattleReportCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::BattleReportCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = BattleReportCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((BattleReportCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetAvatarDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetAvatarDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetAvatarDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetAvatarDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::SavePosInMainCityCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::SavePosInMainCityCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = SavePosInMainCityCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((SavePosInMainCityCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::ActiveHollowCheckPointCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::ActiveHollowCheckPointCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = ActiveHollowCheckPointCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((ActiveHollowCheckPointCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::DelNewRamenCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::DelNewRamenCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = DelNewRamenCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((DelNewRamenCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::SwitchRoleCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::SwitchRoleCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = SwitchRoleCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((SwitchRoleCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetChatEmojiListScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetChatEmojiListScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetChatEmojiListScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetChatEmojiListScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetAvatarDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetAvatarDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetAvatarDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetAvatarDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetWishlistDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetWishlistDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetWishlistDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetWishlistDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetBattleEventInfoCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetBattleEventInfoCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetBattleEventInfoCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetBattleEventInfoCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetEquipDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetEquipDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetEquipDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetEquipDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::ReportUiLayoutPlatformCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::ReportUiLayoutPlatformCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = ReportUiLayoutPlatformCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((ReportUiLayoutPlatformCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetCollectMapCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetCollectMapCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetCollectMapCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetCollectMapCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::AbyssArpeggioGetDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::AbyssArpeggioGetDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = AbyssArpeggioGetDataCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((AbyssArpeggioGetDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetFriendListCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetFriendListCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetFriendListCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetFriendListCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::RunEventGraphScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::RunEventGraphScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = RunEventGraphScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((RunEventGraphScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetPrivateMessageDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetPrivateMessageDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetPrivateMessageDataCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetPrivateMessageDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetBabelTowerDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetBabelTowerDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetBabelTowerDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetBabelTowerDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::ClickHollowSystemCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::ClickHollowSystemCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = ClickHollowSystemCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((ClickHollowSystemCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::BeginArchiveBattleQuestScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::BeginArchiveBattleQuestScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = BeginArchiveBattleQuestScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((BeginArchiveBattleQuestScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetFishingContestDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetFishingContestDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetFishingContestDataCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetFishingContestDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetMiniscapeEntrustDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetMiniscapeEntrustDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetMiniscapeEntrustDataCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetMiniscapeEntrustDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetCafeDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetCafeDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetCafeDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetCafeDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetBattlePassDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetBattlePassDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetBattlePassDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetBattlePassDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::EatRamenCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::EatRamenCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = EatRamenCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((EatRamenCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetExplorationDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetExplorationDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetExplorationDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetExplorationDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetFriendListScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetFriendListScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetFriendListScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetFriendListScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GameLogReportCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GameLogReportCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GameLogReportCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GameLogReportCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetVhsStoreDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetVhsStoreDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetVhsStoreDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetVhsStoreDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetResourceDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetResourceDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetResourceDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetResourceDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetPlayerMailsCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetPlayerMailsCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetPlayerMailsCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetPlayerMailsCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetOnlineFriendsListScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetOnlineFriendsListScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetOnlineFriendsListScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetOnlineFriendsListScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetFashionStoreDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetFashionStoreDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetFashionStoreDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetFashionStoreDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetArcadeDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetArcadeDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetArcadeDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetArcadeDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::EnterWorldCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::EnterWorldCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = EnterWorldCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((EnterWorldCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::UndressEquipmentCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::UndressEquipmentCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = UndressEquipmentCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((UndressEquipmentCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetDisplayCaseDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetDisplayCaseDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetDisplayCaseDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetDisplayCaseDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::PlayerOperationCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::PlayerOperationCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = PlayerOperationCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((PlayerOperationCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetHollowDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetHollowDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetHollowDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetHollowDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetClientSystemsDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetClientSystemsDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetClientSystemsDataCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetClientSystemsDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetCharacterQuestListScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetCharacterQuestListScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetCharacterQuestListScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetCharacterQuestListScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetCampIdleDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetCampIdleDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetCampIdleDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetCampIdleDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetRewardBuffDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetRewardBuffDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetRewardBuffDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetRewardBuffDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::RechargeGetItemListScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::RechargeGetItemListScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = RechargeGetItemListScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((RechargeGetItemListScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::EndBattleCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::EndBattleCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = EndBattleCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((EndBattleCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::TalentSwitchCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::TalentSwitchCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = TalentSwitchCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((TalentSwitchCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::ReportBattleTeamCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::ReportBattleTeamCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = ReportBattleTeamCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((ReportBattleTeamCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::PostEnterWorldCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::PostEnterWorldCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = PostEnterWorldCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((PostEnterWorldCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetResourceDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetResourceDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetResourceDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetResourceDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetPhotoWallDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetPhotoWallDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetPhotoWallDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetPhotoWallDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetDailyChallengeDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetDailyChallengeDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetDailyChallengeDataScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetDailyChallengeDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetCharacterQuestListCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetCharacterQuestListCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetCharacterQuestListCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetCharacterQuestListCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetTipsInfoCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetTipsInfoCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetTipsInfoCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetTipsInfoCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetAvatarRecommendEquipCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetAvatarRecommendEquipCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetAvatarRecommendEquipCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetAvatarRecommendEquipCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::BeginTrainingCourseBattleCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::BeginTrainingCourseBattleCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = BeginTrainingCourseBattleCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok( + Some(( + BeginTrainingCourseBattleCsReq::CMD_ID, + pb_message.encode_to_vec(), + )), + ) + } + ::trigger_protocol::PerformTriggerScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::PerformTriggerScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = PerformTriggerScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((PerformTriggerScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetArchiveDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetArchiveDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetArchiveDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetArchiveDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetArchiveDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetArchiveDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetArchiveDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetArchiveDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetRamenDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetRamenDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetRamenDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetRamenDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetBattlePassDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetBattlePassDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetBattlePassDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetBattlePassDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetFairyDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetFairyDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetFairyDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetFairyDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetCollectMapScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetCollectMapScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetCollectMapScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetCollectMapScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::FinishArchivePerformCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::FinishArchivePerformCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = FinishArchivePerformCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((FinishArchivePerformCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetPrivateMessageDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetPrivateMessageDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetPrivateMessageDataScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetPrivateMessageDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetJourneyDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetJourneyDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetJourneyDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetJourneyDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetTipsInfoScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetTipsInfoScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetTipsInfoScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetTipsInfoScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetFashionStoreDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetFashionStoreDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetFashionStoreDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetFashionStoreDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetNewsStandDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetNewsStandDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetNewsStandDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetNewsStandDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetPlayerTransactionScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetPlayerTransactionScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetPlayerTransactionScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetPlayerTransactionScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetWebActivityDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetWebActivityDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetWebActivityDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetWebActivityDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetBuddyDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetBuddyDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetBuddyDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetBuddyDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetCampIdleDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetCampIdleDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetCampIdleDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetCampIdleDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetAuthkeyCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetAuthkeyCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetAuthkeyCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetAuthkeyCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetQuestionsAnswerGameDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetQuestionsAnswerGameDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetQuestionsAnswerGameDataScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok( + Some(( + GetQuestionsAnswerGameDataScRsp::CMD_ID, + pb_message.encode_to_vec(), + )), + ) + } + ::trigger_protocol::GetRedDotListCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetRedDotListCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetRedDotListCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetRedDotListCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetHadalZoneDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetHadalZoneDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetHadalZoneDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetHadalZoneDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::AbyssGetDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::AbyssGetDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = AbyssGetDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((AbyssGetDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetCafeDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetCafeDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetCafeDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetCafeDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::BattleReportScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::BattleReportScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = BattleReportScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((BattleReportScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetRidusGotBooDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetRidusGotBooDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetRidusGotBooDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetRidusGotBooDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::DressEquipmentSuitCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::DressEquipmentSuitCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = DressEquipmentSuitCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((DressEquipmentSuitCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetQuestionsAnswerGameDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetQuestionsAnswerGameDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetQuestionsAnswerGameDataCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok( + Some(( + GetQuestionsAnswerGameDataCsReq::CMD_ID, + pb_message.encode_to_vec(), + )), + ) + } + ::trigger_protocol::GetPlayerTransactionCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetPlayerTransactionCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetPlayerTransactionCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetPlayerTransactionCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetDailyChallengeDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetDailyChallengeDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetDailyChallengeDataCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetDailyChallengeDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::PerformTriggerCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::PerformTriggerCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = PerformTriggerCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((PerformTriggerCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::DressEquipmentCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::DressEquipmentCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = DressEquipmentCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((DressEquipmentCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::PlayerLogoutCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::PlayerLogoutCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = PlayerLogoutCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((PlayerLogoutCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetGachaDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetGachaDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetGachaDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetGachaDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetJourneyDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetJourneyDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetJourneyDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetJourneyDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::EnterSectionCompleteScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::EnterSectionCompleteScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = EnterSectionCompleteScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((EnterSectionCompleteScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetWebActivityDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetWebActivityDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetWebActivityDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetWebActivityDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetOnlineFriendsListCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetOnlineFriendsListCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetOnlineFriendsListCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetOnlineFriendsListCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetServerTimestampScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetServerTimestampScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetServerTimestampScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetServerTimestampScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetAuthkeyScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetAuthkeyScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetAuthkeyScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetAuthkeyScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetShoppingMallInfoScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetShoppingMallInfoScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetShoppingMallInfoScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetShoppingMallInfoScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetAbyssRewardDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetAbyssRewardDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetAbyssRewardDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetAbyssRewardDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::PerformEndCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::PerformEndCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = PerformEndCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((PerformEndCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetRedDotListScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetRedDotListScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetRedDotListScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetRedDotListScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetClientSystemsDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetClientSystemsDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetClientSystemsDataScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetClientSystemsDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::EnterWorldScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::EnterWorldScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = EnterWorldScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((EnterWorldScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetRamenDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetRamenDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetRamenDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetRamenDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetWeaponDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetWeaponDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetWeaponDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetWeaponDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetMiniscapeEntrustDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetMiniscapeEntrustDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetMiniscapeEntrustDataScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetMiniscapeEntrustDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetArcadeDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetArcadeDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetArcadeDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetArcadeDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetTrashbinHermitDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetTrashbinHermitDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetTrashbinHermitDataCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetTrashbinHermitDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetVhsStoreDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetVhsStoreDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetVhsStoreDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetVhsStoreDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetActivityDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetActivityDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetActivityDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetActivityDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetServerTimestampCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetServerTimestampCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetServerTimestampCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetServerTimestampCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetRoleCardDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetRoleCardDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetRoleCardDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetRoleCardDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::SavePlayerSystemSettingCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::SavePlayerSystemSettingCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = SavePlayerSystemSettingCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((SavePlayerSystemSettingCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::PerformJumpCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::PerformJumpCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = PerformJumpCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((PerformJumpCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetQuestDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetQuestDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetQuestDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetQuestDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetChatEmojiListCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetChatEmojiListCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetChatEmojiListCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetChatEmojiListCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetQuestDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetQuestDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetQuestDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetQuestDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetHollowDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetHollowDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetHollowDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetHollowDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetMainCityRevivalDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetMainCityRevivalDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetMainCityRevivalDataScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetMainCityRevivalDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::PlayerSyncScNotify::CMD_ID => { + let common_protocol_message = ::trigger_protocol::PlayerSyncScNotify::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = PlayerSyncScNotify::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((PlayerSyncScNotify::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::EnterSectionCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::EnterSectionCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = EnterSectionCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((EnterSectionCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::EnterSceneScNotify::CMD_ID => { + let common_protocol_message = ::trigger_protocol::EnterSceneScNotify::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = EnterSceneScNotify::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((EnterSceneScNotify::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetTrashbinHermitDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetTrashbinHermitDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetTrashbinHermitDataScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetTrashbinHermitDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetWeaponDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetWeaponDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetWeaponDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetWeaponDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::VideoGetInfoCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::VideoGetInfoCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = VideoGetInfoCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((VideoGetInfoCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::VideoGetInfoScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::VideoGetInfoScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = VideoGetInfoScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((VideoGetInfoScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::WeaponDressCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::WeaponDressCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = WeaponDressCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((WeaponDressCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::EnterSectionCompleteCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::EnterSectionCompleteCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = EnterSectionCompleteCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((EnterSectionCompleteCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetFishingContestDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetFishingContestDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetFishingContestDataScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetFishingContestDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::PlaySongCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::PlaySongCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = PlaySongCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((PlaySongCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::WorkbenchGetDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::WorkbenchGetDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = WorkbenchGetDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((WorkbenchGetDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::RunEventGraphCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::RunEventGraphCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = RunEventGraphCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((RunEventGraphCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetMonthCardRewardListCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetMonthCardRewardListCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetMonthCardRewardListCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetMonthCardRewardListCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::RefreshSectionScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::RefreshSectionScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = RefreshSectionScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((RefreshSectionScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetBattleEventInfoScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetBattleEventInfoScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetBattleEventInfoScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetBattleEventInfoScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetWishlistDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetWishlistDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetWishlistDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetWishlistDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::LeaveCurSceneCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::LeaveCurSceneCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = LeaveCurSceneCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((LeaveCurSceneCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::UpdateEventGraphScNotify::CMD_ID => { + let common_protocol_message = ::trigger_protocol::UpdateEventGraphScNotify::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = UpdateEventGraphScNotify::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((UpdateEventGraphScNotify::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetShoppingMallInfoCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetShoppingMallInfoCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetShoppingMallInfoCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetShoppingMallInfoCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetPlayerBasicInfoCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetPlayerBasicInfoCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetPlayerBasicInfoCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetPlayerBasicInfoCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::DrinkCafeCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::DrinkCafeCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = DrinkCafeCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((DrinkCafeCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::SetMusicPlayerModeCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::SetMusicPlayerModeCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = SetMusicPlayerModeCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((SetMusicPlayerModeCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::TriggerInteractCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::TriggerInteractCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = TriggerInteractCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((TriggerInteractCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetFairyDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetFairyDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetFairyDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetFairyDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetActivityDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetActivityDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetActivityDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetActivityDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetPlayerBasicInfoScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetPlayerBasicInfoScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetPlayerBasicInfoScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetPlayerBasicInfoScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::RechargeGetItemListCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::RechargeGetItemListCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = RechargeGetItemListCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((RechargeGetItemListCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::AbyssGetDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::AbyssGetDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = AbyssGetDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((AbyssGetDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::SyncEventInfoScNotify::CMD_ID => { + let common_protocol_message = ::trigger_protocol::SyncEventInfoScNotify::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = SyncEventInfoScNotify::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((SyncEventInfoScNotify::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetRewardBuffDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetRewardBuffDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetRewardBuffDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetRewardBuffDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetPlayerDisplayDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetPlayerDisplayDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetPlayerDisplayDataCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetPlayerDisplayDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetRoleCardDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetRoleCardDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetRoleCardDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetRoleCardDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::StartHollowQuestCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::StartHollowQuestCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = StartHollowQuestCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((StartHollowQuestCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetRidusGotBooDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetRidusGotBooDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetRidusGotBooDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetRidusGotBooDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::FinishArchivePerformScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::FinishArchivePerformScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = FinishArchivePerformScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((FinishArchivePerformScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::SceneTransitionCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::SceneTransitionCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = SceneTransitionCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((SceneTransitionCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::EatRamenScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::EatRamenScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = EatRamenScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((EatRamenScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetExplorationDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetExplorationDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetExplorationDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetExplorationDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::StartHollowQuestScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::StartHollowQuestScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = StartHollowQuestScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((StartHollowQuestScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetAbyssRewardDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetAbyssRewardDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetAbyssRewardDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetAbyssRewardDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::RefreshSectionCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::RefreshSectionCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = RefreshSectionCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((RefreshSectionCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetNewsStandDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetNewsStandDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetNewsStandDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetNewsStandDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::WeaponUnDressCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::WeaponUnDressCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = WeaponUnDressCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((WeaponUnDressCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetEquipDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetEquipDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetEquipDataCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetEquipDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetMainCityRevivalDataCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetMainCityRevivalDataCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetMainCityRevivalDataCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetMainCityRevivalDataCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::BeginArchiveBattleQuestCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::BeginArchiveBattleQuestCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = BeginArchiveBattleQuestCsReq::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((BeginArchiveBattleQuestCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetPlayerDisplayDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetPlayerDisplayDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetPlayerDisplayDataScRsp::from( + common_protocol_message, + ); + pb_message.xor_fields(); + Ok(Some((GetPlayerDisplayDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::WorkbenchGetDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::WorkbenchGetDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = WorkbenchGetDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((WorkbenchGetDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::GetBuddyDataScRsp::CMD_ID => { + let common_protocol_message = ::trigger_protocol::GetBuddyDataScRsp::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = GetBuddyDataScRsp::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((GetBuddyDataScRsp::CMD_ID, pb_message.encode_to_vec()))) + } + ::trigger_protocol::HollowDataRefreshCsReq::CMD_ID => { + let common_protocol_message = ::trigger_protocol::HollowDataRefreshCsReq::decode( + &mut ::std::io::Cursor::new(&unit.blob), + )?; + let mut pb_message = HollowDataRefreshCsReq::from(common_protocol_message); + pb_message.xor_fields(); + Ok(Some((HollowDataRefreshCsReq::CMD_ID, pb_message.encode_to_vec()))) + } + _ => Ok(None), + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DrinkCafeScRsp { + fn from(value: DrinkCafeScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DrinkCafeScRsp> for DrinkCafeScRsp { + fn from(value: ::trigger_protocol::DrinkCafeScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::InteractWithUnitCsReq { + fn from(value: InteractWithUnitCsReq) -> Self { + Self { + interact_id: value.interact_id.into(), + r#type: value.r#type.into(), + npc_tag_id: value.npc_tag_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::InteractWithUnitCsReq> for InteractWithUnitCsReq { + fn from(value: ::trigger_protocol::InteractWithUnitCsReq) -> Self { + Self { + interact_id: value.interact_id.into(), + r#type: value.r#type.into(), + npc_tag_id: value.npc_tag_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::EndBattleScRsp { + fn from(value: EndBattleScRsp) -> Self { + Self { + retcode: value.retcode.into(), + fight_settle: value.fight_settle.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::EndBattleScRsp> for EndBattleScRsp { + fn from(value: ::trigger_protocol::EndBattleScRsp) -> Self { + Self { + retcode: value.retcode.into(), + fight_settle: value.fight_settle.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DungeonInfo { + fn from(value: DungeonInfo) -> Self { + Self { + dungeon_equip_info: value.dungeon_equip_info.map(|v| v.into()), + avatar_list: value.avatar_list.into_iter().map(|v| v.into()).collect(), + dungeon_quest_info: value.dungeon_quest_info.map(|v| v.into()), + quest_id: value.quest_id.into(), + buddy_list: value.buddy_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DungeonInfo> for DungeonInfo { + fn from(value: ::trigger_protocol::DungeonInfo) -> Self { + Self { + dungeon_equip_info: value.dungeon_equip_info.map(|v| v.into()), + avatar_list: value.avatar_list.into_iter().map(|v| v.into()).collect(), + dungeon_quest_info: value.dungeon_quest_info.map(|v| v.into()), + quest_id: value.quest_id.into(), + buddy_list: value.buddy_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::BattleReportCsReq { + fn from(value: BattleReportCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::BattleReportCsReq> for BattleReportCsReq { + fn from(value: ::trigger_protocol::BattleReportCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetAvatarDataCsReq { + fn from(value: GetAvatarDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetAvatarDataCsReq> for GetAvatarDataCsReq { + fn from(value: ::trigger_protocol::GetAvatarDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::SavePosInMainCityCsReq { + fn from(value: SavePosInMainCityCsReq) -> Self { + Self { + section_id: value.section_id.into(), + position: value.position.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::SavePosInMainCityCsReq> for SavePosInMainCityCsReq { + fn from(value: ::trigger_protocol::SavePosInMainCityCsReq) -> Self { + Self { + section_id: value.section_id.into(), + position: value.position.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::ActiveHollowCheckPointCsReq { + fn from(value: ActiveHollowCheckPointCsReq) -> Self { + Self { + check_point: value.check_point.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::ActiveHollowCheckPointCsReq> +for ActiveHollowCheckPointCsReq { + fn from(value: ::trigger_protocol::ActiveHollowCheckPointCsReq) -> Self { + Self { + check_point: value.check_point.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::RamenData { + fn from(value: RamenData) -> Self { + Self { + unlock_ramen_list: value + .unlock_ramen_list + .into_iter() + .map(|v| v.into()) + .collect(), + eat_ramen_times: value.eat_ramen_times.into(), + cur_ramen: value.cur_ramen.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::RamenData> for RamenData { + fn from(value: ::trigger_protocol::RamenData) -> Self { + Self { + unlock_ramen_list: value + .unlock_ramen_list + .into_iter() + .map(|v| v.into()) + .collect(), + eat_ramen_times: value.eat_ramen_times.into(), + cur_ramen: value.cur_ramen.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DelNewRamenCsReq { + fn from(value: DelNewRamenCsReq) -> Self { + Self { + has_mystical_spice: value.has_mystical_spice.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DelNewRamenCsReq> for DelNewRamenCsReq { + fn from(value: ::trigger_protocol::DelNewRamenCsReq) -> Self { + Self { + has_mystical_spice: value.has_mystical_spice.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::SwitchRoleCsReq { + fn from(value: SwitchRoleCsReq) -> Self { + Self { + avatar_id: value.avatar_id.into(), + control_avatar_id: value.control_avatar_id.into(), + player_avatar_id: value.player_avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::SwitchRoleCsReq> for SwitchRoleCsReq { + fn from(value: ::trigger_protocol::SwitchRoleCsReq) -> Self { + Self { + avatar_id: value.avatar_id.into(), + control_avatar_id: value.control_avatar_id.into(), + player_avatar_id: value.player_avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetChatEmojiListScRsp { + fn from(value: GetChatEmojiListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetChatEmojiListScRsp> for GetChatEmojiListScRsp { + fn from(value: ::trigger_protocol::GetChatEmojiListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetAvatarDataScRsp { + fn from(value: GetAvatarDataScRsp) -> Self { + Self { + avatar_list: value.avatar_list.into_iter().map(|v| v.into()).collect(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetAvatarDataScRsp> for GetAvatarDataScRsp { + fn from(value: ::trigger_protocol::GetAvatarDataScRsp) -> Self { + Self { + avatar_list: value.avatar_list.into_iter().map(|v| v.into()).collect(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetWishlistDataCsReq { + fn from(value: GetWishlistDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetWishlistDataCsReq> for GetWishlistDataCsReq { + fn from(value: ::trigger_protocol::GetWishlistDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetBattleEventInfoCsReq { + fn from(value: GetBattleEventInfoCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetBattleEventInfoCsReq> for GetBattleEventInfoCsReq { + fn from(value: ::trigger_protocol::GetBattleEventInfoCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetEquipDataScRsp { + fn from(value: GetEquipDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + equip_list: value.equip_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetEquipDataScRsp> for GetEquipDataScRsp { + fn from(value: ::trigger_protocol::GetEquipDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + equip_list: value.equip_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::ReportUiLayoutPlatformCsReq { + fn from(value: ReportUiLayoutPlatformCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::ReportUiLayoutPlatformCsReq> +for ReportUiLayoutPlatformCsReq { + fn from(value: ::trigger_protocol::ReportUiLayoutPlatformCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetCollectMapCsReq { + fn from(value: GetCollectMapCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetCollectMapCsReq> for GetCollectMapCsReq { + fn from(value: ::trigger_protocol::GetCollectMapCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AbyssArpeggioGetDataCsReq { + fn from(value: AbyssArpeggioGetDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AbyssArpeggioGetDataCsReq> for AbyssArpeggioGetDataCsReq { + fn from(value: ::trigger_protocol::AbyssArpeggioGetDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetFriendListCsReq { + fn from(value: GetFriendListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetFriendListCsReq> for GetFriendListCsReq { + fn from(value: ::trigger_protocol::GetFriendListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::RunEventGraphScRsp { + fn from(value: RunEventGraphScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::RunEventGraphScRsp> for RunEventGraphScRsp { + fn from(value: ::trigger_protocol::RunEventGraphScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::NewsStandData { + fn from(value: NewsStandData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::NewsStandData> for NewsStandData { + fn from(value: ::trigger_protocol::NewsStandData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetPrivateMessageDataCsReq { + fn from(value: GetPrivateMessageDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetPrivateMessageDataCsReq> +for GetPrivateMessageDataCsReq { + fn from(value: ::trigger_protocol::GetPrivateMessageDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::Avatar { + fn from(value: Avatar) -> Self { + Self { + taken_rank_up_reward_list: value + .taken_rank_up_reward_list + .into_iter() + .map(|v| v.into()) + .collect(), + talent_switch_list: value + .talent_switch_list + .into_iter() + .map(|v| v.into()) + .collect(), + passive_skill_level: value.passive_skill_level.into(), + dressed_equip_list: value + .dressed_equip_list + .into_iter() + .map(|v| v.into()) + .collect(), + first_get_time: value.first_get_time.into(), + skill_type_level: value + .skill_type_level + .into_iter() + .map(|v| v.into()) + .collect(), + id: value.id.into(), + level: value.level.into(), + cur_weapon_uid: value.cur_weapon_uid.into(), + rank: value.rank.into(), + unlocked_talent_num: value.unlocked_talent_num.into(), + avatar_skin_id: value.avatar_skin_id.into(), + show_weapon_type: value.show_weapon_type.into(), + exp: value.exp.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::Avatar> for Avatar { + fn from(value: ::trigger_protocol::Avatar) -> Self { + Self { + taken_rank_up_reward_list: value + .taken_rank_up_reward_list + .into_iter() + .map(|v| v.into()) + .collect(), + talent_switch_list: value + .talent_switch_list + .into_iter() + .map(|v| v.into()) + .collect(), + passive_skill_level: value.passive_skill_level.into(), + dressed_equip_list: value + .dressed_equip_list + .into_iter() + .map(|v| v.into()) + .collect(), + first_get_time: value.first_get_time.into(), + skill_type_level: value + .skill_type_level + .into_iter() + .map(|v| v.into()) + .collect(), + id: value.id.into(), + level: value.level.into(), + cur_weapon_uid: value.cur_weapon_uid.into(), + rank: value.rank.into(), + unlocked_talent_num: value.unlocked_talent_num.into(), + avatar_skin_id: value.avatar_skin_id.into(), + show_weapon_type: value.show_weapon_type.into(), + exp: value.exp.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::HollowInfo { + fn from(value: HollowInfo) -> Self { + Self { + hollow_statistics: value.hollow_statistics.map(|v| v.into()), + hollow_quest_id: value.hollow_quest_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::HollowInfo> for HollowInfo { + fn from(value: ::trigger_protocol::HollowInfo) -> Self { + Self { + hollow_statistics: value.hollow_statistics.map(|v| v.into()), + hollow_quest_id: value.hollow_quest_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::BattleEventInfo { + fn from(value: BattleEventInfo) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::BattleEventInfo> for BattleEventInfo { + fn from(value: ::trigger_protocol::BattleEventInfo) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetBabelTowerDataCsReq { + fn from(value: GetBabelTowerDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetBabelTowerDataCsReq> for GetBabelTowerDataCsReq { + fn from(value: ::trigger_protocol::GetBabelTowerDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::ClickHollowSystemCsReq { + fn from(value: ClickHollowSystemCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::ClickHollowSystemCsReq> for ClickHollowSystemCsReq { + fn from(value: ::trigger_protocol::ClickHollowSystemCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::BeginArchiveBattleQuestScRsp { + fn from(value: BeginArchiveBattleQuestScRsp) -> Self { + Self { + quest_id: value.quest_id.into(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::BeginArchiveBattleQuestScRsp> +for BeginArchiveBattleQuestScRsp { + fn from(value: ::trigger_protocol::BeginArchiveBattleQuestScRsp) -> Self { + Self { + quest_id: value.quest_id.into(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetFishingContestDataCsReq { + fn from(value: GetFishingContestDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetFishingContestDataCsReq> +for GetFishingContestDataCsReq { + fn from(value: ::trigger_protocol::GetFishingContestDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetMiniscapeEntrustDataCsReq { + fn from(value: GetMiniscapeEntrustDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetMiniscapeEntrustDataCsReq> +for GetMiniscapeEntrustDataCsReq { + fn from(value: ::trigger_protocol::GetMiniscapeEntrustDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetCafeDataScRsp { + fn from(value: GetCafeDataScRsp) -> Self { + Self { + cafe_data: value.cafe_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetCafeDataScRsp> for GetCafeDataScRsp { + fn from(value: ::trigger_protocol::GetCafeDataScRsp) -> Self { + Self { + cafe_data: value.cafe_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetBattlePassDataScRsp { + fn from(value: GetBattlePassDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetBattlePassDataScRsp> for GetBattlePassDataScRsp { + fn from(value: ::trigger_protocol::GetBattlePassDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::EatRamenCsReq { + fn from(value: EatRamenCsReq) -> Self { + Self { + ramen: value.ramen.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::EatRamenCsReq> for EatRamenCsReq { + fn from(value: ::trigger_protocol::EatRamenCsReq) -> Self { + Self { + ramen: value.ramen.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetExplorationDataScRsp { + fn from(value: GetExplorationDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetExplorationDataScRsp> for GetExplorationDataScRsp { + fn from(value: ::trigger_protocol::GetExplorationDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetFriendListScRsp { + fn from(value: GetFriendListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetFriendListScRsp> for GetFriendListScRsp { + fn from(value: ::trigger_protocol::GetFriendListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GameLogReportCsReq { + fn from(value: GameLogReportCsReq) -> Self { + Self { + stack_trace: value.stack_trace.into_iter().map(|v| v.into()).collect(), + log_report_type: value.log_report_type.into(), + value: value.value.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GameLogReportCsReq> for GameLogReportCsReq { + fn from(value: ::trigger_protocol::GameLogReportCsReq) -> Self { + Self { + stack_trace: value.stack_trace.into_iter().map(|v| v.into()).collect(), + log_report_type: value.log_report_type.into(), + value: value.value.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetVhsStoreDataCsReq { + fn from(value: GetVhsStoreDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetVhsStoreDataCsReq> for GetVhsStoreDataCsReq { + fn from(value: ::trigger_protocol::GetVhsStoreDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetResourceDataScRsp { + fn from(value: GetResourceDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + auto_recovery_info: value + .auto_recovery_info + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + material_list: value.material_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetResourceDataScRsp> for GetResourceDataScRsp { + fn from(value: ::trigger_protocol::GetResourceDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + auto_recovery_info: value + .auto_recovery_info + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + material_list: value.material_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::LevelPerformInfo { + fn from(value: LevelPerformInfo) -> Self { + Self { + time: value.time.into(), + weather: value.weather.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::LevelPerformInfo> for LevelPerformInfo { + fn from(value: ::trigger_protocol::LevelPerformInfo) -> Self { + Self { + time: value.time.into(), + weather: value.weather.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::RamenSync { + fn from(value: RamenSync) -> Self { + Self { + is_full_update: value.is_full_update.into(), + eat_ramen_times: value.eat_ramen_times.into(), + cur_ramen: value.cur_ramen.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::RamenSync> for RamenSync { + fn from(value: ::trigger_protocol::RamenSync) -> Self { + Self { + is_full_update: value.is_full_update.into(), + eat_ramen_times: value.eat_ramen_times.into(), + cur_ramen: value.cur_ramen.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetPlayerMailsCsReq { + fn from(value: GetPlayerMailsCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetPlayerMailsCsReq> for GetPlayerMailsCsReq { + fn from(value: ::trigger_protocol::GetPlayerMailsCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetOnlineFriendsListScRsp { + fn from(value: GetOnlineFriendsListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetOnlineFriendsListScRsp> for GetOnlineFriendsListScRsp { + fn from(value: ::trigger_protocol::GetOnlineFriendsListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::HollowData { + fn from(value: HollowData) -> Self { + Self { + unlock_hollow_group_list: value + .unlock_hollow_group_list + .into_iter() + .map(|v| v.into()) + .collect(), + unlock_hollow_quest_list: value + .unlock_hollow_quest_list + .into_iter() + .map(|v| v.into()) + .collect(), + hollow_info_list: value + .hollow_info_list + .into_iter() + .map(|v| v.into()) + .collect(), + unlock_hollow_id_list: value + .unlock_hollow_id_list + .into_iter() + .map(|v| v.into()) + .collect(), + hollow_group_list: value + .hollow_group_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::HollowData> for HollowData { + fn from(value: ::trigger_protocol::HollowData) -> Self { + Self { + unlock_hollow_group_list: value + .unlock_hollow_group_list + .into_iter() + .map(|v| v.into()) + .collect(), + unlock_hollow_quest_list: value + .unlock_hollow_quest_list + .into_iter() + .map(|v| v.into()) + .collect(), + hollow_info_list: value + .hollow_info_list + .into_iter() + .map(|v| v.into()) + .collect(), + unlock_hollow_id_list: value + .unlock_hollow_id_list + .into_iter() + .map(|v| v.into()) + .collect(), + hollow_group_list: value + .hollow_group_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetFashionStoreDataScRsp { + fn from(value: GetFashionStoreDataScRsp) -> Self { + Self { + data: value.data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetFashionStoreDataScRsp> for GetFashionStoreDataScRsp { + fn from(value: ::trigger_protocol::GetFashionStoreDataScRsp) -> Self { + Self { + data: value.data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetArcadeDataScRsp { + fn from(value: GetArcadeDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetArcadeDataScRsp> for GetArcadeDataScRsp { + fn from(value: ::trigger_protocol::GetArcadeDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::EnterWorldCsReq { + fn from(value: EnterWorldCsReq) -> Self { + Self { + is_reenter: value.is_reenter.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::EnterWorldCsReq> for EnterWorldCsReq { + fn from(value: ::trigger_protocol::EnterWorldCsReq) -> Self { + Self { + is_reenter: value.is_reenter.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::UndressEquipmentCsReq { + fn from(value: UndressEquipmentCsReq) -> Self { + Self { + undress_index_list: value + .undress_index_list + .into_iter() + .map(|v| v.into()) + .collect(), + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::UndressEquipmentCsReq> for UndressEquipmentCsReq { + fn from(value: ::trigger_protocol::UndressEquipmentCsReq) -> Self { + Self { + undress_index_list: value + .undress_index_list + .into_iter() + .map(|v| v.into()) + .collect(), + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetDisplayCaseDataCsReq { + fn from(value: GetDisplayCaseDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetDisplayCaseDataCsReq> for GetDisplayCaseDataCsReq { + fn from(value: ::trigger_protocol::GetDisplayCaseDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PlayerOperationCsReq { + fn from(value: PlayerOperationCsReq) -> Self { + Self { + param: value.param.into(), + data: value.data.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PlayerOperationCsReq> for PlayerOperationCsReq { + fn from(value: ::trigger_protocol::PlayerOperationCsReq) -> Self { + Self { + param: value.param.into(), + data: value.data.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::Transform { + fn from(value: Transform) -> Self { + Self { + position: value.position.into_iter().map(|v| v.into()).collect(), + rotation: value.rotation.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::Transform> for Transform { + fn from(value: ::trigger_protocol::Transform) -> Self { + Self { + position: value.position.into_iter().map(|v| v.into()).collect(), + rotation: value.rotation.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DisplayItemGroup { + fn from(value: DisplayItemGroup) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DisplayItemGroup> for DisplayItemGroup { + fn from(value: ::trigger_protocol::DisplayItemGroup) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetHollowDataScRsp { + fn from(value: GetHollowDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + hollow_data: value.hollow_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetHollowDataScRsp> for GetHollowDataScRsp { + fn from(value: ::trigger_protocol::GetHollowDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + hollow_data: value.hollow_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PhotoWallNetworkData { + fn from(value: PhotoWallNetworkData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PhotoWallNetworkData> for PhotoWallNetworkData { + fn from(value: ::trigger_protocol::PhotoWallNetworkData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetClientSystemsDataCsReq { + fn from(value: GetClientSystemsDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetClientSystemsDataCsReq> for GetClientSystemsDataCsReq { + fn from(value: ::trigger_protocol::GetClientSystemsDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetCharacterQuestListScRsp { + fn from(value: GetCharacterQuestListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetCharacterQuestListScRsp> +for GetCharacterQuestListScRsp { + fn from(value: ::trigger_protocol::GetCharacterQuestListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::LevelRewardInfo { + fn from(value: LevelRewardInfo) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::LevelRewardInfo> for LevelRewardInfo { + fn from(value: ::trigger_protocol::LevelRewardInfo) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::HollowStatistics { + fn from(value: HollowStatistics) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::HollowStatistics> for HollowStatistics { + fn from(value: ::trigger_protocol::HollowStatistics) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetCampIdleDataScRsp { + fn from(value: GetCampIdleDataScRsp) -> Self { + Self { + camp_idle_data: value.camp_idle_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetCampIdleDataScRsp> for GetCampIdleDataScRsp { + fn from(value: ::trigger_protocol::GetCampIdleDataScRsp) -> Self { + Self { + camp_idle_data: value.camp_idle_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetRewardBuffDataScRsp { + fn from(value: GetRewardBuffDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + data: value.data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetRewardBuffDataScRsp> for GetRewardBuffDataScRsp { + fn from(value: ::trigger_protocol::GetRewardBuffDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + data: value.data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::RechargeGetItemListScRsp { + fn from(value: RechargeGetItemListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::RechargeGetItemListScRsp> for RechargeGetItemListScRsp { + fn from(value: ::trigger_protocol::RechargeGetItemListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::EndBattleCsReq { + fn from(value: EndBattleCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::EndBattleCsReq> for EndBattleCsReq { + fn from(value: ::trigger_protocol::EndBattleCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::MusicPlayerItem { + fn from(value: MusicPlayerItem) -> Self { + Self { + id: value.id.into(), + seen_time: value.seen_time.into(), + unlock_time: value.unlock_time.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::MusicPlayerItem> for MusicPlayerItem { + fn from(value: ::trigger_protocol::MusicPlayerItem) -> Self { + Self { + id: value.id.into(), + seen_time: value.seen_time.into(), + unlock_time: value.unlock_time.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::TalentSwitchCsReq { + fn from(value: TalentSwitchCsReq) -> Self { + Self { + talent_switch_list: value + .talent_switch_list + .into_iter() + .map(|v| v.into()) + .collect(), + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::TalentSwitchCsReq> for TalentSwitchCsReq { + fn from(value: ::trigger_protocol::TalentSwitchCsReq) -> Self { + Self { + talent_switch_list: value + .talent_switch_list + .into_iter() + .map(|v| v.into()) + .collect(), + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::ReportBattleTeamCsReq { + fn from(value: ReportBattleTeamCsReq) -> Self { + Self { + avatar_list: value.avatar_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::ReportBattleTeamCsReq> for ReportBattleTeamCsReq { + fn from(value: ::trigger_protocol::ReportBattleTeamCsReq) -> Self { + Self { + avatar_list: value.avatar_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PostEnterWorldCsReq { + fn from(value: PostEnterWorldCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PostEnterWorldCsReq> for PostEnterWorldCsReq { + fn from(value: ::trigger_protocol::PostEnterWorldCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetResourceDataCsReq { + fn from(value: GetResourceDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetResourceDataCsReq> for GetResourceDataCsReq { + fn from(value: ::trigger_protocol::GetResourceDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetPhotoWallDataCsReq { + fn from(value: GetPhotoWallDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetPhotoWallDataCsReq> for GetPhotoWallDataCsReq { + fn from(value: ::trigger_protocol::GetPhotoWallDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetDailyChallengeDataScRsp { + fn from(value: GetDailyChallengeDataScRsp) -> Self { + Self { + data: value.data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetDailyChallengeDataScRsp> +for GetDailyChallengeDataScRsp { + fn from(value: ::trigger_protocol::GetDailyChallengeDataScRsp) -> Self { + Self { + data: value.data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::Material { + fn from(value: Material) -> Self { + Self { + id: value.id.into(), + num: value.num.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::Material> for Material { + fn from(value: ::trigger_protocol::Material) -> Self { + Self { + id: value.id.into(), + num: value.num.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AvatarDataPackage { + fn from(value: AvatarDataPackage) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AvatarDataPackage> for AvatarDataPackage { + fn from(value: ::trigger_protocol::AvatarDataPackage) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::QuestCollection { + fn from(value: QuestCollection) -> Self { + Self { + finished_quest_id_list: value + .finished_quest_id_list + .into_iter() + .map(|v| v.into()) + .collect(), + quest_list: value.quest_list.into_iter().map(|v| v.into()).collect(), + quest_type: value.quest_type.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::QuestCollection> for QuestCollection { + fn from(value: ::trigger_protocol::QuestCollection) -> Self { + Self { + finished_quest_id_list: value + .finished_quest_id_list + .into_iter() + .map(|v| v.into()) + .collect(), + quest_list: value.quest_list.into_iter().map(|v| v.into()).collect(), + quest_type: value.quest_type.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetCharacterQuestListCsReq { + fn from(value: GetCharacterQuestListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetCharacterQuestListCsReq> +for GetCharacterQuestListCsReq { + fn from(value: ::trigger_protocol::GetCharacterQuestListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetTipsInfoCsReq { + fn from(value: GetTipsInfoCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetTipsInfoCsReq> for GetTipsInfoCsReq { + fn from(value: ::trigger_protocol::GetTipsInfoCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetAvatarRecommendEquipCsReq { + fn from(value: GetAvatarRecommendEquipCsReq) -> Self { + Self { + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetAvatarRecommendEquipCsReq> +for GetAvatarRecommendEquipCsReq { + fn from(value: ::trigger_protocol::GetAvatarRecommendEquipCsReq) -> Self { + Self { + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::BeginTrainingCourseBattleCsReq { + fn from(value: BeginTrainingCourseBattleCsReq) -> Self { + Self { + buddy_id: value.buddy_id.into(), + quest_id: value.quest_id.into(), + avatar_id_list: value.avatar_id_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::BeginTrainingCourseBattleCsReq> +for BeginTrainingCourseBattleCsReq { + fn from(value: ::trigger_protocol::BeginTrainingCourseBattleCsReq) -> Self { + Self { + buddy_id: value.buddy_id.into(), + quest_id: value.quest_id.into(), + avatar_id_list: value.avatar_id_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PerformTriggerScRsp { + fn from(value: PerformTriggerScRsp) -> Self { + Self { + perform_uid: value.perform_uid.into(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PerformTriggerScRsp> for PerformTriggerScRsp { + fn from(value: ::trigger_protocol::PerformTriggerScRsp) -> Self { + Self { + perform_uid: value.perform_uid.into(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetArchiveDataScRsp { + fn from(value: GetArchiveDataScRsp) -> Self { + Self { + archive_data: value.archive_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetArchiveDataScRsp> for GetArchiveDataScRsp { + fn from(value: ::trigger_protocol::GetArchiveDataScRsp) -> Self { + Self { + archive_data: value.archive_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetArchiveDataCsReq { + fn from(value: GetArchiveDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetArchiveDataCsReq> for GetArchiveDataCsReq { + fn from(value: ::trigger_protocol::GetArchiveDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PlayerDisplayData { + fn from(value: PlayerDisplayData) -> Self { + Self { + display_item_group: value.display_item_group.map(|v| v.into()), + avatar_data_package: value.avatar_data_package.map(|v| v.into()), + photo_wall_network_data: value.photo_wall_network_data.map(|v| v.into()), + signature: value.signature.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PlayerDisplayData> for PlayerDisplayData { + fn from(value: ::trigger_protocol::PlayerDisplayData) -> Self { + Self { + display_item_group: value.display_item_group.map(|v| v.into()), + avatar_data_package: value.avatar_data_package.map(|v| v.into()), + photo_wall_network_data: value.photo_wall_network_data.map(|v| v.into()), + signature: value.signature.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetRamenDataCsReq { + fn from(value: GetRamenDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetRamenDataCsReq> for GetRamenDataCsReq { + fn from(value: ::trigger_protocol::GetRamenDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetBattlePassDataCsReq { + fn from(value: GetBattlePassDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetBattlePassDataCsReq> for GetBattlePassDataCsReq { + fn from(value: ::trigger_protocol::GetBattlePassDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetFairyDataCsReq { + fn from(value: GetFairyDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetFairyDataCsReq> for GetFairyDataCsReq { + fn from(value: ::trigger_protocol::GetFairyDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::MusicPlayerData { + fn from(value: MusicPlayerData) -> Self { + Self { + music_list: value.music_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::MusicPlayerData> for MusicPlayerData { + fn from(value: ::trigger_protocol::MusicPlayerData) -> Self { + Self { + music_list: value.music_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetCollectMapScRsp { + fn from(value: GetCollectMapScRsp) -> Self { + Self { + collect_map: value.collect_map.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetCollectMapScRsp> for GetCollectMapScRsp { + fn from(value: ::trigger_protocol::GetCollectMapScRsp) -> Self { + Self { + collect_map: value.collect_map.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::EquipProperty { + fn from(value: EquipProperty) -> Self { + Self { + base_value: value.base_value.into(), + key: value.key.into(), + add_value: value.add_value.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::EquipProperty> for EquipProperty { + fn from(value: ::trigger_protocol::EquipProperty) -> Self { + Self { + base_value: value.base_value.into(), + key: value.key.into(), + add_value: value.add_value.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::FinishArchivePerformCsReq { + fn from(value: FinishArchivePerformCsReq) -> Self { + Self { + quest_id: value.quest_id.into(), + sub_id: value.sub_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::FinishArchivePerformCsReq> for FinishArchivePerformCsReq { + fn from(value: ::trigger_protocol::FinishArchivePerformCsReq) -> Self { + Self { + quest_id: value.quest_id.into(), + sub_id: value.sub_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::ActionInfo { + fn from(value: ActionInfo) -> Self { + Self { + body: value.body.into_iter().map(|v| v.into()).collect(), + action_type: value.action_type.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::ActionInfo> for ActionInfo { + fn from(value: ::trigger_protocol::ActionInfo) -> Self { + Self { + body: value.body.into_iter().map(|v| v.into()).collect(), + action_type: value.action_type.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetPrivateMessageDataScRsp { + fn from(value: GetPrivateMessageDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetPrivateMessageDataScRsp> +for GetPrivateMessageDataScRsp { + fn from(value: ::trigger_protocol::GetPrivateMessageDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AvatarSkillLevel { + fn from(value: AvatarSkillLevel) -> Self { + Self { + skill_type: value.skill_type.into(), + level: value.level.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AvatarSkillLevel> for AvatarSkillLevel { + fn from(value: ::trigger_protocol::AvatarSkillLevel) -> Self { + Self { + skill_type: value.skill_type.into(), + level: value.level.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::ClientSystemsData { + fn from(value: ClientSystemsData) -> Self { + Self { + music_player_data: value.music_player_data.map(|v| v.into()), + post_girl_data: value.post_girl_data.map(|v| v.into()), + unlock_data: value.unlock_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::ClientSystemsData> for ClientSystemsData { + fn from(value: ::trigger_protocol::ClientSystemsData) -> Self { + Self { + music_player_data: value.music_player_data.map(|v| v.into()), + post_girl_data: value.post_girl_data.map(|v| v.into()), + unlock_data: value.unlock_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetJourneyDataScRsp { + fn from(value: GetJourneyDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetJourneyDataScRsp> for GetJourneyDataScRsp { + fn from(value: ::trigger_protocol::GetJourneyDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetTipsInfoScRsp { + fn from(value: GetTipsInfoScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetTipsInfoScRsp> for GetTipsInfoScRsp { + fn from(value: ::trigger_protocol::GetTipsInfoScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetFashionStoreDataCsReq { + fn from(value: GetFashionStoreDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetFashionStoreDataCsReq> for GetFashionStoreDataCsReq { + fn from(value: ::trigger_protocol::GetFashionStoreDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AvatarUnitInfo { + fn from(value: AvatarUnitInfo) -> Self { + Self { + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AvatarUnitInfo> for AvatarUnitInfo { + fn from(value: ::trigger_protocol::AvatarUnitInfo) -> Self { + Self { + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetNewsStandDataCsReq { + fn from(value: GetNewsStandDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetNewsStandDataCsReq> for GetNewsStandDataCsReq { + fn from(value: ::trigger_protocol::GetNewsStandDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetPlayerTransactionScRsp { + fn from(value: GetPlayerTransactionScRsp) -> Self { + Self { + transaction: value.transaction.into(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetPlayerTransactionScRsp> for GetPlayerTransactionScRsp { + fn from(value: ::trigger_protocol::GetPlayerTransactionScRsp) -> Self { + Self { + transaction: value.transaction.into(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetWebActivityDataScRsp { + fn from(value: GetWebActivityDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetWebActivityDataScRsp> for GetWebActivityDataScRsp { + fn from(value: ::trigger_protocol::GetWebActivityDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AutoRecoveryInfo { + fn from(value: AutoRecoveryInfo) -> Self { + Self { + buy_times: value.buy_times.into(), + last_recovery_timestamp: value.last_recovery_timestamp.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AutoRecoveryInfo> for AutoRecoveryInfo { + fn from(value: ::trigger_protocol::AutoRecoveryInfo) -> Self { + Self { + buy_times: value.buy_times.into(), + last_recovery_timestamp: value.last_recovery_timestamp.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetBuddyDataCsReq { + fn from(value: GetBuddyDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetBuddyDataCsReq> for GetBuddyDataCsReq { + fn from(value: ::trigger_protocol::GetBuddyDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetCampIdleDataCsReq { + fn from(value: GetCampIdleDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetCampIdleDataCsReq> for GetCampIdleDataCsReq { + fn from(value: ::trigger_protocol::GetCampIdleDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetAuthkeyCsReq { + fn from(value: GetAuthkeyCsReq) -> Self { + Self { + auth_appid: value.auth_appid.into(), + authkey_ver: value.authkey_ver.into(), + sign_type: value.sign_type.into(), + offline_verify_value: value.offline_verify_value.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetAuthkeyCsReq> for GetAuthkeyCsReq { + fn from(value: ::trigger_protocol::GetAuthkeyCsReq) -> Self { + Self { + auth_appid: value.auth_appid.into(), + authkey_ver: value.authkey_ver.into(), + sign_type: value.sign_type.into(), + offline_verify_value: value.offline_verify_value.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetQuestionsAnswerGameDataScRsp { + fn from(value: GetQuestionsAnswerGameDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetQuestionsAnswerGameDataScRsp> +for GetQuestionsAnswerGameDataScRsp { + fn from(value: ::trigger_protocol::GetQuestionsAnswerGameDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetRedDotListCsReq { + fn from(value: GetRedDotListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetRedDotListCsReq> for GetRedDotListCsReq { + fn from(value: ::trigger_protocol::GetRedDotListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetHadalZoneDataCsReq { + fn from(value: GetHadalZoneDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetHadalZoneDataCsReq> for GetHadalZoneDataCsReq { + fn from(value: ::trigger_protocol::GetHadalZoneDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AbyssGetDataCsReq { + fn from(value: AbyssGetDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AbyssGetDataCsReq> for AbyssGetDataCsReq { + fn from(value: ::trigger_protocol::AbyssGetDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::BuddyUnitInfo { + fn from(value: BuddyUnitInfo) -> Self { + Self { + r#type: value.r#type.into(), + buddy_id: value.buddy_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::BuddyUnitInfo> for BuddyUnitInfo { + fn from(value: ::trigger_protocol::BuddyUnitInfo) -> Self { + Self { + r#type: value.r#type.into(), + buddy_id: value.buddy_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DungeonQuestInfo { + fn from(value: DungeonQuestInfo) -> Self { + Self { + inner_quest_id_list: value + .inner_quest_id_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DungeonQuestInfo> for DungeonQuestInfo { + fn from(value: ::trigger_protocol::DungeonQuestInfo) -> Self { + Self { + inner_quest_id_list: value + .inner_quest_id_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetCafeDataCsReq { + fn from(value: GetCafeDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetCafeDataCsReq> for GetCafeDataCsReq { + fn from(value: ::trigger_protocol::GetCafeDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::BattleReportScRsp { + fn from(value: BattleReportScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::BattleReportScRsp> for BattleReportScRsp { + fn from(value: ::trigger_protocol::BattleReportScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::ItemSync { + fn from(value: ItemSync) -> Self { + Self { + weapon_list: value.weapon_list.into_iter().map(|v| v.into()).collect(), + auto_recovery_info: value + .auto_recovery_info + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + material_list: value.material_list.into_iter().map(|v| v.into()).collect(), + equip_list: value.equip_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::ItemSync> for ItemSync { + fn from(value: ::trigger_protocol::ItemSync) -> Self { + Self { + weapon_list: value.weapon_list.into_iter().map(|v| v.into()).collect(), + auto_recovery_info: value + .auto_recovery_info + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + material_list: value.material_list.into_iter().map(|v| v.into()).collect(), + equip_list: value.equip_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DungeonEquipInfo { + fn from(value: DungeonEquipInfo) -> Self { + Self { + avatar_list: value.avatar_list.into_iter().map(|v| v.into()).collect(), + weapon_list: value.weapon_list.into_iter().map(|v| v.into()).collect(), + equip_list: value.equip_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DungeonEquipInfo> for DungeonEquipInfo { + fn from(value: ::trigger_protocol::DungeonEquipInfo) -> Self { + Self { + avatar_list: value.avatar_list.into_iter().map(|v| v.into()).collect(), + weapon_list: value.weapon_list.into_iter().map(|v| v.into()).collect(), + equip_list: value.equip_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetRidusGotBooDataCsReq { + fn from(value: GetRidusGotBooDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetRidusGotBooDataCsReq> for GetRidusGotBooDataCsReq { + fn from(value: ::trigger_protocol::GetRidusGotBooDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DressEquipmentSuitCsReq { + fn from(value: DressEquipmentSuitCsReq) -> Self { + Self { + param_list: value.param_list.into_iter().map(|v| v.into()).collect(), + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DressEquipmentSuitCsReq> for DressEquipmentSuitCsReq { + fn from(value: ::trigger_protocol::DressEquipmentSuitCsReq) -> Self { + Self { + param_list: value.param_list.into_iter().map(|v| v.into()).collect(), + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::RewardBuffData { + fn from(value: RewardBuffData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::RewardBuffData> for RewardBuffData { + fn from(value: ::trigger_protocol::RewardBuffData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::TrashbinHermitData { + fn from(value: TrashbinHermitData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::TrashbinHermitData> for TrashbinHermitData { + fn from(value: ::trigger_protocol::TrashbinHermitData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::CollectMap { + fn from(value: CollectMap) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::CollectMap> for CollectMap { + fn from(value: ::trigger_protocol::CollectMap) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetQuestionsAnswerGameDataCsReq { + fn from(value: GetQuestionsAnswerGameDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetQuestionsAnswerGameDataCsReq> +for GetQuestionsAnswerGameDataCsReq { + fn from(value: ::trigger_protocol::GetQuestionsAnswerGameDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PlayerBasicInfo { + fn from(value: PlayerBasicInfo) -> Self { + Self { + last_enter_world_timestamp: value.last_enter_world_timestamp.into(), + control_avatar_id: value.control_avatar_id.into(), + avatar_id: value.avatar_id.into(), + exp: value.exp.into(), + level: value.level.into(), + nick_name: value.nick_name.into(), + player_avatar_id: value.player_avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PlayerBasicInfo> for PlayerBasicInfo { + fn from(value: ::trigger_protocol::PlayerBasicInfo) -> Self { + Self { + last_enter_world_timestamp: value.last_enter_world_timestamp.into(), + control_avatar_id: value.control_avatar_id.into(), + avatar_id: value.avatar_id.into(), + exp: value.exp.into(), + level: value.level.into(), + nick_name: value.nick_name.into(), + player_avatar_id: value.player_avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetPlayerTransactionCsReq { + fn from(value: GetPlayerTransactionCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetPlayerTransactionCsReq> for GetPlayerTransactionCsReq { + fn from(value: ::trigger_protocol::GetPlayerTransactionCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetDailyChallengeDataCsReq { + fn from(value: GetDailyChallengeDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetDailyChallengeDataCsReq> +for GetDailyChallengeDataCsReq { + fn from(value: ::trigger_protocol::GetDailyChallengeDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PerformTriggerCsReq { + fn from(value: PerformTriggerCsReq) -> Self { + Self { + perform_type: value.perform_type.into(), + perform_id: value.perform_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PerformTriggerCsReq> for PerformTriggerCsReq { + fn from(value: ::trigger_protocol::PerformTriggerCsReq) -> Self { + Self { + perform_type: value.perform_type.into(), + perform_id: value.perform_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DressEquipmentCsReq { + fn from(value: DressEquipmentCsReq) -> Self { + Self { + equip_uid: value.equip_uid.into(), + dress_index: value.dress_index.into(), + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DressEquipmentCsReq> for DressEquipmentCsReq { + fn from(value: ::trigger_protocol::DressEquipmentCsReq) -> Self { + Self { + equip_uid: value.equip_uid.into(), + dress_index: value.dress_index.into(), + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PlayerLogoutCsReq { + fn from(value: PlayerLogoutCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PlayerLogoutCsReq> for PlayerLogoutCsReq { + fn from(value: ::trigger_protocol::PlayerLogoutCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetGachaDataCsReq { + fn from(value: GetGachaDataCsReq) -> Self { + Self { + gacha_type: value.gacha_type.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetGachaDataCsReq> for GetGachaDataCsReq { + fn from(value: ::trigger_protocol::GetGachaDataCsReq) -> Self { + Self { + gacha_type: value.gacha_type.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetJourneyDataCsReq { + fn from(value: GetJourneyDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetJourneyDataCsReq> for GetJourneyDataCsReq { + fn from(value: ::trigger_protocol::GetJourneyDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::EnterSectionCompleteScRsp { + fn from(value: EnterSectionCompleteScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::EnterSectionCompleteScRsp> for EnterSectionCompleteScRsp { + fn from(value: ::trigger_protocol::EnterSectionCompleteScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetWebActivityDataCsReq { + fn from(value: GetWebActivityDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetWebActivityDataCsReq> for GetWebActivityDataCsReq { + fn from(value: ::trigger_protocol::GetWebActivityDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetOnlineFriendsListCsReq { + fn from(value: GetOnlineFriendsListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetOnlineFriendsListCsReq> for GetOnlineFriendsListCsReq { + fn from(value: ::trigger_protocol::GetOnlineFriendsListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetServerTimestampScRsp { + fn from(value: GetServerTimestampScRsp) -> Self { + Self { + timestamp: value.timestamp.into(), + utc_offset: value.utc_offset.into(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetServerTimestampScRsp> for GetServerTimestampScRsp { + fn from(value: ::trigger_protocol::GetServerTimestampScRsp) -> Self { + Self { + timestamp: value.timestamp.into(), + utc_offset: value.utc_offset.into(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetAuthkeyScRsp { + fn from(value: GetAuthkeyScRsp) -> Self { + Self { + retcode: value.retcode.into(), + authkey_ver: value.authkey_ver.into(), + authkey: value.authkey.into(), + auth_appid: value.auth_appid.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetAuthkeyScRsp> for GetAuthkeyScRsp { + fn from(value: ::trigger_protocol::GetAuthkeyScRsp) -> Self { + Self { + retcode: value.retcode.into(), + authkey_ver: value.authkey_ver.into(), + authkey: value.authkey.into(), + auth_appid: value.auth_appid.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetShoppingMallInfoScRsp { + fn from(value: GetShoppingMallInfoScRsp) -> Self { + Self { + retcode: value.retcode.into(), + shopping_mall_info: value.shopping_mall_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetShoppingMallInfoScRsp> for GetShoppingMallInfoScRsp { + fn from(value: ::trigger_protocol::GetShoppingMallInfoScRsp) -> Self { + Self { + retcode: value.retcode.into(), + shopping_mall_info: value.shopping_mall_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetAbyssRewardDataScRsp { + fn from(value: GetAbyssRewardDataScRsp) -> Self { + Self { + abyss_reward_data: value.abyss_reward_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetAbyssRewardDataScRsp> for GetAbyssRewardDataScRsp { + fn from(value: ::trigger_protocol::GetAbyssRewardDataScRsp) -> Self { + Self { + abyss_reward_data: value.abyss_reward_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PerformEndCsReq { + fn from(value: PerformEndCsReq) -> Self { + Self { + perform_uid: value.perform_uid.into(), + perform_type: value.perform_type.into(), + perform_id: value.perform_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PerformEndCsReq> for PerformEndCsReq { + fn from(value: ::trigger_protocol::PerformEndCsReq) -> Self { + Self { + perform_uid: value.perform_uid.into(), + perform_type: value.perform_type.into(), + perform_id: value.perform_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetRedDotListScRsp { + fn from(value: GetRedDotListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetRedDotListScRsp> for GetRedDotListScRsp { + fn from(value: ::trigger_protocol::GetRedDotListScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DailyChallengeData { + fn from(value: DailyChallengeData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DailyChallengeData> for DailyChallengeData { + fn from(value: ::trigger_protocol::DailyChallengeData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetClientSystemsDataScRsp { + fn from(value: GetClientSystemsDataScRsp) -> Self { + Self { + data: value.data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetClientSystemsDataScRsp> for GetClientSystemsDataScRsp { + fn from(value: ::trigger_protocol::GetClientSystemsDataScRsp) -> Self { + Self { + data: value.data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::EnterWorldScRsp { + fn from(value: EnterWorldScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::EnterWorldScRsp> for EnterWorldScRsp { + fn from(value: ::trigger_protocol::EnterWorldScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::HallSceneInfo { + fn from(value: HallSceneInfo) -> Self { + Self { + scene_unit_list: value + .scene_unit_list + .into_iter() + .map(|v| v.into()) + .collect(), + player_avatar_id: value.player_avatar_id.into(), + transform_id: value.transform_id.into(), + day_of_week: value.day_of_week.into(), + bgm_id: value.bgm_id.into(), + position: value.position.map(|v| v.into()), + time_of_day: value.time_of_day.into(), + section_id: value.section_id.into(), + control_avatar_id: value.control_avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::HallSceneInfo> for HallSceneInfo { + fn from(value: ::trigger_protocol::HallSceneInfo) -> Self { + Self { + scene_unit_list: value + .scene_unit_list + .into_iter() + .map(|v| v.into()) + .collect(), + player_avatar_id: value.player_avatar_id.into(), + transform_id: value.transform_id.into(), + day_of_week: value.day_of_week.into(), + bgm_id: value.bgm_id.into(), + position: value.position.map(|v| v.into()), + time_of_day: value.time_of_day.into(), + section_id: value.section_id.into(), + control_avatar_id: value.control_avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetRamenDataScRsp { + fn from(value: GetRamenDataScRsp) -> Self { + Self { + ramen_data: value.ramen_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetRamenDataScRsp> for GetRamenDataScRsp { + fn from(value: ::trigger_protocol::GetRamenDataScRsp) -> Self { + Self { + ramen_data: value.ramen_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetWeaponDataScRsp { + fn from(value: GetWeaponDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + weapon_list: value.weapon_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetWeaponDataScRsp> for GetWeaponDataScRsp { + fn from(value: ::trigger_protocol::GetWeaponDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + weapon_list: value.weapon_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::FightSettle { + fn from(value: FightSettle) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::FightSettle> for FightSettle { + fn from(value: ::trigger_protocol::FightSettle) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::VhsStoreData { + fn from(value: VhsStoreData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::VhsStoreData> for VhsStoreData { + fn from(value: ::trigger_protocol::VhsStoreData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetMiniscapeEntrustDataScRsp { + fn from(value: GetMiniscapeEntrustDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetMiniscapeEntrustDataScRsp> +for GetMiniscapeEntrustDataScRsp { + fn from(value: ::trigger_protocol::GetMiniscapeEntrustDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetArcadeDataCsReq { + fn from(value: GetArcadeDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetArcadeDataCsReq> for GetArcadeDataCsReq { + fn from(value: ::trigger_protocol::GetArcadeDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::RallySceneInfo { + fn from(value: RallySceneInfo) -> Self { + Self { + level_perform_info: value.level_perform_info.map(|v| v.into()), + cur_check_point: value.cur_check_point.map(|v| v.into()), + level_reward_info: value.level_reward_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::RallySceneInfo> for RallySceneInfo { + fn from(value: ::trigger_protocol::RallySceneInfo) -> Self { + Self { + level_perform_info: value.level_perform_info.map(|v| v.into()), + cur_check_point: value.cur_check_point.map(|v| v.into()), + level_reward_info: value.level_reward_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetTrashbinHermitDataCsReq { + fn from(value: GetTrashbinHermitDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetTrashbinHermitDataCsReq> +for GetTrashbinHermitDataCsReq { + fn from(value: ::trigger_protocol::GetTrashbinHermitDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DressEquipmentParam { + fn from(value: DressEquipmentParam) -> Self { + Self { + equip_uid: value.equip_uid.into(), + dress_index: value.dress_index.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DressEquipmentParam> for DressEquipmentParam { + fn from(value: ::trigger_protocol::DressEquipmentParam) -> Self { + Self { + equip_uid: value.equip_uid.into(), + dress_index: value.dress_index.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetVhsStoreDataScRsp { + fn from(value: GetVhsStoreDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + data: value.data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetVhsStoreDataScRsp> for GetVhsStoreDataScRsp { + fn from(value: ::trigger_protocol::GetVhsStoreDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + data: value.data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetActivityDataScRsp { + fn from(value: GetActivityDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetActivityDataScRsp> for GetActivityDataScRsp { + fn from(value: ::trigger_protocol::GetActivityDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::CafeSync { + fn from(value: CafeSync) -> Self { + Self { + cafe_data: value.cafe_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::CafeSync> for CafeSync { + fn from(value: ::trigger_protocol::CafeSync) -> Self { + Self { + cafe_data: value.cafe_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::QuestData { + fn from(value: QuestData) -> Self { + Self { + quest_collection_list: value + .quest_collection_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::QuestData> for QuestData { + fn from(value: ::trigger_protocol::QuestData) -> Self { + Self { + quest_collection_list: value + .quest_collection_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::FightSceneInfo { + fn from(value: FightSceneInfo) -> Self { + Self { + perform_type: value.perform_type.into(), + level_reward_info: value.level_reward_info.map(|v| v.into()), + end_hollow: value.end_hollow.into(), + level_perform_info: value.level_perform_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::FightSceneInfo> for FightSceneInfo { + fn from(value: ::trigger_protocol::FightSceneInfo) -> Self { + Self { + perform_type: value.perform_type.into(), + level_reward_info: value.level_reward_info.map(|v| v.into()), + end_hollow: value.end_hollow.into(), + level_perform_info: value.level_perform_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::SceneInfo { + fn from(value: SceneInfo) -> Self { + Self { + scene_type: value.scene_type.into(), + local_play_type: value.local_play_type.into(), + hall_scene_info: value.hall_scene_info.map(|v| v.into()), + rally_scene_info: value.rally_scene_info.map(|v| v.into()), + event_id: value.event_id.into(), + fight_scene_info: value.fight_scene_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::SceneInfo> for SceneInfo { + fn from(value: ::trigger_protocol::SceneInfo) -> Self { + Self { + scene_type: value.scene_type.into(), + local_play_type: value.local_play_type.into(), + hall_scene_info: value.hall_scene_info.map(|v| v.into()), + rally_scene_info: value.rally_scene_info.map(|v| v.into()), + event_id: value.event_id.into(), + fight_scene_info: value.fight_scene_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetServerTimestampCsReq { + fn from(value: GetServerTimestampCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetServerTimestampCsReq> for GetServerTimestampCsReq { + fn from(value: ::trigger_protocol::GetServerTimestampCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::WorkbenchData { + fn from(value: WorkbenchData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::WorkbenchData> for WorkbenchData { + fn from(value: ::trigger_protocol::WorkbenchData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetRoleCardDataCsReq { + fn from(value: GetRoleCardDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetRoleCardDataCsReq> for GetRoleCardDataCsReq { + fn from(value: ::trigger_protocol::GetRoleCardDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::SavePlayerSystemSettingCsReq { + fn from(value: SavePlayerSystemSettingCsReq) -> Self { + Self { + r#type: value.r#type.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::SavePlayerSystemSettingCsReq> +for SavePlayerSystemSettingCsReq { + fn from(value: ::trigger_protocol::SavePlayerSystemSettingCsReq) -> Self { + Self { + r#type: value.r#type.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::UnlockData { + fn from(value: UnlockData) -> Self { + Self { + unlocked_list: value.unlocked_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::UnlockData> for UnlockData { + fn from(value: ::trigger_protocol::UnlockData) -> Self { + Self { + unlocked_list: value.unlocked_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PerformJumpCsReq { + fn from(value: PerformJumpCsReq) -> Self { + Self { + perform_uid: value.perform_uid.into(), + perform_type: value.perform_type.into(), + perform_id: value.perform_id.into(), + comic_index: value.comic_index.into(), + furthest_chapter: value.furthest_chapter.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PerformJumpCsReq> for PerformJumpCsReq { + fn from(value: ::trigger_protocol::PerformJumpCsReq) -> Self { + Self { + perform_uid: value.perform_uid.into(), + perform_type: value.perform_type.into(), + perform_id: value.perform_id.into(), + comic_index: value.comic_index.into(), + furthest_chapter: value.furthest_chapter.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::QuestCondProgress { + fn from(value: QuestCondProgress) -> Self { + Self { + public_variables: value + .public_variables + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::QuestCondProgress> for QuestCondProgress { + fn from(value: ::trigger_protocol::QuestCondProgress) -> Self { + Self { + public_variables: value + .public_variables + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetQuestDataCsReq { + fn from(value: GetQuestDataCsReq) -> Self { + Self { + quest_type: value.quest_type.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetQuestDataCsReq> for GetQuestDataCsReq { + fn from(value: ::trigger_protocol::GetQuestDataCsReq) -> Self { + Self { + quest_type: value.quest_type.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetChatEmojiListCsReq { + fn from(value: GetChatEmojiListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetChatEmojiListCsReq> for GetChatEmojiListCsReq { + fn from(value: ::trigger_protocol::GetChatEmojiListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PostGirlItem { + fn from(value: PostGirlItem) -> Self { + Self { + id: value.id.into(), + unlock_time: value.unlock_time.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PostGirlItem> for PostGirlItem { + fn from(value: ::trigger_protocol::PostGirlItem) -> Self { + Self { + id: value.id.into(), + unlock_time: value.unlock_time.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetQuestDataScRsp { + fn from(value: GetQuestDataScRsp) -> Self { + Self { + quest_type: value.quest_type.into(), + retcode: value.retcode.into(), + quest_data: value.quest_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetQuestDataScRsp> for GetQuestDataScRsp { + fn from(value: ::trigger_protocol::GetQuestDataScRsp) -> Self { + Self { + quest_type: value.quest_type.into(), + retcode: value.retcode.into(), + quest_data: value.quest_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetHollowDataCsReq { + fn from(value: GetHollowDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetHollowDataCsReq> for GetHollowDataCsReq { + fn from(value: ::trigger_protocol::GetHollowDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetMainCityRevivalDataScRsp { + fn from(value: GetMainCityRevivalDataScRsp) -> Self { + Self { + main_city_revival_data: value.main_city_revival_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetMainCityRevivalDataScRsp> +for GetMainCityRevivalDataScRsp { + fn from(value: ::trigger_protocol::GetMainCityRevivalDataScRsp) -> Self { + Self { + main_city_revival_data: value.main_city_revival_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PlayerSyncScNotify { + fn from(value: PlayerSyncScNotify) -> Self { + Self { + avatar_sync: value.avatar_sync.map(|v| v.into()), + cafe_sync: value.cafe_sync.map(|v| v.into()), + item_sync: value.item_sync.map(|v| v.into()), + ramen_sync: value.ramen_sync.map(|v| v.into()), + basic_info: value.basic_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PlayerSyncScNotify> for PlayerSyncScNotify { + fn from(value: ::trigger_protocol::PlayerSyncScNotify) -> Self { + Self { + avatar_sync: value.avatar_sync.map(|v| v.into()), + cafe_sync: value.cafe_sync.map(|v| v.into()), + item_sync: value.item_sync.map(|v| v.into()), + ramen_sync: value.ramen_sync.map(|v| v.into()), + basic_info: value.basic_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::EnterSectionCsReq { + fn from(value: EnterSectionCsReq) -> Self { + Self { + transform_id: value.transform_id.into(), + section_id: value.section_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::EnterSectionCsReq> for EnterSectionCsReq { + fn from(value: ::trigger_protocol::EnterSectionCsReq) -> Self { + Self { + transform_id: value.transform_id.into(), + section_id: value.section_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::EnterSceneScNotify { + fn from(value: EnterSceneScNotify) -> Self { + Self { + dungeon_info: value.dungeon_info.map(|v| v.into()), + scene_info: value.scene_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::EnterSceneScNotify> for EnterSceneScNotify { + fn from(value: ::trigger_protocol::EnterSceneScNotify) -> Self { + Self { + dungeon_info: value.dungeon_info.map(|v| v.into()), + scene_info: value.scene_info.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetTrashbinHermitDataScRsp { + fn from(value: GetTrashbinHermitDataScRsp) -> Self { + Self { + trashbin_hermit_data: value.trashbin_hermit_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetTrashbinHermitDataScRsp> +for GetTrashbinHermitDataScRsp { + fn from(value: ::trigger_protocol::GetTrashbinHermitDataScRsp) -> Self { + Self { + trashbin_hermit_data: value.trashbin_hermit_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetWeaponDataCsReq { + fn from(value: GetWeaponDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetWeaponDataCsReq> for GetWeaponDataCsReq { + fn from(value: ::trigger_protocol::GetWeaponDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::VideoGetInfoCsReq { + fn from(value: VideoGetInfoCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::VideoGetInfoCsReq> for VideoGetInfoCsReq { + fn from(value: ::trigger_protocol::VideoGetInfoCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::VideoGetInfoScRsp { + fn from(value: VideoGetInfoScRsp) -> Self { + Self { + video_key_map: value + .video_key_map + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::VideoGetInfoScRsp> for VideoGetInfoScRsp { + fn from(value: ::trigger_protocol::VideoGetInfoScRsp) -> Self { + Self { + video_key_map: value + .video_key_map + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::WeaponDressCsReq { + fn from(value: WeaponDressCsReq) -> Self { + Self { + avatar_id: value.avatar_id.into(), + weapon_uid: value.weapon_uid.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::WeaponDressCsReq> for WeaponDressCsReq { + fn from(value: ::trigger_protocol::WeaponDressCsReq) -> Self { + Self { + avatar_id: value.avatar_id.into(), + weapon_uid: value.weapon_uid.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::ArchiveData { + fn from(value: ArchiveData) -> Self { + Self { + videotaps_info: value.videotaps_info.into_iter().map(|v| v.into()).collect(), + hollow_archive_id_list: value + .hollow_archive_id_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::ArchiveData> for ArchiveData { + fn from(value: ::trigger_protocol::ArchiveData) -> Self { + Self { + videotaps_info: value.videotaps_info.into_iter().map(|v| v.into()).collect(), + hollow_archive_id_list: value + .hollow_archive_id_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::EnterSectionCompleteCsReq { + fn from(value: EnterSectionCompleteCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::EnterSectionCompleteCsReq> for EnterSectionCompleteCsReq { + fn from(value: ::trigger_protocol::EnterSectionCompleteCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetFishingContestDataScRsp { + fn from(value: GetFishingContestDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetFishingContestDataScRsp> +for GetFishingContestDataScRsp { + fn from(value: ::trigger_protocol::GetFishingContestDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::SceneUnitProtocolInfo { + fn from(value: SceneUnitProtocolInfo) -> Self { + Self { + npc_id: value.npc_id.into(), + is_interactable: value.is_interactable.into(), + interacts_info: value + .interacts_info + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::SceneUnitProtocolInfo> for SceneUnitProtocolInfo { + fn from(value: ::trigger_protocol::SceneUnitProtocolInfo) -> Self { + Self { + npc_id: value.npc_id.into(), + is_interactable: value.is_interactable.into(), + interacts_info: value + .interacts_info + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PublicVariable { + fn from(value: PublicVariable) -> Self { + Self { + r#type: value.r#type.into(), + var_int: value.var_int.into(), + var_number: value.var_number.into(), + var_str: value.var_str.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PublicVariable> for PublicVariable { + fn from(value: ::trigger_protocol::PublicVariable) -> Self { + Self { + r#type: value.r#type.into(), + var_int: value.var_int.into(), + var_number: value.var_number.into(), + var_str: value.var_str.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PlaySongCsReq { + fn from(value: PlaySongCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PlaySongCsReq> for PlaySongCsReq { + fn from(value: ::trigger_protocol::PlaySongCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::WorkbenchGetDataCsReq { + fn from(value: WorkbenchGetDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::WorkbenchGetDataCsReq> for WorkbenchGetDataCsReq { + fn from(value: ::trigger_protocol::WorkbenchGetDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AvatarSync { + fn from(value: AvatarSync) -> Self { + Self { + avatar_list: value.avatar_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AvatarSync> for AvatarSync { + fn from(value: ::trigger_protocol::AvatarSync) -> Self { + Self { + avatar_list: value.avatar_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::RunEventGraphCsReq { + fn from(value: RunEventGraphCsReq) -> Self { + Self { + section_id: value.section_id.into(), + tag: value.tag.into(), + event_graph_uid: value.event_graph_uid.into(), + owner_type: value.owner_type.into(), + owner_id: value.owner_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::RunEventGraphCsReq> for RunEventGraphCsReq { + fn from(value: ::trigger_protocol::RunEventGraphCsReq) -> Self { + Self { + section_id: value.section_id.into(), + tag: value.tag.into(), + event_graph_uid: value.event_graph_uid.into(), + owner_type: value.owner_type.into(), + owner_id: value.owner_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetMonthCardRewardListCsReq { + fn from(value: GetMonthCardRewardListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetMonthCardRewardListCsReq> +for GetMonthCardRewardListCsReq { + fn from(value: ::trigger_protocol::GetMonthCardRewardListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::RefreshSectionScRsp { + fn from(value: RefreshSectionScRsp) -> Self { + Self { + retcode: value.retcode.into(), + refresh_status: value.refresh_status.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::RefreshSectionScRsp> for RefreshSectionScRsp { + fn from(value: ::trigger_protocol::RefreshSectionScRsp) -> Self { + Self { + retcode: value.retcode.into(), + refresh_status: value.refresh_status.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetBattleEventInfoScRsp { + fn from(value: GetBattleEventInfoScRsp) -> Self { + Self { + event_info: value.event_info.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetBattleEventInfoScRsp> for GetBattleEventInfoScRsp { + fn from(value: ::trigger_protocol::GetBattleEventInfoScRsp) -> Self { + Self { + event_info: value.event_info.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetWishlistDataScRsp { + fn from(value: GetWishlistDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetWishlistDataScRsp> for GetWishlistDataScRsp { + fn from(value: ::trigger_protocol::GetWishlistDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::MainCityRevivalData { + fn from(value: MainCityRevivalData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::MainCityRevivalData> for MainCityRevivalData { + fn from(value: ::trigger_protocol::MainCityRevivalData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::LeaveCurSceneCsReq { + fn from(value: LeaveCurSceneCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::LeaveCurSceneCsReq> for LeaveCurSceneCsReq { + fn from(value: ::trigger_protocol::LeaveCurSceneCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::UpdateEventGraphScNotify { + fn from(value: UpdateEventGraphScNotify) -> Self { + Self { + owner_type: value.owner_type.into(), + is_event_success: value.is_event_success.into(), + tag: value.tag.into(), + event_graph_owner_uid: value.event_graph_owner_uid.into(), + npc_interaction: value.npc_interaction.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::UpdateEventGraphScNotify> for UpdateEventGraphScNotify { + fn from(value: ::trigger_protocol::UpdateEventGraphScNotify) -> Self { + Self { + owner_type: value.owner_type.into(), + is_event_success: value.is_event_success.into(), + tag: value.tag.into(), + event_graph_owner_uid: value.event_graph_owner_uid.into(), + npc_interaction: value.npc_interaction.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::ShoppingMallInfo { + fn from(value: ShoppingMallInfo) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::ShoppingMallInfo> for ShoppingMallInfo { + fn from(value: ::trigger_protocol::ShoppingMallInfo) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetShoppingMallInfoCsReq { + fn from(value: GetShoppingMallInfoCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetShoppingMallInfoCsReq> for GetShoppingMallInfoCsReq { + fn from(value: ::trigger_protocol::GetShoppingMallInfoCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::CafeData { + fn from(value: CafeData) -> Self { + Self { + cur_cafe_item: value.cur_cafe_item.into(), + cafe_item_list: value.cafe_item_list.into_iter().map(|v| v.into()).collect(), + today_drink_times: value.today_drink_times.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::CafeData> for CafeData { + fn from(value: ::trigger_protocol::CafeData) -> Self { + Self { + cur_cafe_item: value.cur_cafe_item.into(), + cafe_item_list: value.cafe_item_list.into_iter().map(|v| v.into()).collect(), + today_drink_times: value.today_drink_times.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetPlayerBasicInfoCsReq { + fn from(value: GetPlayerBasicInfoCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetPlayerBasicInfoCsReq> for GetPlayerBasicInfoCsReq { + fn from(value: ::trigger_protocol::GetPlayerBasicInfoCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DrinkCafeCsReq { + fn from(value: DrinkCafeCsReq) -> Self { + Self { + cafe_item_id: value.cafe_item_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DrinkCafeCsReq> for DrinkCafeCsReq { + fn from(value: ::trigger_protocol::DrinkCafeCsReq) -> Self { + Self { + cafe_item_id: value.cafe_item_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::SetMusicPlayerModeCsReq { + fn from(value: SetMusicPlayerModeCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::SetMusicPlayerModeCsReq> for SetMusicPlayerModeCsReq { + fn from(value: ::trigger_protocol::SetMusicPlayerModeCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::Equip { + fn from(value: Equip) -> Self { + Self { + exp: value.exp.into(), + star: value.star.into(), + propertys: value.propertys.into_iter().map(|v| v.into()).collect(), + uid: value.uid.into(), + level: value.level.into(), + id: value.id.into(), + lock: value.lock.into(), + sub_propertys: value.sub_propertys.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::Equip> for Equip { + fn from(value: ::trigger_protocol::Equip) -> Self { + Self { + exp: value.exp.into(), + star: value.star.into(), + propertys: value.propertys.into_iter().map(|v| v.into()).collect(), + uid: value.uid.into(), + level: value.level.into(), + id: value.id.into(), + lock: value.lock.into(), + sub_propertys: value.sub_propertys.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::TriggerInteractCsReq { + fn from(value: TriggerInteractCsReq) -> Self { + Self { + interact_id: value.interact_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::TriggerInteractCsReq> for TriggerInteractCsReq { + fn from(value: ::trigger_protocol::TriggerInteractCsReq) -> Self { + Self { + interact_id: value.interact_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::JourneyData { + fn from(value: JourneyData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::JourneyData> for JourneyData { + fn from(value: ::trigger_protocol::JourneyData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetFairyDataScRsp { + fn from(value: GetFairyDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + data: value.data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetFairyDataScRsp> for GetFairyDataScRsp { + fn from(value: ::trigger_protocol::GetFairyDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + data: value.data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetActivityDataCsReq { + fn from(value: GetActivityDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetActivityDataCsReq> for GetActivityDataCsReq { + fn from(value: ::trigger_protocol::GetActivityDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::RoleCardData { + fn from(value: RoleCardData) -> Self { + Self { + signature: value.signature.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::RoleCardData> for RoleCardData { + fn from(value: ::trigger_protocol::RoleCardData) -> Self { + Self { + signature: value.signature.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetPlayerBasicInfoScRsp { + fn from(value: GetPlayerBasicInfoScRsp) -> Self { + Self { + basic_info: value.basic_info.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetPlayerBasicInfoScRsp> for GetPlayerBasicInfoScRsp { + fn from(value: ::trigger_protocol::GetPlayerBasicInfoScRsp) -> Self { + Self { + basic_info: value.basic_info.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::RechargeGetItemListCsReq { + fn from(value: RechargeGetItemListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::RechargeGetItemListCsReq> for RechargeGetItemListCsReq { + fn from(value: ::trigger_protocol::RechargeGetItemListCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AbyssGroup { + fn from(value: AbyssGroup) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AbyssGroup> for AbyssGroup { + fn from(value: ::trigger_protocol::AbyssGroup) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AbyssGetDataScRsp { + fn from(value: AbyssGetDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + abyss_data: value.abyss_data.map(|v| v.into()), + abyss_group_list: value + .abyss_group_list + .into_iter() + .map(|v| v.into()) + .collect(), + abyss_dungeon_list: value + .abyss_dungeon_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AbyssGetDataScRsp> for AbyssGetDataScRsp { + fn from(value: ::trigger_protocol::AbyssGetDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + abyss_data: value.abyss_data.map(|v| v.into()), + abyss_group_list: value + .abyss_group_list + .into_iter() + .map(|v| v.into()) + .collect(), + abyss_dungeon_list: value + .abyss_dungeon_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::QuestInfo { + fn from(value: QuestInfo) -> Self { + Self { + id: value.id.into(), + unlock_time: value.unlock_time.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::QuestInfo> for QuestInfo { + fn from(value: ::trigger_protocol::QuestInfo) -> Self { + Self { + id: value.id.into(), + unlock_time: value.unlock_time.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::SyncEventInfoScNotify { + fn from(value: SyncEventInfoScNotify) -> Self { + Self { + tag: value.tag.into(), + event_graph_uid: value.event_graph_uid.into(), + owner_type: value.owner_type.into(), + npc_interaction: value.npc_interaction.into(), + owner_id: value.owner_id.into(), + action_list: value.action_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::SyncEventInfoScNotify> for SyncEventInfoScNotify { + fn from(value: ::trigger_protocol::SyncEventInfoScNotify) -> Self { + Self { + tag: value.tag.into(), + event_graph_uid: value.event_graph_uid.into(), + owner_type: value.owner_type.into(), + npc_interaction: value.npc_interaction.into(), + owner_id: value.owner_id.into(), + action_list: value.action_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetRewardBuffDataCsReq { + fn from(value: GetRewardBuffDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetRewardBuffDataCsReq> for GetRewardBuffDataCsReq { + fn from(value: ::trigger_protocol::GetRewardBuffDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetPlayerDisplayDataCsReq { + fn from(value: GetPlayerDisplayDataCsReq) -> Self { + Self { + tag: value.tag.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetPlayerDisplayDataCsReq> for GetPlayerDisplayDataCsReq { + fn from(value: ::trigger_protocol::GetPlayerDisplayDataCsReq) -> Self { + Self { + tag: value.tag.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetRoleCardDataScRsp { + fn from(value: GetRoleCardDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + role_card_data: value.role_card_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetRoleCardDataScRsp> for GetRoleCardDataScRsp { + fn from(value: ::trigger_protocol::GetRoleCardDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + role_card_data: value.role_card_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AbyssDungeon { + fn from(value: AbyssDungeon) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AbyssDungeon> for AbyssDungeon { + fn from(value: ::trigger_protocol::AbyssDungeon) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::StartHollowQuestCsReq { + fn from(value: StartHollowQuestCsReq) -> Self { + Self { + is_story: value.is_story.into(), + avatar_id_list: value.avatar_id_list.into_iter().map(|v| v.into()).collect(), + quest_id: value.quest_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::StartHollowQuestCsReq> for StartHollowQuestCsReq { + fn from(value: ::trigger_protocol::StartHollowQuestCsReq) -> Self { + Self { + is_story: value.is_story.into(), + avatar_id_list: value.avatar_id_list.into_iter().map(|v| v.into()).collect(), + quest_id: value.quest_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetRidusGotBooDataScRsp { + fn from(value: GetRidusGotBooDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetRidusGotBooDataScRsp> for GetRidusGotBooDataScRsp { + fn from(value: ::trigger_protocol::GetRidusGotBooDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::FinishArchivePerformScRsp { + fn from(value: FinishArchivePerformScRsp) -> Self { + Self { + retcode: value.retcode.into(), + sub_id: value.sub_id.into(), + quest_id: value.quest_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::FinishArchivePerformScRsp> for FinishArchivePerformScRsp { + fn from(value: ::trigger_protocol::FinishArchivePerformScRsp) -> Self { + Self { + retcode: value.retcode.into(), + sub_id: value.sub_id.into(), + quest_id: value.quest_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::SceneTransitionCsReq { + fn from(value: SceneTransitionCsReq) -> Self { + Self { + section_id: value.section_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::SceneTransitionCsReq> for SceneTransitionCsReq { + fn from(value: ::trigger_protocol::SceneTransitionCsReq) -> Self { + Self { + section_id: value.section_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::CampIdleData { + fn from(value: CampIdleData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::CampIdleData> for CampIdleData { + fn from(value: ::trigger_protocol::CampIdleData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::EatRamenScRsp { + fn from(value: EatRamenScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::EatRamenScRsp> for EatRamenScRsp { + fn from(value: ::trigger_protocol::EatRamenScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::Weapon { + fn from(value: Weapon) -> Self { + Self { + lock: value.lock.into(), + uid: value.uid.into(), + refine_level: value.refine_level.into(), + id: value.id.into(), + exp: value.exp.into(), + star: value.star.into(), + level: value.level.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::Weapon> for Weapon { + fn from(value: ::trigger_protocol::Weapon) -> Self { + Self { + lock: value.lock.into(), + uid: value.uid.into(), + refine_level: value.refine_level.into(), + id: value.id.into(), + exp: value.exp.into(), + star: value.star.into(), + level: value.level.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetExplorationDataCsReq { + fn from(value: GetExplorationDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetExplorationDataCsReq> for GetExplorationDataCsReq { + fn from(value: ::trigger_protocol::GetExplorationDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::StartHollowQuestScRsp { + fn from(value: StartHollowQuestScRsp) -> Self { + Self { + quest_id: value.quest_id.into(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::StartHollowQuestScRsp> for StartHollowQuestScRsp { + fn from(value: ::trigger_protocol::StartHollowQuestScRsp) -> Self { + Self { + quest_id: value.quest_id.into(), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AbyssData { + fn from(value: AbyssData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AbyssData> for AbyssData { + fn from(value: ::trigger_protocol::AbyssData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetAbyssRewardDataCsReq { + fn from(value: GetAbyssRewardDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetAbyssRewardDataCsReq> for GetAbyssRewardDataCsReq { + fn from(value: ::trigger_protocol::GetAbyssRewardDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::DressedEquip { + fn from(value: DressedEquip) -> Self { + Self { + equip_uid: value.equip_uid.into(), + index: value.index.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::DressedEquip> for DressedEquip { + fn from(value: ::trigger_protocol::DressedEquip) -> Self { + Self { + equip_uid: value.equip_uid.into(), + index: value.index.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::FashionStoreData { + fn from(value: FashionStoreData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::FashionStoreData> for FashionStoreData { + fn from(value: ::trigger_protocol::FashionStoreData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::RefreshSectionCsReq { + fn from(value: RefreshSectionCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::RefreshSectionCsReq> for RefreshSectionCsReq { + fn from(value: ::trigger_protocol::RefreshSectionCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::PostGirlData { + fn from(value: PostGirlData) -> Self { + Self { + post_girl_item_list: value + .post_girl_item_list + .into_iter() + .map(|v| v.into()) + .collect(), + selected_post_girl_id_list: value + .selected_post_girl_id_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::PostGirlData> for PostGirlData { + fn from(value: ::trigger_protocol::PostGirlData) -> Self { + Self { + post_girl_item_list: value + .post_girl_item_list + .into_iter() + .map(|v| v.into()) + .collect(), + selected_post_girl_id_list: value + .selected_post_girl_id_list + .into_iter() + .map(|v| v.into()) + .collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetNewsStandDataScRsp { + fn from(value: GetNewsStandDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + news_stand_data: value.news_stand_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetNewsStandDataScRsp> for GetNewsStandDataScRsp { + fn from(value: ::trigger_protocol::GetNewsStandDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + news_stand_data: value.news_stand_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::WeaponUnDressCsReq { + fn from(value: WeaponUnDressCsReq) -> Self { + Self { + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::WeaponUnDressCsReq> for WeaponUnDressCsReq { + fn from(value: ::trigger_protocol::WeaponUnDressCsReq) -> Self { + Self { + avatar_id: value.avatar_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::VideotapeInfo { + fn from(value: VideotapeInfo) -> Self { + Self { + finished: value.finished.into(), + archive_file_id: value.archive_file_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::VideotapeInfo> for VideotapeInfo { + fn from(value: ::trigger_protocol::VideotapeInfo) -> Self { + Self { + finished: value.finished.into(), + archive_file_id: value.archive_file_id.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::FairyData { + fn from(value: FairyData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::FairyData> for FairyData { + fn from(value: ::trigger_protocol::FairyData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetEquipDataCsReq { + fn from(value: GetEquipDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetEquipDataCsReq> for GetEquipDataCsReq { + fn from(value: ::trigger_protocol::GetEquipDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::GetMainCityRevivalDataCsReq { + fn from(value: GetMainCityRevivalDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetMainCityRevivalDataCsReq> +for GetMainCityRevivalDataCsReq { + fn from(value: ::trigger_protocol::GetMainCityRevivalDataCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::InteractInfo { + fn from(value: InteractInfo) -> Self { + Self { + participators: value + .participators + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + interact_target_list: value + .interact_target_list + .into_iter() + .map(|v| v.into()) + .collect(), + name: value.name.into(), + scale_y: value.scale_y.into(), + scale_x: value.scale_x.into(), + scale_w: value.scale_w.into(), + scale_r: value.scale_r.into(), + tag_id: value.tag_id.into(), + scale_z: value.scale_z.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::InteractInfo> for InteractInfo { + fn from(value: ::trigger_protocol::InteractInfo) -> Self { + Self { + participators: value + .participators + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect(), + interact_target_list: value + .interact_target_list + .into_iter() + .map(|v| v.into()) + .collect(), + name: value.name.into(), + scale_y: value.scale_y.into(), + scale_x: value.scale_x.into(), + scale_w: value.scale_w.into(), + scale_r: value.scale_r.into(), + tag_id: value.tag_id.into(), + scale_z: value.scale_z.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From +for ::trigger_protocol::BeginArchiveBattleQuestCsReq { + fn from(value: BeginArchiveBattleQuestCsReq) -> Self { + Self { + quest_id: value.quest_id.into(), + buddy_id: value.buddy_id.into(), + is_story: value.is_story.into(), + avatar_id_list: value.avatar_id_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::BeginArchiveBattleQuestCsReq> +for BeginArchiveBattleQuestCsReq { + fn from(value: ::trigger_protocol::BeginArchiveBattleQuestCsReq) -> Self { + Self { + quest_id: value.quest_id.into(), + buddy_id: value.buddy_id.into(), + is_story: value.is_story.into(), + avatar_id_list: value.avatar_id_list.into_iter().map(|v| v.into()).collect(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetPlayerDisplayDataScRsp { + fn from(value: GetPlayerDisplayDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + player_display_data: value.player_display_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetPlayerDisplayDataScRsp> for GetPlayerDisplayDataScRsp { + fn from(value: ::trigger_protocol::GetPlayerDisplayDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + player_display_data: value.player_display_data.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::WorkbenchGetDataScRsp { + fn from(value: WorkbenchGetDataScRsp) -> Self { + Self { + workbench_data: value.workbench_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::WorkbenchGetDataScRsp> for WorkbenchGetDataScRsp { + fn from(value: ::trigger_protocol::WorkbenchGetDataScRsp) -> Self { + Self { + workbench_data: value.workbench_data.map(|v| v.into()), + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::AbyssRewardData { + fn from(value: AbyssRewardData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::AbyssRewardData> for AbyssRewardData { + fn from(value: ::trigger_protocol::AbyssRewardData) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::GetBuddyDataScRsp { + fn from(value: GetBuddyDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::GetBuddyDataScRsp> for GetBuddyDataScRsp { + fn from(value: ::trigger_protocol::GetBuddyDataScRsp) -> Self { + Self { + retcode: value.retcode.into(), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::HollowCheckPoint { + fn from(value: HollowCheckPoint) -> Self { + Self { + quest_cond_progress: value.quest_cond_progress.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From<::trigger_protocol::HollowCheckPoint> for HollowCheckPoint { + fn from(value: ::trigger_protocol::HollowCheckPoint) -> Self { + Self { + quest_cond_progress: value.quest_cond_progress.map(|v| v.into()), + ..Default::default() + } + } +} +#[allow(unused)] +impl From for ::trigger_protocol::HollowDataRefreshCsReq { + fn from(value: HollowDataRefreshCsReq) -> Self { + Self { ..Default::default() } + } +} +#[allow(unused)] +impl From<::trigger_protocol::HollowDataRefreshCsReq> for HollowDataRefreshCsReq { + fn from(value: ::trigger_protocol::HollowDataRefreshCsReq) -> Self { + Self { ..Default::default() } + } +} diff --git a/crates/trigger-protobuf/src/lib.rs b/crates/trigger-protobuf/src/lib.rs new file mode 100644 index 0000000..02ae8c5 --- /dev/null +++ b/crates/trigger-protobuf/src/lib.rs @@ -0,0 +1,74 @@ +use std::collections::HashMap; + +pub use prost::DecodeError as ProtobufDecodeError; +pub use prost::Message as ProtobufMessage; + +pub trait XorFields { + fn xor_fields(&mut self); +} + +pub trait CmdID { + const CMD_ID: u16; + + fn get_cmd_id(&self) -> u16 { + Self::CMD_ID + } +} + +pub trait NapMessage: prost::Message + XorFields + CmdID + Default + Sized {} +impl NapMessage for T {} + +include!("../out/_.rs"); +include!("../out/protocol_map.rs"); + +#[derive(trigger_protobuf_derive::CmdID)] +#[cmdid(5688)] +#[derive(trigger_protobuf_derive::XorFields, Clone, Copy, PartialEq, ::prost::Message)] +pub struct FallbackRsp {} + +// "repeated bytes" +impl XorFields for Vec> { + fn xor_fields(&mut self) {} +} + +impl XorFields for Vec +where + T: XorFields, +{ + fn xor_fields(&mut self) { + for item in self.iter_mut() { + item.xor_fields(); + } + } +} + +impl XorFields for HashMap +where + V: XorFields, +{ + fn xor_fields(&mut self) { + for value in self.values_mut() { + value.xor_fields(); + } + } +} + +impl XorFields for Option +where + T: XorFields, +{ + fn xor_fields(&mut self) { + if let Some(value) = self.as_mut() { + value.xor_fields(); + } + } +} + +impl XorFields for Box +where + T: XorFields, +{ + fn xor_fields(&mut self) { + T::xor_fields(&mut *self); + } +} diff --git a/crates/trigger-protobuf/trigger-protobuf-derive/Cargo.toml b/crates/trigger-protobuf/trigger-protobuf-derive/Cargo.toml new file mode 100644 index 0000000..bdefe3a --- /dev/null +++ b/crates/trigger-protobuf/trigger-protobuf-derive/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "trigger-protobuf-derive" +version = "0.1.0" +edition = "2021" + +[dependencies] +syn.workspace = true +quote.workspace = true + +[lib] +proc-macro = true diff --git a/crates/trigger-protobuf/trigger-protobuf-derive/src/lib.rs b/crates/trigger-protobuf/trigger-protobuf-derive/src/lib.rs new file mode 100644 index 0000000..165b3a1 --- /dev/null +++ b/crates/trigger-protobuf/trigger-protobuf-derive/src/lib.rs @@ -0,0 +1,127 @@ +use proc_macro::TokenStream; +use quote::{quote, ToTokens}; +use syn::{ + parse_macro_input, Data, DeriveInput, Field, Fields, GenericArgument, Meta, MetaList, Path, + PathArguments, Type, TypePath, +}; + +#[must_use] +fn get_type_name(path: &Path) -> String { + path.segments.last().unwrap().ident.to_string() +} + +#[must_use] +fn extract_field_type(field: &Field) -> String { + match &field.ty { + Type::Path(TypePath { path, .. }) => { + let last_segment = path.segments.last().unwrap(); + match &last_segment.arguments { + PathArguments::AngleBracketed(args) => { + if let Some(GenericArgument::Type(Type::Path(TypePath { path, .. }))) = + args.args.last() + { + get_type_name(path) + } else { + get_type_name(path) + } + } + _ => get_type_name(path), + } + } + _ => panic!("Unsupported field type"), + } +} + +#[proc_macro_derive(XorFields, attributes(xor))] +pub fn xor_fields_derive(input: TokenStream) -> TokenStream { + let input = parse_macro_input!(input as DeriveInput); + let struct_name = input.ident; + + let fields = match input.data { + Data::Struct(data) => match data.fields { + Fields::Named(fields) => fields.named, + _ => panic!("XorFields only supports structs with named fields"), + }, + Data::Enum(_) => { + let expanded = quote! { + impl crate::XorFields for #struct_name { + fn xor_fields(&mut self) { + } + } + }; + + return TokenStream::from(expanded); + } + _ => panic!("XorFields only supports structs"), + }; + + let field_xors = fields.iter().map(|field| { + let field_name = field.ident.as_ref().unwrap(); + let field_ty = extract_field_type(field); + let xor_attr = field.attrs.iter().find(|attr| attr.path().is_ident("xor")); + + xor_attr.map_or_else( + || { + if field_ty.chars().next().unwrap().is_uppercase() + && field_ty != "String" + && field_ty != "Any" + { + quote! { + self.#field_name.xor_fields(); + } + } else { + quote! {} + } + }, + |attr| match attr.meta { + Meta::List(MetaList { ref tokens, .. }) => { + let xor_value = tokens.into_token_stream(); + if xor_value.to_string() != "0" { + quote! { + if self.#field_name != 0 { + self.#field_name ^= #xor_value; + } + } + } else { + quote! {} + } + } + _ => panic!("Invalid xor attribute value"), + }, + ) + }); + + let expanded = quote! { + impl crate::XorFields for #struct_name { + fn xor_fields(&mut self) { + #(#field_xors)* + } + } + }; + + TokenStream::from(expanded) +} + +#[proc_macro_derive(CmdID, attributes(cmdid))] +pub fn cmd_id_derive(input: TokenStream) -> TokenStream { + let input = parse_macro_input!(input as DeriveInput); + let struct_name = input.ident; + + let id = match input + .attrs + .iter() + .find(|attr| attr.path().is_ident("cmdid")) + { + Some(attr) => match attr.meta { + Meta::List(MetaList { ref tokens, .. }) => tokens.into_token_stream(), + _ => panic!("Invalid cmdid attribute value"), + }, + _ => 0u16.into_token_stream(), + }; + + TokenStream::from(quote! { + impl crate::CmdID for #struct_name { + const CMD_ID: u16 = #id; + } + }) +} diff --git a/crates/trigger-protocol/Cargo.toml b/crates/trigger-protocol/Cargo.toml new file mode 100644 index 0000000..f69e738 --- /dev/null +++ b/crates/trigger-protocol/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "trigger-protocol" +edition = "2024" +version.workspace = true + +[dependencies] +trigger-encoding.workspace = true +trigger-codegen.workspace = true diff --git a/crates/trigger-protocol/src/lib.rs b/crates/trigger-protocol/src/lib.rs new file mode 100644 index 0000000..ead5c4a --- /dev/null +++ b/crates/trigger-protocol/src/lib.rs @@ -0,0 +1,1740 @@ +use std::collections::HashMap; + +use trigger_codegen::{ClientCmdID, Decodeable, Encodeable}; +use trigger_encoding::Encodeable; +use util::ProtocolUnit; + +pub mod util; + +pub trait ClientCmdID { + const CMD_ID: u16; + + fn get_client_cmd_id(&self) -> u16 { + Self::CMD_ID + } +} + +impl From for ProtocolUnit +where + T: ClientCmdID + Encodeable, +{ + fn from(value: T) -> Self { + ProtocolUnit { + cmd_id: value.get_client_cmd_id(), + blob: value.encode_to_vec(), + } + } +} + +// Player + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1)] +pub struct GetPlayerBasicInfoCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct PlayerBasicInfo { + pub nick_name: String, + pub level: u32, + pub exp: u32, + pub avatar_id: u32, + pub player_avatar_id: u32, + pub control_avatar_id: u32, + pub last_enter_world_timestamp: i64, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2)] +pub struct GetPlayerBasicInfoScRsp { + pub retcode: i32, + pub basic_info: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3)] +pub struct GetServerTimestampCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(4)] +pub struct GetServerTimestampScRsp { + pub retcode: i32, + pub timestamp: u64, + pub utc_offset: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(5)] +pub struct GetPlayerTransactionCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(6)] +pub struct GetPlayerTransactionScRsp { + pub retcode: i32, + pub transaction: String, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(7)] +pub struct PlayerLogoutCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(8)] +pub struct PlayerLogoutScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(80)] +pub struct SwitchRoleCsReq { + pub avatar_id: u32, + pub player_avatar_id: u32, + pub control_avatar_id: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(81)] +pub struct SwitchRoleScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(91)] +pub struct GetAuthkeyCsReq { + pub auth_appid: String, + pub authkey_ver: u32, + pub sign_type: u32, + pub offline_verify_value: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(92)] +pub struct GetAuthkeyScRsp { + pub retcode: i32, + pub auth_appid: String, + pub authkey_ver: u32, + pub authkey: String, +} + +// Sync + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct AvatarSync { + pub avatar_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct ItemSync { + pub weapon_list: Vec, + pub equip_list: Vec, + pub material_list: Vec, + pub auto_recovery_info: HashMap, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct RamenSync { + pub is_full_update: bool, + pub cur_ramen: u32, + pub eat_ramen_times: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct CafeSync { + pub cafe_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(100)] +pub struct PlayerSyncScNotify { + pub basic_info: Option, + pub avatar_sync: Option, + pub item_sync: Option, + pub ramen_sync: Option, + pub cafe_sync: Option, +} + +// Mail + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(200)] +pub struct GetPlayerMailsCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(201)] +pub struct GetPlayerMailsScRsp { + pub retcode: i32, +} + +// Social + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(300)] +pub struct GetFriendListCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(301)] +pub struct GetFriendListScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(302)] +pub struct GetOnlineFriendsListCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(303)] +pub struct GetOnlineFriendsListScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(304)] +pub struct GetRoleCardDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct RoleCardData { + pub signature: String, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(305)] +pub struct GetRoleCardDataScRsp { + pub retcode: i32, + pub role_card_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(306)] +pub struct GetChatEmojiListCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(307)] +pub struct GetChatEmojiListScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(308)] +pub struct GetDisplayCaseDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(309)] +pub struct GetDisplayCaseDataScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(310)] +pub struct GetPlayerDisplayDataCsReq { + pub tag: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct DisplayItemGroup {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct AvatarDataPackage {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct PhotoWallNetworkData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct PlayerDisplayData { + pub signature: String, + pub display_item_group: Option, + pub avatar_data_package: Option, + pub photo_wall_network_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(311)] +pub struct GetPlayerDisplayDataScRsp { + pub retcode: i32, + pub player_display_data: Option, +} + +// Scene + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct Transform { + pub position: Vec, + pub rotation: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct SceneInfo { + pub scene_type: u32, + pub event_id: u32, + pub local_play_type: u32, + pub hall_scene_info: Option, + pub fight_scene_info: Option, + pub rally_scene_info: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct InteractInfo { + pub name: String, + pub tag_id: i32, + pub scale_x: f64, + pub scale_y: f64, + pub scale_z: f64, + pub scale_w: f64, + pub scale_r: f64, + pub interact_target_list: Vec, + pub participators: HashMap, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct SceneUnitProtocolInfo { + pub npc_id: u32, + pub is_interactable: bool, + pub interacts_info: HashMap, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct HallSceneInfo { + pub section_id: u32, + pub position: Option, + pub scene_unit_list: Vec, + pub time_of_day: u32, + pub bgm_id: u32, + pub day_of_week: u32, + pub player_avatar_id: u32, + pub control_avatar_id: u32, + pub transform_id: String, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct LevelRewardInfo {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct LevelPerformInfo { + pub time: String, + pub weather: String, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct FightSceneInfo { + pub perform_type: i32, + pub end_hollow: bool, + pub level_perform_info: Option, + pub level_reward_info: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct PublicVariable { + pub r#type: u32, + pub var_int: i64, + pub var_number: f64, + pub var_str: String, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct QuestCondProgress { + pub public_variables: HashMap, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct HollowCheckPoint { + pub quest_cond_progress: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct RallySceneInfo { + pub level_perform_info: Option, + pub level_reward_info: Option, + pub cur_check_point: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct DungeonEquipInfo { + pub avatar_list: Vec, + pub weapon_list: Vec, + pub equip_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct AvatarUnitInfo { + pub avatar_id: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct BuddyUnitInfo { + pub buddy_id: u32, + pub r#type: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct DungeonQuestInfo { + pub inner_quest_id_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct DungeonInfo { + pub quest_id: u32, + pub dungeon_equip_info: Option, + pub dungeon_quest_info: Option, + pub avatar_list: Vec, + pub buddy_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(450)] +pub struct EnterWorldCsReq { + pub is_reenter: bool, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(451)] +pub struct EnterWorldScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(452)] +pub struct EnterSceneScNotify { + pub scene_info: Option, + pub dungeon_info: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(453)] +pub struct PostEnterWorldCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(454)] +pub struct PostEnterWorldScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(455)] +pub struct SceneTransitionCsReq { + pub section_id: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(456)] +pub struct SceneTransitionScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(457)] +pub struct EnterSectionCompleteCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(458)] +pub struct EnterSectionCompleteScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(459)] +pub struct SavePosInMainCityCsReq { + pub section_id: u32, + pub position: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(460)] +pub struct SavePosInMainCityScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(461)] +pub struct InteractWithUnitCsReq { + pub interact_id: i32, + pub npc_tag_id: i32, + pub r#type: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(462)] +pub struct InteractWithUnitScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct ActionInfo { + pub action_type: i32, + pub body: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(463)] +pub struct SyncEventInfoScNotify { + pub owner_id: u32, + pub owner_type: i32, + pub tag: u32, + pub event_graph_uid: u32, + pub npc_interaction: String, + pub action_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(464)] +pub struct UpdateEventGraphScNotify { + pub tag: u32, + pub event_graph_owner_uid: u32, + pub owner_type: i32, + pub npc_interaction: String, + pub is_event_success: bool, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(465)] +pub struct RunEventGraphCsReq { + pub section_id: u32, + pub event_graph_uid: u32, + pub owner_id: u32, + pub owner_type: i32, + pub tag: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(466)] +pub struct RunEventGraphScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(467)] +pub struct RefreshSectionCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(468)] +pub struct RefreshSectionScRsp { + pub retcode: i32, + pub refresh_status: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(469)] +pub struct EnterSectionCsReq { + pub section_id: u32, + pub transform_id: String, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(470)] +pub struct EnterSectionScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(471)] +pub struct EndBattleCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct FightSettle {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(472)] +pub struct EndBattleScRsp { + pub retcode: i32, + pub fight_settle: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(473)] +pub struct LeaveCurSceneCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(474)] +pub struct LeaveCurSceneScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(475)] +pub struct ActiveHollowCheckPointCsReq { + pub check_point: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(476)] +pub struct ActiveHollowCheckPointScRsp { + pub retcode: i32, +} + +// Quest + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct QuestInfo { + pub id: u32, + pub unlock_time: i64, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct QuestCollection { + pub quest_type: u32, + pub finished_quest_id_list: Vec, + pub quest_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct QuestData { + pub quest_collection_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(550)] +pub struct GetQuestDataCsReq { + pub quest_type: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(551)] +pub struct GetQuestDataScRsp { + pub retcode: i32, + pub quest_type: u32, + pub quest_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct VideotapeInfo { + pub archive_file_id: u32, + pub finished: bool, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct ArchiveData { + pub hollow_archive_id_list: Vec, + pub videotaps_info: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(571)] +pub struct GetArchiveDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(572)] +pub struct GetArchiveDataScRsp { + pub retcode: i32, + pub archive_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct HollowStatistics {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct HollowInfo { + pub hollow_quest_id: u32, + pub hollow_statistics: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct HollowData { + pub unlock_hollow_group_list: Vec, + pub hollow_group_list: Vec, + pub unlock_hollow_id_list: Vec, + pub unlock_hollow_quest_list: Vec, + pub hollow_info_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(601)] +pub struct GetHollowDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(602)] +pub struct GetHollowDataScRsp { + pub retcode: i32, + pub hollow_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(603)] +pub struct HollowDataRefreshCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(604)] +pub struct HollowDataRefreshScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(605)] +pub struct StartHollowQuestCsReq { + pub is_story: bool, + pub avatar_id_list: Vec, + pub quest_id: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(606)] +pub struct StartHollowQuestScRsp { + pub retcode: i32, + pub quest_id: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(607)] +pub struct ClickHollowSystemCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(608)] +pub struct ClickHollowSystemScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(621)] +pub struct GetPrivateMessageDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct PrivateMessageData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(622)] +pub struct GetPrivateMessageDataScRsp { + pub retcode: i32, + pub private_message_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(640)] +pub struct BeginTrainingCourseBattleCsReq { + pub quest_id: u32, + pub buddy_id: u32, + pub avatar_id_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(641)] +pub struct BeginTrainingCourseBattleScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(642)] +pub struct BeginArchiveBattleQuestCsReq { + pub is_story: bool, + pub quest_id: u32, + pub buddy_id: u32, + pub avatar_id_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(643)] +pub struct BeginArchiveBattleQuestScRsp { + pub retcode: i32, + pub quest_id: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(644)] +pub struct FinishArchivePerformCsReq { + pub quest_id: u32, + pub sub_id: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(645)] +pub struct FinishArchivePerformScRsp { + pub retcode: i32, + pub quest_id: u32, + pub sub_id: u32, +} + +// Inventory + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct Weapon { + pub id: u32, + pub uid: u32, + pub level: u32, + pub exp: u32, + pub star: u32, + pub refine_level: u32, + pub lock: bool, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(701)] +pub struct GetWeaponDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(702)] +pub struct GetWeaponDataScRsp { + pub retcode: i32, + pub weapon_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct EquipProperty { + pub key: u32, + pub add_value: u32, + pub base_value: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct Equip { + pub id: u32, + pub uid: u32, + pub level: u32, + pub exp: u32, + pub star: u32, + pub lock: bool, + pub propertys: Vec, + pub sub_propertys: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(721)] +pub struct GetEquipDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(722)] +pub struct GetEquipDataScRsp { + pub retcode: i32, + pub equip_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(751)] +pub struct GetResourceDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct Material { + pub id: u32, + pub num: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct AutoRecoveryInfo { + pub buy_times: u32, + pub last_recovery_timestamp: i64, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(752)] +pub struct GetResourceDataScRsp { + pub retcode: i32, + pub material_list: Vec, + pub auto_recovery_info: HashMap, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(791)] +pub struct GetWishlistDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(792)] +pub struct GetWishlistDataScRsp { + pub retcode: i32, +} + +// Avatar + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct AvatarSkillLevel { + pub skill_type: u32, + pub level: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct DressedEquip { + pub equip_uid: u32, + pub index: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct Avatar { + pub id: u32, + pub level: u32, + pub exp: u32, + pub rank: u32, + pub passive_skill_level: u32, + pub skill_type_level: Vec, + pub unlocked_talent_num: u32, + pub talent_switch_list: Vec, + pub first_get_time: i64, + pub cur_weapon_uid: u32, + pub taken_rank_up_reward_list: Vec, + pub dressed_equip_list: Vec, + pub show_weapon_type: i32, + pub avatar_skin_id: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(801)] +pub struct GetAvatarDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(802)] +pub struct GetAvatarDataScRsp { + pub retcode: i32, + pub avatar_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(803)] +pub struct WeaponDressCsReq { + pub avatar_id: u32, + pub weapon_uid: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(804)] +pub struct WeaponDressScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(805)] +pub struct WeaponUnDressCsReq { + pub avatar_id: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(806)] +pub struct WeaponUnDressScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(807)] +pub struct TalentSwitchCsReq { + pub avatar_id: u32, + pub talent_switch_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(808)] +pub struct TalentSwitchScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(809)] +pub struct DressEquipmentCsReq { + pub avatar_id: u32, + pub equip_uid: u32, + pub dress_index: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(810)] +pub struct DressEquipmentScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(811)] +pub struct UndressEquipmentCsReq { + pub avatar_id: u32, + pub undress_index_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(812)] +pub struct UndressEquipmentScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct DressEquipmentParam { + pub equip_uid: u32, + pub dress_index: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(813)] +pub struct DressEquipmentSuitCsReq { + pub avatar_id: u32, + pub param_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(814)] +pub struct DressEquipmentSuitScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(840)] +pub struct GetAvatarRecommendEquipCsReq { + pub avatar_id: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(841)] +pub struct GetAvatarRecommendEquipScRsp { + pub retcode: i32, +} + +// Bangboo + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(851)] +pub struct GetBuddyDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(852)] +pub struct GetBuddyDataScRsp { + pub retcode: i32, +} + +// Gacha + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1001)] +pub struct GetGachaDataCsReq { + pub gacha_type: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1002)] +pub struct GetGachaDataScRsp { + pub retcode: i32, + pub gacha_type: u32, +} + +// Ramen +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1200)] +pub struct GetRamenDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct RamenData { + pub unlock_ramen_list: Vec, + pub cur_ramen: u32, + pub eat_ramen_times: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1201)] +pub struct GetRamenDataScRsp { + pub retcode: i32, + pub ramen_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1202)] +pub struct DelNewRamenCsReq { + // unsure tbh + pub has_mystical_spice: bool, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1203)] +pub struct DelNewRamenScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1204)] +pub struct EatRamenCsReq { + pub ramen: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1205)] +pub struct EatRamenScRsp { + pub retcode: i32, +} + +// Client systems + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct UnlockData { + pub unlocked_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct PostGirlItem { + pub id: u32, + pub unlock_time: i64, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct PostGirlData { + pub post_girl_item_list: Vec, + pub selected_post_girl_id_list: Vec, + pub show_random_selected: bool, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct MusicPlayerItem { + pub id: u32, + pub unlock_time: i64, + pub seen_time: i64, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct MusicPlayerData { + pub music_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct ClientSystemsData { + pub unlock_data: Option, + pub post_girl_data: Option, + pub music_player_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1301)] +pub struct VideoGetInfoCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1302)] +pub struct VideoGetInfoScRsp { + pub retcode: i32, + pub video_key_map: HashMap, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1303)] +pub struct SavePlayerSystemSettingCsReq { + pub params: u32, + pub r#type: u32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1304)] +pub struct SavePlayerSystemSettingScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1305)] +pub struct GetTipsInfoCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct TipsInfo {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1306)] +pub struct GetTipsInfoScRsp { + pub retcode: i32, + pub tips_info: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1307)] +pub struct GetClientSystemsDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1308)] +pub struct GetClientSystemsDataScRsp { + pub retcode: i32, + pub data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1309)] +pub struct ReportUiLayoutPlatformCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1310)] +pub struct ReportUiLayoutPlatformScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1311)] +pub struct PlayerOperationCsReq { + pub param: i32, + pub data: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1312)] +pub struct PlayerOperationScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1313)] +pub struct TriggerInteractCsReq { + pub interact_id: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1314)] +pub struct TriggerInteractScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1315)] +pub struct BattleReportCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1316)] +pub struct BattleReportScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1317)] +pub struct PlaySongCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1318)] +pub struct PlaySongScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1319)] +pub struct SetMusicPlayerModeCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1320)] +pub struct SetMusicPlayerModeScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1321)] +pub struct GetNewsStandDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct NewsStandData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1322)] +pub struct GetNewsStandDataScRsp { + pub retcode: i32, + pub news_stand_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1340)] +pub struct GetTrashbinHermitDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct TrashbinHermitData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1341)] +pub struct GetTrashbinHermitDataScRsp { + pub retcode: i32, + pub trashbin_hermit_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1370)] +pub struct GetExplorationDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1371)] +pub struct GetExplorationDataScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1380)] +pub struct GetJourneyDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct JourneyData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1381)] +pub struct GetJourneyDataScRsp { + pub retcode: i32, + pub journey_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1390)] +pub struct GetRedDotListCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1391)] +pub struct GetRedDotListScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1392)] +pub struct GameLogReportCsReq { + pub stack_trace: Vec, + pub log_report_type: u32, + pub value: String, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1393)] +pub struct GameLogReportScRsp { + pub retcode: i32, +} + +// DailyChallenge + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1450)] +pub struct GetDailyChallengeDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct DailyChallengeData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1451)] +pub struct GetDailyChallengeDataScRsp { + pub retcode: i32, + pub data: Option, +} + +// Fairy + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1601)] +pub struct GetFairyDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct FairyData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1602)] +pub struct GetFairyDataScRsp { + pub retcode: i32, + pub data: Option, +} + +// Activity + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1700)] +pub struct GetActivityDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1701)] +pub struct GetActivityDataScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1800)] +pub struct GetWebActivityDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1801)] +pub struct GetWebActivityDataScRsp { + pub retcode: i32, +} + +// Cafe + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1900)] +pub struct GetCafeDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct CafeData { + pub cafe_item_list: Vec, + pub cur_cafe_item: i32, + pub today_drink_times: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1901)] +pub struct GetCafeDataScRsp { + pub retcode: i32, + pub cafe_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1902)] +pub struct DrinkCafeCsReq { + pub cafe_item_id: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1903)] +pub struct DrinkCafeScRsp { + pub retcode: i32, +} + +// LandRevive + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1970)] +pub struct GetMainCityRevivalDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct MainCityRevivalData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(1971)] +pub struct GetMainCityRevivalDataScRsp { + pub retcode: i32, + pub main_city_revival_data: Option, +} + +// Collections + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2001)] +pub struct GetCollectMapCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct CollectMap {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2002)] +pub struct GetCollectMapScRsp { + pub retcode: i32, + pub collect_map: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2021)] +pub struct WorkbenchGetDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct WorkbenchData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2022)] +pub struct WorkbenchGetDataScRsp { + pub retcode: i32, + pub workbench_data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2041)] +pub struct GetAbyssRewardDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct AbyssRewardData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2042)] +pub struct GetAbyssRewardDataScRsp { + pub retcode: i32, + pub abyss_reward_data: Option, +} + +// RewardBuff + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2201)] +pub struct GetRewardBuffDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct RewardBuffData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2202)] +pub struct GetRewardBuffDataScRsp { + pub retcode: i32, + pub data: Option, +} + +// Arcade + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2220)] +pub struct GetArcadeDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2221)] +pub struct GetArcadeDataScRsp { + pub retcode: i32, +} + +// Perform + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2400)] +pub struct PerformTriggerCsReq { + pub perform_id: i32, + pub perform_type: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2401)] +pub struct PerformTriggerScRsp { + pub retcode: i32, + pub perform_uid: i64, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2402)] +pub struct PerformJumpCsReq { + pub perform_id: i32, + pub perform_type: i32, + pub perform_uid: i64, + pub comic_index: i32, + pub furthest_chapter: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2403)] +pub struct PerformJumpScRsp { + pub retcode: i32, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2404)] +pub struct PerformEndCsReq { + pub perform_id: i32, + pub perform_type: i32, + pub perform_uid: i64, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2405)] +pub struct PerformEndScRsp { + pub retcode: i32, +} + +// BattleEvent + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2450)] +pub struct GetBattleEventInfoCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct BattleEventInfo {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2451)] +pub struct GetBattleEventInfoScRsp { + pub retcode: i32, + pub event_info: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2452)] +pub struct ReportBattleTeamCsReq { + pub avatar_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2453)] +pub struct ReportBattleTeamScRsp { + pub retcode: i32, +} + +// VhsStore + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2500)] +pub struct GetVhsStoreDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct VhsStoreData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2501)] +pub struct GetVhsStoreDataScRsp { + pub retcode: i32, + pub data: Option, +} + +// MonthCard + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2550)] +pub struct GetMonthCardRewardListCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2551)] +pub struct GetMonthCardRewardListScRsp { + pub retcode: i32, +} + +// BattlePass + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2800)] +pub struct GetBattlePassDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2801)] +pub struct GetBattlePassDataScRsp { + pub retcode: i32, +} + +// HadalZone + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2830)] +pub struct GetHadalZoneDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2831)] +pub struct GetHadalZoneDataScRsp { + pub retcode: i32, +} + +// Abyss + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct AbyssData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct AbyssGroup {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct AbyssDungeon {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2871)] +pub struct AbyssGetDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2872)] +pub struct AbyssGetDataScRsp { + pub retcode: i32, + pub abyss_data: Option, + pub abyss_group_list: Vec, + pub abyss_dungeon_list: Vec, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2873)] +pub struct AbyssArpeggioGetDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(2874)] +pub struct AbyssArpeggioGetDataScRsp { + pub retcode: i32, +} + +// PhotoWall (3100-3129) + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3100)] +pub struct GetPhotoWallDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3101)] +pub struct GetPhotoWallDataScRsp { + pub retcode: i32, +} + +// CharacterQuest (?) maybe MainCityNPC + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3270)] +pub struct GetCharacterQuestListCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3271)] +pub struct GetCharacterQuestListScRsp { + pub retcode: i32, +} + +// Shop + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3400)] +pub struct GetFashionStoreDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct FashionStoreData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3401)] +pub struct GetFashionStoreDataScRsp { + pub retcode: i32, + pub data: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3402)] +pub struct GetShoppingMallInfoCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct ShoppingMallInfo {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3403)] +pub struct GetShoppingMallInfoScRsp { + pub retcode: i32, + pub shopping_mall_info: Option, +} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3404)] +pub struct RechargeGetItemListCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3405)] +pub struct RechargeGetItemListScRsp { + pub retcode: i32, +} + +// BabelTower + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3500)] +pub struct GetBabelTowerDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3501)] +pub struct GetBabelTowerDataScRsp { + pub retcode: i32, +} + +// CampIdle + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3600)] +pub struct GetCampIdleDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable)] +pub struct CampIdleData {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3601)] +pub struct GetCampIdleDataScRsp { + pub retcode: i32, + pub camp_idle_data: Option, +} + +// MiniscapeEntrust + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3650)] +pub struct GetMiniscapeEntrustDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3651)] +pub struct GetMiniscapeEntrustDataScRsp { + pub retcode: i32, +} + +// FishingContest + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3700)] +pub struct GetFishingContestDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3701)] +pub struct GetFishingContestDataScRsp { + pub retcode: i32, +} + +// RidusGotBoo (actually no, it has 2 events now, need to think of more generic name) + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3800)] +pub struct GetRidusGotBooDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3801)] +pub struct GetRidusGotBooDataScRsp { + pub retcode: i32, +} + +// QA Game + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3850)] +pub struct GetQuestionsAnswerGameDataCsReq {} + +#[derive(Default, Debug, Clone, Encodeable, Decodeable, ClientCmdID)] +#[id(3851)] +pub struct GetQuestionsAnswerGameDataScRsp { + pub retcode: i32, +} diff --git a/crates/trigger-protocol/src/util.rs b/crates/trigger-protocol/src/util.rs new file mode 100644 index 0000000..d6ae211 --- /dev/null +++ b/crates/trigger-protocol/src/util.rs @@ -0,0 +1,7 @@ +use trigger_codegen::{Decodeable, Encodeable}; + +#[derive(Debug, Encodeable, Decodeable)] +pub struct ProtocolUnit { + pub cmd_id: u16, + pub blob: Vec, +} diff --git a/crates/trigger-sv/Cargo.toml b/crates/trigger-sv/Cargo.toml new file mode 100644 index 0000000..d3c9b8b --- /dev/null +++ b/crates/trigger-sv/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "trigger-sv" +edition = "2024" +version.workspace = true + +[dependencies] +tokio.workspace = true +futures.workspace = true +zeromq.workspace = true + +serde.workspace = true +serde_json.workspace = true +toml.workspace = true +base64.workspace = true +byteorder.workspace = true + +iter-read.workspace = true +num_enum.workspace = true + +thiserror.workspace = true +tracing.workspace = true +tracing-subscriber.workspace = true + +trigger-database.workspace = true +trigger-encoding.workspace = true +trigger-protocol.workspace = true +trigger-cryptography.workspace = true +trigger-codegen.workspace = true diff --git a/crates/trigger-sv/src/config.rs b/crates/trigger-sv/src/config.rs new file mode 100644 index 0000000..af8a235 --- /dev/null +++ b/crates/trigger-sv/src/config.rs @@ -0,0 +1,132 @@ +use serde::{de::DeserializeOwned, Deserialize, Deserializer}; +use std::net::SocketAddr; +use tracing::error; +use trigger_database::DatabaseSetting; + +use crate::{ + die, + net::{ServerID, ServerType}, +}; + +#[derive(Debug, thiserror::Error)] +pub enum ConfigurationLoadError { + #[error("failed to open configuration file: {0}")] + Io(#[from] std::io::Error), + #[error("failed to parse configuration file: {0}")] + Deserialize(#[from] toml::de::Error), +} + +pub trait TomlConfig: serde::de::DeserializeOwned { + const DEFAULT_TOML: &str; + + fn load_or_create(path: &str) -> Self { + std::fs::read_to_string(path).map_or_else( + |_| { + std::fs::write(path, Self::DEFAULT_TOML).unwrap(); + toml::from_str(Self::DEFAULT_TOML).unwrap() + }, + |data| toml::from_str(&data).unwrap(), + ) + } +} + +#[derive(Debug, Deserialize)] +pub struct ServerEnvironmentConfiguration { + pub servers: Vec, + pub database: DatabaseSetting, + pub security: SecuritySetting, +} + +#[derive(Debug, Deserialize)] +pub struct SecuritySetting { + pub rsa_versions: Vec, + pub static_key: ScrambledKey, +} + +#[derive(Debug)] +pub struct ScrambledKey { + pub seed_buf: Vec, + pub xorpad: Vec, +} + +#[derive(Debug, Deserialize)] +pub struct RsaSetting { + pub version: u32, + #[serde(deserialize_with = "from_base64")] + pub client_public_key: Vec, + #[serde(deserialize_with = "from_base64")] + pub server_private_key: Vec, +} + +#[derive(Debug, Deserialize)] +pub struct ServerConfigurationEntry { + pub addr: SocketAddr, + pub server_type: ServerType, + pub server_id: ServerID, +} + +#[derive(Debug, Deserialize)] +pub struct ServerNodeConfiguration { + pub server_id: ServerID, +} + +impl ServerEnvironmentConfiguration { + pub fn load_from_toml(path: &str) -> Result { + Ok(toml::from_str(&std::fs::read_to_string(path)?)?) + } +} + +impl SecuritySetting { + pub fn get_rsa_setting_by_version(&self, version: u32) -> Option<&RsaSetting> { + self.rsa_versions.iter().find(|r| r.version == version) + } +} + +impl<'de> Deserialize<'de> for ScrambledKey { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + use base64::Engine; + use trigger_cryptography::mhy::Ec2b; + + let s = ::deserialize(deserializer)?; + let ec2b_buf = base64::engine::general_purpose::STANDARD + .decode(s) + .map_err(serde::de::Error::custom)?; + + let ec2b = + Ec2b::read(&mut std::io::Cursor::new(&ec2b_buf)).map_err(serde::de::Error::custom)?; + + let mut xorpad = vec![0u8; 4096]; + ec2b.fill_buffer(&mut xorpad); + + Ok(Self { + seed_buf: ec2b_buf, + xorpad, + }) + } +} + +pub fn from_base64<'de, D>(deserializer: D) -> Result, D::Error> +where + D: Deserializer<'de>, +{ + use base64::Engine; + + let s = ::deserialize(deserializer)?; + base64::engine::general_purpose::STANDARD + .decode(s) + .map_err(serde::de::Error::custom) +} + +pub fn load_json_config(path: &str, error_name: &str) -> T { + serde_json::from_str(&std::fs::read_to_string(path).unwrap_or_else(|err| { + error!("failed to open {error_name} file: {err}"); + die(); + })) + .unwrap_or_else(|err| { + error!("failed to parse {error_name}: {err}"); + die(); + }) +} diff --git a/crates/trigger-sv/src/gm_command.rs b/crates/trigger-sv/src/gm_command.rs new file mode 100644 index 0000000..95086de --- /dev/null +++ b/crates/trigger-sv/src/gm_command.rs @@ -0,0 +1,70 @@ +use serde::{Deserialize, Deserializer}; +use trigger_codegen::{Decodeable, Encodeable, GMInput}; + +#[derive(GMInput, Decodeable, Encodeable, Debug, PartialEq, Eq)] +#[repr(u16)] +pub enum GMCommand { + AddAvatar { + id: i32, + } = 100, + SetAvatarLevel { + id: i32, + level: i16, + } = 101, + SetAvatarRank { + id: i32, + rank: i16, + } = 102, + SetAvatarTalent { + id: i32, + talent: i16, + } = 103, + AddAllWeapon = 200, + AddAllEquip = 201, + AddItemByType { + item_type: u32, + id: i32, + num: i32, + } = 202, + AddEquip { + equip_id: i32, + level: i16, + star: i16, + property_params: Vec, + } = 203, + AddQuest { + quest_type: i32, + quest_id: i32, + } = 300, + FinishQuest { + quest_type: i32, + quest_id: i32, + } = 301, + UnlockAllHollow = 302, + UnlockAllHollowBuff = 400, + UnlockAllCafeItem = 401, +} + +#[derive(thiserror::Error, Debug)] +pub enum GMInputParseError { + #[error("GM command {0} doesn't exist")] + UnknownCommand(String), + #[error("missing non-optional argument: {0}")] + MissingArgument(&'static str), + #[error("failed to parse argument of type '{1}' (name: {0})")] + InvalidArgumentFormat(&'static str, &'static str), +} + +pub trait GMInput: Sized { + fn from_str(input: &str) -> Result; +} + +impl<'de> Deserialize<'de> for GMCommand { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s = ::deserialize(deserializer)?; + GMCommand::from_str(&s).map_err(serde::de::Error::custom) + } +} diff --git a/crates/trigger-sv/src/lib.rs b/crates/trigger-sv/src/lib.rs new file mode 100644 index 0000000..c9c7d93 --- /dev/null +++ b/crates/trigger-sv/src/lib.rs @@ -0,0 +1,45 @@ +pub mod config; +pub mod gm_command; +pub mod logging; +pub mod message; +pub mod net; +pub mod time_util; + +pub fn print_banner() { + eprintln!( + r#" + ______ _ ____ _____ + /_ __/____(_)___ _____ ____ _____ / __ \/ ___/ + / / / ___/ / __ `/ __ `/ _ \/ ___/_____/ /_/ /\__ \ + / / / / / / /_/ / /_/ / __/ / /_____/ _, _/___/ / + /_/ /_/ /_/\__, /\__, /\___/_/ /_/ |_|/____/ + /____//____/ "# + ); +} + +pub fn die() -> ! { + // Amuse user in a Zenless fashion + eprintln!( + r#" + ______________________________________ + < Your Server ate an ethereal! Gah! > + -------------------------------------- + \ + \ /\ /\ + \ / \__/ \ + /__________\ + | (X) (X) | + /|------------|\ + / | || | \ + \_ || _/ + \/^^^^\/ + "# + ); + + // Make sure user will see the error message + let mut s = String::new(); + let _ = std::io::stdin().read_line(&mut s); + + // Finally die + std::process::exit(1); +} diff --git a/crates/trigger-sv/src/logging.rs b/crates/trigger-sv/src/logging.rs new file mode 100644 index 0000000..b5fc229 --- /dev/null +++ b/crates/trigger-sv/src/logging.rs @@ -0,0 +1,19 @@ +use tracing::Level; +use tracing_subscriber::EnvFilter; + +const SQLX_ERROR_ONLY: &str = "sqlx=error"; + +pub fn init_tracing(log_level: Level) { + // TODO: make it more configurable? + let filter = EnvFilter::builder() + .with_default_directive(log_level.into()) + .from_env() + .unwrap() + .add_directive(SQLX_ERROR_ONLY.parse().unwrap()); + + tracing_subscriber::fmt() + .with_ansi(true) + .with_env_filter(filter) + .compact() + .init() +} diff --git a/crates/trigger-sv/src/message/management.rs b/crates/trigger-sv/src/message/management.rs new file mode 100644 index 0000000..107f361 --- /dev/null +++ b/crates/trigger-sv/src/message/management.rs @@ -0,0 +1,13 @@ +use crate::{gm_command::GMCommand, message::opcode}; +use trigger_codegen::{Decodeable, Encodeable}; + +#[derive(Debug, Encodeable, Decodeable)] +pub struct PlayerGmCommandMessage { + pub player_uid: u32, + pub command: GMCommand, +} + +opcode! { + Management, + PlayerGmCommandMessage = 1 +} diff --git a/crates/trigger-sv/src/message/mod.rs b/crates/trigger-sv/src/message/mod.rs new file mode 100644 index 0000000..9380c03 --- /dev/null +++ b/crates/trigger-sv/src/message/mod.rs @@ -0,0 +1,57 @@ +use std::io::Cursor; + +use trigger_codegen::{Decodeable, Encodeable}; + +mod management; +mod session; + +pub use management::*; +pub use session::*; + +use trigger_encoding::Decodeable; + +#[derive(Debug, Encodeable, Decodeable)] +pub struct Header { + pub sender_type: u8, + pub sender_id: u32, +} + +#[derive(Debug, Encodeable, Decodeable)] +pub struct NetworkPacket { + pub header: Header, + pub opcode: u16, + pub payload: Vec, +} + +impl NetworkPacket { + pub fn get_message(&self) -> Option { + (M::OPCODE == self.opcode) + .then(|| M::decode(&mut Cursor::new(&self.payload)).ok()) + .flatten() + } +} + +#[repr(u8)] +#[derive(num_enum::IntoPrimitive, num_enum::TryFromPrimitive)] +pub enum MessageCategory { + Session = 0, + Management = 1, +} + +pub trait WithOpcode { + const OPCODE: u16; + + fn opcode(&self) -> u16 { + Self::OPCODE + } +} + +macro_rules! opcode { + ($category:ident, $($ty:ident = $num:expr),*) => { + $(impl super::WithOpcode for $ty { + const OPCODE: u16 = ((super::MessageCategory::$category as u16) * 100) + $num; + })* + }; +} + +use opcode; diff --git a/crates/trigger-sv/src/message/session.rs b/crates/trigger-sv/src/message/session.rs new file mode 100644 index 0000000..17fe7df --- /dev/null +++ b/crates/trigger-sv/src/message/session.rs @@ -0,0 +1,109 @@ +use crate::message::opcode; +use trigger_codegen::{Decodeable, Encodeable}; +use trigger_protocol::{util::ProtocolUnit, DungeonEquipInfo}; + +#[derive(Debug, Encodeable, Decodeable)] +pub struct BindClientSessionMessage { + pub session_id: u64, + pub player_uid: u32, +} + +#[derive(Debug, Encodeable, Decodeable)] +pub struct BindClientSessionOkMessage { + pub session_id: u64, +} + +#[derive(Debug, Encodeable, Decodeable)] +pub struct BindClientSessionFailedMessage { + pub session_id: u64, +} + +#[derive(Debug, Encodeable, Decodeable)] +pub struct UnbindClientSessionMessage { + pub session_id: u64, +} + +#[derive(Debug, Encodeable, Decodeable)] +pub struct ForwardClientProtocolMessage { + pub session_id: u64, + pub request_id: u32, + pub message: ProtocolUnit, +} + +#[derive(Debug, Encodeable, Decodeable)] +pub struct AvailableServerProtocolMessage { + pub session_id: u64, + pub ack_request_id: u32, + pub notifies: Vec, + pub response: Option, +} + +#[derive(Debug, Encodeable, Decodeable)] +#[repr(u16)] +pub enum GameStateData { + Hall { + player_avatar_id: u32, + control_avatar_id: u32, + ext: Option, + } = 1, + Fight { + quest_id: u32, + play_type: u32, + buddy_id: u32, + avatar_id_list: Vec, + dungeon_equip: DungeonEquipInfo, + } = 2, + Rally { + quest_id: u32, + play_type: u32, + buddy_id: u32, + avatar_id_list: Vec, + dungeon_equip: DungeonEquipInfo, + } = 3, +} + +#[derive(Debug, Encodeable, Decodeable)] +pub struct ChangeGameStateMessage { + pub session_id: u64, + pub scene_uid: i64, + pub data: GameStateData, +} + +#[derive(Debug, Encodeable, Decodeable)] +pub struct PlayerInventoryChange { + pub id: i32, + pub num: i32, +} + +#[derive(Debug, Encodeable, Decodeable)] +#[repr(u16)] +pub enum GameStateCallback { + Loaded = 1, + ClientCmdProcessed { + ack_request_id: u32, + response: Option, + } = 2, + PlayerItemsGiven { + changes: Vec, + } = 3, +} + +#[derive(Debug, Encodeable, Decodeable)] +pub struct GameStateCallbackMessage { + pub session_id: u64, + pub protocol_units: Vec, + pub scene_save_data: Option, + pub callback: GameStateCallback, +} + +opcode! { + Session, + BindClientSessionMessage = 1, + BindClientSessionOkMessage = 2, + BindClientSessionFailedMessage = 3, + UnbindClientSessionMessage = 4, + ForwardClientProtocolMessage = 5, + AvailableServerProtocolMessage = 6, + ChangeGameStateMessage = 10, + GameStateCallbackMessage = 11 +} diff --git a/crates/trigger-sv/src/net/listener.rs b/crates/trigger-sv/src/net/listener.rs new file mode 100644 index 0000000..40b586e --- /dev/null +++ b/crates/trigger-sv/src/net/listener.rs @@ -0,0 +1,60 @@ +use std::{future::Future, net::SocketAddr, time::Duration}; + +use futures::future::BoxFuture; +use tokio::task::JoinHandle; +use tracing::warn; +use trigger_encoding::Decodeable; +use zeromq::{prelude::*, PullSocket, ZmqError}; + +use crate::message::NetworkPacket; + +pub trait RecvCallback: Send + Sync { + fn call(&self, state: S, data: NetworkPacket) -> BoxFuture<'static, ()>; +} + +impl RecvCallback for T +where + T: Fn(S, NetworkPacket) -> F + Send + Sync, + F: Future + 'static + Send, + S: Send + Sync, +{ + fn call(&self, state: S, data: NetworkPacket) -> BoxFuture<'static, ()> { + Box::pin(self(state, data)) + } +} + +pub async fn listen( + addr: SocketAddr, + state: S, + callback: impl RecvCallback + 'static, +) -> Result, ZmqError> { + let mut socket = PullSocket::new(); + socket.bind(&format!("tcp://{addr}")).await?; + Ok(tokio::spawn(socket_recv_loop(socket, state, callback))) +} + +async fn socket_recv_loop( + mut socket: PullSocket, + state: S, + callback: impl RecvCallback, +) { + loop { + // We should timeout on recv() due to bug in zmq.rs + // it may stuck while one message is available and it still awaiting message from another server + let Ok(mut message) = tokio::time::timeout(Duration::from_millis(50), socket.recv()) + .await + .map(|m| m.unwrap().into_vecdeque()) + else { + continue; + }; + + while let Some(data) = message.pop_front() { + match NetworkPacket::decode(&mut iter_read::IterRead::new(data.iter())) { + Ok(packet) => { + let _ = tokio::spawn(callback.call(state.clone(), packet)); + } + Err(err) => warn!("failed to decode incoming packet: {err}"), + } + } + } +} diff --git a/crates/trigger-sv/src/net/mod.rs b/crates/trigger-sv/src/net/mod.rs new file mode 100644 index 0000000..9f37bdf --- /dev/null +++ b/crates/trigger-sv/src/net/mod.rs @@ -0,0 +1,118 @@ +mod listener; +mod socket; + +use std::{collections::HashMap, io::Cursor, net::SocketAddr}; + +pub use listener::{listen, RecvCallback}; +use num_enum::{IntoPrimitive, TryFromPrimitive}; +pub use socket::ServerSocket; + +use serde::Deserialize; +use tokio::task::JoinHandle; +use tracing::error; +use trigger_encoding::Encodeable; +use zeromq::ZmqError; + +use crate::{ + config::ServerConfigurationEntry, + message::{Header, NetworkPacket, WithOpcode}, +}; + +#[repr(u8)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Deserialize, IntoPrimitive, TryFromPrimitive)] +#[serde(rename_all = "kebab-case")] +pub enum ServerType { + GateServer = 1, + GameServer = 2, + HallServer = 3, + BattleServer = 4, + MuipServer = 5, +} + +pub type ServerID = u32; + +pub struct ServerNetworkManager { + pub own_server_type: ServerType, + pub own_server_id: ServerID, + pub own_socket_addr: SocketAddr, + pub server_sockets: HashMap<(ServerType, u32), ServerSocket>, +} + +impl ServerNetworkManager { + pub fn new( + server_type: ServerType, + server_id: ServerID, + server_list: &[ServerConfigurationEntry], + ) -> Self { + let Some(own_entry) = server_list + .iter() + .find(|entry| entry.server_type == server_type && entry.server_id == server_id) + else { + panic!("can't find this instance ({server_type:?}-{server_id}) in server list") + }; + + Self { + own_server_type: server_type, + own_server_id: server_id, + own_socket_addr: own_entry.addr, + server_sockets: server_list + .iter() + .filter(|entry| entry.server_type != server_type || entry.server_id != server_id) + .map(|entry| { + ( + (entry.server_type, entry.server_id), + ServerSocket::new(entry.addr), + ) + }) + .collect(), + } + } + + pub async fn send_to( + &self, + server_type: ServerType, + server_id: ServerID, + message: M, + ) { + if let Some(socket) = self.server_sockets.get(&(server_type, server_id)) { + socket.send(self.build_network_packet(message)).await; + } else { + error!("ServerSocket for {server_type:?}-{server_id} does not exist"); + } + } + + pub fn blocking_send_to( + &self, + server_type: ServerType, + server_id: ServerID, + message: M, + ) { + if let Some(socket) = self.server_sockets.get(&(server_type, server_id)) { + socket.blocking_send(self.build_network_packet(message)); + } else { + error!("ServerSocket for {server_type:?}-{server_id} does not exist"); + } + } + + fn build_network_packet(&self, message: M) -> NetworkPacket { + let mut payload = Vec::with_capacity(message.encoding_length()); + message.encode(&mut Cursor::new(&mut payload)).unwrap(); + + NetworkPacket { + opcode: message.opcode(), + header: Header { + sender_type: self.own_server_type.into(), + sender_id: self.own_server_id, + }, + payload, + } + } + + pub async fn start_listener( + &self, + state: S, + callback: impl RecvCallback + 'static, + ) -> Result, ZmqError> { + listener::listen(self.own_socket_addr, state, callback).await + } +} diff --git a/crates/trigger-sv/src/net/socket.rs b/crates/trigger-sv/src/net/socket.rs new file mode 100644 index 0000000..b3c777a --- /dev/null +++ b/crates/trigger-sv/src/net/socket.rs @@ -0,0 +1,64 @@ +use std::io::Cursor; +use std::net::SocketAddr; +use std::time::Duration; + +use tokio::sync::mpsc; +use tracing::warn; +use trigger_encoding::Encodeable; +use zeromq::prelude::*; +use zeromq::PushSocket; + +use crate::message::NetworkPacket; + +#[derive(Clone)] +pub struct ServerSocket(mpsc::Sender>); + +impl ServerSocket { + const CONNECT_REPEAT_TIMEOUT: Duration = Duration::from_millis(500); + + pub fn new(addr: SocketAddr) -> Self { + let (tx, rx) = mpsc::channel(64); + tokio::spawn(Self::worker_loop(format!("tcp://{addr}"), rx)); + + Self(tx) + } + + pub async fn send(&self, data: NetworkPacket) { + let mut buf = Vec::with_capacity(data.encoding_length()); + data.encode(&mut Cursor::new(&mut buf)).unwrap(); + + let _ = self.0.send(buf.into_boxed_slice()).await; + } + + pub fn blocking_send(&self, data: NetworkPacket) { + let mut buf = Vec::with_capacity(data.encoding_length()); + data.encode(&mut Cursor::new(&mut buf)).unwrap(); + + let _ = self.0.blocking_send(buf.into_boxed_slice()); + } + + async fn worker_loop(endpoint: String, mut rx: mpsc::Receiver>) { + let mut socket = Self::connect_to(&endpoint).await; + + while let Some(buf) = rx.recv().await { + while socket + .send(buf.to_vec().into()) + .await + .inspect_err(|err| warn!("zmq::socket::send failed: {err}")) + .is_err() + { + socket = Self::connect_to(&endpoint).await; + } + } + } + + async fn connect_to(endpoint: &str) -> PushSocket { + let mut socket = PushSocket::new(); + + while socket.connect(endpoint).await.is_err() { + tokio::time::sleep(Self::CONNECT_REPEAT_TIMEOUT).await; + } + + socket + } +} diff --git a/crates/trigger-sv/src/time_util.rs b/crates/trigger-sv/src/time_util.rs new file mode 100644 index 0000000..0bbc050 --- /dev/null +++ b/crates/trigger-sv/src/time_util.rs @@ -0,0 +1,8 @@ +use std::time::{SystemTime, UNIX_EPOCH}; + +pub fn cur_timestamp_seconds() -> i64 { + SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_secs() as i64 +} diff --git a/environment.toml b/environment.toml new file mode 100644 index 0000000..8ff9fc2 --- /dev/null +++ b/environment.toml @@ -0,0 +1,39 @@ +[[servers]] +server_type = "gate-server" +server_id = 0 +addr = "127.0.0.1:10101" + +[[servers]] +server_type = "game-server" +server_id = 0 +addr = "127.0.0.1:10102" + +[[servers]] +server_type = "hall-server" +server_id = 0 +addr = "127.0.0.1:10103" + +[[servers]] +server_type = "battle-server" +server_id = 0 +addr = "127.0.0.1:10104" + +[[servers]] +server_type = "muip-server" +server_id = 0 +addr = "127.0.0.1:10105" + +[database] +end_point = "127.0.0.1:5432" +database = "trigger-rs" +user = "root" +password = "root" + +[security] +static_key = "RWMyYhAAAAAMV3/bTm0rIshSv3mx5DA0AAgAAKgvGsj2Gl5BZH+iZoBJmeuMtvRXM+NppjCYjgnQpafKBcIa9KLR45tKDrkS437NWuLmNYEzDfZLWzOu19Ifsq05V/pPbcRyIPUHUrM4KckJ2YoqBzEGV55kPGWvbctmuLCD4UWoIUxGHHlMrK901xkayVICL11tmraFhR90NWUT777zRZmICuysZJgDA5iwjH3hOFGEYlAOYM6i8hAQ0966vCv3DPp11XVerK+2zqMItE3WF87nbSMQPSXIgAQIZZPzCTQscoUG3q5nnnrBB5eiuzeU8FTmxQrzp5RlneCgiDy8YeH9IXbtrmgN56jkyzUob6YQpmFxMGbzwVm7LaQ2MscTZEGBnYi6xeXVNxuLWqAy3SBuHeez0v8Bl1ngN0NgAkeij7yPh7Bzzn0aXByOyYTXK59JTKR2S36RjQ0V6dCtASMUfWHTVewAA+cKeIxAXvChN8PJUYB8xxstbCd0NOD1NYEKNdc78dGJVEITxtfY9JiZxDssMcJBqZv4E9uz8+OZQ7Sqb+veZwJzBYPPKwxHGkmAbB+XxW9TIN720eUkhEaa4ybra89eu5x4h3XuVHJCmJ7FNOVCueV4HUvLaTi0nT+LIZ3DPVq9GDRP9hT5mcMn2Wz0zaxQvy6zj+AOyrVc+Koy3ZJQ6NdyqxAzP2XDFAqp7i3YlCR48ayQM+85v5AWKuNKDigAoTNaLp/5GMIfv1yoy5wFnWmwGDXjsWtiZMPmB7h5HjwrKNstfNOBpqBRI9zVa9F5mMvfhweLSJLpoPi2DVwfDpSrBZIg97Fs6mHC4lb9i7jgMj7slIXhjXjRt9vjFkliaQr7SNGczLhdz4aiwa20e2JFlRI5964MPOYbSMqeV47HVKb2x2eno3QGwpwZOgB+z3BJxDisvOitxCgSsUu+KPA/LIo2cVEeMjziK0nelmMY2Mirk82xaL9OttQZc9tePx6WoGhhRHqCMNml9x2RQmscX/+yrBI4te8oRPn/VC7vpjBeUSqTmhFX9xTQQKhunCAt/qL61Wzx+MdtN5Rki/TfZPxHrvj7+wrabrCNmBkbNP80LBfK4j6frHBpGombXPptuoP4xXHHY7DddR3fzic6wpcA7UYIu2sQMSDzZUJEqgk3a0RvHK6tqpGVfB7LH8HqrWJV2dJwf3P4CqNWYxtL0ENB1KzXQxAJfVZHbISa1YCWh6ju5+0HBvQfeWNmMkZqTgwy8sVXRaoCBllMd2SVmwjtLd91wi9mDxJ6gyAvne94sPx98AHXMQCG2YVUJnL2psmyc2mrxixRE3GtHJfwTHAJe9oDIinIY9u2jpmfaPAswE/CtcWqng7RTVRRioJ7LXSj3rqZi4ga2uc0xIUPivDwkrMefmu+Is750f4HvHXFSmmRVHHe9ZK1jNv+qOalIh8yVyVTKwFkKeJrK/lFnl6056HmBN4dC5hW66jazU56CKb3j6BBhjihFyRCVeGaJGqkNTAp7WBgn8KzAPXz1v4QHgOdBfAUGODlSs7e86pli1WI8leH5BKhh0V6Xjb2efXLnolBnfZL0HQLD5ZJ+ROMxoLZZt64KfN+TbgBnbsImgXE8YM0rqDOkOuraAoBk5nn/K/SNYn1kE6jSAgh0OuN2AfsauJtEtrNuXzGLKRNWMxKe5LTh87jkCpiGEnveRf6D1COS8E1G7t4LfhG7OP2O6vud1D8H5nYPVq0O3aDNaqLujlTmvkBbkk5C47Q3yafq7r20xTzO6QUIzhHpvFrAKh+uiWew3RV1crod58Q30kw96vZKnjQoTtESvpUEbjXsRlTVRaFFP5eUVME+CXZppIbOwSPw3wVkXlfvzZTh3s/1N2H+h5iHHJip9bvlfUMhQVrjpWmLSaacl5rpLHEu2oy+dMsBJpAHbpPrk5Mqswaa8TFTHg7bAXQ/CzAUSWbV3Y0OEY97rX8DaT6Xb+njVLDc4T+rY7OhBFXdvlPgCOlYZaRfkJn3k2DIubg4lTeBa72wET3CESTaNJU4Vw7h31GtvkALdcVSW/B173Hmgkbg4zK1sr64qygbWsMBuNEhBkDsKxBmf9htadeQG4/z+JiY5jWR6a3gji4XgDKQEJFEPq+8ftg9mPn+C+8be/mU/8uxN2P7qMOmQsZDEvKyrmIswyctCwitwRPDlEx74gLkF6H5yoKngkxFESnrMr4T9msaFRH1ZYZrp9Gy1m9FSA9DHzOUZ9t7ACUcGU8ag4X2irM1MwfTv6Qzmf5uUoV+mOltkZ4yXwSfMwkWp9Q2kdxP6tU3WPH5k4TWSL7bdIF7nAtnFQHMGiKgijuAPx+uerMNmJ4ryxQbmd3Ei3ZO8+dkM94VbTnE0t/N6frQ4f9IANDA4DBdYvnmZE2GH/X3oD59yazu2i+eYeo6qBN3HPZ/yNLjbF17OK7DKzUrO6M69iKNod+MU6obBgDdWTFwPJa8MzgT2zTqOOJxwIMuX4OVoS1zf1s6OKxFm2u3cpgotshNjGVGofjePvkXbzlJ3HhbhXhZ2svV2BasxYOc+b5yDo1f4X5kpH8pWRqr+duzSluLYl5ZjQn4omNj48zG4mZonAwZAYa0HyrDMlWf8DWSkX9yLcbcoKnEU6NWnb1kybSZLFSyqpE+7EqMXHFb15eZmfdsrEVGF4mc1/Op0MAr+OoDFQiLREhAnOkEKLhN6nhwhZGVE3Ec7RaLd7du91kn6O5wF6FSfstYAzxe98+TWCEqDai2TF95aYL" + +[[security.rsa_versions]] +version = 3 +client_public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCuRCgK0ZLlhKvPGbz1arcZJH+7DkAkPAaq762RdWJnA4XwfrGAvso+LY5UBMcKho0UtMAPmeUtKODSkcQCodp+9e3OPgaHy28XYDr/zIHlx5Pc6zOj1RHl3uGwjnmzFvftBSlAsdijEqzv0WiEnvhnlXYuBJj7Re9sbEwfGHEdNwIDAQAB" +server_private_key = "MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkB3zPKImHBYrUahyi7WLKcApsf1/bu4C2oVZ5z5Fuvob0kXPICyofYbuIqo9XrSUi0uAn+O9xXLM94T15DWHoWPAgMBAAECQAcDG/8azRijq8q0huFKY8wJ9xJS87XmFSODmRCLYuuL43QFHFIvvJO+7CWAbN8wD5cIsMhxPvhXMhNJUnM80YECIQC62MuT8dBN9bCQOCPs8+3SeZ9RwvdZ43PxiIdxFRbYMQIhAKQjtYHBWVjmiB5zLtORLsetsfCXRoN5W2Q8msCvMYm/AiAjFxwEiOFqAr5KF4EHuzfq01SMcmUpyIG51r45CpDjwQIgNFRmI64e7CbjMsIKJc1dmq+X0VqJUpU4O+bOd6vjIUUCIFgrRcOIoCVNrqxmfEYpxNXSJMEmNT/8LDdX/Fxvl7HR" + diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..5eb15a9 Binary files /dev/null and b/screenshot.png differ