Files
2025-10-01 18:00:18 +08:00

60 lines
56 KiB
Python

from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
from custom_components.midea_auto_cloud.core.security import CloudSecurity
cloud_data = {
"class_name": "MeijuCloud",
"app_id": "900",
"app_key": "46579c15",
"login_key": "ad0ee21d48a64bf49f4fb583ab76e799",
"iot_key": bytes.fromhex(
format(9795516279659324117647275084689641883661667, "x"),
).decode(),
"hmac_key": bytes.fromhex(
format(117390035944627627450677220413733956185864939010425, "x"),
).decode(),
"api_url": "https://mp-prod.smartmidea.net/mas/v5/app/proxy?alias=",
}
cloud_security = CloudSecurity(
login_key=cloud_data["login_key"],
iot_key=cloud_data["iot_key"],
hmac_key=cloud_data["hmac_key"],
),
def aes_decrypt(
data: str | bytes,
key: bytes | None = None,
iv: bytes | None = None,
) -> str:
"""Decrypt AES."""
if len(data) == 0:
return ""
if key is not None:
aes_key = key
aes_iv = iv
if aes_key is None:
raise ValueError("Encrypt need a key")
if isinstance(data, str):
data = bytes.fromhex(data)
if aes_iv is None or aes_iv == b"0": # ECB
return unpad(
AES.new(aes_key, AES.MODE_ECB).decrypt(data),
len(aes_key),
).decode()
return unpad(
AES.new(aes_key, AES.MODE_CBC, iv=aes_iv).decrypt(data),
len(aes_key),
).decode()
lua = "16c66f1d580f6cb5032b87e8aeff8c2cc66c429095b4fdb1196459e890b848740e1fcc0cad9d0a4e86df895af7173436b04220470e450585842601f17d098ad4275eee2e0dd99264ecbb1807d52a5b3247413871d6d97308b945207e8a1913f6e23b202c49dd6f43c0db6bf21dc2306751ac3f2627b3d375f9a75ca746196dc805bf48ebc93d0303261e1be83abbab69a4e5cbc322bbc2b7a0eded83cef88d1bdce36ded1b092cb9e928543c34c1ab7cf104bd9490b9bd96e0d3b8c91081b11bde8799c8f64c70e8ee5447ad2b2d084689154e469e73225fedb38ff0b244e635da52df5572b04678ada9b1f24b3dac2a745f5683eb9da4866bb9f3a09ad5e04e7cc1583ea5cb0e6a42feb29f5f6f30af905ccabfc122cc7f1197fbbeb527a7d48a2bb3655843ca0494222974a68bd47c181341909ec7db9a63ed8cb4f5b8d291799c3df8122d7adca04239851c744b36b9940988b26462086b26c4d1fe4721c291524ad436b7f10e61f538ff6cc763a7bcb75f80308ac8257450781851cf4e7ae7d7541cc765b57bcf3be7ae7ecee4fc088f64bb8047283fbf263debc75f00f3fc590d5a685791d1ea8cdbb1635bf48154097360b043fc81d40e054fb21aba3a0266e5980773f10d92053150e114a7a10441992dad71800ef63443d5a0fa63240606c31b89fa951e72cfbb8f5145cafd9d6b00b39dc08f8cb75e6c84d5e0b6bc3762c00395e3ae8ea39a96efd6aa1031122c3927189db5fe1c6995efb0a5c90eb5e1e79c5fb9a0bddfb7c323ac335bff1589db6d91a5666c5cbd20d728c2cbe4fe4d202e3ec6e762b15b5e37ca89c7d4d85b44ad9159df74c3f89f7c2263eb355f7ba225f42c0f762ec23078a5a42e02bcbe9031c95d2edbd7ab98679778e3c90a04f26e5a1f18d397e9b91bee8947f0b6f844b9bf18706d9233bb7f6ad76713091087bd5a636cad22c6201102240b545c63e36c3f6c0cd266e198761b34f1e6b6f844b9bf18706d9233bb7f6ad7671332bbcb1b803b0b1cb5df72927edae9b883e3aec437db79370351319367a7073e697f5770379321069e6708640ca124238c7f454a178e544afc957e68ba2987728885a9e56339bb2a954daa5630c373fb6fe03d089e9cfcf16a89512abb4e3212db328d2c31b6d9af1a9dcd3d3fd5405fba1d0b99d5be240df48fc6fd56a475386870f765085c38bef94342364a434a90a640032c9f8b9e31e0c87ff195da30e0f35306e1d6977e73041b2e154d7851a6682a6d725d84bfb48a14a328dbe654377db24ae233ac3110913adb345b1bcd19ea4a12970b03011e81270bd1c6196d574e31e557621160c9992752cfd4221e971ee48d5c0cc0ea472753a51f2fd5131a0e0ee0656d081e1bd71446e3bbc58daf91ec7efb30013f1cce81a29c2a9130b2f3386f638bee0a262353aeb5a507856b083b63b0c79329ea313714708bfcdcfd80fcfd47014b3a26b4fbfd348c616294a1f159c0d60facaf782bceb1f137f136f3386f638bee0a262353aeb5a507856ba76940f263e13b6a9864896d6ec0cda714e08e246c8d5ffb67c5247dc119bea0f7172c69508a73947db6f83c03d7f1b3be83e44009213e84e17fcef1b3fe1ad1388a8ca868e29a5f5b59de4a7d3ef73f5dcf7cbb80261632b3c92fcd21aeaf33b817b250c30dd24a132b846a2304fae6b0752ee4558b3d93086f3b9ff964cbb47745cc890864ac7c76d6d36eab12368dd8a4bf5bedc8a0b8a3550aac309841f331a5311bff8be4ddd5febdf3d0f54bf36585776246a4c6a8ee7c05d7078e3f600da2ac3f19252c895e4da6e685b1d9ee3e402668cf085441e71447678b48f6d3a3b7abe53237f28e4a270725a89dafe3b060e121eef20e79404d2026ce0e3a1cf875acb7dd0ac932f2cfa2cf0ee7bb564e9d6220f84560fe3b2af93f87217bce0e415f1b3e4398c06eaf63903cd0de7fe54ca5443a8846f3748083963ade249e43e33315b923fb4743636f0c8acb1a9cbc934573b6d92752959d5e459bb823f6425849a6219ee273166351e602377597e54f1f38295533aac11275297fd95deec293c529c9cda2072073a1cd7d501123b91233636b82bc110320855a320b7225aa7174a7b10a36f5c9bb7b738a8892adb2036fcbac9a011e831594adfd7cd230136cba8c64a61cba4c7f28dc838774335e619f41c6a560444db967096c0777560e6e6e833c4bd2d6eb948e8a478be899b37e5ee3c6604f68f788674600e670211b71e3b32561c55e486fcbdf7861ff8db048317e8cff38ee87593f97575104523cc1fa4eec87c9c170eae526ac6275af71c4bd574cab80c98f5bd43cde93b7a13f0f68515a9b92e7b4e9b9e68d02286035baf9df34cd54de2ea79b722d0c53813cc1fa4eec87c9c170eae526ac6275af2339a19147093e2a2bea5dc498065c783f0f68515a9b92e7b4e9b9e68d02286045b11caa276b40447dae81f2bedf7d11cede6c87bcbe69da6af599311397f0e7e3c98728f99fe2a226ed327a608c44b04d0f0d587030fc344f159be13ec6171a368e3bc7bb961cac593ef85ff2222e8efc59eb938928dcc8fc40bfc74ae5216fb10a67586f32761b59cb9cd4b906bc5bcede6c87bcbe69da6af599311397f0e7da2c6d9cc87820e49f70faa8dc7da900c13deccb6eb1de47819bbe31cba7ef44ecb78ed60d127561cf290fed729326ebb100b16ecd92813395ccea98de031627f45bb79d481a1ae9549e049551c7259bde4a27cd4a30e88c6bf8c74af5bac4fa8987584d8bdfcd09dacbc5f10c24959054027eb1b08f44438a25d8a1d4b5ec0623d0a516551d8370233ad819738ea4c7cbad6e91756a73b7c854e7669dbde846b2c7dd82499cc05eae7f9de614d51d5dc952b335f181f635901f62b736403e2e3b25cb6dbe8d38c22268cfcb0c81ef0403ebb2f9a5da515c454b2b43752625e7de4a27cd4a30e88c6bf8c74af5bac4fa230fb194f56f15490d80fbea4a345bd69362e783755dc9aa98930ec53cfe1ac7df5a7714cba4cca095ccedbaab7868b050bc1381cbe48b786468fbbe20ad11713f47a52bd320a589f16b6cfa940b66f57d7e37765140decbcf4b456eff18903ff01e2dd093d9c052db75fa11cac0a61c5eb19857700a54a86b91daeb6766f03f9285f43032145c544e49d1be5b9b320774f1920904d99e281b0399aec8dd3d88ea467617d5938c77ee6f125c599eb8bc97e1bb45913f142dd14edf425f5660ca65233fecbae64f6497024d3a0d56ed239510b76d0aad323c105c802fb022c53ea68cfb277882f13c20752dc15464d46e15048efb01a1d5f11d18033a2075bee958f6c46a098146946d1427a07291536732c17a33fa9ac8051550daeda6ce6e2c2f78da27c81742b1e4768a3bc74e1af025881e396f841542298dd0cea65bca8997e1bb45913f142dd14edf425f5660ca21fa47e8fca3b1838c550f8ccb57010253d7d2941516e3e6ede60b5479dcfc79fd62f43305433a7bba472516dca787b7fa6a68474554b0e5c152b29af2f3015666fade741743571ec7f9756652fd4a74ef2fc212def97bcefd1057fdaacc32988c282c8c0d0541c7d6f56e73f64eacd8e38c8b17df8890116cce9c5aa3d69ab023e43e9817a7c580deb791ca351eeb94f04aac6f6454186aeb6b0c55a60d85322cf350b487daf817e34237b7a8eca34d71a19ad2b832a37077204caa93dd86da6938b744e7d3aa939ff7b9fb56dbb5733efbfd792131ad95025346965eeaebf25ad30477aa014f1b390ca68e91427b7aca966195b349a80934934773532f1ccaf7a9eb3f45b3ec13e62e11cf528e822a3a1ae2e981dd38a4418dc85fa74a27a987d61ac3761ffcaba0e9eb8c49bd34d6583750904fed99b199d13ccd1d82372f92ad081bca780199b4e57638641b3b2c92a87770bc2e659fcabdbc83a0d5e7f3c913c76616e52d51021c4d268fd14d5b38f2483d05f371dfa6d40a74331c046ae610e377e82202d6f5301dadd202e5e9392c85be1d9d69bb59144e74e8bd53b11d246f9b526415a5eafc3baf434bdba72167ad4118d6e1fd8b1b2dcf39e0e0209db7fab8af15407621ffc83bade61ea7d343f007e34ae005f627711a911488cfd15709827678b8eb0caba73b8b80bddaeec78c37bdfab4a1cbf7185c10d3b87c07a842d5300b79659d0b1b27df1adfc290b8edf93831709435d2231164d1bc5d872146f0d26e13537c880ff145e42c32e617f607020986be420883bcae737ff888b8845b3f0d89625c133a45fc92897783b5143a2ccb6f9ce1bab8bba06a909084525b386aa369b7e75f0eef346d7c1ac2f17774e4ed999847891fdd6d0323d48abd6680caa77200f325d18dc19ec1d042abd61a46ced154280b1fad7ab27110bb5f83311438078b7a50de46a18aa4c3a55f25fd64a5bd14241e039d5be020b3703c63ae56e5902f9a6522b8ea541e699670dc487463fc05b166115182a607c3660d6f02ac6262c8c4c89829774c97ea42d1cf73c293f42bd5b0c38d5a6a00e1260dbf6484212e003cea8872ad67a817d94e5335b779a7c8efaed9826c90873ef55a87d42b870badb30aa143ebc7306b31831fc0a1cb582f51341dd356b9994ea3d130f865940a7eb53db9ce2e49545b9fdf6b72959cd789f72226bd970c06d1e2f527b3da29de3f6870f382f6cff2736c668dc4df3791ab88e6adf87268cc6e7000d0990202cbdc54ee971a2f12d21b2d57441d9a6bc8f8592e91bab1a914ba757ba7f491b8e7abfcc1690bd87c742e4d7f60270492bbed1152147aa4a35c45622dbbf3252c15c686f24e922d91742f7e7f4c554d3f8c6b0bb45562669d4bc7757ba7f491b8e7abfcc1690bd87c742e3bdff2d6162cafd6deb25f73cd23fbff757ba7f491b8e7abfcc1690bd87c742e73b94352757e1c6edef49e54f1934dc0a0617a8d539239993de2acb176aef52f6bf410cd128ca4e2c96a508b0c0c4005a19381c70d9fa26efa9502ca00645e3ed1fd1e88381e2f59eea56d3c47cecbd4ce9b115371a72b937ee6a11cf7a6c45368408d67049195f7673d440615cbff3e3c44806d756af5055257b74b6ab2f8c0fb432d092f26ca10553321a0efddfd9f690a6c24a9e7de9f32bdac7f61a26f0c41999029025bb0d92fb05346f26fe7e00a682669b20a895f26ec897780f0022775881f8e09d1182f5b2d9462aac7d7ffc74c8b8a33cd95affbc3d2836cfc15491450041c8d760732cf0817b7f528463ea388fa257605cedde19c6538afd22f42850b5a6b551315fbd1b9d0fa5853aaf59fb43bf4f0bd5408d6410314a68932f590e6479cf90167191d8317f735fae17b56d7728180f2b8eccdcd72cbd1381cf3778f9ecae0c11691ebcf1f2774c94f05dbdd405bc4c822dde3f54e3e0688b1856704eee32720edbdfce12a32ed470f3595f51e1d9bc12a07d27671cbdd34f180d18a5c52f49be6aee9424dd3734c31d4b4f8664456c4bccbf77ca15ec5031d43b012b2c2319a7a194c294074098152b6dbdd405bc4c822dde3f54e3e0688b185aaf4f3c8a6dcdf08528d887ca9372a5cf8ade4d40a715a81df2c2dfb976fc1191c87b523687e4f9fcf6c91ec0b8435b27509d2d3fbf2347743691b8a225aee46e82bf77c5774768d1dc0773e6366e7b6db08248d5ea67b12828dfd305725dc136b8048a373514c76596365a7f150ede05f3175ff019097657a536001ce2555f90de357c31e53921628079110fed1b1ffefdc36f5852539c3f6bfd0278951c4099b697966a4fccaf324171295a9917d4967a13fb8b167b048c8c03cfbc454397459c6e783c742c20b050666a675b65e2e443c1db8e4eeb62e602be1bf742ddd02e0af03c453c0eda82327524f74eeef933c669972c3f8a4580bd94d3dfbf79d54e27d9a4d3caec5e4e07fd73e5e4bb21a1bf361cd26201010b81c8dfd87f0e26ce59a4b44c439c1ad846028096db35d01b622adc70a79874065cbf329d53e190173ea596706e0a818ccc658ae10ed151e3c669972c3f8a4580bd94d3dfbf79d5480bbfb2c361ab53b6557e7843f7f6cb377459fea76e7d2f07d7710564c0058956b14ef1b6bbd60662d99d215edba6748b6bc7863bdd43052c2d72ae674c0edac01b41baa2192eff189b61e5c365110c6d394376c372993fed535091e1cf9d233bd3373b9e0d424544ccd92e21f75257605ab4db44a3fb9c5bd4161ceaa0f8acf2ddd9ca815454cb7dd676d0fca474e673ff57bbc92bdf8e93d0645703a31df56f389d58eac00d8946d8270d73036f2a79b00398bdf049198e51dd7eca468f5855c82b0865b15b9b282ea96b54b665844fc09f827f70da01012e0eb176b0e0089ad99f8c2b99beadf09e4592ed56bde6e59b5ae0144ced9b9f12030b4f73dd1e51551731abced18d8bfb5d87517aeeb21d1612b4cb671c983f347aa01c5f2f6d262b64cd2e0199f4f7ddb524d6e3a75c12d98d716b52442ef3fdae5f2c13bd68d71d625b2fd395a4e935017f7b4816c51146008d6a0d007bac0641bd47fcfb4768b12e7e07814f27d97d79bc18a43ef75d4d2f7ab045fc6299c1c5221bc0afbf177777cf3c91b792eb447dca2544a0bba56637840e5de73999901d9d192ec81f5a2c9832b60d5682d6ae7116f5e68aee880747b238a8cf4050a54f3af85441050c533441d0522d2567b40157f1a5809a954f9dc2d5948cd8b8fd1e1e7a628f3ba523ed6a6e24949334753338ab370644eb30f4315402b2ad1466eeb70ed5f5ec75a197f926341f0a6bae1e3cf71576d0930ad39eb849da18a4f5731f0367846a7b80aaed765d7c27b6eb33e338a5f0db4730e760f1af3e360d3fdb183fbab25aec33e9768ce87b22703e1362dbb251962f466e3f092d13c416929270df18ebd6df16386be89afa83d690e2e6f68fe50ef8ff2d8172037ac55b4e9ef72b34013e2f2f0121fbb2612d741f54c34ba2e752f0cdf6dc3cf0a83914a787124c9d6a63b7ffac0e249203ee962488232d111bf024fd1e4342311225eeb0a95d67c85c1bd449d4cd40d48cf74b768db9375b06822f6ce0d43816b623799965488b1b9ee4b26b3086564707404264e4cff9d8bdc1d7741e0191b7681af1c12eff196873cd6a75b23dd3f794130c56092eaed14fbde5c26f6b37dfea23bf3d8e3cafd6020b2b1bf7e5e16505f73406c7fe08367a1a7fcdac0a979ef78e9a31cf8260b1b0732bb7eece5077cc08d4e8faa8af73f826cd4d2f7ab045fc6299c1c5221bc0afbf14584cd3e1a95e42d2d2451a036b0b30fc8e1ea2660d9b8cc919b98da01cd643611e7744e35a178612a0bfc808ddceb9c9d9732b8fdae007be58ca81e4e7b17e1683439469fd8deaba4765ff95467b9889d9732b8fdae007be58ca81e4e7b17e1dd56c98df7b1daf5176b77dd678fbbd03fc9c7591ce36c727925b7661b4ab2ea927eaa77317f346314de6adcff539f2aeefb31aaa4d8f4967aa83aae39a19714552be732cfda272778fae5900c16c9026effdfa0c836707c6c5a868203de1647f3c153acbda2a727bc9e45fc1f7ffb784bcc824fc50c774e79186f9ce74d9f96f47f8397904c6acb099169f1fc863269f5ffab92ce17fbf3333cdbb43598c92dee9a66c87969aaac3cbdd72b1100d77ae1a27c7b6dafc6904b720927a836e0231614e86c7c18d82e42d1be2a5d5afed4cdcdbddaa0dbcb3ddac18371e8303cad0437bd959829c75eca57602667bc5eed58932e36c42d7d3c6f3eef1469765e0282daaaf4e4819652036d0267826b9ca2f88a68ecd7bbd4002d9648ca8c575ca1ee4ada2befc88966e7be35500de14a3614eb93bef4d0b0c6cde176ebc6f5d15c23f1cdd4d864c9e4b02c5febfa107a6830515bac9eea90f20c3e9f3163593f0e603a4f37c96c14e3e1a306ebb9802b7074d62ab48f54d5466d661d84810d77705f9b4b79e9831b20939954d8b7c53a0d2efa046288f57b978568735d34809dedcd50eae08760fa22d80bc72260433fa59b8bd4c4b66d28e4c0419764e2022e61fc015d2afbf728642da24cf1162087df352c5e5e9c45f6787c24ac28ae60e3fa9726a02ecb1f6fc41d7e30abb7c013364c2335bba03fb5a09945d5776626884718469081c62911410bd0b47cf47ce359a8e6020c486f3d1c862bb9935a7fc4fe9e5a2eef1f75bd19153e6a2e26f75e63c5353352acc19be0849ecb7cffe0a5cb3772cc2edd200921f290b93ecd6694fc9c1c3136815676b3b335e2f658ca0013addd6b53932ff385b888aeebc4e0160ed0ac42c28aec2e46f7ea31fbac7d8972977b049a2ce7215313707b8b0453de1ecd55cd9528d868089a782e90d1d90f92552cf0950f151cfc91c2c63a9a18870a114fe5d5f104f586fcbe3e8ce3745e06669a399d66ca5d4088211b50a9d59224dd6147966e6ba538ff90d15fcd939aa60fb1ac593d2058815439c77f67e0d70db83a90c4c2359b7800f3b5fd5238419c232d534bfbbad9de3a7c02695a211bbc363bb69a45f06930594beabcd5e3fe47f72d2c5b36983aafb8cdfb79f580fbf8b9742657936aa38679adf97cd00ce5af5e110ac10823c1ba78bef5c26877e666fcb000112351e5e032f1b9bf1b07bfa052c3d9cd2995d4acf3315c705df38cc773ffca9dc74035d21e2901bef538a514fae99684663ee15455c4d90c2cdd73127f778dcba38b1082a82c109bac0dbded3a20e4fb5152f86c3418d19271a7e8ec3f93374673fad644099278edabab43fd82c6d993276bd70d617eba540fb950ead82d8e9f201ca4cd6ef14a38f75ae671e040197c19014068cb73e0fb2a83239d471f645d9eba0024e0dfe447e1465b1070116348d82753eecb5801503c56220fa31d9d3c677328f4a55f2fdba96b15fdf17b3a3a14ff5567693709adf2a07fb9374d1a71aa653cf5c3b7070e47c4e79971a2d4dc9b21516b7e2e5b32cb16eb3e57c0b633c86d8c9b543998254b85459c8a341acb033218bf40dde32b355adbbad8c9f793c449ac6fff595751a3cc95d2dcf70fd3bf863a76548532f61d197beb44d1f4e123867194e9345b45c4caf23282ce465558ab50159a3419e15004a2ff389988f032162e47454bc17c89675395e3d00c7897f9c7e5e1b3aaa7d2f865a1ea6447062c849a43e6e77b74c898e28f500d75e9163ed011fea02c6abda4d78a30b90eee06b03d2880477a60ee4d427357adb2fedc725cba87bf4bda7638d7bb9cc03689ab8c8e4c67393dc9a9ec8ddb7f2a0ea980b7f5a8ca89a58636de58311d4eaca12411c3aa280741a67f6d801b9f04afa25ec48f2c84c2bf8b65ccb45ac364640632661d0d13d0cd2f5eee9227b286556cb28ebd32cf75ada2564b8916ec0b257f59f3d354db4a1f25b12034fa67ea63877c725cfebc2bb95ec212869d3da901ed463061a0d4fbc4b4bc3a6bc83c0b61859fb23259a4a71ced937b9662b8dc5da379d47ec611096329f0caa0ab9c0ac6cbae947671041d1d37b6ddcf99eb5bcc182faa52eb80e691f7c7112d3555bc096fdb417a55c588887b149d89ceabee6290bf69ce269ae1434037def4bce7ffce11217e75322af03f81438dc37293adbcff1d1aeb31920cd1df8a7f9bf662b59b590aeaf5722048827ddb8285d630b90eee06b03d2880477a60ee4d427378520e61c4020c29253818e6cfc5c6a606378ae6e67955afd7f3a5a82896350c6da4c45acf238cf2ad836e7a8646d6b8048721a2e79efa4c62132e6533b6bfcb64ed71976e68e2dc237b96d43d85cc06fdb4d4078cb32143748ce8b80688b13321a2345e08b776ab64652d231fa0c9ffe9cf2c96708b6f8b1ebfe589574d0b7572549e66b92ed11e74a7a7a6750812db5fafdd450e99e6d55b9536704d7026e923f1cdd4d864c9e4b02c5febfa107a689171ceb4b5079fe0356a5c4624e8c6aea1d8632e19fea48504d335a61325509606c6bd411d92126c21afa1df7c8432eb76e4228c0c2615490d6da325ed3fd3f92a5011c51a7107d0cbf5879382e8b5e9e9911283a64c6eafac7ffcc6b97f042f9b602a17406f1ba41880f852265e84b018dc3a2c2dce937c184d21359a7d29dd17f33077c7ffb70c6dd852df1669ffa65274a62564e7ac2f09cc03e58c8b7e2859e88f7c74ed2f22e7f9ca1ee5c6ae86fcb5df28bfe67a757dbdeffb226372fe0b3f7a4a343be99c45311666066b2d2532e3a629fe4e3808c29486f6e61c864e97a2baeda5c3a75d814a95c952cd2df19c9764fbd8c2adf11306dd7299bd1ecc861045be4a8b925b205fb9826d8589045c1ba6702a3fffccb9f827fad4587bd31eb0c65284f56527a685ebcb1e4639ac2bb7637d7599fd5cd1379bb467bc7fd4ec355df46ee790e0bb10fa28fc2f1aca5bcd182bf6eebd6b20051f990d22ae26fb5697c5b5327372a775d4833fc576045274a62564e7ac2f09cc03e58c8b7e288ae1ea595b3b991d66236e8667063ed361742541ca19963e1809f9e9d3cb139c5bde307d6fd47010168c22ee58fdf666922b41c7edc96e2d6b4eeaeddc8a44dbf79e73dcaaf681540c240518c4bec69eda62b791f3bf4c13b76d69ef4b0fe8e506e3c4726ca8ba3a00f415f1ee6549f61c87b523687e4f9fcf6c91ec0b8435b2a386f62704bccf73aaa3e99ed21b54e047ba7e682fe6d82d35c4173ec0abf41d00c23306b5e1de18db8616d65de4a3df891c507877b3aa645d4f58312c530c4c4c908266ae8a2f01c10fc7f2a4180336ebe962506d23cbb887cc77f4f840cc8442417dc7ab1ab889a85eea425db5cad10e5cece9c3b8851a6fa753be93c17802c7b29d156e90cdd6f7eee823f044cc470327c52d6205d47ccea1934d3410bbb93c59c10ad9e392ac16afc37a31cc111026619ae138686e2986fce3ad27b6268151cfda891d0c58376d8a32ee503d865f36b14177329b09f7b35214932a3b14ffa5d3e6a2b0e7105464f527fef438023e363bb69a45f06930594beabcd5e3fe47ca04f46f6f5cce02b256b4902d306cf25cd5d3296eb410624514c909a263074c037b794d6f7a9839e0558a3f4605c24701a29da93d0ebf600ef35bcffd2dcb4f4f06dd70efde8f2f2e72264e5ad198e66b8048a373514c76596365a7f150ede04c79fd08fd63b717605b9e9a5df55f43152f17a6c29bcf4d6f2a66d4f919b8b20f446b03ae83f47a259948528c4b574c527fe311b63cb06fb6a915c1b65b9bc211d1381f271d8630e88c0bddb1d887ee35568c1be5eca916b9298b387626d034b47e2b3ad087492d47ab04bd386290ea338d92ed1b96c421be05a029dd3b66a2570a705e857b7222075a741f89c7cd0dc34581481519a6cc50061454bea55164e508ce7f120fd44f6d398c52e860baa023d2e4ae6f3efbc518d9a9f9d5b77c3b040646418450b8ebe205abd06e571f3a811b9c2637eae48f685f039bc66801d4dff4e2ea53a294f9f1179dc7b2b9ade8de66e5ba510755c75a968fe677fd8f59afb80bd8a4f98cfcd92f250c1eddfef073564fa71059b36f2f5c0aadf3d3bab8e9cf2c96708b6f8b1ebfe589574d0b75e4a8f693273adecbfa91667e04f15e88e42470429e340f64e7b32e73f2f73a849646c7204cf8ad50f50ec5a98c1bb29e52b3dbe59fdd3f4031b5278d36230687f75bfd16c0d5aa62307e1c6b43f4eb19deadd4e5915d351129f0dca8535df3cd4ff273c742ca723a4059cd2bc26177a31d49f92d71b78e674e56bef9f197b840a39d83c7ccb0b3df3c8331f463a31bf382f0a35e1ac86324b019384721cd86fba14654cab8c439a200ed196ec4c76bcb83e9a463dda610241b86f1aba62408305cd5d3296eb410624514c909a263074c9e8dbbe3b074aac5b2a16305e09c6eb44ff273c742ca723a4059cd2bc26177a31ba5bdbffca887f97476b46f8cbd28e05c52f2c0dab31a0adb95ea81484ee018d524e239b088519bdf195dcd6e8b37b6642de0935dab5f8a309008a2dbe262ad4730609edf8ca565ff0acb0a51573b300e51f7d0d7c075c72a39e7822f7096ba0a5dfa68ea87e9353b677623803fb462681f514eb87a3a28c8cca4dccba641f42ee4344053cb71bc6918c39d3c286a853d7ed7de2a05beaa0bc6383ba1503d86cf95438a8fe9c5826b4c6ae35f01a3a3644c02347d5c8130ed93c97be856873cb3c94d2b03ec65771d4b4ebbe226248acd16ffab30bba1f4ecf46e654de0dc3587dbcd2a4b8c0eff6819fd6e614e72e934d51734a07a5e071f295e6e4181d4af509ff26667727dcbacb56887b69f9444c850dccd60effd4cb9782b1bddd8793cfcb5df28bfe67a757dbdeffb226372fefe0dc8adb4d203e48e4aba9ef1a95177882dd95779cde15337e0fb30e43a88cd40167e074bd22447ddfcc4ced0fad64f57cc5e3d5d8e4b076262a52c441da96cdbae221250e8fe80ba1f4fbf34f84034462207e28eec82870e89b8db5294b9d2b286556cb28ebd32cf75ada2564b8916da3c4254a39ec83461be0f12ad7abed2c9b9237950c21c4b178aedb5f2a18aa69b1c7a26e2d6f15c891cfaa8185f0b16cf2d45fc3ca00186921c2bac2b89bea8aff7eb1a85796f63fa74421ee936501739dc2d4f54c8ae0c152c1a62d63ced1d7cd6e130c7e4a140f3a71242ab26e8e1ae2ec9db4dad7ae7de8d4e7fbadcee5c87cf95c461c1d6691697079b49615ac3b0190fdabd67ee9034080cec2283e684afd0ce015a15742d426d3c61e5135a3eb44145f06d21c832273746c73c65d5569c9764fbd8c2adf11306dd7299bd1ecc323801a45e8a638c17f3e0d0f99b74d3afb80bd8a4f98cfcd92f250c1eddfef08a01276d502b0aa3c7cf4f0b34ba595a6afe09d82b2be02273b8fd8e8b6ea5d73a134bf885874fd1374223c52b59c4096b96e88d48a7a972f347d62efd7bb431be04c5727c0a60a5bac791361379abb6c0b476b19553283b1ecdc20d97bbdbeb31534d2fad8219323c493d559f19a8167920a264ae3086011ec0b39549fbe85009964d7ac32c8027d1a0641c9dc5b1f134ba76d351d1133a89f9b738567f8988aea3a64afd4a17d7aec37f490ffd591aea246265aced4b0623ad24db7458202bc61e096e15b01f1883ef63e94802efc828f6f5a7523744e35493559265726b9f52f6a32657f75f53415c0b95f156d15fa1d8632e19fea48504d335a613255096acaf25b18e8ad80b8d2981c9aae9cc4ece52022faa2b9ae0ba084de654edd58771c6ffc7168ca332a909eb9002cfd35da820ca28ecc3a26d48aec4d2fce1331c1fd16a12dda44f42f56bbcb93b372b0e835a9658c3e5c690fb05904402bc4ca4d1d56a833a301139a79bebeaddcfceace2ed571c56d9bee1fbfa3554fb5a83c0629a16304c55b7dae17f78f060d9280d14e12d97f0cbad5e3eaa30fd767134e6c7ae5a22f6f6d4f1f2cd95bbf4e7544534115471a86f7dff11f2e92efd3f3dcfb8464bec93345bdbcd835777fabac314f05dcd0c5ffca3cf6d3561333e27f1afdff12f7dbe7bdab0aaf0235e4e8ed6659f0a61bd4b2a6e7db9b500f163845ec6345de70d86017a3df6803ff942a8844ed13aaf1fc0d2de9f84cf199e935b8a3531534d2fad8219323c493d559f19a816fcb5df28bfe67a757dbdeffb226372fea15f89f1504a4095e411b06bafa6ce91bac420ce405b17e1bb691f7b9178b005e6ef3190e11fea899b2ed1639fc4882e20ecd655105f536005d994af6001b4e01090611a3f6e0868f81fa8954b789afe30b90eee06b03d2880477a60ee4d42735bc38ce6efa904f7de37d48d17121e30232c4f7241f232f351e35b3b3a54ee8e794367aa0fd55ec843e4a8d6cb4abf5a9882aee57ee5501b28c114874d7a01b2e678e88e294b5660ff6e04b85b1d67ebf2d8b2a6a249a10b2f785fd617c09c96e9911283a64c6eafac7ffcc6b97f042f7833d894522b93814ebb3a67f1ac1004a5967ac35ec949e32f906118f0c516a716137d7180109b6534e9c9c14b44eeaec8c7b39634a1bafdaed745572b7f5acc600239fccc521751e4f3cbd581a0db5254c326e3498b858508fa0a01914caff6fcb5df28bfe67a757dbdeffb226372fea15f89f1504a4095e411b06bafa6ce9124928f02e9abacf43320c039d56d735ee6ef3190e11fea899b2ed1639fc4882e20ecd655105f536005d994af6001b4e05741f6e9388937c4193cbaa83986920e61742541ca19963e1809f9e9d3cb139c2bd664d0f28ffa10f60d27c52d9a59145af6fd0c00788bdf7c690f53c0744b685bcd182bf6eebd6b20051f990d22ae265c9f6f437faeb74e899890a0eb637e908a8ab104aed8bbf6c0686805e49620137b93de6173809b4b62e30bfde7e869f737445357120731bafb4b680be6b3cd52bf0db4e77bb40a910cbfe975ec5080ed8f3cb7105327bbac0a5ac6e5e2baa3a43ed1f0e87998cbe5e329d2104e96aeecf84fc1c16286c1d6df21197a4b8b1880130bac59fc43840d80f8cdeb69d8edc0d6656aa5a831301500e7cd4d2b096a8b73bc7580318847a223de23c3d99a026dd9cd6c53a9ea92d780b22e3a2ac5a73de6ef3190e11fea899b2ed1639fc4882e20ecd655105f536005d994af6001b4e04787a547496a3fbf6d1a7b1786319cf6363bb69a45f06930594beabcd5e3fe47a3dadaf3123a71a8e1ecbc89daf4736538698e94e93f1de768b69cb657326cb4987993e9512ea6a22774fa6606fd596adc714fbe1b38964966ebdec1a6dc0fd8f317487e890b02c06a6c971c5ddf13012d49c5b2a34d384e558d387f07c8bd08c537b254965cf8142c6be7e15f606bb975d3173e2bfe4c33d01dd48d073842e1028cb405d82ce235526c66ff58d6cf3e2797b2bda7453137762ae3edf2eadaca62b95b30c97dd6a26a8106a43af0c3ac6f72412fdb013b31d3c02cc33b6e161375d3173e2bfe4c33d01dd48d073842e14bb0c13cc5f5acbd6b2d58bd58ab5d33eb5bcc182faa52eb80e691f7c7112d356f25ab8f6185a723763567e97405cea80499e446a847df353e8502512a0d94728d6d6b12898772f2ab1ff7a3ae2420f9367713ca195c94f676657bcfdddf160f3a9ddcc0aca344eb9ddd4a3a06e4c6a5f552e0bac2bfa38cee5a455852df48b93a2eaa3af3764c07cab9419ce22fa70acf42eaee87515478442ce1cfb008253e52c8b8f3611c5fa88e37d1605bbf6f7ed44438849caf7416c29c98f27f573f3b5dc4da175c31af49ae5f5a633ff7faedf26fa5e2f4d3dec763998e1aa1288ea767909e882242fa2530f2dbc0a22c736c9940eb1f58faa7b40264fa6f859d7c9f244b7e0d7793b30b81a75f19ffad1aff8bfd549ded68df794726eb115a4a9201873b1316e322c73c4a956c0a891beed7642c8622b0d1bab36b82ce2cc7516ab4f99717f3da35ee14399babebf5532b2ddc3eb4c01f935a60ce2d3ba3c4927cc48227b5e90e7e61e5fe4091999e972c3e62039c5d24e5712f9dff839a02de40b01f8e41a990fe644c3a0f8b40c07872c0be2a9b02be951ff58073fde99854ef30a808b6055c4c01e96042abc24f641462fce0968a20bb8a4b4880de2115df892f3b584413f69a6f4140912d231bc4ac2fa3b5b5e3dde51995cbaf2f5ed149b1bca3ebacf640b732d07720e443ec7a0fd3ed30545b89962fa88c71f602689b2d501e4f1bd6fef628bd6671965a5871ca7c904ccdf67d4acc7fd903388d9163a15990767f148ef1988f4d1f341617ff89b9df15050748bf7821ef3f0f45fbaa3ef1781f5adbea80bb568f4a66a2d8a078f77f1d5e10108a6b1a7f82f17053e900000e4da10785b44d8c48f3af6f727c3b5d6e69ba18ae98f069d0618f2286961eb3ba47aeae51295ffa7b7b42a30719c28bd0bce7a60c145f044a57f6aef8f8b4e48dec2606700d77caf07c000ecd024c915702430d1ca7b499ef6aa8e446b869c290433b273010b0ff98e516bc785a360e2b27791edd8743d941697d33e2bdc58f2da167ea839add6fad30096c82ed54728d91e0fcb31783280d27aca80cc33ef8c67b4b8da04457ba1548b26391e866988d24446a21bf9f0065f7122569976d004990871d7460803ff046889237418ccbfa176def3b2057f511079b6b6e30a4160b5fd05f4ca0eff793bb01844e625172cfe090ec40687da10b9f15edb4cdc94df386ed8552bb14ef30f494a7224d105a7d1bacf837aea9cf1ec2e026113b4ec175e75cb52fab953aa6055fefd88c2af4a08af618e9c868556d149f2795c0677954682768ed66d6c06dc7ca308c29a3a894d6e9c3eb7715ff032b6ab351c70b90bf3c27a76b5632851de7d6277f7b597ea452afcd16dac2faeb7ab3baed932933338f47b90e97b5a890d1f40a04b275c7ad94a4808d00442b5018fc5333c47b5026c05f4679148506164f8f485dba2e5e55dcd5446868b301da22f114c7daa81ed72f841973bf36160561faf9560d3b3b439328c9d8d923046376cb9f4a846f4d55dcd5446868b301da22f114c7daa81e2fd029113f4b33a5c6935f3150747ad746d0825cb8081b2e98c92e834251396c331349aee803075bf89cd528ab01ecf3d0cc403e9822061de0fd528ad95df4ea48eb236b1d860471e1d0b2c56afdc15cfd1906f655e7ab451316c1c0dfce75655cb67162eb0c789285c371a550d3a6a0338f47b90e97b5a890d1f40a04b275c7eeeb1de8382ff6583cec6d5e12ae83502bb7e98a242e82513df958f53277dd98330a589f48f31c22d2c2bbf758718b8a7b89943e3a9bdf414c9fd38e396e381ef0f7e2196cea7871692c40bac691501ad961d8ed0c291827bfe12b3efbb8496422f95f4cd1a21e1e538a43dfa5edd5f2d4edd8b6a2cbac7b0c22520ee7359549664a7136e1bc91131a777391123f96b07b5b96f3e92701018cd1c31bc1f8e4d1bb29b74c2454457474db79be084187a854af4a62f49d3bb27a96d7efbf63dfb1f34ec996a5a0fb50ed38b3e85b5c71fe058704720c0a0bf18d5a346b24b794cd8b0ab34ceb951ed60c98ee4c42094842716ef12a0d5095a65d18b70d7a9b5059e76ffb330f54690ce66ea1f5061e0826cfe090ec40687da10b9f15edb4cdc94dd2275a0d6da192f9d49453439c44dc297cea6b6ed92dd435a8ee239932ba0ab2a00fb3833a39adac6fc63b220752b401166b4258fafab27ee46cd49522016682d562719db04666070cdf6e8dbb479ee240272760f28d133406747c47a8887928386bb0620366885dfe1bb8a01389ef09de44189dcb438a95a66e4812a2d81d497e03f6bef0fb67b1a247db2cfc490d0556e6ee937cd756c05182e166c6f62ac212cccedfff92bc2e36a6c4c3ebc69a5978e6bb6816e53926857ba7a0b2e5a73d245cb6b1f5b554d7ff1571f048f3e71d25383d613da932c1da9836b05cd5be58a94d6a4c53f5f4ecc3f3cfb9600a7e1146ffe0c14cfcd8b860a216f2633c70b72a12529fc9c9afb0b8956342fffe0c1991dd65cbc94fe7438820ca779b0630ad5462785ba175570334c67d8f2c6876d9050d531178fa936d04ad8e4a64084fe767359bdbabf95076147026b13fa1aebab0a84542ec8fa4caa2d547e95bfcd47d5c615c62c04f8c4794071c494065024d3ca9186d8eaa4db25e2e02f42e75472e058704720c0a0bf18d5a346b24b794cdbcb0a03a71a9ddf79f950c1fab662dfbd306fb64a5181f67c88f44d43ab4240370841d8ff9d218567bb7d3a650269962b966744d474fe07b7dc449e43159a46c3913b26bb8b21db258cc442cbfc16872236759bdf2e46320890fd7e44bd7ed99f93c918a36150c25bdbdb8425d906513055326e5685dc79d18c1dc2f9fa48159dc56566502e3bc69f5c96fa6468d55d6fd02296be85327413f55b4db34f5d05d885acfddae3867afd9da977871b29821c9ac29281941dc06bfbd1e99100ef7fd55f53e2f76da3b85e30ada43f293bb049160347e2da28262f62938535563f699009ebf642598f4740cbe391fa0e933d07abf05b9bdb91897c183126e9151111a45b2db334480334655394ffd319b9ef98d8cb8055b4a9a4b2549648ee747718333cf47c439243bd32149407f4a30e0553f5cae226f9f79b5fcd3616a82595a64bc29fb4ffb687f828f58e26a0e25ed019422e73b13ecfcb37d3e4c1d85aad4ce8ca900e548b4d85ff588c067047600ae169335c821c7326250a22f0980bff65d9d294079376ec4421c5a386970ac10bea1fb96954584976fe5a3fb3705fd4a0fd0bbf694a2c43713d4436276561b3c2655dcd5446868b301da22f114c7daa81e78499b7569072fcc7344ad15f3a13a2eaaa87cd669537328a9884c04e058b89a9726a02ecb1f6fc41d7e30abb7c013366e14477b17529607e9033b719ef607328e842b5ddff1d1d7072a05f0fb6948fc66a83dafafdfacc55b740e3bd7fcecb0b60be6ef4b8552363f3e4a4a7db7844276dbf84a0d6156d65e962de817adf7516e547679feb70e961ca1b173d0c4492a4d0d7ce689a7790ed99fc823de4979fc223fa68267cbbc2820cb7b857580b1577403e70fcfe0e9093701f11c24f30a1b897aa049a9b68a966b613bd7bac108d24a8cbeabe0be3f0340aa93c0332127839c028ddab6b8e69dad79b9596819ce20ada844e769a190e6490ba86a2bf8dbbb6cc6898911c55978381a7f8962c0d30c15dad925ca3bc2f6b25efc0525c95e1c859eff5dda78d7d2dbe5bdfc8a3ef763d4d2f7ab045fc6299c1c5221bc0afbf17f1d32d466ad18f1000b9bcae68f134d1614e86c7c18d82e42d1be2a5d5afed4785ae7d30ef2c6e48f8b989abda4aa1e8aaadedca6622bc00586a4945ce3928c47caab71c76ddb1f32cf2b464627c31c500af61a325c983cdd1cd4f9177e4faa37017eb765c006471221b965a6825217fcf99069b74aa907310b89e6263c9a965026ee5e0f319ae5f354b20f56eb80907697644652e7cd5f4896ad5e04781697e1f34bfae20803d2fe4f5cc088e0accc091a27eaec2b226ae2e69e29c0a3d89b3f43b96ab10da4a6b7a1d4a4061010aba34b800c74ec471359b05fb27f358df45a20c1f4dedce1736f0bef01d19ab88227e29603ed87f4f008bfcdeefb2f77a21eb4666672c78670495ded1d02faf3e8bf69a581475a9d56b3a1ed155c3ee76a2aea7a8462a8aff98957bbc13c5458cded63a50790c926139883e0e8448184bdd2d9287b36fb7361c2d6cf2e894b541d8505246a8b5f1caf1de360a98d31a5773f02d05f614108680841fb07ae6cd8b6f32ffc7b592ec8ed651a1220ae132776fc48a85fd44e557323ad1c5af56e9ba791b1a33015331a8e5ae4328085b1ed93e04d503980bb618b13e89b1317f5e88944ccbb15dbf4309e717d5a4aa6bc4d4b86af359d5cc104b5d153f4f1321ea7892d64e165f66c71c771f5d293c8288ca1e46f96a9312f35a341d845f1147e89a1b3fba16aa7eb7688754b36585df5e43ea46fc65ad54fb9ee1065beb6517df10b4d7c95bfb63a102fb12b2f3676701b295d7eda9065d55c22486e735d1ee912d5e7d7627d252e8629bade2648a3e68b761761a5d548772aa80fc8ffc256b2b06c85fc7c5bef180560dafdb11091c798a354364f46ef7f8231322e76bf653f72055a2e8cd1c5adb7e9dae69b243c1e7b85618e5877ec0bf8e42fe1ee2d2cceea1215b003123ebf31b81e975a011d9e0cf6a465faaed76bf3543991deb747278a13f99654d5a190e8911b40a0c30875e057bd0d56c6dfa84421a8ae5ae3b0b10b075026ee5e0f319ae5f354b20f56eb8090fc48a85fd44e557323ad1c5af56e9ba729fe86d15ebc68f0d38b69b52addd15639f580f991ccf4ec34385c57fc76cf06f48c0fc66b37bb0e6ba5276cdb3cb6189e91dd9880b2ab5e4dbd208cef0f265c71f7df25a8751e3ad880f1701b2436502aea7a8462a8aff98957bbc13c5458cded63a50790c926139883e0e8448184bdd2d9287b36fb7361c2d6cf2e894b541d8505246a8b5f1caf1de360a98d31a5772a63328265a90e84892e648966a429121f361b4841db351191e8defcccb25563066c86d4e32b0bbfaa1716fd2fd1ab13d98cb2cf6c3eae36991fa78a4eedfe415a28aaa7bd6f248f96269d5365e898a59d82889c099978a10e0dfecb51a07db86879df52fe179efc35b593c84aab0226a5628478f1ba53c13e60a4e908f43656b48ec50c1df7846293647383f479f18e45ea34e224e8b70e1b6ee98162d689047a8f73a4c09ac56f3a5493c35d09b4171d1e64f6ddc5750c78b804a81dc82c6cba54304f0250c6f77646840a841328cd5c3b68829ee172211f34faf4a64c8eb82d35b14500954244a4894fddc58f3371b05d76b44a91ed9ec3100349cd4788a1868fbb4ef557336426b29fc31ad173bf7e78aaed88ba45470ab5653957a6d1eaaf7a52e9fe143d23caefb490b3a110d51c2314e37b8f1ea0a543fc2fed738b0decaa8da19fdc6938a853c45dfac1c0149ae424f61bf59a56106004df101c5af6993253dfe6ecb6504a2789844ac4263558a280a5534455be4f6c6f9e44ac422922f32fa46a348542d247ac4d396239ac69dd5252dfaea85a5870a8f4c9d69a324f00d2e29383119584e7b769a2084670af7a52e9fe143d23caefb490b3a110d5ea0d8bfa13f6f6ac2db3ba9af6af7e6af6c4cc29a1f099a3246789d62724f8774de4a3054d999e0f7183dbc309f628f8f43a8596ed9fe91314e8727a7cd8b6a0f8a7ab951c4e805eb7f69504e59516d063b8f4817d1629567046b254da9d4e40d3532168df74fd0d3fef50726dba414697a2baeda5c3a75d814a95c952cd2df12ce1fc76161fd3ed9389fd61271865d88ab5c377dcb88ca9c4915b901cd47dd05cefb1d1d83c411e9da23a9a11c212492d15e277e8618bf1a82830dc6f6097ca4c9a0112555da940f60ebea4e7bbf905dcd8accc6bac238844c02ebe80264a418e24b6b2c51a1f53af894dbd9b88cbd97a8f73a4c09ac56f3a5493c35d09b417f3c065733c865aac0da5f5374552fe667623c6c9c2251a9bd5896770022b7508e38093e474ac78783aaaf13b7bb27a4359041679befa8f323e1a778e2dad4d6441333cfe281fb5a0ef7829a6e0752929f9335981547c06f9d34fdf55881677c339edc459306abc5ea929e364ebf173e583d0254e53c3ced4518bd372e20367b4d2240816e61f87deb78a5380b8eec83beacab4706373779c3e72d8934e2997e0f138949ebab3b358824833c73a701d0aaf2be5ebe5dd49f2f1a634d98c895fc06dc613aee7298ec6ff84b18bdbb9a43c1a296643a342629e5cdfa17e3b30d0d7d22821953e14ec378eaebb0244d6058dce05e6018c8afaa37a85aede550f79d6341465b1fd1ae57169c47df574b855e026a5dee76f9f24d4e96c72e8cd68141c75c2664bc51e9550a6c7f60d4d290e2595b5d2f38ca8edc6ad37005e3af344cabe95ad6b8a21fc117fa0286a76fb7d656a81e087f0ec0fb5c51bbcb58cc85b8c8e9e80f3e6e6e6a8212a0de05b9b52408a102b2628c379746500d42293fea11d39dc0a77b3f19faa98a2a553d288a5cff2adbc9a27195ee5eb2fb3fbe71fbd6a4f6e6c353e8b33c6ccae8a4abd5f53c49043006d7a00e6ea3ce0246b63e4baa59226ab1719fda12ba4cd0fd5e81b3bd940a4bcf55d1330fd02f3bd3371c0c6b7fc1d8fcc8b423c42dc00d776779ed2a65a24bc9f7debaf6ee197344cf8258266242efe8019dfc832eeda37fbeac30b6968ef1118a14b86906adac211ac5336b459468fc853e6f7c0cf1f9887cd78eaf51d6fd6b311a68213f5ec5b8860ebcdf1f19411c65fd5d41a41e69d121566359b9f7b554305d7eb6d0965f76abbd72272a438bcc4286c58de72121cf84da8c265154cdf620f04f45b4ed86fc3663a9c87d8fd0a043821d19126af1d96e4da138653de1b7e0c659d06eab40545b489317aec54547029b4cd6b2ceef536d9e5d2bcebc042db882cf5703e49fcf12a94fe4da59061e6dab6e94a44676ba1643ddeb239e80a5e5903b601d8d77dd1b49df9be5541f40bae47f16a73e2307f00980446d9836cf4e3a22f7417fb4d99b29e6032457e94d78224b3313cda4613ce107a331a1aa8044ef47d18f5513f060aaf811bff3fc25814a8c042a4cb12c5505191fd28443832a0e9d408acd3904466bc0bd3ea8a645a0e299c773d407a33adf729cdf2addc83a15a1a6b505dc4c471b895d4ea0fb8c5f1c5e394f6681512f7344f0444a4414814d345343c98df98898ab688b139aa0a4f285fe4827bd8429982fc8c57f89e0e75da2e7c03dcbfbc4e9208e48400f7cf77e0bcfadc8faa24b909d93fc5216929e0a5a9c686272d6d945cb1fba4988c7f61c13f9da2952769d6a33fb49a8c472906ac60ea389577f67f56eee2ebc459eca38ebdebf5c4ec40a67327cfa3f54391c5e8ee788cd6acb93a15de746f3bf07f7283d08ca24b87c3108e5023d0715fec07dafca94fd6a27b602ff4891485b280fe948fa02d0611e0982b51222915892eb5128099fd407384bb4dfdcc93810e2b78646371e6f97a9dbe2ecee4f430e908c9dd5c4b153b4551a1a418dd6488813d0f1ccc72324869aff11903b87179f5d9290dab4d3a0afbf2d2fbe913d31e56cb0dcd1ca2a98b11623a1e6a8b7275f7cbedf879874d958625d49da6bb6968dde60084bcc5e5175a9f97182d5ad2df3576c33f698ae43177171bb8b662637c30fd96009c3fa38efb48c913ec11d5888939c696e8d49f067a460e0b4f6e9fd37763c7ba1a5306b7aae6c20ac00067868f8cb0f8511deb697b7c304dd90294aa9f54fbb4fc7c21eeb1ca88b34125ec1375d0f9291d3349dd9aab3b9fafa10d1c46efcf1054de3af3f746090f7045bd84cd6a01ef6bb469d4876625178b49bbece28bf49156213adb783b58eadf6e35d73fb18553ccc048803d566d78018536ea520efc47d79602905a6a6d346d462fa32b9fa2a6f2a31634a9b43a9e03259bbf3cf3b3e529c511f50e881b2e5396c0ee89e403c9ee2304f2a7d2f2bff2921f87f6905293e910739349b473355a7032f2cf05f8d77d6be74ac31529a96bca9b616d8ebb4b2ec3184091dc4b9083ffff87533c71ec6b6af4caedd0b29d645dfd33994229acb1a7b41fb9c85b910447752e966e32931a984d9a488e33a3f92229000f7ab7a7e774018f870c34165d9584d007b144e67c4c6350092659cea980b3fe77db42fd61b08318803156ab9cd82013d7f8368eb78a478b415fdaa202e152b7f576770fdb5ce2011266637541bc4cada8d27e9e057c215686622ce44e7507f484e029a1fbda3fab47e8d8683858d83f07f3a0f27b80475f8b64bb0bd44ea68b1fae81ecbaabc061cf0e78fd8547ddcf540d4d94212084801160857dae02d18fb827fe47a03b6843fa8982a7be16e742c5b73a85ebb8fb69efaba0e69c1b36a9388527dcf1784915ebd10b5567798caf813c53cb555ee1fb79088cbdc5c405c9f8173fa3a9335071dfae139a03e20c0fa69d76425fcc52efd577dd38b0523011e8741b4b7d6fb6840fea19cb549edc6ea02ea5b7e605247764e19ea1dbf282a335626535f2a3ca33e464b7f014eee1dddfb1db9ea6b4aae42a0661e83531aec16c79cadc6d3f093b760fce59b20f420b0c38bc10dcda7fb6267cc0d1a556ae7b678481ec585246d6bc6317bc59c54d3bb32c2c27d5f09cf948b59796400aff3fc25814a8c042a4cb12c5505191fdb85e46a4c2a5aec1acda7119a43476874c2335bba03fb5a09945d577662688472909beb25019a76fcba22afaa972c05da075cb7b14cf0262adbed4ad0f2ecf64966af9fa59d9e24788417937e0dc56e41b81728a66175a478063d0ad8a7044cfdd6e08d0760210e5590dd070a10185fa1cb7335d0150c4685f3803286152514607c9438d7368d328fe2b52daeb76bd410ad249695d76138be689a0a69e51d17256e032482f01d3f62ef8dd915805eb1a236803e0f7f3050fa177ae2016820b1d2533145c37a252374675ae52d563121669875783e3caa2369fe11ffa75e0d1980c40ece8c5177a3ddf34591148e47f81244fe9eb2aa9d046139b443e8b53017fd4d2f7ab045fc6299c1c5221bc0afbf1137791352c1aaeecaf082df56114fb8104783f4df2a34e89c07cf924e9a6aa43a560c09319cc8a690f7417a990b5d560797d54ec44ff5cea3e79f436d6096061bb0defe81d4c1c516c7903ab29dfee1158246f6c8708520b33b6faf524225ead03420e750bd37c1705242dedcee510e3770f9ec08a91a53cf0773cbbafa1322beac133419610308bf2347bbf967b13ddba9f7c9d654252c63a541802c36c548040903cab468e91c7eab8b067621cd549cd98a3e722425530d0d388331948f57848b8a30e7089abde47778b4ed48db4ddf2a1bd976ef5273420c5180949e8da89e2ad29a43bb41e39dd359d2be40d9a15b1eafccfa91a1f4f233873d99f9fc89c729ffc359be3fe7ea8352b54526edf5ac8cfb136ad2adcc34b539ac6f76c9e942a2a13afaef6d9622a4f6f158fd5821c0dcac3e338a0f71ec26328e34753f7193fa36b5a941d05bf17cb8388df3180708200ee9dcd7feb3e0df077d9e65ea1ae6f0c86edb19493615aaa495c418fb3601b6f52ffc8e0a539fc58199b96c9cd076f17efda378d0b650e99e626958f64b25b22e9f235aba5fe24628a6c89d8ef37211b7cde2a59b14918cf9a24b9b500a0ec78eee4ce70bca3aa28a6bf069d8e4f6f0c86edb19493615aaa495c418fb3601b6f52ffc8e0a539fc58199b96c9cd070d0a8636bb3d760e3c1561518cdc357c04f9659e28303192b09f6555e6fca96429bcacbce430889151016bd5b746e754b71f5e089fb151d806b28f1c70e87c10f56e86f283e4a64be3f495038523f2f60cafb63779fe5e3cf0aca78d31e78c558c9e5a9e6b73d178df77e20eed8a6ec6578643078bd5ada3d31f11af2e6a056d4f311432e51c38f20a834f53af5cffed838bddbe9a46d07d69b7b465a1b24801e3f10098e782e8f138e78dc3b3351d4b2be67bfee6201dd07d404e351e005ef22498881434081c2c071b48ba67686dac6e5c6006e566d351f79ca0e68e41e33cc0af75510602ccf86c304be94f5b74bfcb1877b1b2ac4465a15c3eb0f3e1a9afbabb62d6dce4695a735d3c70add8c15f399b19d6dcacd14714a657b7724b016cf67283a64db7c68cba4b5bbee38c429b21ddef9d74731aa3dac5aed4deb46e50ae39fc801abb3f725002ca2a8b0bfe411a9d6dcd8207eb05789505f3c8b6586735a77f3e403f66909ede73191e93659720b351899092e78edd888315e4b90cb0698938b0f7b56fb3e47c590a880198dc9b665783fdee382f4f3dc632bef839a1b654e912740f1649407efb58016a3dbeaac1a9400216b4ee7971b995709e33f61381228c3a3aef2e6082f3138df188df86c20c934ca1dac01ac2c70c70e7055425d44fcbf00a95b2443f8ecf8c86e58c155f4fafe26a09cad59e1de884722274784d1e679e1decfb8b470a7c31f6406a269dda93580a5002d8fd6eb3a18df961f4f7cf78b40b4a8b81f28a2825ec3fcf751eb67c085caa1f5431b2e0e53f0f530abbc6640ad809e3b80a328e32e42e0f548de93f4dfe71c29580912ffe12f7e6361fcd9eca428934b4b923275e5860036280aba4cc3c1f7051de4bffca3ec868105cd246ed24d04575211dbdc7f4ec6427a668c03f13b63705c19133816bad4dc29fd29803c991147281fbfb16e47e0a3d892ee5073302d909ae0aab8bbe76d35b9429eb8eb5358f041eee233da5af0345e75f4c3caa9953485985ecfa84d078c0af75510602ccf86c304be94f5b74bff53c73bd1f971e05f6f693c15c4fec604a630dafbbc5b9c2a00647db1f8eeac1ea6e00d8a7efcc9a98dd0c56bf451263cbff3b561aa1435588e270ca912aebe08953aaecd045ee1c2d1c66ea4e75db1a838bddbe9a46d07d69b7b465a1b248015bc38ce6efa904f7de37d48d17121e30a41c42fdc92e70e73a50f377e9e55666f8c4c2d1772fb9f45533d961a6bf515725d7b004190c3cd14dd45cd0e54c251f600239fccc521751e4f3cbd581a0db52f1fa5b7b1ffa69a3fce074065cff40d0fcb5df28bfe67a757dbdeffb226372fe641673423d3008316122b1fb970c7786ef1097582641ddbdf8535a4a263ba60eea6e00d8a7efcc9a98dd0c56bf451263cbff3b561aa1435588e270ca912aebe0c7f1b2f6e21af124de43180d5db6a64ff1b972632bc5fd0253d5455d1cd0d672a3dadaf3123a71a8e1ecbc89daf47365d7a70d3154f994cf8e38439c7392f1548c0b35ae8234e5bac2b7f5b4eef0c36b734c4acb8b336f7fe93f7b4f4817e8ddbe3f119e4fca1681025c033f65ca3d60f1b972632bc5fd0253d5455d1cd0d672a3dadaf3123a71a8e1ecbc89daf4736581624351120aba27ad40c80fc35165857f4f9b8472057f0015db6c412452b3c525d7b004190c3cd14dd45cd0e54c251fd658b6064d4e43403452acfadec5345f473bddaceca3a6d32b5e68d425019e397b962ae0d44c8f34fd9a8338934cb1f0907c4685ac7a198498384a157ae63ca4599782beb5a2052da424029d945d49fa34a2a7112cb30d84b529b8e5ef751b491f6eef99583895bb6098a00b14a2d8c9dd8804675a04e2d0d3b20ee06147427d37445357120731bafb4b680be6b3cd528f63d4c7223385299e1694e6894f7d823cefc26e151738f815d17ebc52d5400251fba18b457399adce4191e02686a81ee678e88e294b5660ff6e04b85b1d67eb5f8049af628fc21924cf7ffb7dc84985e9911283a64c6eafac7ffcc6b97f042ffaf4a8a4f2183d70f369e8777f5838f215a78e474f8814e794900e777060377957fd2485b5df4dc115d20401fcee554d84baa34e51e84a0404090e110ecf2b7d96c2112054e06b6617f742e14f6fd9c72333148289505cf69fdf4aba82c907fb57fd2485b5df4dc115d20401fcee554d46da84bcbefc1e66a7d74870031418fcb8c1966466757372c03ae8aa023b20b9e7206f05851dc876938a70ba86e6f0b3fafb9982556f19613a99e141f5a7f9dd1bd4d8a0ab6b399370a6ef696412cc6b67076f171430b4a24cab8e76a30ddf2b16b2e94a893c3f40fe054d89b87f95edbad569c611611f074f33a39add0b7534c79eef9802c516b108f857d808057a3a756734e1e025e2951b2c65009135e08ad04f4299f573816dade7ad9822b42a93d401328b61b91f41d2472f66fc5ebc1ddc020255cfab90ac37614d0131b92eee8f5b825d21ad6bb6bbf1e093ea378e43567a128dda192665de06f00353b9453bd057c19ac0ced97760f9aad9a5296c9f42d05da936b41a560ab755047944293836864bb9a70b4e56b1401ff2dff156139e8dbbe3b074aac5b2a16305e09c6eb457996b524c1d1c68f1ad93a8dca5fb9e644c02347d5c8130ed93c97be856873c016e46a9e927c403f3ba4d7f252ae5dd76178dc2d26732e14ab8541fae5ebec5d74425aa1158bbf78951384ccf167a3f81487dbf934412c2b12999a964f37aff6b8048a373514c76596365a7f150ede0485de875830ca1d64d4009c4ec6ce1b1152f17a6c29bcf4d6f2a66d4f919b8b2d5a0fc2165bfa504c7074cfc853c0d00b0190fdabd67ee9034080cec2283e68413a32160a0f4b22d465023b47698da1a8b896bd315e79d189dc736bd5564c4300de357c31e53921628079110fed1b1ffc86eea1f5dca1a85abead54df3cf269ed6656aa5a831301500e7cd4d2b096a8b0b5fa299bee7334bc86f59a414303508527fe311b63cb06fb6a915c1b65b9bc22ef4d610d3b50e2cdf553022fe5bf43c1798bfc6ce0e29e278b8648cc2ce71f70cad63b2c86f5d86296ddbd6941b07d3151c0bc0928e373e44787d193d098877e9911283a64c6eafac7ffcc6b97f042f3bcea495db6f35f129aba45898f2607d12c97d2de481fbc5cdae0ef3d8780e66d534fecaf11457c532563a02b8100ff897f392d00dcdef8332da36aff226bcd099a3db7db754d6cba12e81ae6db1cbf87e1c3f2ee5fee3f24b3f465f5e244ed3fcb5df28bfe67a757dbdeffb226372fe33fc4898762c479095c4158032eeb2a6785d72f981843b767f77839cd733dcd96a438ba49296933498a2b75b3fb95e0afb5697c5b5327372a775d4833fc57604769a7593daf12486a719093dd4fc6a4af584fb61ad43315f617f15e54e1e32f3894bad6b9701f00724af0bc4967e92ff0327c52d6205d47ccea1934d3410bbb92cbfecf7e4acceb9eea7995ce61054e21c3660ac1787f15eb5e3ef3b9335304ee39e5852f1b5f561cfae9fde23da8db1b11aadff4c21a62f339b43b302ce8a87c6ad8d87e0dbcf1c349d5caa9a4b2f9d4eccfaffa6808973146d75f54244aa8c2c814a8ae77ffdb5948c2562975b37f01f57486a5142d1d62b47e3015b19be664d2732b1962d5ec2044975200a15295157fd2485b5df4dc115d20401fcee554d52169664dde73e12175c2d361de1e7d38f5b825d21ad6bb6bbf1e093ea378e43550d839928a02e551156b73cfb119ca678f6b8f9ad7e1d26172aaee0bea7549f67909e882242fa2530f2dbc0a22c736c8f5b825d21ad6bb6bbf1e093ea378e43a706e5521270e390eb1ba7b05b4c075fb844158869be84675aed4f5b2a4de9040ebd63e6823c0a670b9f382b50bcfa79514c2c741026a7a35b48d5475a4a2d22105cd246ed24d04575211dbdc7f4ec6484760be984b909ffe54225d371f9361e3684288eb543b2084201210bbc299d33ab88bf522a3ef351ef757eb90c398e7aec32b3e79446a3b74475677169075d4af1b972632bc5fd0253d5455d1cd0d6729e5dcd64456b0a6cf77d477f7f80a1de5f885ae93d80cde731c7233fc81a848cbe10cc474c2413bbd7c83abd5c086279e8a9623a4e4cbea58d568acece65c253a7e2267a5378b79f9045ee61d3d7ec85473bddaceca3a6d32b5e68d425019e39ad688165fd43d2926040f5319b9d80553e0b952d4aa910d47d89f94ac23132f7429570e7a2fe15931d15a96e87c05de76b7b5598e5d0cb9652a69de288ab3d8a66c3b5a9a4f4c81b59be66b22822c35291a4a0c8f5726c4cc0e669b0915de0e4b3989f5208f5d4280a41e6e8afd7a225c98b8af9710d3de23b2d3db562b8310f5a48c3bc70e8e51ce2299970025605fd4fe3afedd0f33bbf02302e1cfd8c9fe6c0af75510602ccf86c304be94f5b74bf6664c7d415a9cc08f2ef2e38dc30a892b58abd7a64a36c0c37c4bc5905853f2cb9a969207e975a57a4e244b14d1d4ca83daebef93f57c5d008f50d81e557d50507618487670c8ecb13e8021f8fa92ce26902065f6911f7f814ff6525ad6068e3d36b36a955f9d73ba0f941a302df2e43e8a9623a4e4cbea58d568acece65c25377aaf27001db142ef221d748d8fb50ccc0af75510602ccf86c304be94f5b74bffa531dd5ab8a46fc728e4c1817990dd1c7f52040ae60f1b4eb7d6285c586fae176194b6acf23b0650946868d10e9bca908efdbdc9e29c886dfb9197103543718be7b24f69ba9704b4361bca7c38f7d9a7920a264ae3086011ec0b39549fbe850ae87fb1a1f989653d4397599814300c3d7edf3017e021851e80dfa13ca2c6f6fa5a4fe166e6c04ee2c1a1b27851fb2e6e8a9623a4e4cbea58d568acece65c25314e12d97f0cbad5e3eaa30fd767134e6a6814e94723074700601004deb28f064983d021e9347a55763901817715af77f3ee21242036777ca71471690fe80a732c7f52040ae60f1b4eb7d6285c586fae19fde91c97eb31020483db0b3f4982a5fe8a9623a4e4cbea58d568acece65c25314e12d97f0cbad5e3eaa30fd767134e673948af8018a98f5ac4ebc5bfc5b6092e17adf502bc7cb633b7ee20250987491f2f30926f202fba19833a094d534759ab0d3e481deb1ce204921d3e9c719921a2ca6ac3a03cd1f3be1e7a42ece22fd005a197f926341f0a6bae1e3cf71576d099805e9853dda6fa53c55991c214fc2583c4cec26fe4ea7f6d3e17954717aef34d6656aa5a831301500e7cd4d2b096a8b22f63a3c988dcd4baa4dd93dfa4cc97db1e74e35e01bab8301e4522f66356082ca84abbdd039da6689454e235e65407ee4d879346ddd4a8b4b64802bc6c55fdcd1f9573bf4af2b733bf7926448c8e19dd6656aa5a831301500e7cd4d2b096a8b22f63a3c988dcd4baa4dd93dfa4cc97d5686de94e4a1443f398ee342bcc68fc7789766a2aadaf51d0fa248feea8cdee64fec6ccc9cfbd6923ca3d4c44f3700cbaccfe7de4f8e5d9c4dd1e0071cec772be02cde882ca75afc3f3cec9637de65d36eac5e6ff2dd383644c5c4f36673296f6b7b5598e5d0cb9652a69de288ab3d8aef479cfa4ad280a0028cc6f95b66facff1b972632bc5fd0253d5455d1cd0d67283e9a463dda610241b86f1aba624083009c8ed009c004ea6e67b47a61f7509cf95d42d9b3ad2df6518f1584365a121ab4901530211e4fc06dc46a8a26ce21c07c882bf2d8875f602d0e7dc1a6ea3cd983d7ed7de2a05beaa0bc6383ba1503d8657996b524c1d1c68f1ad93a8dca5fb9e644c02347d5c8130ed93c97be856873c8e043786da355fa9cf14f73d1a5142fb3d7ed7de2a05beaa0bc6383ba1503d8603f8d7806f4ae248b68decd51282e7001016d36f159fc3800e248b23abcb286f1bdd6e71ae769b6c8769d2af66555e0e7345947a0a91874512b0177530fbc1b447ba7e682fe6d82d35c4173ec0abf41d9c4e7c625a565ee82daa0f90fa0429c45f1070e572f0baf92c72cc202fb2a007516b41550f8285d298fcce5e5df580ca480b241a142daaba3410f71ae71ce64d39dc2d4f54c8ae0c152c1a62d63ced1d6a2feb767868ccff8d4ee36ddc4f0858ae2ec9db4dad7ae7de8d4e7fbadcee5c42f131d926bfe899a121472c4427b59623e43e9817a7c580deb791ca351eeb947b327648cd1c583cbaf585e7368000da4ede50e82da65d8e9bd60a12595987d409658ea20a1a7d6c6319570c0f1067e7f21be7d4ae4ed7157d84a2b035660e9a152f17a6c29bcf4d6f2a66d4f919b8b2540157a7ae1c46b80b06545439af6e51ef2fc212def97bcefd1057fdaacc3298cac6e807a39302505594868ba98163e3a63914d1fe948643534e2922067d58f2fd47f1d6e30571053acac10570a5e62648bf2a8ce4c1c758b2445f18afca7dabd6656aa5a831301500e7cd4d2b096a8bf644407754f60cd6b740006667a24b2afd62f43305433a7bba472516dca787b73269ec2b7fc52080846523bc20ca94e2cd5f1082d05437be0c4eff1d5675ef935c52f2c0dab31a0adb95ea81484ee01888c2b997a5313ffd775c040aff5923cae9911283a64c6eafac7ffcc6b97f042fad22fe551690bf7d09f06f6f11ec71bb97e1bb45913f142dd14edf425f5660ca117de5b003eee52a1c1299e630dac7ec7cda94f3b0e8487d3f70e135a645c25ada52df5572b04678ada9b1f24b3dac2a54a42150c4af5780ed9caa2c7aa510678f31a1ddae25a66bb315e9acc8f0f9550d6ab65202628cf0f786d8394cc020f4ebd83fe93918bb294aa0849de6bac9db3236afc5f0dac8e9b6a9d63aa1b4957431d59e1e1b2b7f0bfc66fffc20ef7af963b811474922960f90ddaff6c3b4ef5289df22b82266b166444a852000edfa3882d7fd61e65551c35bd6aaec44c2c151fa3d7183b5ddd75c878cf491bb503219e08a1e4bae5b1c9089e8dc9976d4ccc2bc51454c8e3d5c82d633b544ef4f65857924ef3a244ef7020baf15c2762a728b5dd2f094c51c263217ad080b4ecd7cf037d7066c4e73601d8ba2e5abe8c76efcd1a98cf8f639850fabc24ae1bccc39ef6c6a26504ef7b19ecf741d8c79894afbe277bb370832e8a03b73898434551dd48dab9d7ef71fff651994a05f09ae158bb566a8bd6badb281c1ce95575c8febb0364b6256433c7960378d538445fa2d70d3e0f18884d1bd6614b3970e119265a517fe703b5a5c27f6c0c02d247ee638a7f1b972632bc5fd0253d5455d1cd0d6728950b7d658861bca51fb603f3ede6616665d24f00358a79624e269e01d15c747856723271c6592f26255c7ca91463463c36d722c3ede58d4c17913acbc4f1c1a88aeac4fcd0dd71c8957926a082b6a858271ecb3dae3b689fb7c427388807cbbb688f90a30d2fe44a811fd0f78fdcb4d487ba922133906ab6a6e5ed7bf8faf303618f1d53d6eb16795a9c49c52843ad129a3169710899356247aad95b78d383809ed9411b924d05d5c7da8273a997a96b36bf4beeca94dc778823373365b856fcba5df50ac4e38e3a0013b2cd07e32dd373130c59603e13cb4b7f2a96c4f9b053348a320992c8ffbfef407fecb94e88e1adc28cacd379d9faa5b32bd365514822318b34196b0294403aaff3e9ec9e39d473bddaceca3a6d32b5e68d425019e396f8049e046addc07283666d5a009a4af1493729c1c3f21fdd17499db17f10e6224dafa537f3cfc90341148babd5516961ba21eb8deaa317151c7a996aa1593b0c93ba04aed6ce6fdc83321ebd751a6d9105cd246ed24d04575211dbdc7f4ec644d84eb1eed35a2fb403fa9dedd0f3bcc82ce465558ab50159a3419e15004a2ff5686de94e4a1443f398ee342bcc68fc7867135f96e46f1d1ce2a82e335cfbf60f6b8071e5c209a3938aa9f2eccdb0bb2422729e93a9424bc369562787c5684bc5263921bc97025dc3edff538447fcce4acda78b0dc84a288688ded55fb06ff3851d966bf96f3eabf081ac93d5b8d95d8f1b972632bc5fd0253d5455d1cd0d672ff02c85b0fd64e60d19b8a84bba3ee086902065f6911f7f814ff6525ad6068e38ec1928055cc13ce269094a22e4143af55a94f6d300acc7f6909386176bb9a6f830602935797f16e251a6638cd687d5343c79082cb82b23583931059d900a776d7e73f883d6e5547f27c93266156a73d6fdb68c70e9ef9657b9774ec5d98bc881c4bd772a4cc81b09c3a651006485e0e478d1112793498ed7ef1a36312ded5e6f34128450175f4748f10bcf5de2ae5228e1436cca7af4d5881f2433ade580cfdf58fc5caf7e00b34e50455a1ab59ad9ca6afa5d9c7c83997305b9a93f3c6de3977f38e36ec2ad510fadf98b6bc32c9c3c5655b64d8e0360efb50cc39acf2caf463d7c416278ccf97f794b0dbc1d7b0da12b414a258dbe087e157caa664c26e927ce73885bb3d7a3e422e430ea3c803499354d4fcbc314401001587086c80dd3d0eca9dbf98ee028e1bc953414519b6c3f44a13d656e5da337ae8b42f343f90b977831b2dbebc560dc74392c03f86a93bd66c165f603b3b4e51c2e39cc29d1a28c3fa56db7d792af59884da13e16bba34e3fafec26142d9e3c9dca2018461da51ed10c94871287c15c7db0f680a908f03c7bc82c9bb9a1d0ba7be53a1fea75b325ff8ba62fd7af9b06f72cb5c7c903944fd78375dd1541c7d6248c6e6dd63f416f1371d91352741d29693b4f9ea95cb4129e5b01833f782b88138f8aa6c7b25b6869ea6340459dc08993a06441a4fc9821a7d2b00d0b69a7432268a796203df3401d8951264e308869a362b8f51955673cc7bd6ff1023fb0eebce83c0af608dff363c96986ff7a72568d2a3649905aeefbef557f6f537edf07eaf9002d4712f010496debe49b59c3b1c9f9168c4746a42448fd1caf05cbfcd380085e85c23c0eb7cb19d9ed3c116c058394da4ea4693f7f2dc346a78691b61975cdfddf9ff292936470981ec567bbd3d1347b2e20a61b93e7bb51102a4d95bcd1a65ec45457d41a25e5302079156bb5c92950e05680f9177972ec221369d530a3facf18a5aea9bc015e6fe39d6c160f72a5f8a6123b94bfc48a85fd44e557323ad1c5af56e9ba7edf3b20a7a7631667dd830e2cdfacc2c685d9cef8928f7d1c201303913bef7163f6c46d9d7a5f7b3f3fdf2325701b120fc48a85fd44e557323ad1c5af56e9ba7cdfc2145b5a7bb2873c9dc57ac91c08698b93b7f9fdfd3f26941baf63939d59ebb7afe6bf0853a97fb83ee5e283afdfb0bbe674712f2544a5390f3287eb5fbac6db3ba17e75f8a4e049666dac370e386899073bd498c96d081016c79e7a461ea3726ffed5afbf72d4c6457406d7217577f82cf332bb98d4a58fc2dc4c0f8b40d202c6388dc875fa03da757a9aa83b7fde3fafec26142d9e3c9dca2018461da511db85c87fded03ef682dc3b4c5d83f5bf09bde0f83c6dd159ff17a7203d2ad9c6d5aa6d86d5319014874c9f1ea456f29eaef473a02e8622797044ecd30e4eddfed31f1ad128f07b666a9339647e06ffbfc48a85fd44e557323ad1c5af56e9ba7ec3220d847cd6c70be3c0e377e9cda59bf2fb2a51efb2576d8207f2750e0a45b01887a856c1adbb3e6b9860a8862dd905143d217bb1da9db90f27f7ed6a43b544f7baee46b64a2bd9543f6e06f32d4f6604675d9a179afd09af300d545e937445b37990f9dca73e9d74c224a3eefa848f3a82b6a13391f51524ff18cd82c82e558392b0b21033abdd637058cbfefabb24c2335bba03fb5a09945d5776626884794b9f70ffd68dbe5d68eda187ada127ac317e796cc8bcf64533e9c7b97ce0fd0e05e8208676f72460b7bd60ef8c94f90946c21c2e6abaa53312fe26b8c5880f8539f85f31137d690d8fbc00ce5141d4e700c87a75527797cc28f22599fd8ec52753387bfa30137281f445bc29c305c745f64b7506d22fa5dd90a5cc9c736323b96ba0260583069be91c9433d2a83053914e5353e45d4e06264fc9f8f5678dd1570df91ea87c8199df5382f86684d96ebc84d703f7fb4af56bf8c58dfcc2a754dec5d89e5d276dd5e4281f388774f4cf1f09bde0f83c6dd159ff17a7203d2ad9c30c050723440b6c7a94f2789fbfdd6f2c9e81cd9ab38226458e0fbb971c0246b223fa68267cbbc2820cb7b857580b157eda99ba1ae61d0cb69104c1139679ade283abcfca3a5e03ea1cbddc48a311075dafe168cb629b1cfcfa36dc3238000113a17717f017bd5f0f76054ecb1422fe962a8cfb5f0f44f94f6707846b73647a0e879b2255b02bdd1cd0b12816aa8e20f6112eb68ff5455767a572a72a476767de429826d1be137f25cb884db9a165b5ec72af47e7ce9cfb4a9273e737d03a10e8baf229199a26be6df950cde990da526ef3f0b78ab296af140b55874f5c069781681ffbbaffcb51627cd41fa0d05efd3194520b569ccbee9c4dde51e1b80948b491a8a8628074dacdb3ad206aad78190fe27cf2aca74ae537a777d63ad91d87fed25fe2da2e8458bc9f3b8da6b3b0eeb35ba22c75876687fd2b03ba06ce72a18e1e861d5ce532381a54c2a72689ae0f39c8dd335cdf6a4de884a2979ce2ec098f61cd476c00456940abbe1461207a23b1dfb5e59db74b2f781314e0d28f04d9a71be0f604bde2f218419659457d62bcbdf54de9888821bee2560055c6b18b341b073594508aada376f1c2059ea163b21fb8b81f6a6ccdc037bc540ce5bc4fe125aae44ac105ef6337c5d9dc7bb5b906fd2df3576c33f698ae43177171bb8b662dc16122477f929b99d51867591070c3c30255583a2d8d94954bb8dbefa6640f8257c420148059ab9e027c1eccd07529474a21567556e40374e54493ab3075fdf462dc3be483e185331c5d7e7035abd668843a9006f14fc3ed9a38ba4e2a4ad7b5867c59b45d1d78f40f438678713124cf330d115430f7cf588c7834880686a418ea91eb21fb29ebaf546f01eaa487f4aec7f1890a26c0cfbbdb2f2fa9149695034f39502cd04f83871544b993f3f4fcf3976293edbe5642842f80e6a05e38038a9c4df169f5da62430f3c927a5658b96353db5b8914719fceb2c6fc52fb3fcf30e67a16d290abfcf9a567a6fb8ab4fe4297aae3f78d7d4a55d42f380ffd0489dce6c51b0a3b603ccd2c69a248a564ab330485fcdf123b6da862511408dc17c662c6bf2475d3ba4ddd5e0e6d9c61d8631be7f7f33f220f684bc5206572ab15012815727bfbfd9f036743f6297dd90600cc4c40a330971ebda239c32bf96a63dc0aa8494faff589d253fa7fe884699c3657bab6e93611946d872e56dc5cfb20d2641f8d98178a41fa186e0df09ed2c0d5234f39502cd04f83871544b993f3f4fcf0370c98e29971fc3348e1ce5efc1f5f61e392fbb8d4fa3f172aa15480b1c74765e2c995ce2076a2058c818ef2ff2683e9c73f7bdd5c8b9129525740513251eae6f1e8c1e8bdff9ebfa42ba0a22f3433569a8fc292ed54671ea4adf1e1bc7db377957d69754e7fff673219231e96cc163fcaf5f9d117935afe3f313a1c5d56926388ea7e910cd5a0b222ef7cfb24d620f674faa8ffbc1a703e63ad6e0919f837ffa14335db8758adcc913378aa340e4d4d4dd878a26931961e94f1c81a89ae91f4c2335bba03fb5a09945d577662688476260a23e45c2f7994a6d23b9fbc557b5948783a87784cbe63e79d47a0c04ce5018b4525893cb886b01a904001a859dbbce83238906acbc9f8685d1e238901a4859af21c26c0f6b1fd16993805af9a01f05de8a383cc3f3bf342508baa7f1501e5341951c0a1da316b72625ad903ec207acd5c66d7e30e739ed784a2b071033516a565709d51d3afdf508d7ec55ca8c56f3247932521a1a8d0bb5bf0c7526e989a5d73aa725de2aa16370318c0663104563e640a0d805e0bb8416e103c0fb0123c069cf742a727952d1653b47efdfc7648bfd0809fb83e3329002df1b1f1cb344fcd03ece4d741b393c7a5d0a4fc412d7b4dba2ba6a8cafdd868df46b89934d2a45fddbbc92a33340cbcb20fe12706ea614529a4367a09237a89427d0db99e3daae3b21d9ee3dafdd65474c9bd16903cd207fc15c79ce16ad79ad5bb523e6a5ea199e5fb97b28c9456c69e810d27f8ac2d22fead68b9780676982ecdbfc75d87d8c7263485cbf04d8930ec10bcdf45396752a7194980e3a5c8f5519b0228fdce12d0e625195ab9fa60ed7762b96a2a9410da9e50dfbc7d4343a97c1d9305f52dfd8fd1009c4f3fbfa7c599acca21fe189fd0e1697be03b756ad87bdfc31a9cdaca8cb28834e05a8f65109d6656dcd46f6f7070a46a29332af72c92461e468ca31d6f28d56e5400b98c04f573f8e721ca4f656791dc2de74710bc3523f59442ad355212ff09ebf550422cff657699ceee1a4b4de90b1aea7f29c763f705ce81b0a632c270251720ca4b2d5a1204d7232dabbe8232829fe3767798ca89b7bbecea76b9887620acef69ce3692362b29d3ca94305ee3f136d648ebf8e7199834e81240f986d327b008b700433678091090dc6df1bcff2bf1a1356ddfac934204fdeaf251f5f6d158679e6a14e98aa1583573edf3272251f341dfb243d7d4c7f14c1b462db9299f0656b816d3e5640abc3871fb65dc79d75885142c987370badfa8b72739372adde0d76c0a1f38a8b6e4a1d24810dad4d62200635dfde804cb679d9f63f25096bd67fe6c2481c4ea91a226f518a166f8f1a19612aa2a8f7206b7d68574dcc633d633a62aeddadc618b11de46ec90ec08b2dbbd094c4d7dfcf4c335c72cadc94aa4ca3077bf0ca3658e3dad4408b79235a74189e6a89345e61c37f5c17a178cfada1d465025302b42edf262e8cefd7776c4f89a1500e0b21b1d0d220fff60ea19a4fedd4c06bde930588c9211d21ec27dcce6e464b535216f834ffa9181898e47fae7c95bcdba2871670e317d711e645146a85613979447543b26199171ffc524f93ebd90f0da8c585d3e5f01c6ed68ec53fed60bb943fd5eafa83c9159d0b366c303b5d6dcecd8b580902ca2c6eeff4d4a07cda82dfd337912b8423c9bbcbf37ec23bb40ee31a2032bfeb8e53cb1e091cb47d6d223fb7ef35e9e78011f5d83ef23593beeae33b3977bf6231919c210748612cfe4c1adeb5450c03b5e683448b351e4cf8e2a983298b2a530097487843ebcc9feee0da4680a217d9bd89287be5fdd0930bfef79ce1267402a0eae644a391954200ad7beb730fec1583ace940e9e2ec5eada91002b44ef29325b837debf99a13a7170a06543b58e5857e13feddb9c1e64f2554f36ca2bbd8784587c25df68e2ea8e00f993861efac5146688ca7c28a935635a3002a8197014ac9b37518b350222cd45bcc84f9dec3bbfc6043b6f3814e81f47095c6c38b48714e11e489a08157e050e554fc55d8bfc58413e228a5e24f703fbc3df969d8138c3a55e3e57c0917b95a68b9d4bd4dfae082b5fec7ef4cac0953096004c80baf86600aef8dc5254abdd9887521d4a9df07eda821d2067545dc70809a1b2feb90681a97a4af584f6d07dc5b484da3ffe1ac17ad8d43c4225f9b8020f915ee8b58f1df82c110a3e8caafe1d26b4921217ca930876d8be5dfbbd61ce9d89be8e500ca92baeffe8dcc02979aedb3122843ed876b223fb9dfd46d41f382172849a9b86b346a00f8c2725228b5d47421f00b4acb0e5911c2329ddb3fb93ef0679eca83638d7af354c12ad0b6ee4cfda888c723d38b736aceb12240246d771638b50ed34acbb7f1ba08901381e4a7bf14a3f336485fa396784978ea94e64c93d825bc42bde9f2c97a9e0179796db359b95dc56f263f4acc144e070c28381df2a1232de3009c320b340060e7f9c44a867016c3840b2a28a8b5cabff3646948d3128d3de41f2465fac845b1914e5a7df28bfabf83288cd9ba893f38e11fd6a22f9ef6d1c30d6c6c43df5286ddfd90c9f379365725407def66ff27616f3d554319b42d73b7f9f317d49833399870c6b61917373fccacbc137b84b22758eaec126be1dae4bbc9673caabfe867a33caac15f84cc7747f1ec4697a4cbe782d74358dce206dd73440364324ce9af64b04f55eb13a0b05ad7435e29a6169c2676daa7ecb3f2354d3308173296dd0095c7afc77dfcddd8b50f952a6e20092981b4c38232964edcd80e80d5493f2c440fc6a93283e154511d9385ccfb959497ee49d0534f3864fa5ceefca4eb9d515581114076c285a5011d39f5de61e2b3d75a5430c155708a6399dc9348f81cee2d7155dd897bac9fe146dcfaf3a95394b633b2146e4261829ddce6cd23b9686df8128560110cf3b6dd62de110e0103eecc05964be2b65b6764e1dc51cc87df9173a35fd830dc86aaec7e282ac07e8a0caaf3cd3fe610462254280f4ca01319f92ad51e939f3951a6283ad05dd4c2335bba03fb5a09945d577662688472c4a94f7c17cf9ea5d45e4f77f5b74dc864e8958e576885bfc43dc9d375fc741"
stream = (
'local bit = require "bit"\n'
+ aes_decrypt(lua, format(10864842703515613082, "x").encode("ascii"), None)
)
stream = stream.replace("\r\n", "\n")
fnm = f"T_0000_CC_6.lua"
with open(fnm, "w") as fp:
fp.write(stream)