Security Research
CVE-2024-12877 GiveWP PHP Object Injection: unserialize vs. Regex, a Futile Fight
Thinking
2025-01-15
5 min read
Research Dossier
#Vulnerability Analysis#Code Audit#Web Security
GiveWP calls unserialize() on user input and tries to gate it with a regex “is this serialized?” check. But as long as the underlying call is unserialize, regex is decoration. Once the attacker slips past the regex, magic methods like __wakeup() take over execution flow — and the chain rolls from injection to RCE.
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a4d4b6d4ade7253d06d61bf923572a6b8c253d117e8b63642be9ad8c68eaee7d4a02592bcdbd3155abcc6a953135deec61ed6729ad92ae056a76758bfc9dbe3a6985cd8e37691e1ef1331acfbc0f1360952513938d70778faee440d592e8c458362fc561addad01cc3561b6351bb4bd4030aef4efc5869cbd04ff72e7f78e172a6ceb6980b65d490b9a5f32bf8827e3340665f0a22ea0da35f2ffa1cc5b6d899238f1432ba3eb510583873097c749e5a6e19d37a11063c9b344bcaa2cf2c37f9a3e30305923a81b4c732e86d8dd0d5acfa68bfd08fca5d4fdcbf6ca45a7e00d0303dfac77bfc6349ee681173515d791b38b0f1ddd3ec63e9d8c40c2f9bc6b31f28088a57ac9f71cd731b9fd15ebdefa301b455d57231578dea63864473eb88a6252ed28e6bfb875ee56ff474cf6df2e1022bcb33b320e7f7b7c7f2fceeef81fd97e0064c595fda8dff1108bae1d201dbed236d2faad167b865ffc4e171147a7bf9e2300d8dc5c85ddb2103bbab990d4b4472d5d822cebeea3073b6fa4795a5aaadecccdb3a1e00f9e6be91790e7874726ccc8cbf0e11fb7c9abceb55795e372923b7caf2e7458628d4236dcad75d53946d2f9905431bd6be554aefdcfe321a4d0de785c298a18cad089d72964b2350de50e8a7322038bbfbc4b5be894f747cc1720291ccbf35d716deb41b9815d8b4d957908e58275436f7a6b888d710142a915af920cba106feaa4db612892f91f7b775b4600a3e9cdcf8c0779ee0ca20642bc93661de71461da32c44403f949056e8067e642e445c3772271fb6c5c42ac8e8507cbd6038fc6ec1b1ada2129a8b648733b911bacfadb74aa3d0a6d20eb1d91c7a5a03cd32394747cb2a770894b34d8a896cfb2506b67df6ee88394b315a35c2613b041c39a2cc99a4557aa5f292a67f3177555ccdfe0e565bb70767c2992a3a18eb3aafafed9304cf3adfc8fbb9b94dba37b9103de02a468e7b881adcc1d7c7515c5e137aa17987de816e90d6c645bbdf5820522c9819762e25efb4c4495a651e0b861f083b5b162951e491f89d4f700f1cd0707a80de8352cf9a382ec4ebb1308daee27c4bfd0a5cad6f7677b77d4b8f7baec2bae4fced5613d4fcd16a6fb4c76861cc9a8e0f3868806c226a99e3b3e57c7824aa2cfa59c5bed4a071cea3312719bf150209c9b11a30c28ddf4b247c97af24303578eebe55d1ce64f1524b403407c456ccf84b5bd6e2ff860d0d93a54f29390645a79e90603bd3fe95070a444ab09346493c4923773d711c0758351505dd7bb49172209eacc51ee14ffe167cc6533c9543dab68be4f90e407cc9fdb30993db3b65108e272571ef4b986e32384849243396f11e4ecb70f06a213d5056d5f4e70701739007ce1450823fb276c7cac094e47b73148a31d9b682266b487de1ffd80f7c18b52d30b2019f409b2e42a947706f64f5c51867b5d860b88992f78dfcd05ab63053e918898eec3d5ce2f61b2a5d3b3d2b9fcb9f6933db3d14e6e2426486efb35da02fa1476fa6b54965d5667960842f0f7fb6483c8e85763e8f266a0c760ae7993c00dd38df002af68e6917f0a85bb408d2a487ef28d6c7b93c071c207bc4d275a7b7cb7c4f66734576f560cd9d4066dd6c6b5fb9b3aa7dde89bd2491be73aafe55b37dfcf603c859db0e6ae891f919c9ffe81d15838334b7ace0ebc771906e3099f92caf3eb7d7d19f060eb90153bba1721196289d2f9bc651a54dff55f6690d42b6b4567f427b103378b76d64ee06e56ccb36daf031783ef2c589e1526c0e3c20be167749938b79d3bf505fabd2feb5a2d78095cfd656cbd9f52509afef3bdcfc3f1026ce3295970116e114884469a148eabf60d82205400ad4fcdd5baf75194412604169cca6433663ae0fa7fe8a21e8f2e8472d687f69f3578f74368453a3ba09105016e92187d2cd43838f3b71dcd5c692221ca67b919ddddcf3b35d09c6249ec9685ba9cd836dac111875e10132179047e228c16a33269e3066e2d19cea58c09f591412e1abd1acad8765cd76892447889f1979c14274a57484ae93737c4f60a807440c0c7b7286b4993f1e4e2f0222456d9fc84100641c8f87dd3b9b34394b389e0a3eb1ce5d2ca16f390a0888564d510bddeaa4bf0e5e1096514fd1ea736c1a4e585bec7b0f6ed05a9a02b2a24cb325540dc88207cf2376a2c380c2ba49fef4cdc618f45c54e114281a9f127a26f54f41d7d7f28f0e6ad2ab93e4e9e9ae0fbe7fb1e6ccfddf75877da499fdeb44e8632434dd4f2f83835c492266689414ba2315a5f36265b7c881af4751245b980efafa4a4d3b2a3161c6b87522f4f23df8ef30876c6d4b745dbb42b4a76db544d03ee1bbab6bf33487f8624c772d05d19a6068dcaef06bc79eea0275a9b7cdec6b0133ae54e6d49dcf16b9aabd4b9661c0c5e48b271a308a8e090a48680098e3d0fd8d6e939464977f8480c14a9425ab3214159e32f9977634509fdfca7afe13476f2b639d63e9746d05846352050ffd1b816c6f07efcaff0cbd0a0f27ee0336033ea5b21161953e7eab4b302b9cedc6adc2622ed24b824fb627d4d8861cab078725147e5db04db29cfd39d4eb0861c0ddbb6812bcef3ed2c993cb454410eb54c3303490330e43666627b0d9b5967bebb97c6c8cab309298515ae38a6bcf4353b4b3f65c4588de90a2a2c317802a320a394a73ac834bbb41c62bf20000f76ac3ab30cfd4cccff7167de4dc1e7383ff5d716e6e9e6f253d29a2ff09312ce8bcd4ede23403d504988043d65ce31fc77a15241457f7076ffaf105c0f90813ed959458e5f6964dfbf61f087c7bf3514cf456c409aacc123c1b9bedf8a2bd9d0f5493666450b92424ea10715e7ee8a06961559d044bf07af39104e154982e9b0bd18d1dca7636ca7c5934ea15b4f7ee5fc1871e4fbc0065a1d9ee20ca5bcd16c93b977e449a524cc7ff56aff0fc122c349f2678996c139ac62082f32d84b57b6b05a39f8c7b7419ad08f5a6235cd3ca0a5f30065512bea19aae50461157c60d7ea23d8c5f824e29bfd4f68d3166f6a025cd1229545770464f470d56a9f29a4ab3cc14d2ca428224f861854db3d87aefba98db7671741a54f7086812d8a0cc0335d9866dda7b9bd39216e1318e3d1d8ebc714fe4878d6e30d55cd02c2641d5750e7a7c35a6dadb383e8297ad275b9102bf0f7a2273e9d52f8940ac94f2d65950c6fc43292c3c03d3f2855731d9f42d4eda5e37594d80c4d8bb143e3312e044720683577b88b8f83b449ecd44f614b76a0b2d4cb129f8212c6209c7f76262d76b3f6228800756dcc7911bda7ce874b0e6b13c38c141181fe4c55f4df4c199823d3c434bf713eef82c3fdf8e3299142447fe143c2702457c1e3b3c0ce15d1284b4414ff9a9e2ceefc5aab3100f356b7f6ba6f6ea4a2b0fb328f1e2f03cce766377cf7d57073b267a364dc2d95c8d1cf2e2ea48e086d37ccb6542eb89410cc7d88d387df20fadd3accd64ff1619e656d462f07aa63a23d4763f83d7ffe769262dd572d3cbdc0a8b098580856c32463ea15856ff15f3074c918773897466356caffa047007d98bb58a1f21564af1c6cc02fdb68ceba78e2fed49bad3cb392c9d15bb8141ebd390cbe043a9b112c4aa2b51c4ecd8eb899e9c2755962221ac69acfee3182612bde23c48fbb5dddf737c25dfdfc1a120587d7bf65744123160ef609f2892c2dbc30d7e2671ebfc397d2b3798015f6c3d42a03aadfbb8c4b394ff29c605fbbb8709225e8eaec48ad972e8b3bfb8ef61c4329df58321d6e96e11ec2ac97954aff83ada6291597620567a1bbebae622189f006c3f42ccd8795da3de6b2994c89c7ea96184d8eaf8648a69d015c1ac4786c0615041337a3f03f807c350a5600c1be16e86c29d8680f90e2ed361887675c6b1c25ee40653f9d5a6333abd83562701ab15302cea38596f497ce716eedecd15b8ebc85ec00ec2a02207ad76bd4cddefe143f4773f2b0fd6d90124699dc5fa0786dfd9a984a5fb14455fa0f6af1cc4418bf2c1cd0bff07114fd9870782e04fc0c1ed556685becb8616e7e3d2eddd844d9bc2c0523fd915aeab10c1e438815b9f03a2e72d460571cf8ea9db1b0b03d8aa947676df7666ab121f01ad1193888c822c1a432d6004b3c19a21c6d5e7530dd41b761080461352d90fecf56f694821555f647b78f42f4a4136dd0ced564fdb6b76a1b18dd05954eebbc6a53dca9743fa2f12dc41ef60095cde7660bc79b10e22089d1aa2f319dcfa0d936f29082b316073116d46ea80fe16cccefad484e35ac6c6845ed78b84550c33c192e22d10de8775ee7fb161c107b5e1cf4e95bd70f59389808ff7aa59c31a7e9ce355c010aadfd08643aa2633b4fac6e3176685ad13f74afa403c34a46efa2597df8e855674b989d85564ceb7b8ef6020acfabb0687d0f6d6dd17cbe43d49ba4b1796cf450f52d75a01338a6ddaf7b8b0fcb6f71e109c4d54f947b9cdd59a555d3a16533ab0206e888269f3d267c212ac4981949ac6b84fddb485cafad6b4af1db3dca1ccfe50910d06d5f4aeecfae1f36aea50d48119f080473c0b6dc5c1a96c50f108308691f4ca842ebd6aa6dd8d69c7751821fb0f0eefd2cee17c19071cad7748b716ccd586647c85e68df76cf8eeed0c388af2236cc42044cf4cc0e6169aa1be67e0d008761b30964b703b54a9988ec566485df5d7e33161f9ce320bff6cc884f207ebb423eddd6eb2bedf3dd6e39d8b2307952f5c3d713374edc18e0bf8eab5c784ae8aa01654b5dd50a94e6d4eff9c0ed3c926cea351ea0602e14b7c172b7300322c3102e0e5d52a7afb3525d1550a395b249cbcca6886f04cb30f0e4ea6da57bb8551be76ce5b40284aa591a499af034bed5ddae34df85c768b99ddd77c1ba78e8e778ed70f304f474311fd90ebe25c73012822ae8b7a4f5ecbb6fd81fa68c62e5d8bb7d756585e7527e8cd2587567b5354957a962d0ea34f875bff5978f72feee2eef5d8564eb3d105fe1a0ad7d26da812438a96a073a1193b06cc75ca8fd34f888c3303cee6e814c044bf4637bcf3646f1737b83dea4832372596a1257eb1a3eba753058058cfa51a8402e8963df6168e718c8df17546b159158bfb0def3cb3fcc5aa840b5a8cac22a4ea0401c03693f58b2d17cd926c6434d0cb42ab993a10454464546b3672771bafd8fbdeb21fc5f80619b4564264758392885d9abc7eabcc7866e0ab32a88aae435ade8a484b20b6988eb4f1add5b906ddefdd341407a065f7c1fba40a3f843fcd8339c70845d00db668be5c1a6784448423efebf0caa36bc895ec9ff13325f9be7ac0eac9a2ecf4c2bbdedaf614d0fe179944688af5014c771a00de7bb99a09887a04215b3464234ce57467d4ca75160c456bc49581e82c8b6d023fbfde4940c846c7a69778f8745b17f4a35126f0f3e82f645f96ac5f13c596190a33b9bf09280fb3d69f34504255555c46706e01e1b08affd37325cd0f552bd705a7b19ba1bf2c1b46a97733702986bccabe0bd81741d2234bb385187e203cfa94c41cb2dcfddca8f7dd7de5306df47472e22ec6c1c911cebf13d5157ca11ac9b8f2d7f47c0177fbd9e9d0044779f3d4557c86647c5e10eca93fc4a18e45cb3c86b1650c40b9247544d892586bee23d88d31226c3440e118c7db0d3a011c9d8a21c58831f19542d53c745316c7b33a4791c5981a6abea4f8237e276198d33099319575a056a87397a54e044a2e133d4f08c673de74dfb80f6586c8b0a7da74c713a733282f0b2c86f935eb2a73d0f3874b63626d154de174a399f785f4e4fbee33b2986d577ed30858b6013d7f00ea7ffecc9eace87c213608929e01606d9373267e62fc3bf20cd68655f95ff5e6699d53c109259732356b0d2511ed0f8f8401f69ffbba98d8783003ab3670f44cde76ea28dda3c9199c5f4351e6ba968a0b06be2539eebaed517146eb896be7a67bd7a3d0c27acdb036b71625bc95715b8eb78f9310ba3b54198da2d2549c4df1504cd9adfac17e07e2dd8c945670755656f1c130b780f83d1bf92fdfdd8318eb50b2ccbdd42cd11659202d6c96f74bdc5112bb6d82f87287b377c68de6bd81a980e760fd04b295e1baf847944d090d113d4a2adc98c88055d736caf15c381ea9eefb445621eb9e11e342be8091abace00cce8542856d5bbfe503292c141cd8628c9a04bb54fe162b589afd160d60e8bf807bd894c49419f36f59e9e84753dbbd3f8e851e795809c8c830bad0c84dbfd516103da7c5e3f2da18621ddb3f181433dd00361919f232a6cccfa34f152ddb8da5c5a50b9c4ccde2224286e416acbebad916a84a7fa4466881dc6596a77a415181be316e0eebc03e7b005ed709e66826cd6c955019b53e5c1af8449164b9073dadd265ea3cb207c352717c041cf8aeafc97e214306a2debc0b8565eac9bb19764319de38a12f91a36a989abe8837cd844f831dbe27f1d2cbeb3998dcd641da924d02de862fcf80717ee7bbb0fc99e615fc8f1f4dd9396a470d81f5e7fada7acfc5535333b25b4ed2d5ef1b90891084783a91f593d2cbb0304e26dcc5abd1605178a7e2aaf1fbe9e07c3676eb4c9cedb697309d63022f49e1757fb88f3d54c7a06be565866de5cc954d233d180ca3700da93966326abcb8509cd0451ec413a5dcb4629bd35c0145b23431183294c3809076de3d176cab360d23cd085e485cfd5f0fefdda84efb38a4e94cefbb4e03b567dd747e99a00c715c8bf16cd9974c10573b0408e0e222991c4c49d839609129069f5663ed7ce99df10f92dc9f23d8fcfe288e87276fbab9ceb179a01785f45df752424ddb352ee6be47c5e53885f38a192179b7a892f16c863de2c54b1efb48a627d2953a3d59ca4b83659030717a19d1be326b467118edef92af84380c530c78d8660ffc0b2289fe9e58450f3e882ba604686aa688915df29cd92954cf7308c748bc7d1a2b8bb95ebabfc3bc993c794a37e8e0e530773db579be33fd263b13c104735207275ad2bedcf1bfed102ea53719f66ce827c2aed093252f23eb1630b282887c4b7963116d21337c35642c15dc8e359865b39959ac89060e2cd87e6f19030e647a96a7c51ae9e3623c2b0c5eb063953e47539b17912c19cfeb5193b579c36705c2c52dc14e8b5e5b14d6dc195cf93d1a1f78f90836cf7dcc69f212c7aefd1742733209839899e4d3fb9447d48c828fc5cd6ac56f2bdf4fce2b6d0ca234e5c557dc7a9ef8d202a824ef7806855deaf6b80ff2a65f0c439153f43c647a8468fcac799298372946acef997bf712c1fec3f25e348802be669cc003a079960355dc2d91940a447e79f5c099e241950746bd4fc72a1e80cb3489278b9ff9410fa4a0a6bdd3eb224d43b3432c846e44f7b1213cc00bf6e36eaa914c948610da4caf8ffcb50071cb255cbfc6b9f40598cd1f0dc185dc74da1d92d0b2f6cc7b727bb67527dfac397c52e6a7c0d4c9e21d9d1adf0a4c2569b0fe8e9671350f9cb7316596c710c22b3d96374ee81078548d539f2103825eeadd20ec76e7311c573d8b437501e8846e8825a9c9c3a2072206f5b4ae3865ff9e62e3eea48e288e2c1e3ebf9ca11d4e0a4d0ccc22074ac18ed550c7dee00fae952bc0396ab43efb8fc7a1b9fccd1e0db307035062e30b5d81ad3871818961142c26008be70c57d95be032faff8134869a25abe96c2a55683e72ff876738e7edec8147ddc040632d356da49d60bdf02fcf3c8d0cfbe722e1e8fa8584157028ff01148d15ce9abbb21457e27e2a01821932f2eb2fedb7965bbdf22476f77664343f63c6a6bb012a5c33685c430e48a3741ea9a618f6c0df6ed15e10da65848493e1ae47f272381ce8de8f88f3c02ca573beace688192500084ac3a0ec04cad3ae7ab7ff628abb91e5555316c05b796b09e4bdecd6f6f97d6aeac72843ef7bfc43f6e2d54b2c4cfb4c76ae1dae2c8067927b2bceefa66ac21e4d05519d03c1b730656e9e85cb47eeab19b72a45f714ee3edac302731b25e55ea71ec045e15ea59cd580f9d5927c7472d2a8a26da0cdf9f168030835adbce056e644dec475d792c4a9b687f9eef72fe91f7b33ea989dfd5b3020468860fce1e1edcdcb76e608593be45c4fca2bdfb92a3eaf0210d3e4d27ce67a98f2d99c41d204022b4633ec4aede957c03e38bfe1aa20d70df48115fb35f3ab10dabcee94e0b5a79e0e1a4a96d19af2b651942d7688306eccaacbfc9e34bc21e93ff6f0d5b703b06e9fc6b1ef3ca5a3d930e4fa49b2ed3502272c66f05831f688d33ae7fd2555b88f33f207b04d01f366bd291961a5faaf26c91f0c616d45bc36b7a20f0ef45be684e7f769c689a1cba68a01c81c53c4239d0a279f44f50782976e79f9cd885f871d05a951466780ff243c9fdeefca31ed7c7571fa9e133feaac2ba24ccfedb9eef216edac2db423cf7dd2d3788f1f6e7d52d55a73bf5d23f79c27d8dcf056eefc298e849b8d251fb8ad8bbedd76cf5c9d67f1fced582909ec4702689a5b22a0224694461bfb0016bb7eb28eb030eebeedde44198ba44d821829ec7c7f9f30ad3a156d5043d3c1b422a1636b0d6fcec5f5fa93fea5a4381095fd3d7d69bef44c69c32bbd3078588bc38e69e532fd2d4ebfd285319232bf7f16f6c3c0e6073e50a8ff6f9fabb095e4a15f6250771eb1424ba174044e20cabd2f72066be7b7b063eb25307b1e4ce0bac7637265bd214f962ead41900256ddc991d438c1285c0323a1866ed9292b4a42e2b53e99fdb7123af2f6c7faa62521792244cbfccd482730a2c29fc0958b7fc342a499a4beb4e567a34dfc5268621e80fdc18758fd41aef6c3f577cb43700c82ac2574668b6eafc6757cbfef97e56dcbe6c08cc28d42b1c4133d1a956bc6ef2812074a6a38dbf71312c0921ca60ebea7436e196e09ace5b2a345d11211ee2fcc40e4c09ce057f33d2c41c25882728227ade98c538e4758d04c082586450f25c1edd684cf8934e5e9b870fe60ade1fb11e5bcd0c7c1c4ac6b1d98ac45097d8cff6b33eeb9de5c3f0d10331dbfb9454fe7b1d98c1d1f727c2640088dcedcb4f83fd2b45f87b11442ef5cd8b66b3358304c1403efdb7457658d2ac9fb01506d6432b297d00abde545ea558d5fb4a9202ae6cb6aa32f3042245fc609321606f0de492e1170ef53b9eda243535a6f866a62bfaa42b11413cc987c688f6ef9a366b4d21f5fa938759c346a0b124bdb73adaeabacd55b9320d6978bff3ab7f2377960ddc811be553ffdee047ba05aa393d16d70c60ef77392ce875c2b758f0bc136feb1f6f1b56d7ceb74d7e35a52d15f58f7754fa561d3821bc8d57ef6779673cd1d4d13516f786bd0dfe486664a89f5427cbd3965c1ebc806c2763d9a49e0716ef883a66530b6dd50df5ee4a326691a0a3b0f843ac0a4e84ca3c00a3db76324d395ce3aaa24e097f036405de352a826da606b4c1c8283b5750ca21b2700a8c524d77cdbfdae2d59542d69687d351e8688737d70ecd1c60e4e7cd86e35f3334ad7d0fb07ffa594403e1bf08e10d4a7d59d4d003c9a54a2fc01db807cf6c7e4e8f05e6d9bff973047f31c53ce17d4ff63ac65040f125ebdc2b251bb78e0712e58a1b6d5969beae31cd25d60ebe9ca8d0a84623adfec3d8a8798f7c11a5f7339b13f2b0685f4400a52ce53a844c4957c1370de3b3e9effdc236decb6a4b6d66799a2a5e608125b316ac57d082c1a9c2ef116c3480a61ea991a0ca38526624c4cf261731b4a49e8fa08e86f6e8d5e762caf782894800cd7e2d0579fa2b677569cd9ced5edca7a94d88d7905bda1984aaf8e593da1411d3279dcf622a057fc6d6c6a75af6b216332c36707341903e7b2d90e17dc008a461dc7dd77164562332e952de41cd596348865c4262b29b89e78534af1380f7b9091f6eb902603bf806b8c8cf6dae123093b43753e6c36ea70eed23a7180735eb87eecbd5667ebfdf7829e8fb70fa6279a4b2fbd5686b9dc256d7c936c01c569536e62210d2090c845536146e1dbd13b9fff578bf36faecb41951f722d66b6112e93b03604c34219310589457c0d159accaf8dc550d500c8ace141ce14ea3235a1021f8b664953e7480a4ab0459d378aa8f6bbb10567bc69c115e6924d7e70815abd921eab1104af1b3b44cec5abaffd77401396ea2af8e40171588a784b95f0ed0c8c8354d8245223381aca76f8ad83d6380d903d1fc74ae6569fa9b44306c5b9365af5f65e195d0d1a0eefe4b8035e8e23bca9008a3571436af27118d1247496cb5d0ec9c0dcecae19eeb81b0ec0424c20eb594a1a22cd61d5a3c8568f6e11ec0775947aa7aa05c69ef7e8bf8d2415536bc243a0fc6614192fdf205270de3ed0bdf3ee06de498c8377dd1c06d4a21eb0890f36a6185070037d355338ee42d3e19ec1cef93d63d537486974a31e3214c61db086028f61878b2c55a289c848fb84e2637205e9bb17186a0c92c604a82c2b1ea224b67ab27780dd25e23c5ec5d8ff945c75764fe238e76f195e586c8d7a65d2626e570204388a4dca3d1b67faac047997eda27fd82c9dd386e1cd753ffb757b206e87d8195878ddf2f760692d6757bcfb3be0b6ffdd5fdbce75ac14d31ccdfb10c650b91a8d35c690f2fffe317bf339003ee6012c7930828be57c15b36484927532793bd695a17a134a8ffa8e46c23b139955df94010044940b15d79103bb16d97a457442f2a00d2d5225455a5b2e66ab52f366831c5e7555e161986afc3fa5955a74b9d7a2a8448e344a88f3e083e419fd2878f3d96126eb8e001fac3ce34fa41270a28cf1545ddc852f17fdd4726b1b0c892263e87c7337211e214212353314a24b4e347a36b5db52a2e86a630388030583ed694e27318c717caa5ef2f3bd40a73222975b26b087a515f1f053db0e259635e6187ec29368fb42c33dbd51227fe92387dc352ddad9405e0d19450ddf2a37287f423ba2dbe1552c349fe95947231ce90a474fbb8bf24a80ecc15b86157fa2ec59d0efb7d195d7fab669073c27c4894898f569a8392754e40b2d0bf0c103612071c901bcb8a21d43f6d6b284170b0ee97a0f1cffc6792346d85c577339fed2c5ceb0630b0a4384a0d20049d62da40cc001413ed6730ab9068b0d6835d125ac47621b6cb0201aace5dbbc013d3140a11bc5779b6406209cb2348c8b9a3dc6148d2ef55f2cfa63bf8188cca1f8d50eed0a69a28e9ab7727a0cc5279767fd0f5ffae111fff322f5630bde292535b40d4ac94f4287bfd86ad9222899f0bbcb843d91a46897801e04990a6fb7fb08406caedbf0e9f5aae3bb3c500f9fb076999c61524cdcb3b0e627c0f959a2b2afeaac961fff4ca4061cc22777028c9a9bda22aad60da17398ef