devicely 2.0.6 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/devicely.js +1 -1
- package/lib/androidDeviceDetection.js +1 -1
- package/lib/appMappings.js +1 -1
- package/lib/deviceDetection.js +1 -1
- package/lib/devices.js +1 -1
- package/lib/doctor.js +1 -1
- package/lib/executor.js +1 -1
- package/lib/frontend/static/js/main.96600727.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/server.js +1 -1
- package/package.json +1 -1
- package/scripts/shell/android_device_control.sh +49 -0
- package/scripts/shell/connect_android_usb_multi_final.sh +49 -0
- package/scripts/shell/connect_android_wireless.sh +49 -0
- package/scripts/shell/connect_android_wireless_multi_final.sh +49 -0
- package/scripts/shell/connect_ios_usb_multi_final.sh +49 -0
- package/scripts/shell/connect_ios_wireless_multi_final.sh +49 -0
- package/scripts/shell/create_production_scripts.sh +49 -0
- package/scripts/shell/install_uiautomator2.sh +49 -0
- package/scripts/shell/ios_device_control.sh +49 -0
- package/scripts/shell/organize_project.sh +49 -0
- package/scripts/shell/pre-publish-check.sh +49 -0
- package/scripts/shell/publish-to-npm.sh +49 -0
- package/scripts/shell/publish.sh +49 -0
- package/scripts/shell/setup.sh +49 -0
- package/scripts/shell/start.sh +49 -0
- package/scripts/shell/sync-to-npm-package-final.sh +49 -0
- package/scripts/shell/sync-to-npm-package.sh +49 -0
- package/scripts/shell/test-local-package.sh +49 -0
- package/scripts/shell/verify-shell-protection.sh +49 -0
- package/scripts/shell/android_device_control +0 -0
- package/scripts/shell/connect_android_usb +0 -0
- package/scripts/shell/connect_android_usb_multi_final +0 -0
- package/scripts/shell/connect_android_wireless +0 -0
- package/scripts/shell/connect_android_wireless_multi_final +0 -0
- package/scripts/shell/connect_ios_usb +0 -0
- package/scripts/shell/connect_ios_usb_multi_final +0 -0
- package/scripts/shell/connect_ios_wireless_multi_final +0 -0
- package/scripts/shell/create_production_scripts +0 -0
- package/scripts/shell/diagnose_wireless_ios +0 -0
- package/scripts/shell/find_element_coordinates +0 -0
- package/scripts/shell/find_wda +0 -0
- package/scripts/shell/install_uiautomator2 +0 -0
- package/scripts/shell/ios_device_control +0 -0
- package/scripts/shell/organize_project +0 -0
- package/scripts/shell/pre-publish-check +0 -0
- package/scripts/shell/publish +0 -0
- package/scripts/shell/publish-to-npm +0 -0
- package/scripts/shell/setup +0 -0
- package/scripts/shell/setup_android +0 -0
- package/scripts/shell/start +0 -0
- package/scripts/shell/sync-to-npm-package-final +0 -0
- package/scripts/shell/test_android_locators +0 -0
- package/scripts/shell/test_connect +0 -0
- package/scripts/shell/test_device_detection +0 -0
- package/scripts/shell/test_fixes +0 -0
- package/scripts/shell/test_getlocators_fix +0 -0
- package/scripts/shell/test_recording_feature +0 -0
- package/scripts/shell/verify-shell-protection +0 -0
- package/scripts/shell/verify_distribution +0 -0
package/package.json
CHANGED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Protected Shell Script - Devicely
|
|
3
|
+
# This script is encrypted for code protection
|
|
4
|
+
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
NODE_BIN="node"
|
|
7
|
+
|
|
8
|
+
# Check if node is available
|
|
9
|
+
if ! command -v node &> /dev/null; then
|
|
10
|
+
echo "Error: Node.js is required to run Devicely"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
# Decrypt and execute
|
|
15
|
+
$NODE_BIN -e "
|
|
16
|
+
const crypto = require('crypto');
|
|
17
|
+
const pkg = require('$SCRIPT_DIR/../../package.json');
|
|
18
|
+
|
|
19
|
+
function generateKey() {
|
|
20
|
+
return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function decrypt(iv, content) {
|
|
24
|
+
const key = generateKey();
|
|
25
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
|
|
26
|
+
let decrypted = decipher.update(content, 'hex', 'utf8');
|
|
27
|
+
decrypted += decipher.final('utf8');
|
|
28
|
+
return decrypted;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const encrypted = {
|
|
32
|
+
iv: '6cc131e623897aadbf5de82c833a7fec',
|
|
33
|
+
content: '0e51c2e6212c881eb5880c7d0d330ff8f39f56dc1a5c6e9aae7c358ad4bdca52a2f6f33cf1036b4a643adc07b3272e91b5fae844faa6aa78353e76218aeb001b1b035bf0c2bbd4695b112d8bd0e70ff123e40093a457d4b7b4242808e7bab552ed6d77612e4bcb1cb9a69e8279c4ee0b85ba14ae6e262172ccb3f752b27130af9ac26803dbe39d86ab23b94c87da2a1e422daa3092f96c1289c261c202e71372e214750ee5895c7e5d25016b0370ce780763c90287dc4ed102c651f8a34e177f608eb3c61663def9b9fece83a824952a0df630304d3ebf6d1904609b116087655b89fa173852a9a5ddefba975f41f4adfcb3239ebbc4cbdc25b73ccfdacf705926987ed46e1e0a114aca3282b712f3839e5c356e6caeee203a62c0e78b7c6562a1400e4e9db7d4238e529e9ecce4072d5c75f8004fcf50d5642064ba6f2fd4a26a6e44f283b67fa4eb91df46a2eb0416efc9bcf0f71b5cab83017b6c6866df2e7627ee421287cd70269f176af6c1a596f361223d8056afd17f1e02b56df1cf4b1d8665dd2f2bb33c47a24457ea1a07c65481d7bd6640694facbf75847500c6b393180537b0f319be5183770d69907cc2acd9b528198cd9c03dbdff97f697ba72077d5ab8ed6d768e3588935b557a024c75c1a2c07f92ee3dfa6dc30ce1007d1eeb07479f0aea6d53e5966a4ed6fb563a8226b470a60a74490bf9e3ed707fa06189d2fd5c05170be78017ee7a307295c4997e5f012ff3410295c78d94c3dc191fe0e29c84ee8719ca1070a64b214486ebbd9d55ce83c811c98e37f03b539ee69fdbcae7094b4c43698632f3f7b089b7217073ab44900ce494c808b3602dc11a7c2bfc230e43a223faa15d5e6c7370f31106b131c6d8b216c0b1ed9597ac4074a9d8e85ba0b49b2c4959a60402b174bf66ae0c2fcc698590a032279c8686bb13502c0cc4c8cd8a180b4d54ce105ceaffb4137dc58185df0dab2f1cce72f27621d60b5a8f71058fa63f54de3c63c9b91554b4c5a1e21b859d5ecfefcf6b3e2665c70e4da2878fde15007eeb3c15810cf71f7a0ede74ea1e3c19e3ee51e5fdfd7ffd0e898b517d65ddadc54e6bc36df940222af9099b02e3300ce704301abbce64687dd67c5ae423106e8ba4e84a141e0356debec3fd0d26fe14e8621709c1371339faadd876d0a5e6dcb018410a95790b547de07854517340369be939d46ffb317ae124ac9cd5a62b489cd43522732b4cb07e0d2ee1294d0fe4025a71b1b59b8188c6d3a3ab2c16855c7187b17689cc1160fce60ddc3a5c9720cc0fc0e8dcac9a1f23cffa3ba21959177780116b2b4ce6ea112a35f9a11d787996eb74a0cbf2b34d73f718d3a7cd7b7410e55f64d2e51c4fbd5f1bb0a7eb7d5790a89f2e83823de8019a26b430113a4fdbc6b7bec63be0164326b02df88961f106a13f8077b2e00ae824a42fa9432e02a79f8254d7470c9be592c4aca55420ddee7fa6913408d85e6334268ee4b9bd5070c508cf147fe4c669212c03289560f5e563ebda99f793c386f2481fcfa510b5402db696f59d0270529971318d2270abcbcdfd14fb0a5f1778b96aea27da201350fb024949cb9d6d7c8e4de9dbd9b4419aa535483899dd299dbe536f05e490d93d5a9949e63253de2b55d385053268ca3d190d63c9b63d776a6103c74bbd19a0277e9aa80610f5d2d671f10c063ddc840082ac391058eb1823c6d0790ec6b89dc603c46e297c231df585e3d7221a6a9f2c56c92eb3099c741082908585607d84b0a6c7109286d72191e6d372dd5a8583e5a5d9584ad37ad9e5c82ab6e31187d42f42d501d985ee98399fef38c101e4fed04facde15d219b58bb20ae242868b1a7913d44328d500eb56c564ad37b1694fe687128a06b4d6e46421e476263aaaf3af83fe3667366e4d49c61436d26d1411e3262a4c3eb3c905792be3deb4f70e9a5416b9e206c618df11bf1f0c270a7eaea95253a3a29d8ff47aded43828ef730d1868140ace6f2cfaa47222b6768898c64434b73280f31eedcd37d9444ccbb475dbfbc5e3acd2a9ebc02797e8beb83cb52bb77a2ba53b73cfffed45c002f022b58a474137f1ce2328279ba560b43dc4014b968261fe9acd9d44553d18dd3ba40a97d2ed3f307b7fcea63d8a142b306a2623ce00eb266fb84d6df0e6d64de3fd63de10f144aea943b37ccc9e8b158573483ff49099d83433269c002da0e7a2e3115395fb79051183a3c01a97537261ac9f64049377da85ab9dc3f935e3ff401091767741bc4664e5e3bcfde0d41ed4c7dec4c617a4627ef25503c3abd5540d0204f9f9a82e3262617065e37fa20a59d79caac20015ff7d5bc25f02adb4bd2ef1b1ae9d388e10330b4dba1b2fb0add064868b2ad6fcca01bf7aec22e5820a9ed09224231e61fa3a785ffd9a341b7024b8695c6733610c2b01cfc7b59dbbeb21d3f9c19381433b7e5edfeda938083b3458d9033543af021b782dac575e5732084477067348f21e41c4468fe204d64f87b154e014aa30b99a44896694d6fdcdea66ff7783b2dcd3ff8d56f403424161056acc613d9bce2e3176f988b8a569e644ae6912e6e156c1cb44219d840d57d972ec37fadb90ecb3a45fab05d350efa136a294eea61b7f63ebbc5adb8d5dab942d3cc1317d66293cddf3553faeaedd2f5c7675421c6c3c645ead2bd0eb20365eeb5c3db47118008916545038e28a872eac9030ae49a6038fa6a719b96dcd1da376dd36ec3516a6f49b44695e7f8e94bd84a29390339f517b999628f2b5800c352a75c5b989ffb3a48e3c3c515f5b303c10bb1c17456bbdfa988af3ddd5b64abcc1fbbb24dfb8e4f89fe3d095a67c888cbc19dc5c5df3a3373f567cb2c1a6b3f4ff0468763f7727b27da6f8df9e80a4b3936a0a02324902db4cf2d501969e40008956dd7b5fc78ece67a3dcb5209e481b92ac1e2c151f8e3249cac25232700cd8c096cf46845911c00f3f8f23e9c6cdf1ed43b4f9b33a30edcc9e57d0d5ae38e4fe568ba10297e027264e0a582e16e199358524138041e3e5be1e98a06e741faa34cb68945288cd0c3a3e1e50837c29593807bc70a748a4a4ef436d3a5a920b9137dc85cf93b990296b73f81cb312a320f98575bf334629ead457d9af4fc627feb6e3edd0035282aa1377f42e0cc0c4e8d94bf22944ec2d64d12ad793a839a5d56073114dc2a183364df35054048a6003dc2cd2b7189f0a9ed97daac02eefe275deda10581d1d2da85fb37976323b8fbe74944f8eac3dacffccd317fd77abc6df87566a629db01686d8268d4791803075494f25f8f2eb6e2c0f0a1ba91a30db8b7343a87402acde9d05ffa9f93f418426828072b511480a17fcd26a161eb84739827cd4d719deb563fed51539297e55af46a04fa6965f7c8b91b50b9a44dfb8ebf92cca2afa02c4ed5eca4e9814d0fd73c3927f347560843319243fb46fb0b86fa072485bd429fc274c891af7f764712d7b3405f4afccd2b28a27bede3f79ff86e371989abb16dc15cabd8d60e58a2a7c57e4404089d76b7ae8e843bbca323e1207cb1f1e77b557f1548e1ca08f704f761a18033d813581252f4a08496b8df04ab7db5ce59eb59d87abb791751683513d8df98d83785efc5318d8357d2c8f8e08bde8865b98069a4dd968bd14bfc0f29e4f6bbecffd5ca1c9e9cdfa3b5d8392c8fecda530d5eb168de5f7d58632b5646e96310e5d97b49ca5b95e4718d5e59b340ad4d1737fd3677f99ca0863e67973e50cdedb46a9bbe3f2d4bdf3b537bc0950337308939f9d4207847087df4a306e10c2c4a135818eb685f4cc7f37de6bc33819aa3b479f1ed7638c2ef08630d48d8af7ac7bc509a1981b1b113c835c15632b64d85cae57f845d2eaf685388d9eda283cff4d5b20556700fcfb296e5809c0b2520b8b78a8cbf973767a8148e8f3aff82e3e52d87cf17068bc5e783f410a8fb6b7c996fa7d6d3510660414268618620f58c47838169f92e55d99c1aa688c22e754d3757255c7678f347385dfa7735ab29cbf46033e733567f272036a1d22f08616d7a7737e87cb88bdd900c1098f07cb58585c5c1c0d27433f00cf5f24ed697521748b796a5da9722b0993bcc945bd3d44ab70b9c1f01a00c83201c87a222bbe05f17cfca03b4a72d91b8aa227a4fc2d56fb49b1ab29a04c7276677a951e468f38235b4d40787974445bd77a7dfd8f0e0d7e62b7beec4c99a499cf6c5fde154f46815522b4dceaa1b3d302d898fd23a230eec47cd16ce3fbcc3c81487c9fc9f39f959b1b551b9c68bf473418feeb50d75c69c9003a852f40276eb41378c5396d816a1b3a0d2466ca78ce6c8f0b1326c28f65ad1a69e8b7122d1d586826f4aca4f16d1e5b50063b9afb584df2fe090a165ca001229785416be63e694fa2c47f58269be092a0dfd5b00a4ef0b47ff41e5fdc127d428ee5457040ab59633fc29dd55c96dae0cb29e44c4c24112fc6ea95ff0ab6ff171c441b8854438cb461c95a56c2de4f00ca3b88f44fbc1405512b73f0c62676713c63a64f0dd06d371b95e006aa59f8d85703bbe35c4a5bf64729481dd7b60c51b3989ed69a42a2818b6bae511ec13661dee039291749dd6670d621fd7e8c8f0d79c01685f99196bb4fc9300b5c723f142c4044de9720ade3442ba3ff482ba6a9795217657cf6c4b0711ff0f9d156ed89e12e460f41d85a749b8a22bbde7879fd70e3b22e71088a8fb77e75995987c9b9b101bb9fd67ee96c7db2c4109a41ea450d100d7487d88f4374ef2493d39ec567294d31693c72fa5ee7720f88d95b82ad04e6f03c4759ecae2f81df777e36c5990717e0a3173022b79731d68baa865c671c5148d415c320ed98dc2271363f9e0a60967a898a42d3f0e8fa1cb5df9c233c5cb1545e550678d2a2339483f9e0e016d601174e0d441b6f949e1f1e7d0ec40ce9d5dd2ff5a4f6bf9e0d31bae03c91a9ba747a739c99bcfb0be03be2150f77531c07ce0c655f349f805e22d695e9b12c11515a440a983c3e710b7e8159ee4f1bbfed020cc59834dbb0a9b3cecce570029908a5b225ca9d86d911240461eb7e0b0cb2884b5b355d1692ece6568bbf0d336c1686efbb6fc77adda31531c3342eb2478f7d4c09d7b216264b35a59060bdb411c0ba7f89178b618778defb5d31553cdb0adf598b9507b23fbea8e3228dd3afa2c199c819b12d9fe5eb9b40858b3a242000a780c0c415f8f9dd63fe07fe0051dd2748e5c7d97eab3c02921fa907adee416894da729ce21a86b3dff030ad134aa6eae385d4a1d1b8c44b1bab42d5ca97eae574ffc9c43f79372f1805eb5b9b950d7e74a7ff420fac192bf368c7b942ae2e2a07ae58e955b60f19c8876b44cbb85af3ac48c922dbbf75ad36ee6b8b626e6a9645cdea3fb911b3970c12d3b8fdd8d5e73b4b2f9d285b4f11fd6437c5af6100283243651f8132046256a0c90fe887614f2047597993eb18e84d84d6ecc48fc2f004e8fbfafcf6c8fc2aa9c096156498479d34a5be84f41455c59e50340a80d45c612a2d66dbd816932a6329012e2d56c336b4bd9dd4a6e4869d1f295b47abe80dd3ae332b95166ed1f8691dc2fca41a963a89bf325e2b88600a1888553c5e566ca8a26d3fdd2d5ae7282a743a3ddd10e334fa04975b1427d8ed86048e3c869765894af02e50c90dd7506a7d9a660f69911a85e387250e7b46599f2d006921c6817b01e8bc37acfaa52ed827e8e4cf0438dd8c06f3c8b2ed41a571b214a5d1af2018c1b3cb97cf9f9e2c51655ca80c6d2fd271825664f69d33ec87af9ce8890d9ab68a7d63a182533dbe10eb8ed058eb1323129da6c1904829c551adbb403489ea16ebc9d9078a0aae42fb10069ace72465c891ad8ce59de3d0c7cc252b814e7a36f81d5b086bea480d31517385aa5c05ed22a6c0d3151cb4dbbc329aa9f68b60759c4308db9c5d701615bb13a93939bef77991ae2cf352dcf77986ed752dac0e99d8ed0f221100ed0674ed3dc727c1d7205f6f929dcf7559d333d6e009bc0b9060bf418654e5910cd4ee03211a6e74afb03838d9a8cc2ad2284e737181c1194cdda46efd70a1905c38ee49a79ebac2cd2eea78800b957b11e30dde62d9218ea17f6150caafba670dd2e1fa6b2e4218a7783cfa47388c7ad840737183e47c6b4b43458c3a385d66433cd3f6f8b3f915237dbac35fa3812bca39d507be3e1eaa91c11f927fed87a76251a182da0ef96a403bad7a02afbf860951933853d4274917f814c9435043bb5c9238982e25900d0ef930b653c40acb638d6f6ae588b5ee6377cd7015a9ec1608ecc4e0e227c497bcf339c8d4c921bd32bd49db5ea2692c50f358f397bb08bf3bb790fedd86cd743d0644bea6599a531f5ff751494d3494f52adacd6939f81d92c8837437269eefdda512e03df9a442acf2996b43b4cdb17c4f3918f71f704edbff4aee93b1e198e8d10a1014e610276286065f92d2fa0d5ef33dccc4c00a1490bbeb40b5a31dadb09483ad91192eee4fce73d1b82313223318fa64bb67a624a7034eb4503a43070ff0ad29551896d7af0ea8816a079a6ae07e23313a78d07efb7a59f14168a723e9b582197a7f601c506b754ce15e1b8fece2461235d50bae6a31a9ef04cb09c1fabd63a9798d96f91e18eda387ee217b3e78d61986796f76720e5baacbf76d7e222206c9a1501ccf3b3d483213113e97880a4460301d32b54231b371b5cc5646fdb88bb9808bc42e746dbe77c2ea0996084040b53b819dcbce14bed3bc5b36647685a4f4cb8d7229482d7b2ddcd37a9e7deea1aa0335f7b55245f4eb6fde24e4f06213690a119b106117c05fcde2470c4266aafe746dc96c464aa1b05a53422f54f1ed0e963ff2d14a38148f578954a0c02b9c303bb37c71de560eea8d5e8654e859c5f95ef1c17fad1ad38bb48018ffcab67af5d0e998599a2dfaa0793b6d02bb4a98490e34062ba4611bb1f6cc26dd878d15df4826253cbf96aa80dd4dcc0fb70fe95c7cab517f60896911e41be6a15159e81cb8f46d53a26f1e0680cc203f09097e007a52f999e510578b897fb80137f5244e836237ff475c84115e7681bf2cabe5ed4de35f4641c53fd530b4a8e8961c4f6d24d5a635a680fdc50b80e49148049c7496f1ae2b2ab55e15f564151727e6b2ff892d649d5711d38bc9041d955fb8dd17f3f42dffcac90cc01f92bc14e71beae6ad9d111c4e64a8cd1e7906e2333edce8b8d39185861823634c9bdee1eaa40d3aee671527021f77a069b5519ec89dd26ec9ce785de47279cf5a73aa2cc60d029d644587d47fa2fca1094588ddcd2da17538e2aea39219a51d3cde47e42645eddf0157e379fef51c67f133be66086410e221daefd3d7372979aa9e3da7a65bf514ba52a235578d06768cd2c933e1542b4307186287e584eb3e92eacb9bee0298d9b57a17bfed03b4752a773e4a8fa67c621a3652fc61c423e528add26866b25e12304bd2b97242cb7944f1f02027b8878759787982f201010d8db026312e831b3b8fcc677c6004c6f4899a238a3f57d88f3b9193f6ab4cfa18d4cc0dba76258f3570e05f10b22329a5304a9d81e6019f8351e399d49017aa83f67e233038791d2496d448639a781437d0f5e3615903a4a7fb5a7f0dcff34902854b3b88eb32a2e0a7aaa0adf4479e5c0ab9badafdd4d3d6aba2ca2f09edb4a455f05cc08c240fadcc97d6f6cf67ef4b5d3e61d03675c8b160e1ebf52de598ad46920f4a71823473efcad4f5d972103e0434286aa36623e5be26ff416c8591c13e838393f4d0ee6c194dda23a870b69153612ba5454a877666a4b479b21ed67771d61513241360cac6ea1b9b174757d83967692d658c4cb047cf566d2ef9714382bb65bfcd120d1590bc32186c163463a07159976c57d8ebcd842a4762ffb4997737d169d4c2359756d4f8fcfa1b80a38e71498b2cf2b78a19dabf37dd6dce279682e23faebceb4dad027c70de945de247034e7c6ad8ff0d25da6bdf459971db9dbca6488c5648c5a0ef398f1975689c16ba167cb0ffd1282eaae0aa06543df88a80a0500d452d20c248bff974cdeae1ef4670d20b3ddb3a4e113116e10c0bfeef8ca972dddb497552bea5b5739d8ddff08bda9c576e9943da3455dccbe09e4d0d92d0fcc0ad7a160d6f32bbadb6d16cc49e2efa4e0c31696e6a7dbed7956794e14546585342b1321c6f2f1706a818bcd0b965ad47e1b34bb8edcf6004370b5217114211c4583eb42d7164cd0a98274ef5782da499003b49881baa79da013ef9d32088f1da217b2e36e6b78b10c8589f1b9f781ff5c7f6dbbfb4fe67fda2bf20f44e3d64693770474c0b7c1df4ce681b79262bd53d04d9db344bc9ca73c3893c81fb8bf471847c3147679020686e4263ae0208dd908b758abc22eb3c0b378a613039afd3e74e2c79fd957dfabbc50ea2b9463fc66a9cf02beda46045c103902436b27d5c89d65ee279bb34dcf51c4e2c7c91b41311abf791919f997b52a8dbf778179777508e94ab89a4fe4e8310efef59157c1dcc0d7e86df25492c4a1f61e65d92e4071ee3e05e066e94bfe352664d4ca305eb43c59e37d2385def258e62ec72db9cf4f22496a4e01770f2869e3f651681d15f483dd22ab11ad03195eca6cf4b9b634ab9540494e1321a77140be4be330342114067c952b134a14cef1d0ca3340da2bfe132d2c84302edff919d0b0dbb30e8f5930f7f98c5f819a8b3339f877c88876893c836a3e888e1eb8498add0dd9b8e066f59ac026ea78f22be5aee17e8175250d3a3a046c4d88050ea497ec03d8e8d1c104eef5b55f82ee22cfd7e8ea3659416cae0e47ecf1b7e713315e0f4233438f5af6c5fde42ad9550b6a2392a393b1ec957668f5a7eb5f0f73f2cf40a6e7645e37ceeb10aed92be868f4811d7b11953bcd09b2d7a606b811e07abd5bcb8283e97448bdea977739cd09baaba377437129f5bc43064c4087570abd485af228d6a6df0d9eb339a7e235988d164e3fa6031de53668790369b89e7ac30d0b13ecd2f109d0dbc84df0c8bb7e8804a3c14b81a795539f608ba82caa42fe5f1d8d423e7ac842c7a083c6f3b18e9e0f8c4d587e7ea821c66619a5c0c40d2c1b2cd36de634ad93b52c53a6b81aaaa36796bf5dbfeba6bd403fc96729a7b4dbe731574ffd2a8cdde739abe02335cab580f3518807375eabdabdde68c53fe4a2d55197c73ecaf90568dfb253195d3416c2ab5bd0540d2a5399f48b8af0c18ef377117d8dd6c4d03258b47a55bfa933774cde49cb822a65f558a899ccc003e9d31d197bc18679f371dc99bd4a57a15f59c31244e9ebf12be508f11d13da104c1cc1acfb0ffd961e481db3109b6dc69ad0dd2ec45a844d4d599de2555602d845619078f150cf6a00079479b70e0faa8da0fc1a950a9c2cd8476d692ab95ea4acaa6d37259ad10033c5ff1916bf572722cfb2fd42a436b3ffd411cc81e85a5f7f7c965eea9b083c7ffb9685fbe459c9a97305b51257f20752ade7d424a300bfa384cf6db55e75c68513c5a7d26437a06ec0cb29ce07c3a56c8868fb64a963d3a65b0dd03c3a9ff1a749bf34af436667979fea789e37e6865cd0b005bc36507d220a0c52b1ee84f22b7f70b660a7d182a05838b82775bcc2cd36f8d8ac70adffac069cd7d61e39fe86de6d9c62fb3e17ada2e370872b7f065564fbf9c7a557ca9c218b0d4a7b15aa79deb5516eec6370aefe1db69b540feb23ffd14c1c8218a56f3dfc338936b91aaa80819914b6f6b074d26cda4161841a31e576be18dd02b4c25764b6570146fd6ec6e42c26c551794f548d32ca193fb6b8ba46a9ad4512adf909896839254bf5370fef6b045ca7063ade9154eba4efa7bd6e34e1a0e918cc7022e18173301ecb5277caeaf1866aa8780f988dc393c757299e7e8286865939a5926ec4e18fcc4bcff7af0b8fdb3c06fb05e268be6c123b6554a8be1cf16e9c40b383268aadbd9b62d126cc87e5494fe83b24c678aaf076e80e7b71e2e774fa97022eb8678a8e1b8e790cd47e455e38b52f87e1f7045e644720ebd143631b6ef33578013ea6ca8d4198347bcd20c870d2b8eb9c6437ed5ce76d8e281b3848652fa57d831c39e1b9bf8fc5116914da280b38037a02227c5713d9074cb634eeded41925360db1a9f4dc94e17138cf1100340bbe435ae4b41b7b5851b91bd822d69ce36736ba97127e2b2cb601ab5eb92ba45fa58f530595831b8148982090f5e5bc00d5d4bbca311bc15c515aaf34fa2a2965a942e536e89e270810ed0248e03104bceffbf8969ef71f3da7c10c496d40ec5a01ffc34c636b925b4dd9291792b89a1332d12fa3d0ef91680ed7c3fe0e0b7996de22710d8557fb891a0e317b3233e36611f60ae155ebb7479db421d95811dacf0b0ab65c891905db0ae2ebd7544deab666c9285d256757b671aa435d390f1c8fb6364d61647b3d9cefa4cef7226228f6331d905bc48f50983e452ea0d05a9bb2df455f24c2c2a70e207aeadaed11653c02cce5a0b6da16b9d08e1858391f90cd9f2ee805669723adeac88ce2619c41591e358424cee7ed77fe89e07d9a9b7a1e1b377e703810ab56a506b2f4372d5348a9ed8ff23af89b8dc88f585faac73521c76207f82d7fcba740ae8d3f1a75b014c008cf7a63d911d83d0c8ba17fc0f46fe8c1a35cdc7676fc8454f3feb401b1faa55af3f8f4ad66743efcfd1c4178d80ae675ed62e1004843d21acd9d56fa75f361ffb578345f6103c49e963bd92cf2e4623f67be3a2f90c23a911de24f818211472ec3404a768a88a66ba0747e07b11d576cf2ea1dd3fb9225869210b77ffee615067f8b0a1f50404f4e2dfe2c85afade660c20a83e6e2eb2eaaedbdd03d623935d39f64888b3afbeb0023a5d887c1fcf098d5644db84d0709999f1e631e4565a9bba8e5293cf6553aaeac3503ea2b1ecc121b76ea76187d4fa5d499ec54c4c4047e1499beb6b3944e9fa919bbcddca22ab41aa201f6e31ac07742c819351cae6b51ee6a572fb14eb6b26ee29d7524130bc3174dce097f280a051c2f0a2c5f7544a0a605d330354ff97d0126588d16f0cc4dd74b6c800c14043e1e95694a0e5f5efb191c5d5d85febaa0ded02ae8d283efe4f135d5b0aeee79962e5d0b928060c615482ed36a7a2f1f092ca4ef78d76f1a80be0dfc17bfdb3585c9bc4ad6024e0d802d8068e5b2f8d48559f68309b96ae5b7993c359d92472c505aaaba78dbf7a3361bbf520fb1370a96beb639d90542ded5752119cb847816f9208682f9a6178a15b370237058ec6eea208b6cfab2e272c8571803baa6785dbcc213b25eec70f302d32772a3c9f5b47a6aea0035138ec4e707c57458eb4dc00f9592926868ec75afe6184d3a4649e1a01b5285118a57e1a08cba4516c7f8ac7a6de98dcc5e7f8c7dad0507dfdbb7a5eafbaafcf3ced5d35a4712403d012a2de9b2e19a4b233c9123429b5c008127c022de8ef672a99cfda73714747095126cc82fa851b833ea17c9bf1eda3c62500cdfee5e7f061ae9c5f0f5abc41f1e9e7a1e3e580c18251d0c82a4176c1204335fd149f76dd4ba6c1cdbf4dde04a772ddb2dd779252b783289330f37b6f45e46b2202dd75c1ce6199bcaf09611a360dd7c1888a74a4f19cb5438d8b46a6f854014845c4ee833b80018bb2a5d4cc8ccc75c9f37cc7103f9f269fa7ffb96f7156830455e7677c77d5a984826af3f800110d07b5fad2a445e12fd9e5545f6b7cea4980626d0149386720902cf39e37056d8404664d22c8484e82a30f894b97064af91bd7591807f836a01090aedf749d2de2911b32dddfc579875ff41415810643df6e5bffef61a2bcb00050ed7f0dab845adb358c0891a91499a1142cdbd95a61d93acf869846779994bc6a60b3ecd6fc0917a0e0efd2adff6aea4deeddea76076d4897546e7b6bbf4d33d8030a9f525ee368c95479df65f062038228cefc4cf2492acf200ec53d631570415a16a7e8e873bea918f3ad7d96d053a66f6764093f3eb909fb85140aaff2dd3fc631470c8d562a2c117356a1cd4258c39e5509e1108be2595dfe35ba0853d8dbb533c54c8d6869f195a787f6900c985747f7b54c7cf0337dcda2e656ccad1c50161e198a29f13a381d458e31cdf419c6a13c256b33ca4335e8b3b4b887c2af7d580e5ca2e7fc67d45906d7e0db9e9c62ededcca84525ff0ad6304e4a5c9fb58f9135476d15244b456de9ae9bc6aa98466ff7286278033a97e9613ddb18d6c71fcf9337f06dd49463a3df756a1413a0357df41fa3caafa75ddc55146c4e26c8bd12fe0aff9460c25c2ef538f002f6cf6f5285dfc7fb962d35ad1ef104e6b3c963341f146dd7238f20164d64cff1104f4de017c03bf55fec52aa3934944a8142a49d06e415d66d8f9f5b98fc7870780cd812393341833d8af85d3389c74e9d2bc7abdff26a75ca6ddfc9cde050680f08a2736b9ef288165888ba4cd6c398cab181567f79711d69eaf85f586abb131f8f873aabce51f4204f8061111f04ba9be8ab8038b4481ebb65985c7a87b19f8d644bca5f0c448833f07230281c7accbaa419037e1f227874b5994e5b6f456435c00e8e3eb3a89fb7f6b9e1ef85a2351cdd1194f2eda4798764e15d30b9bb69885a3f4432c712a3335063d7dd1d1b39fc199a4b3c01df89e62f8c84a1734b2823df8846fab08d05d65a6caf81b88149a418fabb5524db3bd42b5dca7f2ac9f96000b570cc8edeb4fe2ccd9c2fe1b8ae8ea5161b45eac6f907f993eeb7a339296317a4abe9c25d29d57429ea01b53eb1a7e86062e775de2bf3bd2fc3ee7cd5f6fcd5ba1eb2a00a62be21acbc1ebb9faca941134f6d4d9402c1327434cde613010a8679ea1efaa7ea23c8675cbe3bbe0f2ec61f2d29618e228710a07ae2c556652c87c5ab9ac4e8b4f1351e7015552632b98c60c6a90cb9db2f53dcd4093bb49909da0a04857a599139b0638376a34ea955aa6a4bed7c2e3e765dcd26aa87fdefd6f1ed14bd99bbcb4ea242d86766f919fc7acf0458fe125cf02f60790bef9cebcd92432e1f1edf3ff1fc5a9cd992b98011c2191ed114b1921c0a61e4da69d6184fab80e1409639e7a71e34a20e5b00cc3203ec6ae326ad5a62cf5bd36f6dc6dc572a95daacfa18e42a8cdcf29ca31439dda7a5c2ce10069361ddd2845591f6f8ee25cda3636b8e9842ec4b1c6084289a1c2b755998832649d2111886d68ac827af6303821674d8e7ddf5c1a7314f38912960b8cc0cefb8870194379e35fc844868a29de79b513bb70d48979159191d6e1fcd52bb82001b9cd8e2c5f3b68b0c5c77a10080e901095ccd9df070e669193844f311c86ba352aba5faa8053d37b8423d9b2e1ff85d5a2552c756d111f630296a077e6a607eb5498f71177a182d7042daec1603fb868b8714446bf11fb8f6013c4137076d91820d284c87facd5a64cc91f190fa8cd47e90b4bc0dd816cfe9b65a46ab457a0c0be68349120fca86e116ac91f507391ee5cbe27014477ed092e0794f1643498daf64dc2a02123479aa5ac6295f786b3ce1d901ffe8d496dc9743987fae2d8908e423620959ff14d82935a4ccefb85c8fd52972564f20335e22eb5c06ef64710bd791b73b2c75fcd11f1f8b05c4a0ad740ea2a05b5b498f1a668c27b7345a68715cd7ab1f7810613f110aea21521c594a3f4b2c536cd76431f63a4a35127cea0895dfb19fa5968bf966bb1589027f273c5079627d6d48c9e501f2edcb267472190604ceb1995f4b87d65c926a87696dd112ea852e60bf5bfb33b933376c951bb868d99cb791035dbd9272247935b709e99128ea05671eecefe2d8d0ed6832e2ff0f74db4fe0bfe06ac00ddcd088ba4c2cf135528dd77d3a7dc30bc1f50bc32b76189d65ae6fcc17eadbc759238f2b550e9ceded26d3dd4251356fdf0d0f1f32549a4f4fca7a46cc89247175e18fc127649bcc900fae04841f029d3b18795fbf676b7229f3c46d08c7e7d45b3d9b3c4e05ccfa8a53a97ba5b6211c8cdc707c572cdba5ac7b3d29714a20befc591ca81181cec9c1433ea009f38b2d7ed3a6cfe9facd3e2b4697cdfa96405b87e6d054fccf27abe84e3c254cef4ded5683636c00b12a8e0ead8af00188d4ddd092a66e3983f1d29f05fcaa167a3cf93fc5c17ddd831afca38cd09bedc53138cb8c7dc9393dbc0953bebe9e7e02e2c6f0dcb5bb07524bd670983aaf934fdb85d871349cf5278da765dfbc918d17602b79f7c3702f02b30d7a40f79d6f403ce558aeae8a28f82676189172526dba3ef5822d5e6bf8d3b8e2a080f4de63ce28ca6f42f7b31a9af8eae2373bd6b12cc608ae3419cadf3b4f29228a9f69d91a4f9a97abb9aaedc6752492f117febe58c75a1937a244ed972b7a60ca7d299be23b12a8cdc7a7fe1a0448b9242598118d1afdd580d971525533d966d8f824d51c781a0c1bd252cd4089a97a3e817c68c4c5bc588583a7ded236b7501c71ce4368fafb7bad04c08fdce0b0638c935cc2dbefb568594f9efe67f52bd082b613f06637a7ac0df609f87f0a90ae37bd4f487d1ac4ecd4c2cdb8d6f0833a980f5fff80b07952256a19de9171709c93ad39f0597e87c94044160d89bac082145582c85a0e742b8f1aee55395e8d9228fbc497c8de0bd052dc5c59bf1b8327ce262a9e2ab2a02823a899294585db83366d1cd0a9bace17c81df34615234f720a950022171495203201f42fc7743d2fef12ed657c95ca9dad0778cf55857f8469f6982ab23e71c9342aeafad0a3e72a66b76d6d8ec22b1f53ad312486153f8be3827f338ebafa81c88179d71ed7d84f0817c575aad232c6855851c9c85cd3f52fab3f2e1715e26021c9a1ca2fef545e6481605fd62ddba086ea41e61bbb4691f124ab94b207e703a3e881dd9cdfb9c478f1fde9e083a4269cb33eb059b4c95b8f31fceb13c0ce74fd4c778cb442ecefbff7bda98c7230e216f8f632b035ae41abe94e84a7b401f6a2c12f8393ea716944ab4c17ba7634d47125ffe1047b0afbeca6b15e6aeb6e72fb0410582594b252f7b50f33a9499c5403819fe1d02af6e458a18296d293245cafb69f661582ad7d6e72a48d95f3d15faaef8a13aabab77807472f9ff1b82f11b2c434fca5002a93f500f26d991ef952ea8c145b28fa35fc81c9896c080e183cbbbb4ac3b407bbd84f151d37f1e984ebe2aaf71ea86997fae80b1278f371f30eacf72f9e0ec68dd523af157142cc7e2c6600fe678ad7b4956a06644ebe790d81a75b8b311a0675cab27d3862f67c8b68f7ece77f08c679974341f8b8d28f0467952076a8adc407717bb0cf13a2067dc907e22a6c4ddff47ccbea0c120924ebba5fd1f56428b84dc52ae6e7370ffeb4b6e0c5626841c211d57f92c08996e5235b3501f97fb4f4cb837f3489a59ebc538a536ace1d7419cd01ba37173aa810becc88a79b6d1702251870a6c8aed0032f8d05103877883aa18b939ae38fc20cdbfaa1d27d17c5736806f7caaf32c0961e91d4d4de4713090758b89786e59ce3d2d1ec2f4ae9c68b51524d43b92410d1905692f6879dfd46669293045e8e147eeb82232c3cccd83187cf6ebc21a10b2becdc5903b30de31140d33445d1e7a923454e16bb303befa6715bb1b20e5e26883124141689ae93a67afde1d35dea0fabae4c31780bf7c6036c3dc06508a0ea63c7da0a32aabdbf06d834a2a9101a3b4f00223952de8f9eaa2cc0c9acbbf6134ead563715ff8ae4138a70cf22e7a9368e69a551ec9e041c6fe6dade553e1ba6d905c20328d934b905d8fba6d38e8d815646dacf0ca7418f431b9ab33e1b227f2edebc3ae8f4413ef457d1be70b570938e1a031442052d64ebd75c3a9db0b494b48650ad1798de73d0a92e8fb2fb111ee200d7de021a05ed25137910e7677afe1eb10dabebdd0772b7124e93e8c0d3e0467d148f15827b3794417da916b718e697d29f6ef6057fee120f12f44cd3285af05c585362df2815444f4db8c0d3f81fcc21bac38a1e889330a51724b814767a6c1f98362ebfbfa35607fb93c409f21eb33ca33f55fb1d438f9a96f7d8f4819ca616804ba3079dd1a6cab6201db9567143e31bf386d86130ee5fbdf525c87c91e68d7687116e8121f7142b2178382890808dbbb850d25eac34c80756f3684bddf448d63499f46b7f1181c5a0b7d14980fbaebae816b26fe618c6b7809aba729c74ef74c200e461f06b5c8b8b813b87500236f84205ca5a3839d0b920515bb73d0ce4a54314bb0ff07615f0fa60cd53b337ecf03b35a67ef89229f3414af1ae310f9697bcb6b9df3aed0ee5adf7aeb96f57669439dee5bffddd4d6af19ca3415cc3d2219055cf560f215bb0a7b385b9e5e5af842ed5f84ee61d0389c661638dabda385bd4a5a7b30c5e31b890bfb9b02df6c41505833a59fb0ce23f7d820b6ae586ff8bab29f31ec427e9a23bdef0f4b00f5f395a8c3ee60ad298dfd82668a0114266a51efc843003eb6e8afb4d9f9958f9157eaed69f2a613b22d042cb4e333cea58dc9048b6ff7a8f3ce035fb91c6c7af3b52a4d2a8efd2f1a22c8aaad6b33b9f81574b86247d5624e7efa2722cfeec63c166e11a224aee3d55d320058466fa204829f889157ac8c2ec6d7e727fce1219bb4d81af95a1243b9ea02e4d214714c22c98261c7eb917219de09dce10ecceb6197e8db7f5b2829075f59c2b31c3c6b94088e61e2ec5c1c360960ea52ba66102ee506b431dbff735650dc6ac33e0c2b83a77822d85354f13a80beeb94615ebfed1835e9526c09340530fb6f8e9a552511a2e6eb7aee46a30df789f6d6942260fbb994c89470c9a659bc3e095906be5c393750ce23724fb82fb4ca043acdd0f40faf9081ba092181389c5ff152e7f3ffead909ddd714fa4fc4deb8ea40dc94a4be7942fa367806a677afed1c2fb625170131ef376abbf61f6b51586a2c18cd31ea78e75e393cdc7da198a9436135a1d621b67bfcf16ef1a2c091df4c2c20490415ffaebac85e6c05f162935ae64266e65e46f19711dec7874fb247cf56e946aa32b66e8d1b532a80410b364ceaf58d2f4ecf33f8d088306ea181b0961f214bc9216aef6d95b4f3c0a9a505b1bfecdf92dff576c20562afd97055a499bd08789511b6f8485f29379fd46e22d530bfb1a4bbede53164310fab2bdffb0c16650243ac9d0c49d0facbe668d36b4808c2f2f395259acefe964936ec0db94bec4830f704058f40f8d8b046d4faca6b410217f9ea6e59489a23228dcc91f7bec93b7b0ee48cee15c94dc333082e9f3b047a552140f681a1ede3d0061fe1052eed32348b5492592e2f0b4c45e8c4155d91929bc23d6e38c2f2e604c570f77e38146c7fcd5e78bff069815ac88f6257f1b02906365aa44c1c2cd4ae8bfd782851e0af6854f2babf030e43236d3ffdd3784c0848cbbae6f5a4aa17d40ed05bfbe0d6fdfe8730006940d12ce8be20c0b03aaa4af20f972a920ab38f71c4c7f19333dc0b862560e137aa21285646ed7b83f2c52a5b95fd1a8e09a2762f978b4fd1d90fcfb7950683087bd0875da8672794aaae0fddf36519e91641166c0dc098a3199e2595b7a1160246b5016ede1ba51aaf2e9dadd4e0ca41144888ec35c0775a24d754ce213c1ffc6f7fc36df945ce4aaee3d3ac8b82a02fc89bd7a58b57316d06a47ca0b87ccf0cf7191d326ebdf81975c8ff480e92f0ba407bcc1b3b4c82997b04ddc458684cc6f0556505bd2ba67a87338f2afe59bb15991a730c307ac8bffc839eb1f25b54382cfff51e69b0bfe73a2ce31040feade57a26b7b851716e2f0391df327f0899ac53b91c5d296c455343b151a761cfbdf4d10e80f4aad1bcb87a69d0a62fec81f2dbc190bce6225c814606c5a5072bc64fd4a91e98f45d03f27e7b7b5fdf1ede979d182e3c68447275c250398222e5d99e89c86f2c71871b0891f6400a4c2f0261b924570b40dacf63c167370f22c909feb7b1c10b720cdb0797fd4abb5e73effda3a7af2e1b59dd6ee558ba6f4b1687c0d1fb8c78282567d52a20173dd1e18cd63a0f1668992a6ad56b8f4229285d5b52cfa64ec27acd633f57878406b54fca7ad978a334ceb54a0f91d62b7bb40eb1fe456f44d5bc7e7235b5223842da311fe49dc416410cab91e5f49cee44b2ed476ee7e10bc25aa5ee1e8b757c75fb6624e14c8f0d10f40220c39c5e5eb8b552203ac97c8b0eba62c833dc8e5639f066be7c13de7502796210ad543ec4d9745c037d0eddaccda1e21fccb1dbfe5abc7cd44c7f95adadc2043f6f9defcc1f9fda428826a99658301c10288099116ad6c9801dd799303879f45f14548e7e69950d3bdc76c1d5112010b10687407beeb873bc02781d693209395cc231ad208f7c8eab72d15c7e7a8e6c5cb2e23dce90c063d2554f024c897873418bbb5bfb360a0ec8c1bfcca9350bdb2da8f224e5e9c6527b421ad6f647332d847269cc0428d5a938b3396256c9188762ab3e813d61540fde8c8b922ce39f6246562b32e595b065e1a72dab917fa101a0254191d620ea4fc2adecf1470f7adbb6269b448b01859296a217b59726bd78817d23945fa9f32e77efd6fc44fdad73c73cb7e47c05d2ccb2d1ae19a4d28a2a9b61a6156d4b66923179764fdf393b73c7df1311147d98a0de8942f20366f2b7b1d600b72b751505e3632f0fe87dc5d2d71079f38e3ac2aaaf66484c5fa44870ec672b4e8c92220a20cc8c552369e6554c89f871045f424f0dd9ed8a18448ad373e8c03e6de3dbdd2eb7d649aea3be0351d1212e7b742566666515d82a80b7d3a320631976070acd5a8b345143538bdcd8256a217eb5ac114e236ffce977e650baf9de5f10c62d7b08cac9d3b44a7bddf37d0e919824616bd64bb1d8e85fa1fec7e5468486fb08b7c740da9d8629eb100a516788307c9d12c1c77df308878c38b75336cd55308ee136f3807cfdd9b839f5d1af9e00272fe66b53721123021d3efcc4e50b303084a72fe99a474194e3a8791844792be211b9cc5a1898a7e13e940f2e89b5611391505ff901c7af58ccdd5d0251cab2627f710388946341effb18b754c456cadc939c0eea81d8f7681dc2c36729d38ef47d67d4c9ee2cdf44ffd7d9c9f7c00b86c6f0f9dda3b5b9c09b8c205d00956985271ff0485d85c2dab0743dd0210a9456f8bcbd8e130a5ce9028a40f56699de7ccc86136517792722453fa08ba4d18abb8b49686909e688f228ee66f6cf5170dc42a0286a64ebb9353ba77d9caeb27fda01f4770a962805495dc8ff25912a10cfab6008c3db11615bc8c03715270846bac7e155d333b975b1d8755d833185e0bf5f776ddcb6a1f47413ddf883a3acf015e6c3f99d2257a58f1533d97a226b46af502cb645f034c1c0923cea583b6b4f1b90ffa45b12619f051740090be4447cb72d146208bf7777c1be980d9380231c0bc235b795c93fd627b6ad03fa01f693fd6f0b6b7d7f368fafc24bede6d1d56af8293e61c7454a46e4b5b6179a19f24e47bfb72a4d4b4206a4ef99358e13ec8a7abd44d99c1c055830a7770b0a050d9692946bfd21fd9167a18097f4528b43c5dcaae14c81845cb30dc977ea71fbfaea10e04f80931ba47a46a4e458b6bb154f39a665d3ce29a382459a3ebf69786d69bd29a02654f3ce84f5d907d3221d6819d87568b1fae1c9e45533a82f2a3ab779891edc3991cb6aa4775c45a7bc1d882cded5269f632c90f953aa6dd1a9f343eb7901027b33ae34fbc4a45349a1f97ada5e4421a117a8594a8ec840b2df6a01cd9e945064ed9fc9f26ad2439fa93e5ee58fea85eb20d17b2fd7cfac12c220964bb951903560f141074d2178416f4f2ec337298cc53634cc83520c441549fbb80f315584c75c6f95f2e8d94c106f2a81c4a8a82bcf2ed3324940e80a94e6b954ffb899c1c1eaad5a08f39087d8b242ddf8148ee8d76a09999fe78ae0f97a52d030469cc294a3b4d709f25c97f1011917c64878af4b7ab1b2655eaaea07a63cf24733ee1eacf19d3b563b9c2d481dad2fa184f3cdcf2bf6f5761ab1e32261c92d0c220f12e5ccd1bb8a0f2d574a9295be93f8eec443245f08b23e8ee8a5c1bc016ca1f3b452dd1a3c782eaf9d79e20cb1232deb996c91f634830257cbfec01cee6561d3cdeba1ad5f5cd5cc2aa244db06df01ce971f967cc3498a44c170118122e72e542203d1d5f42e75e992e92bce696bf444419b0340f8295291fd41e8a7909286b07deda7fe0988ad706d7435f3109cd8a3d1516a83c96c292b84f7bd098f11bf27a1a7eb356fa6901529e3f4dd7d9e4b9bf7f47bce5c3e5ebf3983fcfb67599a960b8ba728a10f5a8de6415516095896cec2de165c9996b683162317daab313456f116a0fd1fc056dd474549029f7bdf838a18a8da12cd1139ffca72478af9e2708440c18905edabd547ff6750717a14136b1bf280058100677aab765b0afe97992667a90eb575228f766065011ce1035df9c751c0ee281a9eb193ac15c974d2025eebde5654b2e7cb6b2d5d3b649176d9e86a7c1e588f8022ace4de4437ae517559b69058638b10f69fb0082054e5fe537c188776802f2b731fae2ec67ca4299ed78b432292b1659cad7ae727c71b1cb03d918bb1d5021f63fd5586d74b589a089352c89ab1d6e02a304b72bf0a3b4f62273cdb752c2f2ef9bef3955abcbc454a9601a76e1f0a62335cf06182db651f15846e64c025f8a957959518c86f2f113c3bdc4c3abb553d5197761733c1f809e2807ec3fe8d6185b170a8e9ee759f7a928f8a7eb381109406fbba32287163f81f652eecc023cc943265dcb78addb9b3eaa8b1b8587643d9244d592a4bd2bf95447d76a66c9a1b06e2535a56f8dd9ff8be89c04c2546ebdbffce7599e0dcf197ec2bd75e05e3f97be515a59303cf1a10052a1b0fb36efb0441a3b832ad333e2cc1642c2324b85cdd250e8500bcf1c8c7a0da11ba0272822511775ce9dfb2066d9bc38986acc55c213437a77951fa9c78e8d4ad174dd5dc9662f633e61ca8d686e56fc3b41916bdc53cd3c6cd8ac3050cde2cd04393356ff30108077efe98d4934caa3330419ca16742fb7ad485379c2acd76c56ac01d45455c47340b23350f4523c6ad658c7d405fbac9a121df787984140333e06925ff75b5462442d4fa478c7ff7ee24f4de8e52403dacfa1ecc3177a588def465e4bf814bd764c335d693a38069ffaf1b4e88406667838d197ff95df6523f55ab82117cb4f76a4b11f306e119532ed144b7022d78d47b8c80b3780920474f9de263f081840c1e19f9785027e2d4fd6097139e9e5149b4df1a0e323690f849fde36ce3cf5f279a7542ad98c48c1d67bed839a9c26658c58eff8f0774713b32949a0ed66f62b65712c1e822aae3df161d9186b1f9603798029534ad0172aa73ffa7ce3eb509315ff4d4850644d88fcb08f7d8b0a4675bbe8f84c23f719c30bf2af8f8b560538ade532e6c5ed8ada3311d07c30d25462ad30e091c2d17aaa7395e64da726a3b203b894bc007204af9b28ce77249a7855910ea2d57fb6e7497effb2ea451b17289e675af5501bbc0bd23e6815b698a717552bdc5a5e2a6b0969ccf02a4681223308da2699ccc4590c0b292874f6c462671fa843de5aad92c1a41eb401bfb5131087b747b827a9f4e95df60a9b9445b768c0a3a1aba44240c643c663180ce2454cc6a2c3ad1573dceebca0a254302c9b075cb700cb57da521900c3c1f82cca2c99db097c2546d9dc9c12de195627e720cc2dda593e764849565a55fd36c480ba07ada6e4aef497fe9269baa3f6125583fc0efa4fab5cff4941ea492ee5946d9a816160a087796a680d045b71d27bb7e9e3b68ffd145c4eb4faf3503725b159402a695351858e04252dd5078948ca0e1689e6a8bb3b8f85f06a30a364eef1ae57ef475e4f4b3f0e8e5a62ae27d45127add5794921eee8b29d01e761e78e628aff1793252b14c1d10af5db49e72215bd013ebb96dfe5f40781bb2a5b7ffe33684104d074eb272cdfea5ae79cc077ef638ffd0bbb797e7664fd6abcb4cc50c3aa79ff33b97f8cda79dd55710771edb38274522f5c13b851132bbfb368ed44f4e390bcd8849ca610c935f8344bbdc35c95fd4ce3d7d3497924b74ed83b19e170580e062d2082d076fa42a1136dd1d3f59189522c301b8ed4d7d887cdb91e2edc7b07a9b3b11d7a4ad60660a9141460bda8489fb7602dba3f59d69737ae3cadb6943258ba8ee988b1cd724482a8cdb7faf85a89282efab8c5dbf0247474dc53c08dbb5369f370632d4ddc98365772f212d122029ee3d5b9ff7b2cd82233c289554cc29dc17cb0e9524d342b800c488c86b99501467e573ef2eb3dce6993238cb6d56490097520a4ed840c05c489bb22234dda7674a356a1d213268332bbe0c81c2eed5405fcc11c8363c3bc7c0e8730b478ffc3790df8912f87c87dd77b0c430fcb069766bf830160c6fab67cf822a1e1d112aa40d5bd03acdc172290b4e42ab8f98d8865d90a16a8c19db1e687270e1a4541b0c0ad5036285070bb5c8a542e75f2a82576ff7d7af2fe7bbfe74fa2bd6c1a8ab9e93347846cfdbc64b75fb1e03ca55343038bc2cc87ec56ef84c12bde4338387695e9b3e7a6f5036e5d8a9e3516bd133c65acfeff5a9519428ce8545d987ee0bc48923f15d42a3c9035970069839922e9659c6697e64329eb9eeef7c1d0dd0c40112ea7d5ee69b4ef7f3462426266ef47ff4abc1401d9817bbc0005f0517a5ec31970c2e0697a63ab74235eb535734fc4874dff505557bd798c2f0a5404366db977fe869c20875d05b0c1af093ca9763add78e40be87fb47f7641d8a7787fead7efedb1453492ecc6255ec166f9a665a26fe031bee52d34f7ddf251233c9823ebbe18600ab7fa0769c417a2d4f2dd882da11948b64252a03acf0009ecdafec03063ea863a62f0342584f77b1af53f406e80e985424c299ce06579e1bc8585cb1b4c46298334ea891768f0ebb3021e4894cfdb1c242373280ebc7500bc292dc52e381112d11e1fe99c25b95cbbec41dbb7a4f39a64ab273c789278b49057376c01e1f9fd5d4a4d561e7ac549d87eca8a8213e7b8fbd40f477255d1eb3b3dcd5283e214aeaf94dcd762133f45084a4432cf9570d32f6558cc12cd9b8990fd60db38da5db641417a7cf6253af1da55f6e4b9b9d6d0f84350f888dd8740abef392286147dc490130bfac9b7c05927a452fe2572314b3b69311fbdf27fa4fb2d19752adfc4a2218277b84b748a665cf427aa51510147746cb335dc941ad89604e3a451814c98a2020cd7e216e6a3cc539251b3124ab4cf6c62125f18bbc16742ad9994000e9d7691d0b71d948fca033f20f237f7b3c7b471ebce644ce1a89a4df266e7744991f159b0bca2f166451d45950d3250c8f59c97b18bd457b1e44f2646cfc3eaa8ac71ef1e4b647aa092fc607aab29a508582cf4f81bff885a4a0944038cc0ba8829dc55423d7ed2a93704b2ef1b65b18c6d0d5b98d43c937982510c610c54ba38fcbefee520f95b92efb8bec1d9f74516ae2c30352cfa43f704320ea8faf1e6b6c7d0fc0bd9c9bd9c4a7f59ae8c90a872d7e3b04acdb8432f09dc537179c4b5a0a68072b939c083973729d0899c5e291996882daa2af5a5a822eea55f0892dbe9fd0ebd93f2273f30a17731ba0b9a7cf94ba421ec26997372e1a7bcdb572e77df946149ac14fc13707083305ccec1e52a6b2d7c0b50004ac487c8818597d9e564dd62fde54dd175504597d93ecbfc255b9f1f7a718ff09dfa74b1a547708aff46626c3d852da0c67228bb04731c2910d85506b9397d140f995a2d9600d7e50d2f3a890c7f84fbcdbd168311bf046465d9fb931ffd5439bed2c9d3dca251e327194e6016aa538c3e2d8536c14e1b1b75f4b5666e303c5165c24b2793556f3168f5138ffcf1ae8ba13d341bab6ea12988870b54db89057d14225be1cca59b633dee285f893022582960dbdf4332b3906e99c10192b34a754a93689f40aae624cdbe6c3cce0985cc7774c69c51d2f3be30f79a57081a4bef795d5e4f3c4821f71479cd869d4e91187302ae9f0cb6c14870b28c94202e8037621dc3e2d75c851992863949f442c676f8b35a6b37e283070efaa00edab1ad0b22fdd38343d6109fdc68152e769fb008ed9450f9dd86e22fbd799c9bcf721ac566e07f998515799695b278384d4fe06e82a3f40a97ffbd02d17e51f7d3f78f7581051935c3ab2ff417eb2dd7406158b6bb9fd5643253fbc70c35268285fdab254eb5c07b29605a6f1c1f6a334260798b2f4c9be66a47f3fb4933edc3aff14056adc997ef3ec3c5bec25046493823aeadf7ef1375a62ef2196243e06e98afdc907c5dda2b312155a2654cc998b8e00fcd9feba42a839dbdb3a2d5322cdd8044978c0ce5bd0d57e28a8f93940f098416a384ea1f5ab5fb25c87768064daf9be1e5ecffbd068a7e780fdccc01e31e73cfc4753a9414c653033fe1c5eb6faef7e9a393a15ab3047744fefa06426e1ea07de392f656917adbd23f4cb6ca2099a127d98461e7e3ac91c2a0c5d4e1b2faebc6712b1623151d6f6c17c69976dfcc65f59758a98457e23c718c40fec234f8ba1b733508075323495c7d9e87937994b4f38128073322aa85c54a7961d8cd5bf5f85ad8b4da810305a1e99bbfb18d028359f8bd0462372799a4ef43717abbd1b5f133ed840204b9811251ac7d4a6c37e99b550f90b4ce36759edd1e370a429ee51a43c3634897fd06494bee79c1f6c02666a839aee62b388098feab79f6b9a27b3b14ebcd79e7acb4165a6ddbd4d472ed2a97f041dd241959824b15d3e178e94ad74349c861d2ad4cb6ecc7c496a88f5762525af37b4a67f16286d38d19688517d4d93852b0cc1b3d575103df8f86a1365291208dde7afe04b36c70be7815c160e8d7a7310c9b36658fd6a04b66978f9f9f9ade1850c827c1517d5e2c59bded68cfbcbcdcd486557b5b066845ae3e427c4dd7ce6039640cf2cd4f70f719daa77f714532ef4623eaa057586f0c9634cd23379bdbd4a2165c038a8dbd117a32a5cadd1128e806dd4f908b432be8df22f73feb5c99bc2e701a5408f2d62530030aea381fc59259845beebda4a932959633b36b70260a09b15b7e7e755902f77a50c1384f379b175149fcfab8e4eea08b7f2a729bf85b55f2eaca877282836f24f31a2779431f3a12c6e97240e745f28792b172a6ee046576554ce0c81a611814d011d6c200ccf2559a71021f34e8e8933fdafc99ac36ffdc5abf3e45fc85adb16eb23048b26458cfd683347936e61ef2764f8b3585c582af9723a703a1d172e4fa2d4fb10e9c0d8385a8d4d49519f5efade68dbb729724e2780f6541f78c8be36d071588a88a545d471146996c45558b8e5dc3e98c2dc76b463515b9c84d2dc0ec84bac3ff1e3b4bc1e94ffc73678a93d153627f6299c6ff624b7e52023cb60212fdf523da433f6535774bea814874a9d94f132e247e103ad860f822790117b206c28a8c56f19d9f1cd75d00cff934ac18648c713ff550602668ac172f33ae335b8d859086fc31f2df973aeb63d05798857a32459a41b4c8054aff80221c08b3fd3c347627338c8b8aaffecb0919934f60296abd0e944c24791923484df2e4ea5eb2571bea829a0b80fb37720e5d4ab876e77fc9b0802aee82c6c2397ef412952a0a80a847f02efa68c2de9eb37de0f1cd0cd4fcd5a808da383695b6a658c27c4259de9463db56a5f4756b0434664c2b8ba57f1db8cb9b6b035188d9e05c46074e664269c2148018a8fb981ea4ef1c7117c09265a15e79fb2ace55d8f2a45234543851d1f7bc6657cfc11011316206903d3c383d9e45826b43dcb7b4a9c684d55a392a0417732456a7925bd4ed1b7143720c8d9c47880cf76bae17cbac8e49453c8f360dc8badb721d2ff6cd6dcc3b4ae360790a423cb0883215462ce2558099ad124da9fcc5dc414f4fa958475f2eade431dfdd8fa6f1476373b888b6245937d3a52c98530f77f99099a08737cf20a028d67d9d90761feae50eee44ec885263859ba57fbf6ec89a3160bf9a568afc7014e00c41f74bbc4002af4cf5a7c9ffb5af71da06958a31b7e0adbfed43157147ca5c3b5159ac73f0458639971e7aa176fc6dd7c04ba2dcdd499ff6ba87e512a9e7de2fb57b4d88f3d004c084e5a8418c06feb671a35bd9b63419df7ad2a500117d408426d41fd18aee56ad5550a4bb8ac2d2620e2e7c3bcf3d177023877f4022639edaaaa71fa9fc6416888d829101d62d52bc84485e514b081683023823857f01697e147d99479c097eec44e21e4071fb2f692a633649fdcec414b92490a611ebb31a188af72ef03b6dfe42190fbf902e06bbb58b1513f6b3236ca3a874d92a1d764d2fb5314c9141dee439b33b95a13b212bfaf6942ed0fe3377e910dfa80041ac043c5ca30df44fd9cd472593203bd30f470ff9c60707618c7e22e1488c6fb26473976df1daf5076de6eddbbfea4285f389904c555c94e0e9f61d33c3a0a23c84231278a5c249fcc1da42d6cdf52bea9f008dd777c5a86cf37b2c923b32db8030244c36aaa220334f9efdd9f5ef6e854575715249d916e78d10eaf3b15cbbc8aca50155d10ec358cae7e714556b4129101fab87064ac0608669d3744d2bd2a6ae8c81a3c88c56a8c99edf6d952f77d2fa4499d1ee481a399e5f096b676a7bd48e3d7fe391541a4e2cf46f3f05be43c468b0e3593768d27c2d20f44b24706ad30cbda7d03a257905a965c28ca607a675e52e98272206652a681e21c6603fd44783f38c29a6b329a78d0dae00e2249a961e2a5a9a2794f4cfbad79cb847b440fb96c8002197adf083d55fa943732f1bd4197057832f985cb3e8953859df965c531ed427735fe06a496c8d4fbfd4a61b2aba37b00312d5175ebf6ed9137cadf5cc38bdc514313f9f87cb3c595f8a2fa593e152441df5b123788707afcc96a28256a2bed5cfef9d7a41439eef3079f4ade2332455060c0a6735823cdc0ee5a4f55e9bb3f1d2934219043660d5ead9c023664aea2321dc2189ddbce022de1a954f3217d813ba6395e4780eef33c62837a025af78a5cb6544fc67400167cad9cce68ea505fa410a154c352bcdda0e419ae75930ee2073c376f1d737abd5eeac938bbdd817650b481eac70ef8cb05ec9c11d340e5facba6f4460c9a6f7f3428a43e022959fb34aa73a6594abd24ae436faf09f15f885707004320f0fa563a363b773852206162290e0efe5e840d236bb5b31e02ee72d0261a56ba5422edaa582144053595166601bd68b32ec0a87ef605e8ff03ac18bc2acb8b0bf6bf79bcc37cbfb7c01263356a9f3e76af988ac655b16a7db6479f8365552e563149fef8dc1d09c60b5d47eb65118113921586dbf76aecd7a44d4e75b4846360c84e713faf1c98b76204f4e94a4e0ec7c16d774ab53e8f62efbdff44fa4eed2be5969d9696d6e53f8c69c1ce1fe7bcf5a9a2bc4ecf49177f17858c7fcd22b718c04686c1057beceb7bb22ab7320d50b75a846d659a9387925877354c0d9bd567c17b306b1a47d1c34a348ac506dc06e6861bff24a4d09101719fd2a8ca9bea9f458e451c3a91fa68457b2a38a1a9c3a4783f37c3cb8814a800af00f2c194dce65ad7362e50551437fa26513efd28fb1d5420542417b6eade6831cae087806fc6b01c8ede23d21313ecc3c0a737dc4f2aa9178286ed85c18efa28f6ffae12d2fcd9eee8a40ca05306d7fa4454a534a21f2714a9daeb28dba5b640ae9e93ab12b3bac6d60c4ace188a95a3924c0101cc2dfe382ce388dfe3a5fae2d1a9dc59994588d368bb734d0429234b1b46584f30d04644f6fbcc6bfc5ed3030d625a24c434261e69c987a656c9137f6bca24ea91e6005885d0297d1d23734fea27d58d473cc80ab36b04db71600bad6536f4a034ea2cab362a5c4fc08df181fa62f0b294c6c48ddd2001fea2869e60ae2078495f243b71993cd2e06a5d32498f707ff76f33851c0cb85ffda8e24ca8bdd9ba95bc3f2dd1218ee7ed8fd0981c73eab7dd0e0fc143c029ebdcf70ccc6f1afe2d2a8a8f6b2a7262969cfef128f8fa33968d41a30586b912a3e64b62fedbe5c6850ac56079f846d771af75191fafb30e46b247ad639a223e3fdc7df13a98ed4bc5f425f42d72c9777a7d7e5b32504df660a236381920a5749939b1fd72f6f5bba1043d077be06b0e795fbeb6cf2f51087b635afd0bd01d6a305fb58a01e17fde4766394730d2b146cde5011b13fc1f7cf61d9e72ec31c278428981823bd06bf4d246540217b0465727b0dfbfe1e470e9f6e60b132d8f34476fba6b7df86080ea0f905444336cc70791c85bf32750157b067d9679efaae482d3db53e25f7671b21c9b76eb10f3b1a24c0af5591e206d8ef1a79e96c65827193da80d5b07b70586dc4d11bb08403fcbed1b71707d71af26e1d709c1696c1dbbb2d73421aa13d18240c55814b1bd3ea7aca07ef680f596459fdf433a997ff1c9fb35bdd952c3e118d893cce8bb8c1f2e958002537c33abb648d746fc791c1add274fddfafd4217c45551a601f2542777b914cf0f1007d7dd5468f34af750884fe9d70dd7e6c2f6995922e2de0c8c34a78c9a24b28f6cbd016c3e5f65b93d0adb16967958308b909895f4a80230295d97be793f3edeb4198d3e7cc4743f7f835e257122e77356b0368166f5c572b71ca916c325bb8c11b0713c0611bf7e446b01ec02d5311d52f2a1133bf6d372853262adc6111db75fa8393ee995eb13cc7d5ca6df2ebaf562e4a92289a35be375194421e18c65cd31c7a29f07d349725b942bcd1c90c2e0a1b6b5f3e34b9beaf5f8e20b7a66c5b9c44526c17b1d011cfeb42d8f8f642b3ef4533e582d3a6ba139286b80a3bf76c137e1b34d24d2a1a065d20c8cc5ba4586feda233f3ae3eecf844b02f97f32f5bf93cd005edd06b29731caf56abc822a7a0da7566a33783d4c0a7a4ec3a2e7e53d918b7a20b6f3c8c690417db372635b2fa267bf3912943f39604c6f1aaaa653d7686e438d7cc89a3399cce0919eb3eec2437741ffe2e553887ef99e9516d03f09d65bac834fcc85ae4a96dd8c965b763fcf8932ac48f0744f01e72b5d08a654c380782db934826c63fd0a34f83c3ca978f6780f03d32f8c46866483bc786955ef8ca98e2bb315851cec8331b7f7966ba599770cec94a5ced946581745b6c34bc37eff45b4410541d24262f4f51b6ac28b659d37eee4a6108c57477e6469765aff35b7e19d8c4f31a557dae4243b89d2332af986968b41e34004c0acab28d84f4b6041facab8a3024f931faa5e24cac6c9eeee13a3ded2d217201fa3c492eb315abb027e2810445e7655430b08982ba8893498aa4733eb3c1495c837940c28e7875f22221e4f5e3bf9725562cf3bc0aa2fc5a4bffe07452828c5d67335b40b2b7bd816a0c9b07727b2e8982a40f1aaec6e41bdc303cad76b63b9a6aa9072ee61fff81dc47fea1270095c7d37a36d9a45dd76ea20ede24d23e1eca47ba2a9251ecc054497b6a6019c4d52f8bf17149086781d238696ad499b4865c28af7415deb77a1c1943ccef957b2668a75e4916ddf0265ebe46987d5091b5a551d758289ece150521934c6efa207fcd4cce4da9926872d8623056a817967eafae785de15ffd3ba805d153c2a247f1546387695100a38fb3a5961f251a0d785330d445f79eb9738dc3143c2feafd823a1079550847d9566d01e6d9ba79d3958f8ea141e51075c0a70d6ea81baf81f4ecac4e3c81585b59f39051e450d405671be92131cda8d060e3dca027f6d79d510ad3f7f2341184cbef322c00aa4999a8f9f1c72b2a02c60b8e13e727887c29a0bf5ee9ddf61f74c13b747ae2600dd8baca89a8f41604d71733d12e82ed7f5468535dfa79e1f0fe16aff507589782be29991a65d457ab720580084af68b33e2b8df0e7dde895c61d06a7dfdbd7602b7acb09331530bc39cb7a2b19afe944087b5bef39cba5c0735f21cd677d9cdd97fd31f3ac42799d78a382130815dcd80b61049ece7ee7a5b2ff3e77f66bbb7ceb4cb9274f7b58fd207a480859357a347a32f446f329cdbc2621ad4d343d6816889ef0875115f88b1c3ae111e26e6044bed13e71c9d222cd51a7ef551a33d833dddcce7fc1499f841f724cc9976b0714983b90842e8c7ffe905c0c8e1486b66fa6d3d08b92f4a30af6d9783e68cfb1cc9db25dac1f67bdabb75dcc9613e167d661333bbf8b6674a1d72d12e4127904eaa8e1a01ffe898926581a07ca0d8ea4796d54a880317a68a2148421213457fa04450debdeda5211ca192c5ef73ddce60b6bbb6ceeb79bdd3f8af2140c6fc5550a4edfc487dd9a9d7c8cde650d4abc9eeab9b51db952f38c17d462b4c5fa9a204d05b812de4080906516b8a79cff4dced6b5dead4e910f9ef38f908dd4263adbb3c8050729023f0e3f6bdfecfba6d2f8cd419b5f8c3e09477d01183e779da7ecf52cd914ff849abcef33bba2c3e8f05ce1648911c56386b667d1314d90f53a000b957b6a34f8e0b11a88b45a553e050c9eb6bf0647abc408ef7d39db2daca4b8d48bf7ffafbd95ada403bc20ad9698c638205d45f643542767525ea6e421126f9b34aca897e92b03002c29612de6dc1ea736ea8cd73b4195789d736d18f2a16e1491919ce36aac187d0b45faf3251c9ecfd6cc87545703d64481f7040eed38e3e3903784657bf3cf39715af24bcd35802fa423987a442963c54258939d17141b62d28849223b8a54bc1ca7f2d5e9c74c8ab7b77e476e7a07d8bb3ef42ec52530fe1261eb0c0d3a04950f5bd2e2daddb0cc48f4bd1e43fd9eecf4971e7a34ed09524528f9720c715db9e91336bcc11cb1b1553b305336bafaf57157141a5cc9cb4463ff14355c8090bcfddfdaee8accd2e4ad42440867c215894ad188fa62c797b7ff618d6fcd986a241cf9c5d1dd84c6c002d236ccebcfd6a0993442bf2db28f3c261b4f203354de7dc1b27a7656c8230bc68a794754871fc2b0d833b09209346f335ce61d79a058346ada27ae5231a9e60786436630d9a1d6fd1f8c82c5666b7207f84df378efc9550941a1045a16c83a27ccb61d6669b37b056a07307e821bd27fee7fc3b0f76634b3b8c0a56e00a606115e7eb9f91d41248e975059c7d23f08d786f0cee1ef8f5fe10cdafa4a7563f34bbaf0898427f52c58a2e7b641fdf9961b2a3a5542626cc3ac7973434fe1bf52752f56b37dbe38bcf8ce247751e404741ef3ca53bacf34e6ecbb687e79947034a5b0247ad89af0deca4adfa3c3c2bd1dcd09fc63fa2fd6419822f9a9bdee53edeecb5d559cd45ef585d07bb0fe0e876ec6c1dcc321b1d7ae06d5e9940fc2b7389c5496239b1650653338167e2a026fad7b38f872fd463a03707e2bd3afce9504194978917d74324f3fdbbec7f3f9d14a10b5670ccbb77dfada940e6279a9d1639328c62ff38df62d2fbd4230076e04ed0d33c352e569a5eaf0322b8885848bf1abc7ca71e7130fc01c9d099c8a19fd90ea5d5f05a4f6f502380164945afee1e0d299a4b4789b8c884acf4a5fa82eab628842ae8b2134beefd974721423d77a0d6a57d36dbe6fca34e6767526c71594a51cc5c8ff66f2a64daf46a2e7e165ae3ff1db63beaa70a2e41fb6b6c2945c911a77bf9d48cb18d9d8350a59a099861e638fbff4adc519a27a39a4d50ecacc5554a043616da3e703490660b85f20c249a52549f2468d938f0bb6ea145236214435fed6d053ba7e73b03ba4e834d7bafea70f7ad9d24fa4fcf23661016dfe9c90384d2a9bc06abbaec3170ce89180720a0bc60ea864f8031675ae18465a681896279cbb5c27456bfcff26a33ab33e2e95459c3c55ca28c6e52178c4895b83a5e975089dd6c02fea9df6d41edc35e5cebddcee84c4a003000bdc09fdea1d7c0e1adaf6c5a43617649c71a39f674ca99a494603ebfae9847e56666db1c40bbb806fc38e9b178f1666e74b8fd5bee3d79d9921e15f3c21a5024bca4e71636ed56e43479ded5e80a99f975237823916a94ff9431112a040d85e2d6ffb7da51efa99c8379d6feff72b0771a5db3bb6c68fc1ca158fba5d1a2410f97869aa6995539db9a3646ff64d1200ffd034127464ff9e819f969cf197cb9de6f05003afc9e854006ab65c64a2a74c0545b70b76efcf89ae4a782a122fdf49f4d849d919eb9b4e9cee62ac6c4a235d4415979350c07f10567c4c5ffc94a3d9b37e3589abb444bdd8a11ddaa81fbcb235c6dee6d9002b613019e04d276428daf3ddccb66a74f66a1b2b9157a822e37d1bb3c234777986d80df2e2c7ce508d6ce76547ac9d70fe79b581e4a66cb62b719a9748d8edd70a9f415cd7c9250f197d2cb87bda66af4e3e97ffb9ac617d904875a315d4f3aaf86f8bdd0f9da4ee7a6b2469d2aa3de93d119f6aba119ece2581b4998d2b498c768dc9a45e141aa6fcaef2dcecf055cfa32f2e03ecd940bb966bb12ddce8174e4cf7b40410eb66dfc5a8df9032272283b7725d474eb3c074614018d0dfb03dad3506ec9533b5c8cff8cb934e3ebfa768c3ed008765425410add3fe20078c31f84289d8cdf8aafa2049cbdad71f87bf8e1a5ab2925154a8ff761d13d4379f0a8015d9687d65240a87ce4e257e3303b3e6e67a9d438d31473ad8473b7b40568cd7aa2db5435560d1c30b88b6bd0f825806701768507b9958e22343badacfa126f91f13dcf4e814ce6766a9fcaff6b4291140c78db11c4406d86876335c95c653fe222f675f6ebfd072351c7898e3cbfa2f553d2777289101e2fb133077135983c2e31116ec25bad9dc9beee300166d33fdb9e81aaebcd05a4b9d348d7eab2e4fad5cf6d9d0af2c5119e5effa439a45c0eb5bcf0fb5816f38ac08a3463b9b5b8bbd3ba528c25977c5314b6a3eee17dc674f19a9c04ea9284a0c68f0be8b065e25386f9e9006f62ae2ea86c889d30fddca6da2d1acf5e0e3bcabd4f65e20395111252577dfbdaf5e7a23bff06f4f6bb53bf1fcbac92012657540feafe0dd3b578106ad7c0ba0e02b3c638c604352f88e6689c227130e49c269583c2708d1f6f0c59f93346a48d6894d976468965a00485dc6790d963e8adc52d91c51232d8251bd7d09ac64ca81c3eae3030f29f53a428d887827451107e9565be7687386340cf0ddca7c88ee6654a1cf57c4fb26e57da74ce0991fb7b7a829aff30d0b772553bc6d2b809b0ec644a470633f6a947a7e7f2134b3584d17bd1ba18368c57902a7eef5655aae8571af4616ef483dab307ec1a5014d20dbb3542581c44ed27559ffe58721b968b66882cfe8bc42cece2bc73a7e46f5cf5814b1763de3cb168f98513ac0162cba1b87ad0a7f5bf40a857f53e57e4ccf8a796f05c91d59afbffec040d28c8b4e3dc8e9e9d1a6d7d3c808974e411089d33a4b729d5f2f6a3d54cb9e258842675e5784f9f91e5727f38aca34b8609ac8b80c6de2822c6a5445263a8059667a39949148d4da09ff2ab3292b7ff48f2ddc51430258c57a43d4e29b0e08b01d91a9a8994e9744c04aff2263710c6fee3af38f40a15e1713757f3c215f587453321dd12ebc617ffe3c4bcabe27921ef6827fcf758909617bb3084018cf1332b40d893ba31f4b2f5b78ff8fec2ef5b07165d8068c815319c29172bc67227b0f2b9fc69b10061088785de9ca5404b34c670f073b9deed447de99aac6faa6e4b9c6f791a7bc22c25f9d7b3cf16d026ef83506b3d6d6f82f011a4db7881d67e2ae910aacad2be5b5cd97f1bc1fa0ac23a47039bc44683a3b27e0044fde5e452d5b1e607b977b88c316eb8d510436731a7ebb0e2f0d91e6b9f2722f5b10275244f0995916353342491eb16fbd064c9095718398ace8630e5af800201b2b24d313498ea822f611b3bb3ec1d8af798f2a9384e89238ba6492bebfc2c082b57b504834eb2d775aa8da727723166490be7a18bcd9fe54abb5f7cd42a81014302d709f4e3fbcefb53e0b76e962acccd8a5598cf3a9e7be09c985cd50d2662f7f9aa463ae590391a19da45027ed2519fa2d8f7b6bf53b02ba29d1a8be5e1550363958d68ed5c44776415c918e7ec02ae19101734f00cef146527fbb2b0bdea431b937d3a3068546b3cb387f6ef2dfb7a96614846eeb29fa37012ab4a1d9c162b358fd2498f425edcfc2d2d05d0a018262ba0d7ca63da9368bada75b5e60ab7af5d437052daa34a9c1d6ec9293707235eb78e91fb0b29e8302bf1dbd55a71fb8e61f93ebefd390c6b9ac001a5ae859bbad18a36c295bdf50a423363c4b5162b18fa42ce1ce99315a10a85fa7a39021a8217ac9db12f6023daa99aa26ce66849b9eada0e3daf20ccac9a3e20528e524f1e53da2a7b9140e731b30a59ca29742934f18d7af75cea66b11292a7d0f21101c5c8e2b4d311b4ff36587fe3306d6f1e0f7561483d0d9e693397e9b19147cfe97e3f1e00178eefdbcb0a9bd424dba150888218394c19c3426a43cdf4b24454df89d3284ea3612c38a9806282afb5613fa215f197d0df23c1f38d91197553ab5cc37c5a2de031695e55b574da1307952830d943ab0e4bf745010fe1a718361f3096b06841bdc92d9d9678d0aa694f4a6c6210e8d49571e1ed47316e418b1596b3f5c2e4c7f770e7237be57fceea5dc6e3484ae346101fa0dc86e8d62f78655efa1a25c72e5a442c07373d56afdda9dee3c78b6437e530520fcaa7a8acfebfa009b7d0428fb42c1949c9a2c004567dd35e57ccfa0713f1fec876734d75942e8b93cc61cbb3829a70107eac5bfb73d1667b701bca7edaa0b06ca144223b6668a7d96455ffa1dc7134b6941470dda5a773b71efc6b05ec051b1224b22989a3683ff6241bdbcd85ccbd27ea3650f44aa1e542db10d85d0bbce4b28c862f5dce93abce924d77c3ca8bc6600404d5e7f878ffec27afa8fb357de88b53f9e04a1c208a921278a21f96f4f5255a704bcb2a240307177b639fffb8d00331a80d601970a4b5136c83e9c4c985db43b55e66a4332124a985ffb4010b062970be801c2b67344923be1f141f89b47642a61404a58382005a9b6718efd44395c3a6bbc3e58fa7c2641f8a8f181d6d515826c0d09fc68f55d8667d98b3ca4ca391beb97a4e1c88ed4949f5f86a84ce2afc4228c6373ab45a38b1b5ec43a49b451ded9bc68f7e92bec4eee4fd20ccf55f72b64d7fa394badea4aa567f4b5a304bc42462873c388d4a234fe0e49348dc1528bfb1d251d3afa2bf723f098bb4df2de309f3aed1fc411322b80f8fc1e02cf3ab5a2808fe678978ed8b2e485597191ab3064cc85b2a80acebfceb656b27678c9b9e7da3c15d7b7bb15db158f7622f36099d228c732a76494b8f280569273ecaab6105749a29e1758617d937418c514314704fb22569059026269965bd05522042b2677e0e616650e99f51f2ea112927c33d127c7a4b3006e6caf62669636e03d3ab9657995836cc83736cd4b53a7106b66c37e0f15cf30031db0ce3650b19c695c587a266c2557d101d3b6b2d917f2a2d8f38f684d3046af60c97a10b60b48bfae8dde64dc2ba69dfa31a98654bba8d7d843405012c9ccf935f03cac4c4ac7008b6db6569ec37d656722a6f22a2bd8f7563bf51f86876cf1578eb1f72d491bc21081db86773bb05eb65cd6af2e47488cce6584771a69a61fa903f1ad590b3bc1925704b49cd7e47a2d56eb974256d984e54920dfbb14ea09eccc04d4e96dfa49589bca30ca7bb49abecdddbfafa15663327a42a86ced41f4ae7ca24ccebae23b17c1cce04859ede1a1c1eae77deebe9f6dda555d80a58d9b62f8251837dc6e01c8a893682447b9abff5d80ad58a8f79e41f7c962181edd6979c4561e1ae2fc8a2dae8676fc27778006b455d6075d9b03d9bce2f6fe4053a59c4c6e89f6244a65046265c681c43e8448e213631b846626b12a7ea3fcc108b33147ac222f7852e135de53e11e6be26e16615d4530052c0fcd8ccf822c90c835260247d78de30eb51cb44198e652b98c56be0676d555a3cb5cf09256c0c7d82a6ee3272399b246f1021f0ad7c5cea0052964d863c51253c10568038b801c1a95884ed2c4d11f0cf6a7c64f0d5992e3e2d51d258f4c8d1c195c8468effcbbf76dfbe0a020c12e9108253dffcaa78edc11ce1b995b24533a998b9592639a9c8669016dcca41bbf11c3dd9c4d6b53c4d7360bed0c04b73d06eb0b6073125c9d67ccec406b67543c369d7ad7fcea908a52c65b8ef4fe720cf9abed077bfd7b18cb7ff5cc79a48604ee53d912190e979d8483509ed4d684e1a26eab11f13c8d016ccbf0697a2526c3b33540b2679fd12c680228128718a566afdb1a716fe022694ef39cf83c78a7eb03183bf5e3ed703dd91a77c63223f97c483f3ecf1a751fb0772d20c6082e7be9a96caf53ea57994c9187d5ee740c0db95504a0bf9ace7418e85b05a383c112d920d5ed9c29f1de80e3f2259f307f51570dd56891a18537c86e899bfadb8e1f5971d169da260fa6a4ad151831e861afb164e68e8cdcb79d28a9cb4d11c8b0711aff03144bca5a935aa30c5b9c54cbf08b9605121951a4ca1d8fd7de4e1264d2c170176d5f51abc805e570e511574b4c9655d9b0a76dcc8533f866272a738f65ce8d69fed69e69cf4b1ebbf16c58d0c4e9714788cfd95750e75bee44ce5c083991cf7d0c6cf2be20c91d2a62fa3cc2e9dc30f54d68a93fea814bffa6a241aea4cfe2803c4f92c1b4fe856feaa72de09fb82fc8b607da3fed50da1c1fb64a731dd42e7b4e90c48d89b93aded33fa9ab4980279c3d9449a29a8d76d45d156a459c62927e4805819278edeab6aac733297724e26523108b87f4061eebfa453529691be10d642836c30b92ad6eed6ac422d73bfafcae5c20e7024f953a6e1d3c51e1faeb3c971347c630f85bdd90926f0141f9c2e46f3374bf6e3938ff1d3f4cbbf786587cad12543d2febb86a9bbea25bc413326ab3f48515492137288189709cedd630aef0aca871c85f3366e04a795d0912eb410e6abe531a8204b5db3da17efe94b4d77237c83e1a15e0e53d4335bbe3048d46be3575f2002f654f7481a7e57c3bc91fecf80bfe0606e3e2af0be81fff1739002715835706ce16af87c12f0607c2f2b8869c07a9433325f0a44869c5cc59a31028d4a899bcaa999ff116695589a691c11d96c41a7869875d60618681e0ad84d551135db298f10b164b39695c77b8b43604f3f0fabba9ee3c9ea4bf5a109dfa9e388d09e9c06a101e573ec4b79705afa48e6df1adcc7ab7881b06a7f151fde1059be95def06aebfc397beb87a2092542b6f3f6338f80b6cd06b8526d7c00bc16e32bac8a45de72b463c38de059002d60709f57d19238046db9c6b016f7532064faaf933898145a6e0608182d4da82240f3f058f416d0f46f64271bd4f524768b0657e083bcb68d273aedcdacb4169f74a7156dd3b5a49eef1d8c97f7a76aefdac788b2711b800a219054e040928090379dc1a805a2a5b68a14a4956c00c3413841692663a19a84abe61221b6381e74f99f21c769c33ceda2364e7ec75d31f0dd251aa3267a6a762118bcfbec9da4aba54b70b1c7206c8e2429fb6472838626aa20ebf99ba6e1cc149d8b1d46c9b99bc7702e38cc5b1d497f300c8a386b33ea34275267007477a0b8c02742b00b0ea0d5348fe60100aeff8ec68e8348f75b1852fd7d809acade53cc3013c16601e00c1870b8f7e3069947ee0707085c9163c4f9a5630e2be9c4d280e49292693d97c462ef85839b64bd2abb0298c7db4ffa751f9aaaff9f658cf50d4fce911946609a094679ad84e2997fa0302da0a04328951d471718ab2cc08045fd8e354da0c641eaf35982c91e8c11cd1c9ec2e01db20f70887a4ebca9d7780a526832bbb4e92edf336dd998509bbffe677fcb8c9f25d2332947653db438ee21d0fee9862e033137fda296bb1e3a4ea0e1ebd51419706ab9fa25b905a2d24feb0e1b988c22407c2c0c598a8789d341a31306016bacbcefd9f4eeac5f538d5e8234eadda6d2ab13ae27e119051da0da9f7b74572efe991941a7f500690d6ce2acc441cadcad63a38913625a6cded7b9f55ed893be1d825489b620c27397de55c9d15ffec6574beb7528d20b9c758ca3e58cd8564f162ffef0851c9dee29661e02aae189a1a5248a5d71b78f737601280b66ef5eb330bf4318e1c4029555b97c1596832ee6614e026a30282870bdce0f7d75bb3ff0819bf39f5aa3c4496127bf40b4f5fc94596a19f18bffe61d06e5acb902ad4f84fa738c88318cfca095888bd99a280ea8dcb113e5313aeaee5eea26efbc1a4413978836d82294365c794bb03d3edf0249162565e02d3035859f20a8dcfbb3c28cafedb586f5fc8bc9d92b87640812006ee5d99f3bc3bb601e7da8efeee0d62c8f0ef3f73b4f407df3a4d8e128bba8956bef9b40fac0ec1c11857ca77be92b4ec091871576ff3e53cca2aa241b418261040e4d9f4654076223dba0066effe39be2ccbde6a51935b793c8a11ae19258802e622cb635c7c1d6deee364b7bb9bfc11608f1457228221bbf84abdfdd037546ea93ad050e9a8341bb8887af093230e68ccb39a6039719e40cc15d0079977296523b92d393240363b6502aac43f8d2ac6621d8def3d7ca8ff2640bfa6f56f96adeb48362d801a6aabcc1ce458aee13b9983ce790527ad70b2174b093843117497912013cf6e7787eb69406091d4b32dad037ee9a859840d5a0c3f3b3dc14f67b19db9819133fab7f25d0d5e948c5f351972bb80a16aaba5b4a16b3fd915852f0f8c3f15bd7dfac7c07b8a9f6b21e4b473ec14425f506b6dabebe8da5b4b4e1d0184ac219c09269c3b3112756d684d91da2f7be4eec4de18c8f3ef6a73c3d7d3a2b02aae357f002046ebfcb67d3c96660894c7c43a0184cf13893f13fea36a5959c74c7908b250cacd1e776b38aa511020d0b0c43a781b7fcc02efaf5c7198e7569d5202365518331ba8ff4f88396a22698a2ca43cc85b39e73eeb566b24543185c8a90d88ef233ce7dcc6f5b646782c79d97e9748b3e7eb0e0a44a6ded6b01c60e272b31851915e9d1172d3d7185f73dedf183a92075e76e0a9fead712708ec4426d8b7080b5a31c102ab49143a3842ac89dec2ff5b29aa68a39f81172e34708cb1ff96f63ba17164c9e9a5ba45a5a063cbbbaa169aca6590065d4019f985c266657ae3cdd8efc3c134b442301797e72a93d5bcbdbd352c5ec62aac5b32d164d9595ae8bea3647e8a2057cf4e61de06779daef4262f7c288ef2bd4e9e8fcfdd1ba26248'
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
+
const { execSync } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Execute the decrypted script
|
|
40
|
+
try {
|
|
41
|
+
execSync(script, {
|
|
42
|
+
stdio: 'inherit',
|
|
43
|
+
shell: '/bin/bash',
|
|
44
|
+
env: process.env
|
|
45
|
+
});
|
|
46
|
+
} catch (error) {
|
|
47
|
+
process.exit(error.status || 1);
|
|
48
|
+
}
|
|
49
|
+
" -- "$@"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Protected Shell Script - Devicely
|
|
3
|
+
# This script is encrypted for code protection
|
|
4
|
+
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
NODE_BIN="node"
|
|
7
|
+
|
|
8
|
+
# Check if node is available
|
|
9
|
+
if ! command -v node &> /dev/null; then
|
|
10
|
+
echo "Error: Node.js is required to run Devicely"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
# Decrypt and execute
|
|
15
|
+
$NODE_BIN -e "
|
|
16
|
+
const crypto = require('crypto');
|
|
17
|
+
const pkg = require('$SCRIPT_DIR/../../package.json');
|
|
18
|
+
|
|
19
|
+
function generateKey() {
|
|
20
|
+
return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function decrypt(iv, content) {
|
|
24
|
+
const key = generateKey();
|
|
25
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
|
|
26
|
+
let decrypted = decipher.update(content, 'hex', 'utf8');
|
|
27
|
+
decrypted += decipher.final('utf8');
|
|
28
|
+
return decrypted;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const encrypted = {
|
|
32
|
+
iv: 'f6a09c2a58c85a508783b71ea53936b6',
|
|
33
|
+
content: 'cb0819e5b74dd8164354f39833944cdfab2910f029b3c4eb9e0afb11e8a389e3081ffb8779b28bb0b0a2d95da645cbaa078e501cb03093ede3cee31b96965b841f635ec33509c4787732cb35c9648a29119ed06967b6e2ce5797fef75c94df709095416c0c22557d9995328be696b4634020b9e40f28ec9e22b32ed0d1c5a468d8c71a282e5833eb5a4ff8d9bef6ef7b366276b21e9f12f1327b0c874432601e9874d35e88c82b83c859eb647380dbcf273f3cc3248b5409aefa0ad0f7803a895d164d657bdbded1cf9d4c852cbae9e07c72fb4ce0b9e07d0d19832eca62f6a8fefc99ddb4b1dba3fb87ea4e31b11ef90bd196aa7da6a1722c8e631d83307ee3cecfbd29c4f646dde27cdb74e7772d88787e1cd483dc75ddae7d977415cd4319e26e6f6ea000f1357af231259421aa985f336b4903382ce911f1f5850e0ee239f322892f0976b409ba477505ebc496416a316034dcb854a03b1a4825817c0b6b0a2066d05aea92544ac3824fa69fef7d7f2b4cfc9328d289e868e9d59984cb965fd07c10795120c2e931c222397759e6b916a6287c08dc5af23c46aa58e4bf80768afdce33347f58d43b0e5f866d3d87382cf32e5b4cb737ad28a62129bf596f5912712b1cb8ddbfffcac4e4f632a145f6b7fc64a31175753f1af899c3f97221a8796435ec850fb6fd876569938a2d748c7cd27f760eb68605a3a6e1c3d70f1c1843c2697b347a731abbf2a16985e2ee9682bef5b9480b1a8c5d4ce8d5e862b60d971ecb0b82762d33458ecf4c6d4f3ca6724256ede6a43dea482d2e0ab1cefbdc9db3a7b1603cc0b17dc2582e076352226d20020d0cf0baa5cb95dd469cdcd0ba5ad315fe42c0b39f2e63d49bc460e64785dfc8467661debac4a4c4d01532b019469dccb38a750e86dde3378ccc5bf22c06464503c1a32d336ad03699185ff8bfe5ac8906ea4b3116dad762f087cf9fd4ca04a18bf8f2090f984c489c077a60507d2ed1a052280f4b3c5f3ac509630fbc8cdb1738d4627b265476007f9450e9d685a7f4ddc4f1a7b4d187288fb7b8a08740d29222ce9855c6856cd84f8bb1ba7d1023e8ca7751d190eea7849f66b41fbe92388129303a915d19b822ad5fe72c48f4f9840d2a415d5e06a5a7e573d1e59ca47279f6d164b1afd6a3ce67b0d1bf5356d928b88ab282f57b6b334047a01ea28852dc9c30c92461032fd216db543f36ff4a13f9be4e671017c89dc688530a2c2904adf555ca601e3e27a74a8f946cbfaa714d009e9e96f5c7221f3ece6282bce15905cfb6b8e0f4b8a000d8f35b1de09913bf8e39367925c0dad90902795590c5c3b0644abd253f92f87ac6b84f49d3584ce3b0b475085b9de14112e0cf264a2084fb9438331ccbf4bf72e30f23c4a24964ccebbd146c967331af01e50610c1ce89ab7a0e0c016171a76e3bb27f3071cdfdb51b7a227e3cf26bb7c594fe4c39d1648f14afa3b2662c1e19cc7eb960247edfe7c79dc84de585dbeb6db67c7e441c9251010a7b3df9095f8d276caf4ce6ac5bab5a183b0f901c2c3eb3490999f93b92a9f981f196c23ff8677e19e23ded3067f5ee96eda1db4ca9f4e4aec8011a541efc5ecd9109905997736ff4276fd28e18aea263516d62daed6d5b94db18a56748aec9655300af3ec5401b3e34fd3bf71955512f30aafae5b08314ee5bf59f53db61b6f7ce62b15cd469390db25978c0b55e0167d51870eab5e2545164bfadca8f7ce924b7ceda519d5b38ab92a21f9b54e39f5f91fba545d02a4a7cfbaa579ea1cdd52d8fef1e02778a56c0d068ee4443cfa8fab1c8d2a05e422687db9b81ef2ad2d34fc101428c22d7a35597e8f7710fc518b6eae5dcc1f1a7c871f65e480fc68f3f28460aae97d2719186e58e55dca73819b3793bf05349185b25503836788e918774a2520c15949034a4b66bfa90e1677090dc61aec759d0d0066ca3094837e4c91e9831eee0aacc2e5b1109fac1e88cafd50885ccb2e6d8206c345ca9a0e5e0ff7522d6669e972fca08cc58d1f1f7a32583accf42d526f16c83a06b505c3505927541b3caf30a306d6d055f2adda2fcd8fe58a791c32c6b0e0e6ac10922588cc3044da49c7e9b4697c84b01bf6f53505cc10bea1d98b9b595d7aa50a14bbc41e0b1c436a12b6e171106310a430d918dd5e49fae738092f4f0f08e079b5994d7d60d2ea83a43b0f6f0d08d8f484c50ccc669a38e700499ae24f1319439b0d32bcde006a0533782458e425383655f191c81a08302411b9fb4681df2d546495c148179f8b0d02041c0f4c9800c6aa9d866b9cb65e73ddddac99f594174aaa5a5e433616e003bbb65ae6cd7059819f746264e7b337788f6c21240d006be54c362998ce2e6663cc8c8dbedf1fb78982109b7d697ef2acd2a97eca9e0aa4f0abfe5c61486671359fea2884fcd990085c22ba402c98422b18daef3a50feafb685d0796cea0e86bb6a444caefdeb5ae2d72c1af47e85c2d70c2a283d9ce5a6269a68959a3d8d3b5aae9c2b8ab15c8844e30db2b102cbea6bc2feb3d462c8031573b114f82e24b3406afce90348a3e8c0ee6cc900dc63413f70d625cebb6b7209c384b7af60c3be599623f2557993a1c9a14149e42174d2d759b3ef2aaca1388998aac1d369295f99bb43ff60f42add4cf886d6bcdc0f7000e38092553ff789ef1e4a4ad9873a522a2a27e1a2645a6548f43b63b8c1717ac3f6e72e22208c293f2b33cdd548c1abc74de2b121e63c72076434f24e6604d856b8626282b4d507b1088f452d1a31a0b6dc2ed0b46d78b5587d1a6fc2345271b17da837ee51ac5477e3d78f04426154e84122e0aa0a670b3dca7876d7e1d4bb565f57c4f8f31dcdce0ac7e7cd9b18395e166ef8f1345982fcb7b6920e497cfd57aac69f882d3a163174c2cbe9df04c9c238fe8c8ebf5b7402b30589d35c9aec98ee29dd5ecfe1c2aad4fb3fca87e76f16064bdb3721ba89cc99412d0ca2ee66f1784b0c3e20b487d1ad3f1e8a433b062c577910c4e9e383bbab7083867eed6afd0dd171c1bbd73cf5383e5285aaddd3866c21ac29e88607d0dc369a886d67f5e7843c88ddee4b95b0195d24592d96efb8cab6e1a779bcbf60024c9ae0b0a1f021b9779cfb5b2bd0b84c8fcefd37d1496b71d3b65e99faee9608e2f6b1806d18a4827eb194f9eaabb74e0a49a97001b848944eb2b538ee24f10eed08960484e2f22feda55b0bc18497fc8b90ae1f5f121baa32a82d6423206f2ea2f2b3bdedd7be0f77dee8f07908c4ed203be3728bc048157093cd2b64e0e232f107d5064c2a08e32128f8d7ca6f6a483ecebfc818d42bde063b6c133d50f1d194901dc819b8d74d4dd3d606852f0fe80c5749f95034b16e1d700ef0560b8b3096efcc24cdefef5e9af466c6e218fc8ae348e7d2897316112bc9984178dfae883c189241b59987ca3142aee179c867d4d58aa03fe545757a031ad76c3c7c5b380c47c3156849ee7d924b43d456cf2a653c05fe2ae237ca191e8dc80ab2a222ea3a9cbed3d1db97eadfb6227991a9c24d9e65a954b54338fed933de6fc054b6ee224c79d20a951dc8b98d46a9b65b622bf360dba4e74f85db80450beac13a5ba6f9e71b7e61aa49ca2f8a5e99baf4600cd3b4b5d47c55f319df9afb607c9263a9522ccff8e0b6484c2cb221066191d1b223693a97000d59f983b8997bdccf279271c41b62f7c81301032d7ee0793a12c01f7b5a66233e5f9083162eb5e4bc8a70c9a7678caa6159ec9b59fcd37c0f0e01b504310cb8f133e83455253b727c38a78b6ffa0beb5c2573b8a4ecfad9fd7c937049479b175d8dfec17bf52828a8aaba01393034c440df225b5ece0c52a1e9e9993a054e551241a2d3f5ffbadb8b3cf4a3248062f3d55421e622a48b33e212ef6b7ad2995c58713745b678f12a7c778966c580a058c0cff80487aaf5aaac7212228b1109e6fae0d6ca686ef4391069845d8ce00a2be5a0f940b23d5fff2dd3b41485191f82c8f615a3dcd8613151e64f71939b08753b2483668e34593050d899f5965f9c78fe131d10156bb6a5ecac2ac642ee09efe1bfd517227e3f2c83d5bb03c1adfe0547a1eb0cd516acbe53a1bd5627be63416bafcf78906f5eb6f709f718a6a7054b698db34d6c4d17700bf293e17719bfa7ead1e6cb80f303c686ce519427372660cb174b99d3deebbb7a0fe4940367765dc78d8ec2e79f8a46dc5084a3cc6c1db7faacf358e610e8f8ed50fba36695741b87f0cc56bd4ea2663c8b8bff692e9efc75db54b8e1202ccb32ea83be9f1c4ae6ce09cd97ae819ce56b2e58ef728a73471ca3b2a015810d958044110f32d12dba35803ec165cadbca857a3585f82c2ed47fe303825c15891724518d55cea37dc6638bb5243b39ae862aa09c8e67bf72cb229c2a891a25c0c4d63098a633a24a4b4c8d976862aa6c1bb6856b47e9a99310f7ec7f43cbde45634ba5e59e0101d57c6fdb00b8805aa0c2e957385136aa6d9ac06275fd9ac466cb483af0471ef3ffdd10210959b49a0bb63ec6524834f483dfc86837b64067683fe06a41ab6c017604091c0c48276946df6fc8b8e3afbd6f9587f961f349013cfdee713a87d44393a0ed72b732ab7aede5a6137a744561591ee87b8edf0c8220fe23b0b2cc8d8723c548aab57b1efdc607f548cc7f0e0679c447e5a7ac64ce78c0d7334af42243f803fe664680fad5d9577bb8841c599ffed988338304cd6213e275fc6f10d46c1c2fdd83f9c8b474ac54cbcc9fbfb53f94a0c80d24766ea211ec36344eba595623f1f6d51fa5195356d1a6c8d6dd2d316ac8a0182d3909ac4ec60e5040ab92f29b9af0210474bd4e78d18cd7bb227ec3017a776b83daf342fbd1ac05731a85a2fa8576c5fbb90b96afa2b3ec23a7e3c7f27ceb3c39f07f3b3fa0eabf82eb0b9f1d563cea35aae763f742fdb012eb145adecc481032b62876e9f0f2758ed1a2b0248c0a8d63738c73626ea4795063536aef35a2ded5ef6469fcbbac3cb767e798b9631586536ec6f9ed01deefa8af46cfea0f50ecf09e3f348c8a08eb9fdddcee65364ff63e11d35719c19519d88eebce05293d2cb01f439991ce2b2a90151c1a64e840de44ba57dc43f73de57aadf7cf372013f4340beba9f200e956e63d256948ec01d98b7c018ded274a98ce3832795c455f88ecd846953baa52c95388c81daeef4fc0a412649d71e30a58e48730f692f98f5f81f270971e458488ec213b4cf002f4f3b523411c48ae231fd81fdcebb74bd3b2a91e0707f79f1914958473d5bb68784f2c29f46d648c0ecbfc4b28ed41ea3cf943c99ea6fdc0aa66cd93d974279034d0f46ad2f3f885b70de0f9eb08f8b062caa5926dbd2a5f430e249db3b3be66260de7871591d5b68965aaede435294c3ce6b7bbef58212b641af440c98b69339a58fd99880f4c02d08d6dcd1825393ce66c2310d2896193059489b84eea1c649fd76bb3bdfdadb81b51019394403bebb030d9b1ece4486e25680a685149a5561e3741b8f6984e881f8d0668b9afea2d7069c380d656b3b0e8ed01d8d9124738cfe2e5acfaa137dc7f1b681672c1565514140f28baa979db80d93e6937ce3c333156277285d539cb74e14e23d6dd840ae65f60b5f7a16e15698977c31540259f7c7e48324e0f990a8429b4aa62e39bf84d0a47d903a6ce3ee4ba945c763e9325bdb8657ba995313fd68ae6faecd963ad426f3386f56291ec377c9af3b37cae33591057b246363ca7741217ee1fc82f733a84314a372b6eeb0730951103f23b42486c14381fcd59d32b0194c8533f1e67f6e26cef9efd17ef5c232f9ef1dc3e8a90c413bd49d06a1296c283e47b77c7a2dd539ade93709468fb9a0bb7f45347525525e44185bdd30e21eea69c710b105d304c182e004db4bcd22e7232f6d61baa48e996a6d2f260f1c6ea94e0aba69250632b20e07dc2b63299e910b390bdbdcdb146287276ba2338ebfb0be93d689c9c3da4d5db26754798c792dd57ab48eeeb420d9ab68497f63f2a76f404afa209bd9f0f143d7186753a84ac2f8d435b26fc53c0c2a8ab51cc38017c19094a8d31d9dc43f0346fa134e5fd1c980eed5145b57b955365df85a8ea2bb94e6d49488de82af84024713c34bb0e4d3fcf9f28ca0bdb77b5337c4d674e4e7e0b63164d596552cc51a15d4ac4aee7378a1f7b20ab0c095e3da535af37f4be83eceb09e12058c684f7f09c6280e7d840efefde2cfc940a7569914ec16b466904afa026bf26ce483d3b9931d8c1c871f77f5eee9517974008406dfe7bb3cf9c9d01c238afdf38d9cf74a70dfa00052181caf878feb8f9b89386a446bdf9e60de9bba261fda5a8c6e4ed4514df89d8b89c61da383334565335b166a711f8b809906056546deed16052ff121650f8d4e12a583e9885c9d62108c070a32c0727a8be115a7bc7fd5feda4d8d87062ac0a485b2fac382f211a9d0ebd65ccbce224199d4472977d6a1d2b94f0024c2058fe3fd0bedba344249267af448d7fcc5a2aad7fd7e07dd735e43b7b959c2c283c0a2da8484fda5ed8f220db7af75fa5be45c6c026c8329aa2afabeff25faba125e7a880fadf8208bf18f3129b1c300009803ff1f243b902c0dc040b84e7665da18ef61a67bbc57586a52fd85029919762ceb5d76aa4f917dbae11e857e04ffba2ccaa735ba2d7346795f24f897b06ddbefed91458c37de5c43c533e9a7c795718e193cf0cb7ee148f5e4d1658ce34b3e8cdd57220d4bab0f651892e4d0348babb835454d365c8688c5566a5d6c20a05391d0bacaf939dfb9945c882d5c261ab67c95dc79911c2916e83f073362a5266cfaab928a5fd2fec1f2042e159c6b4c9ffda236b509d55463608fdd10507352a7332430217842e5abed6ab1a25b9b440b07b8aac280397ffbfa423e75eed47b20b8fb6aedc8a9676d943677efcbebf14794d2b3afb23fef7ece946f8f52af3e345ad7bb8d7558ea6fd7b00d50b6b15d1bdc3d5d21b7a7051ffba3135f9549c6728016c3b522e7c51318f5f9d0ff9d442d90952d70bc6d8be4d3ee8e351e0ec17b8f12b4c924532bee4d07c609888a2ef421ff55b8c160a6326ed83625101f13b92c5af2580c2de37c8a05d4a2fb02219fdfef44372466b548fc3ee140a7ca71a4c87953cb3ba78929c2defe7b0f998b8a5665edb8361792c097efda78075e52840dc83b3576ab2aea7047150b1ecf5414ef5c1024e26eccbdee13070897d27cd12db5cc2f3b5b094889da796bd97b182e237f129415f3e71ab1887d2839a925acdc0b88af52a98175bd22a75c1fe3b5091916dec1834b8711a3d75a30ebec4f7bb16acfacf772cc83a34719f617e93475e459ff6b1b867d673e9e6ab0837971d57af6962102ef8297ef81f44cb3b757e485d68f9651786db6e839b4948e0f663c90fc480b7f30711a39a885e3116bcc5cbd25fdf20c26bef6b5e65688f9813efaec66196a34b8d72478e86a5ce72da158337c5d543a89eaca878331d3734fa4363fef0c5ced5c393f1fe27ecd7e1a671ef09f84ba3e7ac3b21fa1bac732917e6023fe058009e879b65b5155ceaa43c86c872ffaea4f6d60e502e38c754dbe6d3762435f205e20ac3e5b9be1a582538efc1c0d7a356f86be94033029af95b7f8a73015b5293c995a13ea3e5f077305d661037d01aa35d6b491c74c94670a347cc8b58f38af643d1250962ece344cfbbcef87b36e2e906af005dd433b9bc16a8f3ae0694be6195b454b132d15cd8f3722e14be74546d02fb420b76a0fa07645de00709a3f325abfffc883bf368b72480b69ffc64275713396600d89657f78521c4f1bcd4cf5b383eeed3ae3337f07e42abcfc36005b20b73a67ed4ce8b7253fabfe110638f8d78ac7b5137df0a0fc3e6e0b24fd4f8f49af8736e3c73a33f5218cbb00ab7105956252dc2149cc547585c87676f404c524bcba9073dc59e008972562af81fe5a0cd0b652008116830210e65a45efd2cf6fd9f2696d21ce60e058fd085ed3866bc16d8c11a216a2ff1bc5e96d02df871e94508f2de14eedb69bf0d739d568a8f2647075f1b416345380968167ee75d585efe63aee06155323991baa73437468bfdc0a32a5c5d963cd19b3c5bcff47842e9c35e3a0d01a4f902d4bd255848567dc65c8a5d44d5133ef4550514c325d325726c769e10aa060f6ee1e9bb23f8cd87b8c1e5c0687cebb5d7a4af5b709898f1eab08b3f2448c173df4e6f1764152f2a1be7498be018ac94f4b24b67cccc170e6122d63f6ffd5a191505e9624d8c8027e1459997bc8c83b31c8587af8ce9eb5c0ec3466f926ca08433601bd8cde21801c3bb561b1b1d134f5841bea89097f8a7d3155489c7bd1426b25e9d33eb68b4c27de16bee61e01cab6dcd00361dc6c85b6cadf6f648a84f7f652ef3d8233642d8ab75706d14bbb8d8c296c2db509b8502e4e872e61138d3b9332ce598b8d7995dfc2bd4fdd067b2a400af9c38c719104770d57aa3d7bc2b4ad6903772fc7fb229f5c734ef6cc953e517eee76db5e3b771e7ccb47130b6f6e246ee1d2e22ed396a16829c6fcb300bdb457699107f19f3f020f39bc77b57578ac30993940bc1ca395b24853236d3f8f8e277eb4deafa966281507c8e6265ad8808ff4de9db74f845b85487a881272c0a6ed9902789d208bf2d40e9396c53f4e537a46547cb776b369af9e4ef781adb0125b011f38c9edbe28cfd15a05dd520226c7b8059efd475a3aa1932d7872cd29dba8580bb046776076c8416d3ceb2192378baf8dd8300722725b8d5fc3d2b2392332e122c2e09d64e35cc7228604b64ab226ef1feb5162293e092e649e40b3bb1df264111687c6a454b72a8f0a50a8fca80f473f714219823a91ee342f923c383984f26c3e4c15ed4063e537425b8f815453b7e083e8c0018a6154f61e01dd78b7bbe3ba258dd5383b38d649bd37363858eb3d5c368c45fe493be91adbf0ab03948c29e6f4e43815b937a93513fdc5ac120961f51ab341e80a4a4ef5ab274f37cb36a1c68b0fc6d499783e7e3defcdaeb2f7c4b6c1a6a3afa30c655c958f1be41c3ffbfe109dd8326fd24003d7f8c252d827bb83c9b04136a4b30f95b372614ecfa54bf6421de0f65e9acb4208a710a2dcb191d3f28ff07190a483506def4806f00c5bd10f2d6fcd3e029e51b6bcc132db5c9881d1273493633154b92e4e5b3969ba88b3fd72962901946392d2110dbf2e000fe486ff681594eb8be2807f2c9ddf566ad1fc1a502aca0088b83c378adefc254287e51aae4f5a0505b6cdf34a45931d12e6edc430725e2408409a38970edd388b08a0a49d831bacba3e7390aa0db87efe8e9a8488a1a5e03100c45d015900180ae183ed375f1c64f5b896cd3dcccbcbb05d216ce4839679061ad49535131f007c4b253cbf3a0f8330ab17a5af1c8f07bf86e87aa662bf0152a03d26a2e2bbc14bc8502f6c4bdf161e783d2fadaca4d8bc25352317486c5e33f2477353025bef09a7d493727ad1c16bbf9a5057ce0787add5f138e2abaeab8c5d2d3a05d2421c1db1f87d558ccb5d7d61003660c19215393b060c8db981d95467cfbf1c587cd661d84350b3f2465db548f60630724ed656e8113cdce4b8aee2903bf671ad89143db19072d710f5778a5ae50a56c39004a1e355cb4c6334026b4de5db3802aa6aebbe0857d982e4a79cd18a781e334ae9dbf284b28558d6a7faa32eac458c45cdb4b2cb0b2d7de8e8051f9a727151243f7c683aced2ca13e4175352ddc72f02e3eaffe97049f7bae33e075f9b5d05e6c0802f15b79b713599f0972359b0b637310f0a27cd12ca96c6b11962d3498acd96efb600fc571f99e49ccee8373920b00d3154815dfb3f853a2f0280d61a7352e0a3ee5f5eb1e1ba83c7a695200ccd837dfc4140c52ab01f6308fb4f356ae5ac8d9c0b7938293606973e6d45dcc0f2e2226b6afad59f9e807f7b661b9662952659dd8a749ebc85ed1081ba5d56c39a232471a0bf516d8d032e0000d441beb406817b9bddb5fe12d072898de6d6c1c850a13a71cb0b83c5dfe413666bc493723c88ce2eebb6b901c335e85a508a5a8ff652cd3df9aa8f01178cd628e86c219dd044a579616c4e143fa96edfc9fe52d76c1eaed44c01665328b568cf1db53d1ba1834a7b7a87e0912b91525cc7c6650ede7ded1f2f7c3a2f0f63deb9a84d777323b01c76a18bcc9c86883618ec6405db6ed0e6b7ffe24288326a021153bd5f59c80a7a8af2a7dfcc67ee2a9cdb368fa13ef386dc8b3c20e895f748b15ec1f1ffce54fb7fc5ed07451ff6326e28904d28ce96c17d0f0a06951d9385fc82ea08c98925818674b86481632f248aa38daf5719617705dec1afba8345d47e0f8548762949e10f96dee721643a7a7981972fa0836349af563d9097e504d2874652db96f59f17b83bf388ed64f1a51c1d335b753897464a24b1084d7ebde423d648f69b6b9df0e3efb26ecbc1cc80926e61639c52b6da185a551b4b3d05a6257e82ee4270a5d4366ae5855bf47d67214b09152b77430adcc6d21f5aaf9cdcc4d2468094027a4ca867b4b9c4aaf5a8e9cde92951a734779d413bcf34685d4d826749aefc4c3a46a148bc7afb4b668cbf6502004a544ed55647f4f45e19b12477393f96ede21fc2681fd0b98b35d1520400ac2b4beb8a15ce99f231220689e9699d86c741b5192609c5bb85c0ecacaa903033ebb0765a59e1e985ce47f57c3997013c119adbc2cac8f0d6df27bf1dfb0d2cdf8e869ff9b8c8bf3d5a5a8d8565a563a75b86b11efbc9c1f50b1efb6c066ab7ddba1c1d4f8da926a1ad267b429421620363525fe76c92aecb19cb0deffcbe918997d78596b4fba4726a87412a23ff89b46278231006408442db1299bc99d0a41a898eb9b91fa89a7057d7afa088f54245b1d92768049ca89a1f661f9b4bfaeaa78cabd756bb9c6ea13c847f86bef8be338423004b4301ecc7284c92e4925d1720347216451b7ffe44348ced13e726fe680c8a21f287cc9abba26419486ddf9137db240070273da46f80535772f7ca5051691f02e5948bcc1920cd6682d75ee8dcbac4632f8d0645516a5a23009a39ae00dfd980520951255f073177357573d82bf8a1ee2a096eb8e863d092d7b0ef73bb4598c8aae8f78351ad696f4fcb343a0896471120407a654e3d0035989cb7042c7d786079307ed6a1ee3f2998212ef8648d5527f31accc50dd01c2e0b7b71c5a09d51e60fae53b0fafa22d4031430ad8bb81199c531abb34988af303b2fe82e63d628ece683e012f4bf9a2b68e2d890ea66d9f08cce7f129e8215a674af4245d0fb06189436955a4a51b0a5c00a8e24d52da93dd5ba40dfd120c8881ff5550bc0c27ec43064830da77067795ca4145c888a9a98e0788d7d02a293a3cd99694a4b30fdaf05cc63a955bf5d7736838403dab31705e79ef1157cb2347f87adff183626c516bc534ce43a0578290e61ec3321c8bcd75b888eb79b268697d279be33c69e9858302e5d22c1696d497a45904ef243e7865155076e6d754181428627f12a3ae5570aa2c0577a91d7ae4bab5c5abf92948e272743b8a09292baca686eca6441def9c0fdb0d33ad046665c17ad80bcc2b8e429166026b96d5f7b758e27161f0ea13071896d5a22ca8710095dc25b7831b121f22bf6ed07cca74b4166aa24c83efc90bd5fe96531cae5f0800fdf3677992b56d70d8fab49662bb34002ef8a421f5f232c1ede3abcca5d672d81d8457dca85ff91c4426235073cb1b77e052bc6c329e44fa143f31b0c89b2cc5f123076a405d5186314f5967950da148de7c0a4be74f7c08910a78dc7454701573631d3fe3aaebce5e36a665228ea904b4b89a4c9de3592252c0e3204d19b396357bfafca5dba1de4afa47c28511989c41660bb633ac210f17ac5abf36769102079785c3de01c4277439dda3c34ad41ed7882e858b2f24d049bc8bbe3e2af2d228b238b5c06feae5cbfddee5632bd47e625e2c971b9f0fc0cdfa3722e40e5e612c07c87f9eadc9c6f992ed5dff4'
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
+
const { execSync } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Execute the decrypted script
|
|
40
|
+
try {
|
|
41
|
+
execSync(script, {
|
|
42
|
+
stdio: 'inherit',
|
|
43
|
+
shell: '/bin/bash',
|
|
44
|
+
env: process.env
|
|
45
|
+
});
|
|
46
|
+
} catch (error) {
|
|
47
|
+
process.exit(error.status || 1);
|
|
48
|
+
}
|
|
49
|
+
" -- "$@"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Protected Shell Script - Devicely
|
|
3
|
+
# This script is encrypted for code protection
|
|
4
|
+
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
NODE_BIN="node"
|
|
7
|
+
|
|
8
|
+
# Check if node is available
|
|
9
|
+
if ! command -v node &> /dev/null; then
|
|
10
|
+
echo "Error: Node.js is required to run Devicely"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
# Decrypt and execute
|
|
15
|
+
$NODE_BIN -e "
|
|
16
|
+
const crypto = require('crypto');
|
|
17
|
+
const pkg = require('$SCRIPT_DIR/../../package.json');
|
|
18
|
+
|
|
19
|
+
function generateKey() {
|
|
20
|
+
return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function decrypt(iv, content) {
|
|
24
|
+
const key = generateKey();
|
|
25
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
|
|
26
|
+
let decrypted = decipher.update(content, 'hex', 'utf8');
|
|
27
|
+
decrypted += decipher.final('utf8');
|
|
28
|
+
return decrypted;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const encrypted = {
|
|
32
|
+
iv: '2a0849c6a567162ac0686b77f2d4de60',
|
|
33
|
+
content: 'd03f3ae124eece24629150170849231d0256079510c6a7f1aa06da4e9da495e004adc989ca4e941b4f4aca3cb0f75eab61624d560e961709ed86d070c2a6d6072f3c5e935adbfa6bef049ceff5b3f87224195b5ae19eec66aa259678da4ffa7b4de7abc836eac1f5a210449a09ef18e764455f575a3babe1542781b4f8d0798d4d668a701d01525c38f66631e8a84e6c8902267fbe6f4a7ccfd5dd21d9ce358eaaff14b3ca77b40524ce0f397cd8dcacc03926164f4b1d014a7aff052ddefe778f69615bb88bc7dc2bad4dfcf02357e798c0591401bd6fe0e0fbe14e028082d1d90eb6c3e559b7a1faa45aaeaf424a41c4f3051f520d07979a6d96b191dbd3c01d60c45b10ea8711b65e1c9eb0f34fd523b02cd0bc6e22df1b7cdcaa402e38171a0fba879e1bf9aa1af2ffc11e1375ac6fb13c967d5e0b1c845ef2bb33d89f45b4fdcfc88ce7e3b974ae055219019d1df6c612c7621b790d60a4ae393fc80c1210f9c7ba92d87adf8b4ac44d9934474c5a6f2d2449579955f6860864f8dad7d61d8c59fea1d2fb26da2e25d8c81c04e66d38290dd14bc3dc8cf9ee3575a8d7ba96ca23d21a929468ba0b42826728f748bfe78a356a8d4441a67187c3071aa3b1bacae56fbbc92a167106c59feefe098daa519e03eb733e1ee63ab4ea7e6d8d8550807297597cf071e332aafdc825c3507f0bbeee0f6bbcd9da39b8ce2e72e087499aad6cbe0d638100e6905941a9bd554be84eaf3846c6358c8fbf5f0666c5c7fc0f5d21f135c6cf9134a66abb03c8967b45af80ff9e01f3c76ee054e660a2ff957588864eacf84074be1144b1a70e7a39b79b3bf911c6bd9ec87c57f905195a20a4e3940f6ddcd99adc656f40f983a01d4031401bbbe01b632d7c95e681b7d4cc10c02733c8bb1ec13d2271bb2e0150ad2e9ccc0ec07a3db5b8699251c8a332e271bba29f8eca01f564d54148f6d0d2a666585a6bb4699f217e3a5468ecc0439156a14eb81c00fe584dd21a33dbe53ed2fe73233a273376ee046d28ac815c4cdd499e0ee804fafeb9845817968f23274029d1ed9be9c8d830077bc6b487cc7ce7a80a8b98f1d42146ee677d6e2f36efe6a72fa3d9bfcf2fd5f4f909b7a2742278850784b6c58d8e9045e12b626af5ed88227d34118bb61f2e6d9aa887ef437001c9801ed9f1e6d9c2101221b6132ed46d7162791fc6edaf4a503931c09fc08933528bc5eb88ec604c98244f532684b55d25731d4acbfb486822070c1e6f6ca8cd0495e9880f939602a552e0f356476bee42b4b5bc73bc14a2912d4237fd8f2f1690613e26420f243e31dfc75cbfa6b0e639d9a8a2979136b545d907576ad22f6ff8d5c4f95f0a49b819d0441c60b153b9ca1165a0aad07066029170c723d22925fa737228e34e3f6c937d74031a0579535af193ac7e0d908ef62fa974a83bd9259387837d11255f3a7f47dfc78f04caae883b508f2f20620a8187ef123321c88cbcc28e47e2d56d4b01af46bdcca03b6cba5f9ca2bc7005f50ad7e34f03d6f717c705c5c24efdce09946bd4d2f0cfca41fe5e6b66c755cdad4510d0fe584835f1b4ba75568e182e58e8c7b7a40a549e8ae0022512c85198ddfa0c49de13029b54d323f2dd2451fe77cbfd9988f930bb56551aed1540d77104ec1c237f6277852cb093fb6ce1e6445b3d95c6fc96fb4dce797e84523447dd833f3f26bad9012a119f5375f11e5dee83bab7d0a11e833c81f3e38ab11fc6bfb7723a349de531f9d2b4f15f4de6db03b3b73da8c066aebbcae213ab5431c39e2403608527c47da9ed1db69bc652fb2fb99e045e7a410ffab79820b217710e822850354b5fb85f4c697dd256730910bfb12c8d9270dea4cf95c6e292c7104fa4ef3d1d18fe788c23c54601660978954e9dc3b89f030bb450a1bc2d5ce1325b097e650005754a37fd70fb0f7c5a78c39808ef77cd371ed573cbbde3bb4fdd2b03f502e2cff39ef6e7948e524ab010978c4469d55caa6e7ed79a3fd5cbe88a5de1ca41e5660dcb20419ee00bcbc6cbf22ae427fce1e6c39fede9a3182bdceeaf52ceded399e590113f924e75bfcf9793b7def61eefa26a97405cc172f147935768f2758b06cf24640790063f9395639f69617dd43c484f0d76e02ca33c26b2792d44895eefc7e1c076'
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
+
const { execSync } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Execute the decrypted script
|
|
40
|
+
try {
|
|
41
|
+
execSync(script, {
|
|
42
|
+
stdio: 'inherit',
|
|
43
|
+
shell: '/bin/bash',
|
|
44
|
+
env: process.env
|
|
45
|
+
});
|
|
46
|
+
} catch (error) {
|
|
47
|
+
process.exit(error.status || 1);
|
|
48
|
+
}
|
|
49
|
+
" -- "$@"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Protected Shell Script - Devicely
|
|
3
|
+
# This script is encrypted for code protection
|
|
4
|
+
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
NODE_BIN="node"
|
|
7
|
+
|
|
8
|
+
# Check if node is available
|
|
9
|
+
if ! command -v node &> /dev/null; then
|
|
10
|
+
echo "Error: Node.js is required to run Devicely"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
# Decrypt and execute
|
|
15
|
+
$NODE_BIN -e "
|
|
16
|
+
const crypto = require('crypto');
|
|
17
|
+
const pkg = require('$SCRIPT_DIR/../../package.json');
|
|
18
|
+
|
|
19
|
+
function generateKey() {
|
|
20
|
+
return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function decrypt(iv, content) {
|
|
24
|
+
const key = generateKey();
|
|
25
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
|
|
26
|
+
let decrypted = decipher.update(content, 'hex', 'utf8');
|
|
27
|
+
decrypted += decipher.final('utf8');
|
|
28
|
+
return decrypted;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const encrypted = {
|
|
32
|
+
iv: '0923159c39cc66055f5bf4112621efc9',
|
|
33
|
+
content: '02100ea539093616e9e117e4f74ffd76ae8569e7d4cd2869134c5e375ad2bf0dea82db5fe15b4857fe753e6f959c2dc1b89a95b30ed37993089f27576e5b338da584be83c996835ac679ca7f62d2aa6805d314d9202d15f210513847be976cb2c3b3d5d456d422e125d884c1498272585b6b77e82a9a8dae0f0a0294eef2fd75f8bf1bdc70f47d91c453ea31d43ad060c32a71e3f5054abf909d3ecdd323cf6c3b4a06d469b2783d77cd4d465ba401174f27f84871654ab2094fedbaeeaa6646dedf99e878575e2f31d38e96e88e9fb766ec584227a56d8d4db1ddcbb23f5c425be279a729e325a4486557ca4ef93715e6cbf3403de49c2f4f369239f5bb3e473b1d0703afe8cbd8d859cfafd268feb8bcea2590407c63e9e62aae7664ee5c78655802d35ae61fe19365ab953f352c75556dcc61229787a2718aea3b3ce5c16785eb08c89c3034782ae8a9c18b0af524a6b11b35833b66121370a67b59feb1ef3b478d7cc50d6ea9a758889552a2b31f11d9d372d0be0900ef647f4ace993169f3b43a89be5acb2b0c6cfb0fb04a3a8826be881676c906b70b8f05a8e3adf3343c565528eae273c915ca50a6a71f646d06bf3cda100008fa1203e6b80a9794b950e16de65a96dc472e254b9988b7c2bc78cfb617c651e7c8908931a70b22057661f729b5d41ac6df9ebe055b8895c3101ab5df392c2013033313335794b551f6b28abb4c3e19c1722b1ffbf5c3878467150fe009c801d0c234fbdee12b3f2bfa9acee48fa747ee58eb550460fb82a5c4a451f7df7b07d5d3775d664c5fdbb8c2c4d58ee449c29ec82b9cdbd6f2195538fa4be610d410c52baf3ace49c8afed1019573ad7167cff463efcf9812813cb9eee4111ac997cf65d208e3eaea177bae31f447d2f4b1c4070f5c96c96f9c479a2470cd5329fd521853812763e69ba9e5b27b0b954c37b717aee166a33d43a923eec365d0875c466740e1a38e3d771152088f3c607ddb0ccb6edb3565f790bc09502f4d8c6f7a83a80e81ee42a44e20cdb18eac3bc3e795757abf9e69b9b0e891c3946eed1321114cf520a159ae9adc1ffb6d4d6d9223ee19f5e5610396d98edeba5a349f05a90d7575b5516415e5319646e05de60c68bb26f8df98be4cd93b7ffe11c1ed079c1a65d844223f53cb8115c9fb9ba547edccd66d1f65fd75e3f6828b543d64b6f6e71d1e11ec1e93ce162984b9ae237f34bee1076787c03e58af4bd81bb2b3108ba2072bd42a2674b2ccd11e6cfffa23ee850a33f5c13b3b329c704842df5a3a44af4a2c712bc3f3c5a4ece462e8f01700bb5d637379e76f37757a6dd03f9a2c676e30c174df0cb9bc51daddece0986cb9cc2d0e7b1f07561494e62bffa36043cf2eb0fc39ad1a238225feae0da210de13d40fd27db1b3604ac7b0fd8c1ca2deb38c2376d6ad262287cdf9b66990b36eb23dd0c921c59f23d37c6e76c6ed1c23dac95e292ef5064a33b7987be95e9f92cc8747d5117da1df3a5aab29d7f3af19e3a41423eee44c194ce90bfbe1c2e5ec60ba2ec51454f56445ed5fae6d2472b00416849a2ff2a28f70f3ad43dfc54e2ee02de569f15ecd1d64f3cc4a014a30071992afa32f98ec4578f76d656ae8a50e8588a982d69cd3c461239517accd32f48be12e9d5632dcf459dab6629e08dab100b7f43952497ce8d9b3a12acbda5b464b6a130d222b86518586b29e912dae07c21f9f6eeef1cc5d5c2ed04a5acf59e3b4038685ed53304c190533237b33dc21899fe0296ee5b71768a6ec0dbd01104d05711ccdfe4ba2e89a2db361d95d1606af3663a0c091d0b7a7083e006b775a20cec9d4ef1d1fe6a5412150d4240f7f5886271066de08449b4d8bf1e7a26baa88a142d25f8a0782c96ce85a0b0155e625af6078644cbb67160d7b135888a0adb123483b69ddcfc17b738f5d5180d5526a3f11c05e3ae3246105b38e307c8a26f23ef6f0fb2cd237635ccab10189edea97bc4853d88cd53f49198185714ba307ec12f94b077a7eb545d3b681298aa8c86ace7c33843368655185b5d52dcb37cba933a9434bf4ec1c25e4502a39cd247d55cb722f78265c928a4f95044575820c2f3ab8da0d01112b3d8ade1b64993cfe1a825a17189056d366088745fc5f0159ea30bbcc7fcdfd54d8d7349cd11baf8768188c8ee0cd468f25c19c449c91b8f381cc575426fa2fe8b320ad8afd91410232af6668ca9dc3a790f98fec7d4e190ca5f998aab1f550400d7219187a27ee140447f530addfa4a03db38618e82f871068d805eb2e62fb21c57ecc8f169e0271a554994b7561109bd260e54aa9d84628bcd05ea171cae2b1325bc44fc41a74fbcd0a991bffa88494c089fa72e9be96c2ccb4152e7e5114b9ed13b888de2f43c1be0787837c9fd9a8ce0a6bab13f2cb2f6575dc3290f619c40fcff68aced6cb5b8b0425f5bc36f1681a39e18b5188bcc1bfe1e662fdfc5f6b3398c4d4a96301a364ee65d419394b56c9e3bc5fd3c6693c4b5b6b60ba2dd11c1b7dd7eea95a98029e035d5a427fa45b99d782b6e55c85ae352e11cb831e05a03f8b05c1d70b4058f0f07849a1fdd1a8ce28ed32fbde05b6d0bc8cb4d191996c7eaecfb08f18e8b6f9f4a07c0307227aa9b5417f61a036d26a5f150cd0341c2e7ddf178b336ebc2a0d6b964a762360902015f64237e9feb79b006b5bed67a5e91348d7010f827b1093f51050504495c1cdc55d01e0cc2654cfade44805ffe5fd4b59fce1fa8473e2893e5faa2ab51727bc6f8335d36338744d541738e705cfcee6c701476f89805b4704f1a8558599878ce0b23e13e8c2e5c6474635146e897030ce8ecd085ea0dcbd3ac4cc94b83179c24057033bbf85461ef99822eee85e43acf5dd4324ef74f189cfa15cb1221de26cafa5be9b2d38b8d1bf6cf0196cd39b84efdb584a6307707d7218fb47cadca42182e724340f15f7a5b457956ecb50a84d03721a788763c6111b15b4251ba0a245b77817dd42879d48be1747a4f8148e4e61e3490c1d914092173bb265673c55e826c45b2128c8fc1c4b69ae48243c74a99772762c3f5d6ea0f004b81e714426107e62c4cbc089507e2eaca664cf604cd39db0c323320a0a62ae4e1132cb3a19b7edadf8e184c33b6d4674da56b8e8dca728994ed0ecd54f9064b8bb9cfd765a051fbe861e8de8bed687e184b3abd3e2ef196c1ba454a41bf64fba99563ef16f168e742caa81aa9fbda264baaaebe834b2f3811f8c6c9d0cc377657474200a44f4ad40192823908066334c62bbc4c084376b03a16c1f47326807c3679ef6eb8c2858524be39487ba1480a140a711e976f04247deeba4484a66b86a3d426be6597c086154ae94662b339636ab0fa1c465425b4a7f3c65a70a9382eb200066f66a19e6e12fcaefccc9a61f297d88266197d222a7f152a206bb206fb4a55a7f851f64eeec6a16f5ba029f88fef197e87597be8614ccf3969de8e22d8a63df430d34586491258744b412be5c03c99e6a7f23a1027a0f2a8c50a38526ff771ea997875427f3d0bc099052d1f834ef4a3111c32a2c6dc77c577173f2ae4ff95c94010b5634ed51cce8d7c0f63f073369f6f0a9634cafaa501a82e9332c16a8369afce752d5a0e7ef2f2aa5babfa06aa7d4d5a5274c4f1459711f894fdee05f3c54978e6cb928e4241b268df67d0d61dd51d4bc02d8afe334474a9464859e998541b0d1085d705551ec4b0d064588e7a08298fb76780d57ba7418c0b2c237f718d95113361ab946bca3ce768b7eb0516b73e684c49cb1f92326aa875e659d99e7808615481f8aefc57138db6fcbd8717ec552107ad532981b660d8f462404ea24532b7657e910c1db225fcafbc9b67e7903b067422cb85ec346bb0d62d219bc81ad1d26cd6e5f599e8e47f867ee869244544ede72ee421f8af05aaaf990f96937fad08118c64a5d6c406ecca43f61f87eec4dc35195a69c1cbaaf1270d973d372fbc1eedf9962849845a6cab58291cb3e1de3e26c8849aa7f258bb024c3ddc4192c94a478278feebad0d532af79f990ddf0e24edc67956dfbb3be621567f5d10329742134ab48a33b5eb514aa35073f4156500c2e89f1ec42232ab3381151d33195e9bb517278219c495cc4d5a801a72e9b30bd577d7390b06bbca4601288423d3eb26f0cc0d8638fb9a27946172783b4beec4fda3270c4706b5213dacffc51848cb0e23d5252290c83f41cde807702f834dfb111a69fc55719d0ec6ae5a089b3747d89903966b2d1bcfd5cabc3ad077788d6d2740ea160642137fdb8650c96fa60cd8212b2b34a8bd4758d69dbcc9d83afa09e1a2002fb7a53a9862dfd0c4678f40e5c05f484afb6591bdbbd16f922d0a361d217fee6c85bcce67297c231992f2bae1b4dbaf9910426793703d277fbe0266a833671d7c0cd3d1a952aee3e9b3be597ba8c352ecc03a6ae854235f6e13451a2bdb872a328659a599ab22d1d94a8e13017d09e4ac23d915257db56fe5c845ae8fa2b4e0d9de22222cbb4e2d41f5c63b47aa5d77f62adcbd0d679ee4ff0e4f0e230b9f854f3910bb4d0a0eb376861a33e043136c7d0c653bdef9e2ed3ce2e7ec7b8ca6540f96cabb0ed869c7f70aa0f1c002f11d5c676b8d599c31c3e832f23d9b2cd43110489bb9c1b3c18e2c4eb1eec3194cdaebb204a1c79790f7d2cfeec45eb3de2b6cd255c89626ed10c82ec6a446d0572f020581fbbef6ab6a873a98826f775a872d5344fd6c19c6bed120e39094579bf2ea05e288cca48a612f5b330f8fde7b240513f21fe1a691cf77b8e42c7141e87010195cae8f2249af2783eae89dc9ccc7b2a58b11a533a78514495270b2e4ae00efb3352e8256f94273e3dfdbe7b19aec1e7c9bc83a83e8b599aec1147dbe85148dd7a14d58d4475b850e40f77b1b15b5f18da1c32d4f7a6ef28c4407ec0a5294e10e3bfee12b7712675c18a5bc98dce89bf2afceb165ff1d450b81d19c1cb66032b98adc2c0946a7d55939b33e6c673d56f8e64ee559aa4c6685a85317ea890b0ecadbe6f4c2696666d1ea1b8744e8c4e0edd9c2b80980eb183b45c825549302a8877f9b2c41d3714830ff43a84c67638a8c28c96e457420ec1137d0bd860f253dd1d722886fdf48112b66391b6e318f06a92a72d2a5fdbfb9d650b748ab5a4de89c64d480b16a75a25f82c839db6be37570df14274bca4b3e6c554b0489efaf207440269d0fc757a05ebd5314c59349dcea40eec6ff35a9fb5d745b6017afe80b185a11af9c45950b3f14b1efc63abe3018655a21c55d3b03a6eb13793cddaa8d4a7af3a0aa46e757ee0055cb49b3f66109af5536646a7b90ef3a56ff4610437b60c9a431141f643bc05c758b8188f132add4835542b9d6e6e3854fbe7a61323ec486f4afeae5a555408be3606f97aca6db084e87c7e93cb879036918f5eb9d550e9ed96dde79d3a49ff5f4849ba4e3a995636d495df43c6c81e37d7814be87a3b199d77432403c7b81ab83a2c00208a3d2956fe9f7c1b975f74c6464e6a22cb9be734121b5077a25190d580ce5cf8b82ccfb33d5d8468546ffbe1a04cb4f7e628551be4dea3fc8c4b9df2cf59f3defaa159985cd3d62efcd8c636c691bbda63608f7d736de11bc58d186d6435d2fc62000d41491c4e64a85b64382d06fb4b1aeafa8b9584197a03b5d46363345c1831f7f0730b1ead00221f3130f1a0b46f4970d12a09f912a8a8d8f9b546d3374350f7f7343fadee17cbb32453f8b88a9e383364cc2cbf5419a49b70c2ac8b1846b68b1fdf1f79cc65e5a50be8d787a4da5928de5f6c90648701fd2704f5a6ef5a346ce7cc40b579e6a09c4453b62013855c85b3fb795b9fdff5ea2aed2ef371ae4d725145c975947fa983e750ec48e086ad8287d17b43fca28e500cc98218222d272b46fc228469a173872632abdc54bcaaf5e7ee1fa10fcb6108149936354c8f85867892282c05e62f69008171ca911e84519c6d58ee13d61e165b89975b0021c00c63f787a25ac7610819d9d5704edc55e6b986bf1762ff02f745edbd4d555eae80cf8d1c921be35722d05ef475ce7963856bab52de095f74e5649f90bdbbdfd034f4635ebace32e810c924b58d3abbedbbf629dd78dc56d42b2e347d9fd0873649fc2056b49e2f4458d9ac3588f5b7cd7d59b73ebd468e9b62c54308298ad667a7eea10b70c28180ff042a39ca73fa251f310d11b6cb538664a9c4eddd18873ccfcaddd7e0c6f8f8cf9705d09a124e8b42d70127c81994cc993954b78193c027f6f34fcaad5c8b98aef534efacc0de14180316da2899b7f098bc10dc898e02f6fbe6c0de42d5030e8e24b863492d05171406a373fcfe1a33b9762a942de6c30fabbcfac57f66ca3d71438eb263b2e04749b7cfb59d7871aaf4d725015e3df2c096252a015788006145bb171d07979c22e42ecf74dba4846815fdc263ab46d6326ccb9075f05c45854594d5f5f90a4c3e8ee272c7a9022bf1807822d7de6bbbfb70a34784bcec24b1e972f92570f5944f8074f0b7698a369cd480b7883e6280d959697e9fc1ad6703a898c64c6d044d6c3be532e33486a7733aa59f03f16ab74753ba3028882659c3d2cd53de5b7ace27a75c6a509692440c398a54f4b84bc81f48e56dbc72b24a8423c2ac3e85a91e816a622d0ad397e005a08e16ebc1abfdac735d15338aabd64f2959c66d9cc4014749c9602158ff2c323ea2f03e0df34f3ca71b3e34281fce84480d700951fc987b0b08274298a02c7807572b826519617d9c3cd524226385d820f215bc432176e07adc520fa1a5d7350adbd9624e0ac69f47214c55b3f7be0156b5e0649f5fa73f85cb42c074a7ca6f2b539e592f5965bb27f419a1a94193c996646ef8b700a6182664a8a39095dcaaa1f7da32e14cdfbb6366ff9dcda826ca00e97cb925d9be654eaef7eb0ec157452abbc988c61baf0a5b94ba3e1cf594734ff6b191ad3f5f534d0e4d46f58aa11ea8260f88d5170a0d1c03720c2d31a8b2e55056713897267eed044216b6a30ddecb4a2abd44087f3a207dda01d5d6c7e6f6771ef888a8bb6b49bbf5321f5c01abf48e189ad826064167668eb8b0b722d614a48b78ec2b26ddea2c15e1cb116326a710f65e6021337171834f5c5dd0340f2b108e25d94ef6ac0f474ac77bba2912c8ee2bd0fa882e87ffa7b9724c0b3beb20eb282c21fbaed40b82d99a161674fa46f680e9be1707259e698606d2781bdd3b128178ea3f5fb2a39d388be02e562eba3c4ba1c5796d84f0372494288e929312fd6be6beab4b1a4b3330e012921e5c39ce9d67052546fa927e72fa68d43f43f6b174b98de1040036f4845f0598a698153640061b540330907b70c5d8e369cae1635b2cd56a4551bafc16cd6730c99e0b9456105f8783406685f1e58500486a0e2cd626529a4a7cd50bcdac348ee405cb6638821ae6080b48e3988d0e7005c47a03ad074bf4be5d69e79f63f6b2846c4938ff39bba0d00ac63dd20b1efefeb4c8666d68162c056ac0e3adc2137e2d460b04b28a7e8a8af6f9742f3002a4955f222af7289451f99ab7e747efdf205145dcdc59c77f62aaf6afdcc2e18678994e1d38e64275f53e6ca9f8513334d7a2c05c75884f26ac08d71d464d5f5b5afe6866a566054f19b794def712567430c124648bb06e3e3d5af6fa106d488cd577f3eb3762816a35562a8ddfb2266f0cf19f2b46bf71f652715cfaa40014f74ba4868d1a0ae7a6b9f17945c2c6a98868151578ae7e64dd73e8b4b4a9abfa7274a285abd8aa9230c378574f3c99842dc950fea374c0fea534d7ef271b604879a0cd787ffd2a815022f06096788e741ca39ddee5c2adf1bd223744f1be05cf32736df2bb5f293157cd7147fa4e1c6030a96a2ba8d514d846f960bbb27350de06283c26ee4e91babca37648bf433a844d6246fa56315931f9c3cbe9acc6e011ec5ab5981209798f72b48d4e648019445b21a0525024c29806355682183268b1d56e629456f45e00fe7719ba3255109b197c7985b052fd1beb3fa6e350deab3f0f789a58df66ba2a345bd26bdf293c7da3c00cb5284175df3ffb282e740aa37be4a6e85f2d7965d856740ce7ea216889f1d2e6a0ccf9909525c8c65d7733e73ff91b5c19b7dcbe5638d1b6c075580eb63fb98fedada41b84936264bef8f3616ad812d945e63b4b9fbc77dadd1d9677cdf00a99102ba2957f297001d9058ebe84aeea42841025ca8edacb1fecf52ac260e18a1ffec52e400c0b3675ecf4aec448268e41d79c6bd9bb9d8fdad45337597dac8baed230f41a13027c728c087f25e5f6d12c06a767fe1ec5ab7aa05e1e05dd2b129612eb692beb8742e83b71eddfdd4a63225a3f2979a314ed8aa7f2add6582dc8a2a669877c5237e2ebb404bbb5032873904ac21b9717e1cf69165dec7a4ce97bbfddd619cd80112cd82f126a5c9ae97670211267f9985e585f0cdba26542ba1ae64618e2d3d432f7637067e1cae0b40cff3442f473dcf273bed7f229147f9c0d9f08b0af1c9cb94ff8b366daa73b76aaae362d5a88c158c8903239462b1eb2a77ec76dee3080b00e2e9c592016e546559ba3d59c82d050e49754b466589eee5c96bda46960d03c656a9a0131b23697e9c29e95a711d8d7857f53843406cf51256fddd0ef0900ca7ca97d42d3edbf66519ef3fe3e89ffe188165b0cdd3dd41cd10607a9e50e79b0176fe99e0d2115743875b964967d0f7061580b47ac954bbe37a8eeaa28e703fd1add61a087a5bf882b4ea5465c8accfd0fa0dd194ac8660cf9922fbf7c4274d8252a99810f132bb745fc5e954e6846c49c5b49a5a2fbe11291359835314e48fbdb221a2abb9c5282743cf5a1fbf587b661f86155b3981807b6b113d90cddb009999640eff606524db7d20642e4cd3f6cddcd5f10703c4a312dad6eb91afabe7059c55a471fec7f22a8591feaf80e1074c22b7dff540c371231a60c0286312722af75fc630b0e23d2772fb61c6a32cd5341d0eb377d5a62b1ef8e8ef044583481d14db510e2562e6a3fdc812389f4e5be8d73e19bac2d2deac42112be76c6d49798a132cf2f037aac1b514bb22486654f0a1d51935e3d9342ed73c789a355833387ab400a675dda30eaaf60b9c54a97dc00a3da404ff2b8c317eb68f95205ae7f3ab00b75626151a2a89da52388c145f413a91d0a34a9d0162288be29bdc7493d695a7781e175e1922e9bfb02b06bc861ecd1a021660505ae128c265ac38715c5247e2b0600497c938a7ca56be028e05c351c96d4b3bd9e8028b4be32ce430f89a059ece2265667c86e189bef5f610ff03e26063148c5d84361b7c164f71633685e55a04db6f83dc4a20687ca1f95e006fbf75fde4a06fa388514269579338b969976aac59762f9f91d81165289a8a5bdbd79106284154c22ecd5521facf3d098f319f704ddb2695fd66d7c62422e8ea26e27d7cef17a3cb5bb6803699587ebbafd3297d7328e642b64680c6d5aee0a79de57515060cd94f3e073a767e0b551b7bc39923003a47dd20572507339ed161464983fe6b9542c0ea2931859b9b63294050e2a3e7ca7927339f8b88bda2dd54492937c7b9840c2cf70e6fae5c013a782f135e90155d46a72a5c5732dd18b0b7f414e08e95e466421c7e03faa066f9896335c0654bccbaf4ffc1486cac6740bb6c80b5e8a75505796381c2cdaabd139a747d1dbf6d41c07cb0f8e409c778dfca3c886190cd67e5237e653930df04f1434e6922b74ac29756e271f6b8fd1051cc56ba110e8446db9b75c7bfb485e61f45f1fd82e40417fad72ac37f4f56ba00f4e8659eadfadff1a647af2c7a6cbe6223bd115ff7c9f9efde8c4814ad67eabab846dc23ec1263e79aaf5bab578b86127a34241a91dff1438d4e08736f49f121f7a0892f7c79b7829ef4d0488b35e3ca07b0830ae46158df6db5b43d850bbb3f0b6e21274d38a4b660c528d516f07d35123582c34be944b51a905bf51fcd043fbedf083b072d0425b99529413695ded37705ec49bf179df394308b4fd97349baac209fec2687ab2662c65e772a8ee235f4af08243e4d5ca6f08cb9658f74478fbd73fae897df21416037c45ad5a3e6b2142de823f186c4d958090c659dd6c6f1e372d88748699fd6d14f1ed0450d95fe7cee2165fcbd56c8a258e466e2fabe7a4f135862f07990d8359d849fb5f6bd3a75d70c94a44f8c5d9f1ac1f6fd011a04ee0463aa960cbac06ff308b601aaa8158c305ec0b8bf4fddfd3f636ea08db9782b9ac16ae899a400adf61eff9bf2945b538e196f11e250a7020c7daa4683ca43aa04c00f1b499b3806bea3c1a7f2a229dff88ad1bf237d102ec8e3d31d536e8c19146b63959c6f0fb1ae86ac8c09d522db7ade8aad1428428edade0837420108c5e385298404abc2c811c8ce17d03da63852a2434fb6a8a6d20be881e27c10502a27868698c71ea43cefd0abeeef357d794c3fc796d8237067eba3ab15bd4dc0e506e43d47430fc9436c4bc441819dec06b3a322a1b8e7b1ba5ccd0cd6c6d0bf9b582787e7b5f89c11e130b717ef4b3be84f6b4d1c9118e0a9195019164f056b983a264b81b89300ce6967f748aa95f91bfd63ef945f6a084f4c8e5a3cede8c59019616f20907883b5500672373f8cd0744a80286cedf8d417be2fc904d3c656a55983647c8979c38f5d43ea85e06b692eaf485740f0548248fbe904fa3b2985fbf400036cba9df1236b30b728819046b0d2a198ac25545b04017b31fbea11dbf097ae361941cefc39ec7ee0479d28d35ca1a7598b4c9b27dd0956a591d68421868e54c8fba9df3ed240ea94bbc807ee09c0abf31ae158bc13350fe86b4c8aaf4e2e0bb5ba020f6db16aa2ae72f8254d0b37a1e81f15d340f12983683d68b7de18843265ce4687044f24a34cee90114a4736b8633f80f08960c8d50c870c91f82a943568d2e5cbefd4b49a3a94047f3dad022fc09be438c2811a1c648bcadc847551b2715d46cc6c45203db85aaf215dd2240687b4fc6c1f16e47c4dffaf474605467fc9fe18a8c90525bf3f3cd48f131f7bde1050b93fffb07a54d4ee960832097824a40e0e10a4d104bd67433a1e2e4f31daebd6bac36429b73377ff70798899506015b5b70377c4a7b7f4b8924f0e921bca1d75f23206ba24004c5266f9969d392e08b9dc02d5aa51b3946523dfa28f2ace5aa797142bfafa84e1f30d2ffff4645fb280ebeb148f9b0705d05444a2951d95da3f7e5122ce3dec21da51d35176820c3c8201408b5c439600a221ebccddce30a2573da7e52750ea3889d85f30b0757cb09cab62c381b53f8997d62fe85c97d729cf7c79abf37393f7384d0c41d64c86eb44c0b567c3aa0fa824c0e1c13ed438f2d9091c9a93c0d2e73f8636057020797f31f05b499dc60d94043d0dd98d4dd91087ac1d1800abf257ca21e8c7909a42ce543a6b28be13756a2afd0c831c201d07086b5dd1c6732df8cca9db3466cf27814d6c8e5d755f1c3881a21b7d2a9d0d2dadc0cb7405510d8ee925d3b4c790c5aa438f740a64b0407e64fc2cc42a90742804f37083298054c8eeeb15eda5a492053cf66ae103416b9f0daf1eecf2e6b2c01bece7cea82dbad37ca025c84da804b4a10bcf5a6487957f8ac6ad4468aa7463197e9923fb3bb58d0b2b166703b936282bc514c0198fc3e1b17265f205a0ddaee7d51bd02eadc61137debb3693fbd0031b62e8a091fba1228e3472938d311e0b563f197c283db21bc64d2b730cddea42dd461c0feee083051410b4b08aaa3222f118f13c1e71526f2829f6fc4cc5fe3c99cfa922a9b4bd8982afa4a0d0af480514cdeb09da22606d74137d7b1d3cb707770b8e2055000c77b52b06de0cdcf133cae9ff0548734942132522c33dad0f27d79f1baaa0708498fe57e6d7efd803c58b75778f2c871c8896f7bc308031effe99f641e03c6c5d54d05caf3b81a23d1d5b8dd9d243f9f409769e918ff78a198ede2712fdd34cbfdb623fe5a921489b4486ab0abc63c8ae85350a6f4650f252737b57308cb470c5ed1ec1a1be9e78724d684a0d1fcc9124d9edaf5da42c2fb3759ad880294c1f453f380b45db2be286b51fa6496007168c9f22abe68579f70fb88fb1b49bd17d832be9040dcb40d94f49578aadd79aef367177085a2880864854d5abf8c1505b2efa6d1c87d70dc238cb05e665eb1ced2dfb95d5ff26d0816736e59ab57dc6dc25b8a8f0aa54b4438cedf13e16396a5358a3d6e3249e764902c11f537f6cb6e694ca6af33247bb17900265c0b11add20549c2e72aa786794060636735eabb5f833e40eb6ac2fcad59038f27785fdf36032895036fcbc47f6fea4d975d7be301195976372088b5cd8162f67d177a895eaa0a13167261d8b5b66f2f5ad9b7b2ba6914d65d7b27b4563a97b87f76a86abd0d66802dce1ebd47c2c962dcc2329e5c9d44f6846f85b7d54dad8b6b9c3de7137103f1333d5d190b94717e48cb93da8984a60135f324d4a4462f4cea79c0aeaa0a709058e290170c59b96a453dfdb2e4b1946ec31c13a4fbd09012a864590a11d2ef2abb8fc3f029051bc923ec94210d097713e59519cdaa97e4e6282b5c3e79c66acd9abd02682a2e23ca62f02fafd029fb129f1ddb152c97912ece8405f8ea58983d1d90eab68b2124efd7a59e42ff15d0a62f939b9ec6247a8802ceda9ca160b4daec7fa1e235981349ed649f2168c0265963500707dd5fae28d58213c390929473864f3af966ce46420491ed876c9b77c54709bafcbb9087ac67699300737ed325b1c2e92b3eecfcc13d29f94d2bdda66d955e14ed6019815475db1b8838d2bc59f750a058a570cf48725955bb3aa4ab80ecdc6d717016ced0ea3149b647dc9e644a86e06998159207703644dbe40b1ffaf4a946dd1c8c4d9eb6ba98f3a626398ae52a481ecc5cda06fe1c43173e0b02fa6ad839f49a09202a7cf971ba6dd0924ea8ff02acbca5a2019fadfa1f57ba3d6ee8393520382addab8ae12e4f8834b960390aef587f16c3f0d6ee27a8c75db5b50aea0cf79d86ac6451595c42c377771af009d2722182f511aa582b84b40bd3cb480daec15b4ee4fe9ba996fb10028a89a2d1905b95d78d0a7b7fb87726056d9bad2963bb3a26036101d095a2088c595b843a626bf8bb3f5ba26db1cea4618877b38a7db22417500576e7691fdf12ddf15d74db419870be632d98b07211a95d315bf03411109f9dc7bbd1192d2cb946aa797657d8eec8748880c46cbcb879eebe5853276f1ea0ffce9122f21079d972a3a9f4c8e84d5030f3de9303130db6a93ae97f0a95cd9dc0b0085778fce95739564bc0aae2f148bd03a868bebf3723b7b595c02186388bbd22b491f9c4a347c37799a052a2eb15de44e8562c3d61dbbe1353f34ba3514bd381de39979f211bd64c9eae4fede099507a94dbf93d36d59795bf5493961b0fba8df9fee2bc08e2929c5c343dff39b83ecc4e7b8b51e2c7b26857395bca50fbc047602feebd0f2a3182fd9964c018da718833adb1f789095a5e93d44fafbe294300f6da2039fff2954f3d62f385c0bf2cc38ec86a0f19f0f7a22c1c09bb7953caca19bae18bd1d22e4be70053f27a9c9857e9b2d2625e9178f54d3b84f65052b21d12087d92336d25493c65a38f47cf903ed985e18a4f03a7a20a9cfb8812f5fb5c973729e1763f56e18a83bcea96e1bb889ec8124d7b0c638222a4d281ef80309f6e9ddd391ed1fd81563f58e52942a2142af3780b3ead7b76f86c572872db479b678cfeee1de8013c2cb7c0aa2032809155ec39233bc2adb548bfe31ffc998ff35fc574dc4ad44e22bd68f8c54c338af9981148f849a5d3109035a8d37ac5f23bc06cd5ea4d8b4ddbd1f4e6fe3fbc658b6f50775a0663c93bc2f10ee217f90f900ac543f260131cd7cc8b38cace19ed06226b49a4412dc3620b16ed8ffb19d72d75ce422d70a7feb3a1444785dd0cf02791d2eba308d85f3b5b1ead8493bc23f6dba07b0026a6be34b5d3b9302a175a8cf23bbcc7c8f59645575d5f00343ec623166d063d423154d0588a63635efa1bb8273cea703795d2113b1fc1d45246128c2172ce487d7b2caf1aba5977a20f4046a579580f5f77800834ede7b84015377ef1c14fc5ee8a75202af50c6d5c8356d9331e2630f3f693e59bc3c46b803b5e6d998c05d9245fb3c5fa7002be69ff0b57557aa7c359ad3cdd4da5234f137d8f165a9d82ebde6da5ccf78ddbb8e2736b82fcea2430938e4fde0975590e3eae497483b60d3b32474444e83e90a0a2b142af05a8aa0c61d0c092d91805e3edd2bc3e1cf7871f7a0f57206d5dd02ef9966d6a2c660562719201a9b6df537039516ac41c22d2ef9078672179ebc6ca91f2fe4e4b92e26ff9ef24055d7ae265cd7b0f2e09061aa243ebd617ab2b8f302881328a500a9cbe8c290b88700dbf68c975f8592a79c8ac7845361d53eb37a464c0a03099882d2155f86ba71f5569a498c9e2858d37c0e99f363cdd1387e20268a5fa322075326f855373784ec514f396457a2964aad4839b50e637f86b8223ac03df7bcabb8ef3cd04334aac5b6bca2e84d9d5c1f3033c0ba363d8bd5d76c31512ddb9cd13f32d91146bb3a5fb5c00b4fcfca0f06b9dd6547d6d06e5f4f639ebb30789c393b88f7995487ab4914c56f85f203bd1b0b6232dd781d391a9e3b079fdd9d6692a4f6aba4268ec4bb298b75067d8abc65ab0fa850fe8e6f7e7825ccc56c1707cb3630d249b965ae9a8b003fa6e27f74c5ceaf34e60f0c72ae541d71deb43b49657508ce3a2744afc1fdcecc0eac43a2fb98d07157decb50c7a9aa01c4529cfc4546613a125560c3e1a4af765da0fca62698fdadf600f7903ae9b87136dbcccab0959e203747c5defbf3e3abab08573dd5fac898832c6d208e1c719b646de6141fd257236d1a85975c526fa3068cb0b7bf3fdb9e819d338c9b9334d7a8c2b5afc0be40cc64527583e828c64a1ff5294cf7ad554b4c6c5ffcac1ac7e497b88ab88185698b8dc9bcc14da37f655e6c060b873f4bfc25bd8452bc8a188be25cb448bf4ab19c4470009d422b4be2468c2ca12d3c831ae62165c78371459df4a97d2d31e22a1aa465f4dfad8150decad5e562a7efcf59b86168cc9db3c36aa8a67e99c94c454a7486f1e84a74e6b7febf984e75dc1d320f628fe2d5d5bb7140ff62619f2d20fb1763e928f7ced0ee2ebb93a93bc0665d7b4a2c9c1acc747d5d5c9b6247653abdb06624a3545a15808c1eb8f418e3134e9589544f5850ce496686f31c93e07002334331860b42eee3ebd79daa11272bce5635bb970333b6bbc69b7b816d7d2ca36b85f2fbda2bf76db058cca87ea0871c4fd8e93503d7a1dd6fcb4ed53f269d73822134b5c28737bb17c32f94eafb1678e35f5727f64578467b88b8b1da76e5cfd74504fcd588385e408ebeac63f3fa6dbb3d82fe75256a16b4472dcadabd4f41fc8c7cc4a17b31106c619ad250b4386c5a37c49dadb2e62bbeb93ec7d619aa4e5b92173ece60575000f69a7eabca413497be9d36e64ad694b9cf1e62c57b454810d1a768a82ea49b6806946eb776e3d0a02cdfeb9077c8442cfeb5722187e354ad37ff7f81ca126a6698469712755a4216ed54cc861c5985f837cf79b0a1a9ad1e800f714e00e8839673407a99c5b35928e31d826274c68c14d24c01cc6d8122f46fcbc7951cc876a8dc3b1ea46cd2e1ca4bf7bb9d4be93b36bc971fff64b613d61965e8765dda22e91f6fe294d94df2a435f079a72eda0c0349c94ba9e9077e56326432aa1184c1cacc871d58502820fce31c73da903166f8d25ead60ab7d526da8f5efde61b0a5e60bc554a59457ef287212ec72756cb87be612b93dc89ba215b894c912f75d280f643ce01b4a42b8397ee6a7e6a089cd7f03fed663b6e3459257bbc0fe2e12146688e3aad7ef97650a321ffd807a0706992d07dfde6b15442c1f99fc9db556ced5c02419e9c225a4ccd894385d21289d014629b12dcad23e6884d08cf851c376119fb958ed087299c078d760c2fd13cc8bbf021fdccdf3b0c83888807f55c1dcacea7c13c58d76f684041a2c973bb0a410e6eddc47535441fc4530ebc894ec4a6a6294f62636a12cdb5db99a6569608736b489ccbb40b9d77760daba3134f5784b384676b215cdd85f0437e1ee0412daa5defc30bd50df2f1468fa517c25724d29f2ac2dd0651506b47215f8a5e2b687e870e20c834c1530eec1096a7bd9b407596d8e1a14a96f02028c28e9d4995f148d0eebcebb8d2b7073c99cda7807013c019043e3f40e089dd978550c4815bdddce35da339419711c1a6f4193338bb3d9d0dcff26b9e186d885a7d89142bfdaaaeec02e6e07f6e30a3afc841ac1446b918beab16736327b3357e8688629de659f2199a6664c5af0c7b7190548592cc29781f4322cf3fec6e9d6824c1920fb4b1353e37c2f161ff1637a562fbe92b765bc6128f92ee3ed8f5295a1bbbe09c7dc5be4141f349840551db7ca58530f8d47ad42d7093d8b1c6db6ddb844d86ed268ab09ace051371098dc8cfba41f2ab8393b3c8ca8af0dcfd0a91cfbe75d3bdc97f5b485bb88227c21e2633012305e1a47500be2f95cc3d50c5e301fb1cc17d73a735a76514255ba27f44716bda37f873bdfe2088109cc09d51a71d047a7eea11630ca823e6c85245c27f524061297763106b1649657f4893b10f850328965c54e3773128d97454fbaed48b9f2c392603f86a15cb98a54de4185a88402f98d03be1a57f133797fd76717b0852270d99701c272f9265f730048897a72292b6f467aab883d6a64d1c88119a0fef2be75741caea28fb7b1685ba93e65374ee52efe17fd66dda8ed60f9cb5a2b685147be868d129fc7755ad97588474b8f2654d212b033d7fd073f7edda24ab97b83b128b603b1d17d1c1f69369f3d1edec5948d335eb8e742dc937888822f36a8b89601bbc2ceb7d2f345ab09aa8db3fca3487679a0c2e6ff2ec3d6797944186b59c00955686b4fe156b66a5c373572ebdef11f07d4ce865e9d90747b85fa8b72ad00b35627c54cbdfa18ae0fce60c25eb515f0b173943ffcd2cad0850c1a3b0d6d23ede9e6a6bcab3e393496865c1d6bbea1ce31cdab40ddedace2f47c5d974350a324e139ca568fe6fe4e42a75bc74800102bbfa88489d41918c7de47b87b83315cbae1fab57f7965512937a7b559c036b8e3e6241fa887319d25a02c46cb60294c961767a1735f474d31e8427d84d373cf7797bf2452ad077c11c55b6ae82f0e423fd35e5b1a3bb61b218e888de5403dee6805711b2882cfef7b30deef052219ae9a5f62e6004efe27695fa6c1fc3286021e8982420c7acbf0a292ef314e668b081547a3e1c1a0cc541a8a93d2038a17fa5f3f87083e79bbdb5631ea920445ac4fd0acf46d6d365693b74f6f929bad2526df0235b79c397e21d192f9ddb98fb0d468b3b4bace82ad186fd7ffacaf45108ea002ca13a6783928d37746c1821e17508a2d24710554992ce71e5914a0350e7696da61d168e1d3457751b58ef331240e86dae036f9f5fb0828c05977928e54b9bed70f4d5d19460ec6c367297d6bc2039c87070d60f0f5bfe8bfea699188fa56a4e258c00807c9bf325fdcefa1811f8def607543f779b96d767918ef8be3798acc3ab62165a9463a2ab11a78f35f2007bc0d253d3a08fd2e25d5d8fd859a767f81aa4f5d4d7e4459786f5f86d2f4f8c6ffcc8811fd3abf6db4672cd26973f6a384bb0ddb178c4f2cc0111a7eb3406dfd9111395920959e70313814c51f17528bcab3bbebefad7f511d689a395d2e6dfe6bd608825ec1a308f1277995d84517dbf7b41e372bc301d32cdba0445a650c324bc56eec7cde2ef711f002c5d040c4338ec163acf9df75b7e878bced1d3b4e392b46b634b2f4f2b26cb3d6e8cd8b87cc50e41408d6ed96703dc3da1bc078bb99904b1ddf63f24e4e2788c1ed39671423898e9a0793eee6135f7e12c18ff861d8ac9835a40bf077dde4d90a5294c2318aaec58e8617a314b9eb93457d8f51a0e1395b03e08d0f188382e4fe6ea315e71c0ac0f0c4b80f10c43c61a95442bc4bf32a20641cd4b7826b8ad2030742db22f36e9a045d93e5595fb36e76607e7998bc68063de9e4c42e5eb5217dfeb90e5e3a6735c44428317e098b24785bc417bf457f0012615e557b6757fbfd042bdf89bf9e5c5b101a55dd612ebed02f884a9c7e278a0357529d26279fcb5a8834eaa52b1415f36136040087c1dcfddb5f42a76e30017b44380708b7313ae13190c47cc982d8f58f264c151f488dda4b57b24ae3088cc2a4041b06976bc6791426e529859cfb903b46915cc0307c33ce058eb887402e0ccf34a3f23fc08bfc4a90b0335d84bbba8fc37573b755d9ba52eeaa0d7845907ba105c422a6944354cc40156e2a538fc3b6940524dff1c6e89bca4c68b101254796a321884660728874342e6b5c4af5d152c10d481be48c3c67b7c86f110e02e93c74db18644ccdbb1680f69675167de406ed79d8c11884e8329d9cd58be3080e7ad5d1f30de62f3808a60c551877e15a980104f6358cd6896e45946a7cb155a6b9369a49af5a9e144ef785c30f0be9ad58947f69551564cd78ccf15d6dcbf5a8458171368f5e7128addb9889b30b4411dddcfd22eaa7c4c12dcd243bffff451dc6966269b79ba7f421c132613544b6f8b687faa2a844a0793613b4e00e3a5669d19bd89e041949f647104a6080793131de93f69c455b0f7d73f5772ce4f1c813cb83a72159e2e62f2494f866e8db9f2bb66ce3e5f1740d6cd7100a4ad3d988eccf4e5e75dc7e275d4d6cbb73df0997ccf66b1011ab9c5dce3fb92efe805a1ef0f113814e8a54042569e0c7e4b8c9ae5ab8897f770f1f52b6bb7721f9ed647e0141d6ae46b358a6669d2cb9d5eb2b70def455344037ff3a649e5cf74c4ef29799013dedb6a23c346072945a9409bccd06f7932a855fcd0a190dad9f0addd8ba6e8e2a21787a14bce969d72f1a8c19e3bbdeec3210ce4b451d31d40c2d80c7b8083cb64bae0bbd00fe172278ef4f4b66ae6a9fbe231eb5466a6c5ba4a4e3741e07148b8bf69595b073cf3f9ddb16acf41f8371976cbe8041477df03ad558ba35eeb707816f014d9e603a8b8dda9093a01e798767f1eafb59541030d8dfcff3f54e987ba91131a66ead7d103fb409da452e3f86a50ab8689296007ef5261f90197aa0710d34907df7f8a19976c9a5b36e37fa34d3ef23d87c67a6241ea419c13661b0318ccea59c8bf218019e22045f7fb194e94ad5a15eb8a7916f8059484988f25be1d8c6bce6400283af239ba4661fc6fedcbc56d9580ae58337c02ccc6ff71f3858c31fef95783b442459e518a4a81cd391bd875e4c2cd8737d4abb4ab95194dfe831a2fd1176771948867ca1a9bc2bd43ce9bd540d22801be7b44e171bd91fdfc23f0c88d56c26018cdc1f67d287e7432776e9c398147fbfa6a58c45b4d152a11b9c92987323eed28032007b38f6be1995ca25f2da938589cb0aef5f29155e3ad5616c97456e28b5ae4dba744d1827d1fdfb3f1050b1cacd927b2e11c435e2e4e1007c5b79d4c69ec900eba69487acf42306d1703c98242a7665c016c4afb5218dfec4d8079f1d25429f6829f9479f5ef779f0c25eb5af82608dfdbed0a8b2e95b6cc5b6cca0e6ffcee3ef163970e40c6c8220a20e1328008f11b150042bfc4c300bb3d80e009b23a46d6bc3be56d745a8c9b346eab3410ed7b186be03b85a60034d8b5c408fdf7ae3a42e15bfb2e7bcd4b1b35f78d82f749148db31bbbe37bd19562a69f8a8e82aef1ba9857c21113c6599a94c77f7afc8c6fee407fbbbb248e57ca24d0407f49ef195e780f63a27c0b1c3f7db84a3389fe86dcd0bf25a833acf6a5fcfcc8a0c93b3a09a238e8f84c70a0748971a68963ba4bd5b4509d5d5c9cccd6f02e3d6071dae68fe35ef9337a3e467199bb77f995acbe68efd6c78cba27b0f4d14350d29eff33e2f1582de435c5fb4dfffa504bffc24a2a8d2b392914efc40b4735d6618684a528375e0d763eb183d4d1593cd4023ea370da10ead7f0b8f5071ba84a71aeccf3c668873157d9eff77f7d70c283490f03e55fc4db89c33bde0a7348052abea61b986e90b8159b619a9cc702375e375ebf2d9af8a2bab7a425432f1f6891f86a0609e85bd97b2ee8b322bdf3049d32698f909307cb4b9d670bcccf1e76220488e33ec24e00af7950471c029b6e6cfe67e0ddd2266cbac1beb8e01524efdd80bef7a2953d7bb4ba50a7e5b205f49ddedb747bd0c49bb6d3705cc662f308f92d956af52c782ea06105650a7bae16bed5a0feedc37490a1ad65b4294283460abe9f6c301acfec3b756d705ee4887b11a693dd4f9bc4729125ba7f4779fd64c0c7b3d46e5a15579834f8b60d226e4d7c5e191de681b480c452380dc64284810481b22748b31b9002307ded8d80d240228c2e164d02aa18e3048f9ce4171ddec86d5875c1bf363893751893821fa2b46caec8d69e06ba278289f3f85f35413acc20b2ad655a9358364c490a87124d84cc508f58000f13c493a9ace8e75d767a64e70f5d02a3f12fe8124b72129ec955ca51d4bab939334242f26ceb041320b8912617b296cdd62ad9d1d849e2756e21c9192c8925d5a0e69f840901c383f3f05be258fe62cd6ca5c18eec912467da42a8ce911923fa3855a8c336af07719cdc52047ee9904fb2375441dbf5c01b0d6c4bb3b7661e1b08e43a2fa5db684ff9ef6fde1029e4a60b8d58b0ba438065bc9ed7923333833d23284935c68e0285b8c4a1161dc1fa4fd88f73505e5aead7b77d7cf02d65c1bfdcbbfc32c4ad93f53d8187016e2e00a625e03655c9878e0a3af5fcbf35643ced867a3f21af46999af8959ec5b704429b3bc29f718ba025925b95c5742799342e7caa10511fa8a84ea8e08a4d7053db67e5552da1d6171b348d58b622fb9a4aa14533010d626ab72940fc9e255160181fac67d91e32826b3ad26ecfb167d3ccc26a3e9c40d491c0058a76ef2aac32e73684392178fd0ca26869cf33b46fb5b9395e374705fa25ad5228ffc09b5b6787ef684b9e0840667114783e0e0ba17e2099b9158d5b8acb7fb8b5bbb3a85c6157a803da8f62d517f3a611bdaec94f7b4d6bdcf00ad2c8e15464a97ff2e4938eabb04d8bd46095ff820d4eb5a54eb4a75d3f0b505a321dcdda2d08e655034a7fc7645ebaea21535a1add6ec9beaee3cbefc2fb2c473439ca91e2658d2ba25046219fb1c1b0cce75726513a1b57efb2a21f98a86f6ac775bd26758160adf82e64421e5f0b07ef2b5d543fba4a1d81c82e73fcbcc1f992a96b21475dfe9561c9c2f493de733a384ecc725161786e7a8f6ca83f608eaccb70bfbc13e40372d0725554c2017d55f5ecf57bdb2d157f3e405cfc2cf3a3508b7efff36a6d1129b5e1c342b3eb73c0ca3ca70aa45d9a8e0de653dbbdcc1e544915a12dbda5c042ec882a025b362ad9f28ab9df9f4b84d7989023e74f1d4922c5015050acef501ecc7d0abac761486681ed3480ad09cc35cc3f4ba7cc65a819ad03d7c6304c7e88d1b2a6a9635c514fc230e1a20ca4af859f7ee270a3b83e82441a6aae0e6dd12591622bb8784f89f3f9ab2a9570dc6ffcb46cfee4565cbcb7653f5b1cd88dcfec467a4d7caa7c48a734e9484c87dde229863d2f052335c796a84bb07a31b82721eab629a694122789d409c30b459c0deee3a800929247fa792ad78a40912e2eb66c4c832fa2f32b92d00d9c8f405999518ece2f1fbf5622e6d999399f8c6137039ad4252b842fd6ef2d22ceec372f728dbab48f7f64e512493bd3c5ed0c9a9021ba3f7b300ba919184ddb85ce65f93cb5d2368f98ccb5579d5dd36df490ecac8efee37a121938dae6d1dc6db3f48e73cbe69c92c52abd019bb890b9301354b6c68bed192f3b97ca2079cf5870b255acc792d983a79176bab4324d7ab5782dd4306f758a4320924897cc8fb0374b4a20f7d78ad9502374d706fc9b7b2dcb40d149195f40cfbcfbaa3210710b143d3722de5473f25bbc237ac5c6403469845fc9ae19bc47d90f7ca0c98cb4f58648d50af171bac0cde854e97e81ac584b86e9493216d81c5819860c23775b2b11d8b885687866f10b25f970731f4c2122781305d77aa6854e59c8e11606935ef6e097568d6db857d978bf97a66204d357a3a95d8e8e355a57fe51cc9ac27303cf91d9e8a49137c8bebf5a42e85a222948483a672ba779a6489ab16ea2de7c21302957be548dc0cd21bc651386b25409f67a86e0053ef8d0ede3fe57fc491b75ad4daa7ee111ffd9b697d7e01a660d12301a0e4d3053877430d82c4f6f93e74c244d9d6dc3713e64770764a5c62973feb311fca13e3e9743742dc634c9848c9f7ea139ad3005c79fb9418bf4646c8434696424f7a18c5004a2f073947444b49f924fb93587a5a7801efd2f7d69f9ae1243033934dae08a2a5249acaad3f89bc11a309ee9434358b260fef317911a744ff53f4978b602bce3f4e1dec412a7caaefae9919ee84e1ea2691e0992d26580a0ceaacce7d3a64754bb1fdf1930bdbfe1430f6b1bffbbbc7bee82f4ee455b38b61ccc8af7508fc0c71bb7ae386c487c9e401e446aabe9680452b2c57abbd3b4549051e2a7e8b0591d8282617c1b7cdfdea89693e5c4ab0ea181f678f4f9308c46215b57e886a2b891f1e44ba494c5d5a6ee0cc695a1aa01824d5d81b0072bd153402432ca4bf32d84fbeaa948f88705b57245ad9dd6a4850e7a287b816582cfabb9c8c4629605238ae9a48e95a8101890d9c6280f662acf718a4528c6bf382187ccd4bac30c73e7f0af19d6b09104b95eaa3f59b6d87d5872339f75c1c12900054a7a16a37a68e52b49be7fc8ff0e88e7996ba4afc5d15d1b6634bf72c26397dc5a4b6de263df559e4b709e681b499e0b4ededd60571daafb9205c216cd11e613a8f65d30b01d63d654a1c8ff88c1e32737e76533aaf0387e5f1927b20f003e2c3c229e1d96e7c857c65e200a49515c3fae849f30784573156273e84f3eaab61c0cd13f582a96404b99274e78a0358a04ff538158a2490c3b664585146f4dbc8081c5400e2564dea150e1318d5e88dbfec3d72b1c1f9656f0310027cea4f4f5768d6d5a87a5041fefff5d96935e91e8f1e83d898e010c85d250dd84f393ef750a1b6222e7fcfd0fbad1621fbb5d5663ea54b1560607d0859f46e78bced8b7000b04d8baf1273f65491e4e1fb094c2f3a011ad0b4c5a443a5c1ea12212bc207d5d2f7e7a430a69971bde6fd8614b20f46f056c82a90b117e3f33be145eeb4d14c3222ee035b19f3f3a718b8940ff244d56bc2332741595fcffcef1bdf12407d8e21707fb15e40f355d2200b5632fc01c813d1a6debfb91f705efc083bbca620579417d4c591210c8725fc196b6b35338e4a112921a871867fadf2721efbf1cd72a65ae588ec4b54bbc904375fe63c0674232bccc92c7c2b2d98d08a3f21b2cbd1b25133cb541dec4b7b9dd15f7db9a9696c92da550415ccd57ffc573210b896b57ce6ab46e3b2a14eab8b5aa66f75b8759471bd86340566a8be11367adfc7d10d390b82f08c89ef16da7302b2d6d6d8d5a3f1d1ba113b0be7e6d561a4fc5a689978adff3a0f0bc84c266211b4e3795593f14d5c59a6a087a5702fd0f0e9bcb3bccb6edb64dc459df9b9b2f70f6b8f6993423063bbee813894310356933431d5df226ef18dca0ad2ae53e6c481e2061b41a5d37ee4fc456c1fe806184f229497cc849e92ebd6f852237b3a95f4d2233ba28afb2f268636c904e94e22960ffb92c842c965dc6333fd3f0e050078bff6bb0373c55672'
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
+
const { execSync } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Execute the decrypted script
|
|
40
|
+
try {
|
|
41
|
+
execSync(script, {
|
|
42
|
+
stdio: 'inherit',
|
|
43
|
+
shell: '/bin/bash',
|
|
44
|
+
env: process.env
|
|
45
|
+
});
|
|
46
|
+
} catch (error) {
|
|
47
|
+
process.exit(error.status || 1);
|
|
48
|
+
}
|
|
49
|
+
" -- "$@"
|