devicely 2.0.8 → 2.0.10

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.
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '150be7f241172f6a3524394b1976ed7e',
33
- content: '17f506b6daa53c45a6dc94e2f2cc0f73501fd052484e462830a4e98dc6600d0b715b9a403d726231d3b597c7aa437cfcc5be626583feab738d1c8abf820382be2ba8ee442d4ea639db7c3077f0709e1ce5c7b174ea86140caaa68be6c2b4d68d6eaad8a063a85d406f02735d194ed7daccc8cd1d58facc9af45ce06b989534c1c21bbcd01f0c8558703862da27af7e30bf1b3641ef6eddcb86135e775ac69cec7df291cbbe0b7a4f2f85bc843fbe634a20825d96175e94501b01c7ce1ef6005e7cf5cacd73ce2f857df73cc8cc3d0860c4708546aa93e4f33a0ad90cb18cfae46ac90ad8eded72e5f54ef0783d9e1b4d3a80d1a629b6c8d72d23ed4c77938bf8328d57450d8f678f3991e111260ea7429954e0f0c79c2bb7ba9001a6474741556ce5bf40c8e23933e51c0aec3ab0ac705774b2714340888eed3b05697540ff38e6ecda1a0fc12bb8ca1cd117733b89354a50e2bd5c472ca22b1f3f2c8317b3c4cea992f2b3364add5976e0c2cc79d421fab92e3b084824b927e28ab874c5f92c601e6b48e9601bd09f5dc248ebcc47916fb5a6113c8c5687452f26c8b4dc3ada799749a7f82416f94d83397080d789ca354cbb51891642e7e5fea48ec8c5665267358ccbbc0e288808f857545e74e49a430af9a9130facaf38944ba0545b9afea56a81e2f3a3284688e1012256a0b1f8efbe7a11f39a4da7cb29f081f916148245f7210e159f2c84f9e54c6574ea2d73b67d1c8bdbeffbcdba6ad350e29b65426242462a95519f48662a219aee2d76c34727146462b2ce62cc346dc47ced0244f4fc28219a574a0b2d4bf271801716d96f9466d8d24f5e0fe6d995636db5d2c8c0104644e55843128eb64009358987764c209a19cb8ffc6201ea1f5fed7a45d7218bfc52ff2beec40d9bcf9b58e603806a9aa0b0099a77dfaadd8e1b16a5be81eff3a2bb42e5c8e8a17a8bd646cbea1ea25baf972efe48f2b41371b5ea6ab7640c54a69797c43e62e0c058ab11b87c9ec122da0747687b9510822a8d8a03f22562cca12475120f81384ffea61fb4392f8feb5d6fd720832e08775c687954be438c214fc7d70b451207fa550bc5f112b4732a839b5675bcdcc1b11e6c04b3e890cab48149a72199fc19d08507d1edd7a097cf38019ab91d62289a514a2317d19d43a130085e6e814f8cd4d992e79975bd8969b153119fa762eaadb11488c4f3e5f479cebb865bcc1d191c5ff51fde9fa3f28b8e2d36b2728c71f918709cc0f314ee41ad14cf19a1f3d61c92231aac915373237f930cb01ac4c008a0cff119d2ddc9c1afd1129a2ab03306e95412be7776d2dcf18a9e023c0ba9de045760dfa14b4e7bbf52ca7fecea5665b673df47bcea7a0588247031cb2b6a871e267031246cc5abdda5426a908b958b8dbfc353ca243e6af6af375290a1bc3514a7a9928316b9cbff5e197f20bc560ebed05ac2479260510a3f0334053d84b38ff2d990f7318f7827029ced5d75147c3878a8735bcad0b033d54316c42339b09e81e7538483476f908aca0916adf8ece1a64cd0b73617827d18e553fd99e54d8861de9c7d6612a4536c79d6c7ebb3c58c6a7d7539a91a8f5236e223cc8fdf300a091b0909f4fa9d6b64fa0541d49ff11def7bb423b9c305eb0233fff6dbf638fa309ba4f0824a85b9d511789d456f1e8930e81c984ac2fee83b16c4551f55da40fd3f8c99c919bfa2acaeed1db13b6498fcb62d02aa2b743255e87be2b35a91a45a40fa562f1fb2e2888ac22d8d76168b7e49fcf7ca9da4143fd8c19f69836ccb92939d28f050d998550e54a8f6f47219722616012abef8707978dba7096b7136f7983185e2f8d498dd253c4feeb9945ede285207f22f65c81211a74c29e59a92fe41be0e57f00f90ab16ea8876852835aed3555d4ced5c74969eecd7d0ae09cb52be2382b3be491b2e18fb9743baee568807fac7fc84a640e6d923b3741e066e55cdd1ace6a31ee406a27f177166097e9602bd302cf22f33d6b331527a91eb71d6ba1e3b3181c90f813f122d9ca301543d9251a5bd66eba63d27e6dd1366a705d355361f53578cdcca287bfe0aa7abc3cf201be78b8d96b82f81ebaf7def0a62aa96259db2c12964828cdc43f7246a6bfc0c79915dbe86f401402292daa0140cfebaad270563dc215b1195307025d4677973ead8a56d2795fce94c56690dfcaf315cad1f125a61bc91469fbaabb3fc798ebfefb02c06d412b389daaa13d416ed7e069a4b073e7a548154c6caa13d3863fd181edb719f042d03f8a7fd0e6bcc718293722750379ab1652c93115d3cc1826d717dcfee4509f80d892a1c4c4b618abd8cc7d286f602012abad891b7f828eaf6596d23a4bd8dd031ec203e0f8d38464a4b9e37f600b914429326a7dbeaefa93e3aaf1b42c9ae3c2ce66c8b998402e1e632feed476969479c2c2a9b8f3080653052df0f19d5a46290a35e6e7e0741a1e7ff77b0b1371d6fe2bbb2a25e82a6cb75e929cceae060f48ea70f880748add817f8fcdfcdb3241a48fecd67813c13232e563a4d96868fd8daef9865d482b1eb9eae4fd9f3e76675b2a7860ef36dcb335b53a273314a61c5812be4d213c3b7e6b1bc82eadd6ecb3b676234cd626b21ed0a046baa947335bfa35b9c33c4cd687206ce51cca92a54afd5f3316c6c1fda65561d285275e54821f9c27dc6c4656f3e3e4231094dd33db98d5b93fd2019a0a11f8e0e24c4bcf48a451bb94466a8f488f450b4e34339856664e7bc2080875aa61e9f2b600c1748b23b6e1e9b8db923300dba3eff5475beae00b63c9d322aaea9579c232101adafa0a80d53a8957b6b2cbd8f023a9162c24fc4330bf5799e3bc307aa6dd023ae2e58995aaf53f4ffbd304a85fe87caf37fbb391b9103e657e3183e8ea588a19ac550a95a1eb22d5f72bb91e64777ce13e87e08155892dca11bb1e99b163f50d388076f36d6d5f60d344da549978dd443d161647d6e11b97eaed96faba367a4a332db5a14113cd3b3c3d04f61560f24715ee59b17aab85dbe6f1794f1a3acf00ed7671b58c739ee77d86f5408b69ae2844290e565913bf9bfbc8be7097491ccf84f7df7a8b060a1e4144e0189e0a6b971c9ce483a97b81424ee6a53ff9d7debb1494063255e0b02d47b82ed4bd80cafbffc5023b872ceabc5fbd658678af9b87b4cd0dc02df35cfaa67b7eda47bf20a8bc64a7dd721afa45aa32ad02470ad0189e44a98479156ac511d06d663daacc28c499053b17482b53086d36e9196c8108ee7c714048ed5b88d77c9fe63a184b6edf9304c94e4918eaf0fe33ce29dc6ebb89a26381750fe895727e90a1a046cb44fcf0d48609e97430960b2e7c095421f8f10f99a80e288b246eafcd7e39334e2bf9e73c64e54c5fdd93f7eab0e0ff53a42829156823df7532c9c093e3938dbe8cf4f7c3968f24c426e86d52b6636066977407e7079a96f462e74379a6fc9155fb900c6e85c6e71a1f440b6545a126044a3852cd35edb8907a5d64a0ed8e1705aa31a0a7fc85961aa2394feec363abb3ef630c3f0a2e7be11511d549e1d86c6c73031d7d2ae6d901ca95c58cc2842c2a314094f5b65e8bb2263196bc23f9352b2db2edaf059fd6848858fb98d7fc24528cae462a3cae560c678a7a46a084c4da301f202e1de17befe49c5aaf5d7b14fd041ceb9d9d8fe23fd22618c9291de14e9b8fcad93b5a221dcfe3bbf21ac04d1b4dff546df2b2409de1e1d2a48a6fde7509f5b2eb5215e07d947dfa38a29433495d746d45b1fa025bdbdc5bae56cccb393181d2fe7268d2ddb4d26fda838750b0750746a2a5db4a4c8ff37cc38b0c8688ef729c2e978bf26a38791d67f25166d561a0707960a5449ed0e7ba7e28cc0703e931bee7194a76842e3c4ceecb021907bc570657bb884466dfcdd6189f5211c4006cfd4378443a2b403e95e217c72b0418d5ae30272ac9f3b519a36ed346af91366444f87a9488e74b51215f49bb9c32e1b3435257c07354a8885f475d2d349e0fd79179f878f1e1439bc9711ad8465af961ffe05c56342745707ab28d262cd2330e6b5bb3566e652a23211a644ae163103ee81e65957e09776a51e5b4606651bf630a34be0c62d68f101d9f8ac677582db466aaa2dc1163f02baaf9bf60063934b881fcaaaee2a15c4d902a117ad3374103d8d326ca14f98375c986ab6055135cf2fa4acbef57c7279212401a286de51075e06bde1dffcfbe18564267048b44e6228e62fc248a28b347bd572ca8d4b95604973f825c515edcc511e8df072e803975e015bafe0d8e6fcc6ec01f3ade10b9838ae54cc7c0aaf0ae4c4b5b220667278d18515c677a22573efd72f79a8149c3d6b04ac31a49514020c787656b046fec5556d4dde7e4b2cb07f02ca306241856904136b210c59024efa4aa66ffe31f3ee687ebbfa941fbd97139cb473832edc1a5dc9d6ea9d6a7d48ff438b3346b827e6e3dbd3174ae8709f4f34fba4a5362fe06955af15fd3adedd97acd2dfaae81ff335454fb8321b71b13f891ddc858fba2dc202f14f7f9f8ddab74c40418386058a414945f65cd6d8ee1a766be9a646c4a0c6148574ab557f8e4cfde6f9fcc60bc8261cad41fccd8e88048cf5f0dfb1d5786ea88a75ab56b9138799fd5e1f81755be38cadf34b84b9a774b32f8a9cdf10d308f3fec590bd44a003e23e8f1552cd41fc66d6b1160d15c67ad90e7dd40794e6b867996b465fff96a39fd53a914c43379f342ecac35a0aa5bf26f959e24ac2332854aa71c3aa1dff3cfffcfd8f9107'
32
+ iv: '8f858e32f70d45c36256575016e685d5',
33
+ content: '39f87495a75117cb7014f04b28edcd5f6f60e5c4d7f84b2d8088bb63b483e065e066165486228baeeea5ec86ec2ef547e3677ebbc9b4dd6fa7a641b62dad6b933b5b0c46f99d4f68d1d05a981bdc23254a7aea959e784eb062d9482bb1e34e948d3586167d63d922725bfdfb46c6c481927d63b9d03e60c2b49e8853878d268fe94f937829e0ed4c450b8b147b960d6ff9ced3446e463fa57d12edb56ad03a935e98ced6b5500c0cc00aa6da375d6105407ea1f401e962b6a0a11eefe3c539ba6525e84a5a294640fb3e22bcb6830f9fd37945410d82ff038356680cec732be5c89ac4e3093f8580167987bf11b4347f7cdb263579462bb2d99c3bc19a8a702f4cb49ff8189c517894decb439096964c9276fb70b92ff52b0ea2e7bed6363eba2f843123b226910aa8ee01d86a1a5b86c82984a271de09dba29054bc5bc90b76c5d732f23bd077257e5fc72e59f94642f3781d0c851174afaeeb789a84c2c0ce5af13fd074c2c3e54c7029fca69d77e9b6ffd4f703871d135672e1bc1bfde634bf0dc242ebd01569cfcadf87652193151e7062f5aa2b5f82aa55c2b5504c17cff21c7dbdc181c5f63250501024ea02f5683c9f9c0441dd9c55432eff1772d0f984a399ba44e66ff1d05bf552d945bfc13448b28b76378fe805911489241c0b96c7338c8969c5e50e99f6488bd549c5bf8a50553b1e9421e7b028d58bbf692d1184cdb3c42d392d6256b693bff36ad56f305a0cfd3dac9e5c6a76d8d6b35d1e0ee1c397800edfa352e571c54307eaa28e6105aea6ac10026075f729535eb1e84e341d7e3fd827da85c8dae6339f99c2ee27a031b0d0dc2517c238e7d84453468263fb3970a91a583a282de60dd1d8ea1fd212b3d01ddfba0b0222201a60a69a50c3f7c68dc66be573113bec6f23f5fee620843bcd53109397f1280ec3df83321903c1ee7a449b29a2911b150fb329a8374f9bd4c3ac0f171f1b452b2d35e961ab2b1558ab4a37014575ce0a160d198cc17339fbcccfe74cd4ebb76ce9290e0d4f06aca398b8431f5697e11d9598fff9fab9c8c3ecc2b8f5364553d86c3c226cb5a85301198762e50a6a7ef9645448408c8edb620e4a2b80adf33912cd5fd48076894629ec364bb615e3e67f4ea14a0cca34ba040ef08b192d0342d2bf1a1104916a3d4b133b51c923245c591962b8ab073db83fe431961e04ead77d50d624d889c00b55b9db99e0567c57f1861a0a34b74e124aacf201c4822d84d3eb5286f3a79e96fe30e3710846323185d3b6e0f930ea00d547550282e7e7508fe03c9963e09a5e7ddc80ad5f05f612390b30b77d756fb03c297f940c20d7a16d45160037180cb61fe9d7aecdbb261fda2c0362b86241c0a40be0e1e9a55712fe50603c27113b24a917f467f05d56f806e06cc6a80e4127b3f8c90118d7f7fb6925a8050be7157bf0b523d1e3ef3f55ae303dc8f0c574d13fb55b4e0c746aa4204bd99b262ab9aa199167ab035a9bd32154fdc9de893e6394623b07ab3965dbef1448e3473336b00d1222b2b6103e69c2d9223f50f83b2cd020d3aecdcbdbd77bb6eb7e98d6ad5e2c23c5406cce13d4a27f43ec5a8cd2cf59d39bd9f76e6ebd168003088edde4278b940162e3a2c7778d7cedc4d1d89f3e3e934662720c90f42d4d09ce335c50686e1b9e2d462529c151bbed2961823111dcf4b13e54d2f4cd8aff12bb69110c5f39f8b5785329de1cee69d44719d23e65e247279474f22af596ddf37b68aa9a7b12e91b7109cc8179d3735b3b768b937122eebf9c211aa0ecf2725067a047467937092adde919b8524bcdcdf1248eeb8cde076c928483c7de5444efb0ae8c7c17e08ba2aa18a60471c533ac1964179c58001a7ca570ff401e2ab93901cb7832c4c53f248a62932e6c9494bdd03a80d524ac1eb6c110e238e8b4050acc396b71405bdbacc26eeac1843812021f3e1587076cf0ad37f590a9d6779ac15908d26e828bf185ba5e7ae372791c9c0ac32ad4fd9d983e392bc6adc801cc5732d410c615002617569545a3eb8df36c268ff84882499693d0713846f4e860eeb328068068f9d0ca140b7d59e3ea52bb504c29b2b5831ba30a06fa6ce5b48c625362414e3c18bea0cc99e4ac05ae8de9dd622d801a09bf3126b3d000e1b6d90e2d5ba48b4954cfb1cbb57960d3cc02301b9f5e50aa86564137ed26867ce81b7f894ec95e197049484ba0020897483f68c23470ac48685b3f9f59c3f9792fe2ab3aa97c61c6477463a9863c7b131887b6a4446ee1fda3d97a2d455a97dcb9c534ff8850dd9cfc372685cbd41833d104965e7aa0d37a5733fd63d9d68bd597cf90b75bc97307bb390abd37482dfe8aca6097c20b183ac7b617ce1648378a68c1c5766bdfd83314d2c131f2651fef453fbb7001e794554cba6d9bf191d87d3e7c8367e41d245c182ca435bf5a20cade41c4a6f40132ede4b0c6636aabb07cd5a2dc55964dd706b2936ed4c35919e92a0c8cf06900c9f91ca82e2a9dbe5ca3c8b43468e9d013784b25fa85c9494a14c2220e74edd022e42188bd3db0ee2ef7cf1f82cf190246a2eb8924badf2ad15cbf35759776324ed12e8b1b513f4a1c62a5660088d4671d6a154cfe798874e4468e235856a3246738b26a8afe54e9c6b668afedc9a0932f58438129584bf7f32121ef65bf31c7ebc6b8baab4825f1b9bda7d23fcffce12b94c176bf2d392b1cbae3b53d4545b54e2af25117cda76f180df230ef213a09be193699cc09843dbaf6f37c5ada2366f7689a11429360bf6f9907eb7b7eb0a662849bae0e23a3f127c4977aee32a32da9f6c4385f8fe1c6b96a9578139a0bbd59b117353c4f4e7352922d75b6d62e2f949204140bb3a2a42282c5a0a34e481383eabaddb4f8e84675fc210a43f4020dd4d1d334a5b42496b774c17b0b3402a808ea9ffb0e3073af681bd07bef5862d1f4fb14fb6839e0516d0212148d00823aa681a6de6e3135209d4db43e21650d386fc049fb3e242b5a729b6d9b3bcc449e9e2c600ce7820a39805015a73f874cf4b75ebe34177f940080dc985ba6d50ec37c0decb38b72a1b36e7c06fc485501113a15706092276696fbf41fc5a3ab02e683bdb42d0b6da89257c3a36fb86809f92756f244c113006b60d35c8b64499b1f229e8086966d49db8ad9e4044b97cc09837643296dc8cb1f1607cbb1ac4849d9a96602d8da37d0d4c870c6237371208e94d1b3033e56ddfaf98abd25a7c7b03483c22d61901282667b4f0b5cc1281be3b86038a17bccddf62bd5efe42fce4c1644622aced3b5d2515e906f642132ecd8ad94106582da19d1d1ddc7bc419118c59359b80754524591a0c64e245f4bc867c015d85ee93ebef9f34cbaefc08a42a47df596c7e8bac61ca78f6454d7fff3501218c018f13fbfee7430993b2bbd64bab588e8f59357a134662ee3140ef1e60a663d20a9aded5663c318444f9477be9627679c0b92026adb0e96911a9dccd739410939837dd2f5324b33a2b9fc1aefed3d938191d45a6611350ca53fd87d30df5097c4840d5854c74f15fa8814671abedfc1d902e2c69eede446c6eb48483ce079c14539233cf1b2766244008abcac5d5fd54fb97d52960c6c2af821242e54f0032d65308f6583d8f3061a3248610bc3ee119b2cf2a4502089d20c2417bda11b9210730ca647e47b764427bb956e8baf48f70808c0b615b765f07bfbaae90b467be352d457741b3c6d807a38ab6a3faf38aaafc224259d5af3c40cf6fa2533b2fa5f1f3b6f6c2bb4e0c5dcbcff15e9c607a8af1a9d61c3e2042efbb93edd53bfdbeb3247355eb1fafb9fbd9a02e8bf80ab12377831896e59983c1ae2bb86f1f6c2d183b308358d9ef3cc687efbb98368dd551d74e89f947ee5329d4d0c59fb93614b9cf990954f97d434d39957dbb51842993d015c01c292ff849eeebb84740539685cfe8fbd4a770e8f8ca7e0e5580b23057b38cf32970a12e7d48fadcb6b23701935110c59f2f49b33f1188a673999429243a0f4c1aec8d6ee33cee7af2ab4425223965614a178f6db55412862462e1004e9452e89df12ba6bab3c8d069a1413f33c1b12b6e4a7ca66d9b64ec908261127c3276c0fe77f9cfbf82291362e691605b3a45760e383f03362ed8d517cc7369ac986e876b142af0f2b4d7c08989f28b3657600c2af9f07d1f7eeb5aa4ed20af8cedafdd599a9f604fe978e5ad542590843a59f4f4b89ed834c5c0df95451bcfe91ec985bde98a244e875ed73630b6f5ab587e33824ad0a6e992528818179a4ccc0e7ef52c845ac2aab82a8bca41d71acc0741c16e62e0c3d40c966d12c1bf92d2ad5ae94c8a6c5e5ca3ff02d4fe21165a9261556843f5fa3ad65904c17c91f14d7048090b181e8cf1ec3a0f00c6de230cc1c909d8390f96ba06aa27a8f5d77c7f965147b9775179c7a2d644a6855a2bfae52a6918333aa361dee41f87f6c9f2804dc749805752db1f6b82cc566291de309321b0672d688b700ee19c83753984c2be1e4adce289094641c87d314dce8016beebe9a0e721093e7f7623f30f438579e5d867875bbfcce941b378a587816d848bbd987323552d05f5b5fdf2700f0c60810726f950d5d37877811b5616eaf1b3bb17c9b7196d06cec1d7664752da99f26d878ee6187bb12519069704007ea7b3ca09a245386ebc40785f34f4487347548da68530305145639c29fef0c4b4ce5a2b90b9242802ac5bf86386b8de795f1b823f2d5c4d6def73f07628829b27ccfc3e623b215e2b8c17fb7fd0ea389'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '7857bc3f20c3fd93abb1ee6565425894',
33
- content: 'f879e95af80d447d636c3e74b03c11c4fe9e967b35d96451606fbd1405d0fc49ff31daf25579144a3934b9a3ef4ad1760b2a7f6b0f2d44701c35f3b086fd970a0b242e43e53caa256267df514a7bd6ca73817f590ac990d37a19052a553108283bd90f060e4cd6ab4b389e7879e34849552503c2b86fae1d1d784448784a6c96c57198b36123a9e2744b745fd8980d2ea17bea19c835f6e53d658da6203d6ac83a08553026b44dc66b6da088dc40ca9f353a953c1433b66831e3aa9c5a47377e73948b03ecdc6807674e294417b5bf0eaa3d5c1625052123cc3cb108f1cc3e2e79a62779f32caf7b6567f9e0895e8e377150169bd8ff5fdb8049ade40cf1ea74d64de462e45acdfd548400c4644382d0a3bdddac5c43b8f09cd706a3e54f79ce371934d758e179056a339ae744cfd420c42403b15ae7cc820c23a7f64ab3f1a5207fe31f4e39f839280a5f301d5a3cc2de9d5dce3e298e5151138a34c31cc2dbbb2f781858beb5ead59eda22abc0dcd6d89880c99dd8f321bf790b43c3a6a6b11ba83403bdfb3927d4be807c2aad22564e0e92d1b833b5cd180616917be9a042f0c7e33de7ee45a53271a17e8f30f86b4c9193c6fbafeeea7a248d83e0b03530cb7848d0752251b44ff417ff7f0bc8cf69d036e68f32d81c054b8a907339ec445f474c9b36e04026d4a7728607a541269ae5f47aba9217ac3d56eb22cd87dd7c315ea08f0ac6528935a2e7273d485b1ec8d28a4559a0ffc429910c358e609ab7124633a9824f9b6881ca40f725a9eb384f60c623c7631cb5f655a185ee31f929cc957c919705781ad554b75af7e50d4d41878c0dc62861014a43383f137efd499d3a1578d4ec3d94173b075e794f40bb1287984dd994718082c483dd1c24936bbb52f1ef360f103d1e755cdaf4ac14b7c6b5632616760cc6320b109a74c014d5eb01d9df81eea29810fa79ef83388310056b3a9ccd002f328cb11a487769f894d0e25cd0650c9026ac4425449d9420631246a1200f8872fa45e30fc3ebe5fb473fbd348b5c81459f3d9c96f4d6216f72fee6c657856fff7042f72290b8c9ac7b36ee8f3b4d0b365b4325e057261b0407240985920b7d4e9b68ac91e70db065e59357829dc55043cdd75a8415bcbf24c9929fabf8d3f04ef3ef34ed6b95e7de2fd7b6bf836ebda636102b9d880350e8734759b7e7fdae388657d474f04a7ee634511ef15176c41007af0d29cb4a8741119e0a3a07852c952717c4e3782a9143d68241760ce32561ac726901c57f6a3fe99acdc96103d6156534120a5bd93184f8d82156147e669bb80a7f9851fe6cc786fdf16c15e1d4db32a8ea45532d72e11c7dabda578c39348ec1d188ffaa08628c10713bef7f84cb07578628c46ba471222c7452321ca7afc9c048bdd471d6aafd5a53d37bc0c6ca2bcf418caeb7ec71d2bfc34829025f2112675d9acfb9d5476281811374a6715b508dd2313b38e7b7777624c03bb5545f38ccf236ce4d16e586c180846c1aed3b096b89f7aa66a5f5d5fa1e0f1d06464e705d4e076c51c30c7d744858050c57268cc579b13ab26f95051b9fba622bea9830ae542d636320abebd02eb5e833653ad5b99b1b79de6ef394fb7be191a32311c9ff7bc35fd01a1bf6285079637cfaaea2f698a315934f8186701d4e741a3465d11ba31bd150e8d389d4f2a972bdcccfe739178d00039143ebaaeddfe09410e2e40c071b27e71cc92b55d88e297cd9ced47e654a293aeae7930031bc9d4b34c3c2ba1553e9b7f253f200c753b5b1e471a3b0b11402b15fb362ad180ce1449379bb6e9f66c3725637c4aecc8a4e804df872b057f920096988ac190ec38f42bf42687c69de6ff33d8d866f8b47eb8c106f714bdc77f5ce01f83af0d82976a670f3aaa5b8a9aaf6ec4d827194cbff5781bcc1aaa5a680bd13790c29361dd9c857ff2c90049413d7aa5af38f8923b45d47c81ce038451b8a748a50b2b1164b11da3ba81a2aec2820b1979880f8a3fdae3378235d044a5eefb81f046178a74898e594deaa141e04afefdf13be46df14d535af0fefed435438d09a0895f2c7a1776384d5b3160f3dbfefff08f3f1d6871d04d5586cc3b73f7a26cddcf181af72e2241fe3902c9efc9222739fd2bb58c1952c44929023ff261eb1fdb3f4bd84e0f2d301fa485bc64d725246ba'
32
+ iv: 'c08e77a72b144d06c51f42014ad58046',
33
+ content: '489c2208c0467c92e350178912f65fa10967370e87ffa4b182f49d97fc78e8dfa938729b3bef9acf5f0cff85636f031b61668c458bbfe7eac0c27d89e519c9a956bb98c05b9fa0d0aefc477c2c9ba2d0b82c3ae7464cc16d80c07030f23db15d25faff3ae9a22291ab01405825e9fc55bf606d216d4f58fb2761e507596f301071c583345b7f25e2598ef281cdd725dd605f3c14d5c9bbe009c54caa20e2b634fa9504596bf7b190b303f39c6ef6510315b8a1a351b8e3e24966a4a1d424eefc94f942a55b109024ed3f4439ecbc0641fc6ec1367784089bef884fbf47bc64090c4d01c43d1afcc9d4fd48e4f12b27fa23e0d96764507b625b2b76b077a7ee1630af36711dc80d54fc38b505b0854046e9221dfc023931d229d51367a7d5dffd4cfc6aff1160dbb532d013173caff6ec54200a71451d8c0e2b7d11ab5155b38a31f14bc626819fb12fa4961ffbdc430f4b7898ba9205436d77581c64dfbf5eb88700768450bdc91ec901f50d17ef0bf172842ca5bbb9c74c64636b99af014e6699c4c07065c4685f0770dffe061a7147ed034723b63d8e8064e0f04f2aca51af6acf19c519856ad462bc25c2a520fa3f62ff31b9ee8c182d0ae0762bf2dff994ed6b7c0819b0d93be6aa8c01ddef5844cd1436001677acc42f045bf2186d2678937321e2832a3fec424a689c0cbade3b0c0f4796bcb2b6930991930279a29d1c436b307329509894a6153ec9a72b9ff6bdac2584cc7a3e574f37702aa50248046710fcf40911b3bbad62bcfe1da08f973363081f6190fc7c5383341a84d1d0f4b96bfc03e619a8aea1aac3b167b9c821f6d6d3079de3b0657496b481de18ae57ac2c5dfe1b5ae474b606173efe01269e46990440c42ed4d48e789c4360354b7c9a8a6bf6fae15465e137d3dccc54a093cb34cbab0308f539ff99f51707abaed4980dc6b4463b83c3998f1f809c7b5802811e817ef4e4a2535ea9577d6db987847f205c7861c8b15914b4bbe58192a3c5841f98515607a299c138d257673fb16d3fe995ca46eb49925d179c394896c5896b442bceb8ba37dfa0b186c5d0758e1e33c5ef6f7fb0e717aa311ff53a2e7f5e7d36ad796c3e88a400ed10d8da0f99bc8060de9da4ce497f625bfaaeb5ec92826281b7c2153cd4008fe2d3cef27d10223913a7cece46b16c6f5d9ad30b293eba7a11c6e79536847f3069eeed11e68ee67f01579c6e5d8c17aa172bfb3023a9f73734ea19acf925eb4e07fb84bc3c2aff567cb2279471a8f7b3af86b3811c30d3ff9d09c998d171233f5186b53b648005982eb72e188c2b12f830e23f05ea2d4a600e0ca7605db54448cd6991ae7e6ad88a7d434f77e13abc1a31167b9b80116e5be0ef8f1e3253d0892838cc531cbb7f2d7a275a0292ca543542ba473b1639c078ca97d85188356749155a857616191b1f85539eddf2cdf23cd8d605011c3bbc6cbd1ea7aa64de3640909ff89c57f9ec7fb6d79073667da5edafe4f059f49083c5a84dadbef89c202cc3e6d45b06e0abcdc3e0020a0cf87c5cf910b765536d3a9673acf02c0a72af0e9059fa02df4c93067ffdeda2536a9e8f091a3de42b563284f2ed47e7e2a4411fb67c792ce312e949ec9dc079019f4a6f34f6a7cf50a5e91c22f44a1c7cbf952a4c4484da493efb8dc0296a841936f06eb4d7e3e62d2da7a1443d2267deb2f9ac6787ebc2c5c08c907322a7a94e2c8d621f3c3078fcbd1c3945687b5078ea8bce87cee3a4865620f73a48ac8fe03a12d58e15c7e2872eb05558c6d9b13132f3d8934dfb099425cc1f25d5e82f41f3198cf3200d75bac1dcce44ddd64a80204fa43df4e00bc61892f5414d2385335a6f2b6c4617d799222429554c37ac74c06fa7fda1004d93f16bfe1f525482e3998af866f9052cfe6b61cf281c9df632b14b9d8952127147fe0cf5c60d8b1fac4262cee8688d37acb776ec3b9827a0c35abbf05b7cbca75c196f8361bfacf49b99cc101137083ae77f619d4bced45e094a06be415901034a72eadf0f69e05f6905201baa1e23f38d6208273b08e975ea91c0899d5a62d939130ad2261412bc6760bdca8ca921fbd0d47b99ba5de285c59a0d95fe5ca7e61ad13ca3c51d5e83051c0d339208f1a0d8397a7a87c34a9d29fcb66a6047859c9866dea00cab758a2ab5eb6cf5163b1d18f01a'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '632d93c80229119c37b2207ff8e01b84',
33
- content: '6538826d8d4bc1a364a4254fb1b21533e5fb4bf98c9375d09a3801c2952734506dd6e90f827a77986d52208e623116d202c9c34d6420a2e689708c184051862bf5e39c23d40bf253d956dca994ba47703b4c953052311c06a4193956cc0fda32e75921864ab98e7f85e1bcf62996bf615177b298b2315005bcdf2d10b4e56a228aee0858986e0de8d6e81b631b04046a7df6e7fc6aa8b1e146ef711ab7b6579e4e3070192078e315ab83e1694eda51f26787736720944878479e7e9b4051adb17e5caf823a14ab3558a61980e1cf447b5baea76ad3f5128f04fd4c88b268ef4f47dfe1d4c76bb4c6a99761e57e7e2e0ea34e4028ab6e1cb219fd398a74fca59a3ea9c49eff02cc2e2c08a7176dc906ebf402d516f43f1bddf995dc61bd6b21c1453d36384aaa354dda08bdb28c081c8f2886e0ef3b0af3829a11f49b9b9fa8cdf2bfbaf7f7009a1fc3cb22ff1a7fa5d1ee73f0ccfa3187d28ed0998c5cfdae9810bd612926edee5eb9350ff17ca24aed9b56543271855fe6b47b41ff9a3b0a9579c34e4d8af0ec089f75d9595ee4f256354470ae97e248d13cc5eea571a61a67aa6ec0b8df992a779f3e8a8db821ee1c0cd3504f361e20ae6a62741bdde4e2777807f87fbeb7dab18e721614c0ac94d45e2b88033948b97d89277ce0a1251e6267fdf31976d85310cd907152756b9284766881027a1e11f03c3a33ea1b49ccf806d07acfb9e80cb13289ee89ac0704ee149d757231a64db2e6fbf2200caaeadfccc5a3f86e50880b054724493ee98c066c4d75fa58f2959591346128afee65e3a00ca012a31de6c45324ac32c4a7d8dfc7515f2f566747c06812213b38557f6d9f0b40cfce5cf15edc74bc498416ec56f4389bf8f00db6d83d120802f51385ce4b7cca987ed0005b6727fadd357957717eadbe569c026b053908104090e7a7203ea978d289fd5b8f1b7ddc98b2147eeaf2b1c00c2cd6ab16b4ccb945eb77933ac3f5b2edb66a26a19d759f5c81e5083da09dff97c84f96e755efa4470672d0da3fc5ae71ac0ee1078948337277226665b81ca47e2cd5b07b0076970655f1575a346fc9be45e5aa5af3efa0a4874c0855e5b44251b3a6361a67ea753bb8dcf96fec6d533007f0f29fa50bb7360eef7e2445b03c2937f978be5c817882441214854d023a65567991b083557b9c6b823b298d573c0e2cde0abc749b21ec764bd83f89027bb7a22e5527a3ee33c86c8a36825846439a875367520c4a5e777afbbc28f909e76672560cfd3cc1d7d4c9d1b76a11417619456253596862feb143caa326ee310d1099fe190349255b0fb7b687f9ea92d0d39b249e8a990d6317d4f9269bf65a65a5429b7e48cf14a996264ae99681713c5e7c61627a880a07c7d3d6c912257761f457ada34064b53683014351902f9b035a0f237c89fbce06709188023d5cc46bb52ad9d5ba4a0f896ac5108fbc29c01d0ab3c1ee7a81e756dc9afb06ad979aa8dd7edbd392507681f82468ba86e2ce8a34a4e2d0882f234d84f1237490ed1c5d696baf7a30d9b44098b5a01e102cbf5c0b6f9753874ed6eb7f5c3211675bcef3d93687aacf2be7a9e0f3b0ca860bd5e76c831f3d13e14702c7a664c6e4c7d13064ec531bc8124f056e0007e694adbb47913ad8483e617b0d844ddf344d69fe80147aae984f15b5d2118f5cbb95302701256d6cc3f2570c9f8d96d3bc0d0516bbb6f2ed118b0c32f9ea756def0f4d8c9009e18296dded8dd5aee3873b6465e3201bc59c033c6ce67e36a571f2099ea59bdc5ca76291527835a44a4179709c8a42ea2b3f4a633da1ab1f50a581336f58252f944e94f3ea6e4789093e05d9f71b764363148acbb2c8adc27684f8229c7e6cd10bef93385ccb5a5735f0e6a5563036b2e85a48def4ffcf8d5d28d3b4038915af0855ec0cec0ee4277a949582b6ea3f4a2dc929d0b6e45a339e9a0fd8d9f2916f9960388318e53f405767b0f06d8e52d81ffafe354afd502c5f6c302bab9cea25f6a68aa9d558308f1dd5c88cdf1429539d3c42857943ebfc9e6f9c987f048cbe2905c40fa09b256918c769cd239bfd1746d1c01575442d9c16513bdbaa820b42b479b5556bc96f0568c72dfb3af4b9c9d19f647cbb9df46d9f38aa4b54c14f5552c58fbff4bbc13bc1ae2b4711cdb6e681a3da4f594661a8a683ef377a225918e89242c9036dbea72a4789cfea1c977b134854c3709b1c5cca5fcc7d9a01cca5231cbb4a30bc68ffc0373322a6d8c42135b0a9e05f776106437bc8791d84d6a5ec9ce1d615f0929b4e297f3faf97a1b39d1e4676fa0ce6d057ce4eb6513fe3011cf101d7cccf63ddaf7da545adc8f74afe920ab940364df124e8d163bcb21849ded6b551e506ef275d4d9b5d5b67e080ca6aa48e93cc34c38eee2aeed3015c4e54427291b53920362e7e053d87d6b51f39b8ff5e483f6794c55dd44740086004a68f130576bcf7505a61eb9ef03428dca38297e2f2e9737d46db14d040bec15758fbe3fb29690391854ddcb672018c956b59ac77cf1a9115f123120e0dc3e8b7470a2953ed4664e4d88ebb0bb4a74c5540ada5fe9cf251fbf9d41ec5e7d53381e01db240fd1225fb6016c23e556be7b1560df82df7275537b4adf874'
32
+ iv: '03bef8d05b610287060c74104b19e742',
33
+ content: '6915d55e04d6093ad32b49ba8fc8bccf55475dcf51a48480839a8661cfa30ae75d430f4755a9c1d553fcd99c270cb7bb16969bd350cb30e0d928f9aeefe3a2d6b4a553f57cd22b1454a8977c20e99ba0818aea36c331d9e25065c9696c1af6918e1d902971c7511ae9cc01c690fa8dfeb73cf7873027009765e87a3469ceb2eefd83f90a8dde7c6439b3ce607c226d6cdffcbad9a6bc703b4cc6365f94310a560c864ebc6788932ab8a8cf622997680908a3b8287016515246d86b481db2f110d43cbfdb08a867628090ecb290b91c639c5e0f7f7ea2c120491113576878aeaee3087bc397e43e893b97e5db03de1029244f141a0da967f6ade89ad140d1bec099b9bdf0e045eacf412c67654e0c0d043375e332704aafbde4984e195e2aa1b2576390a3084334c093fb3c3913490c658861cc332ce9351e552648825dc0426175d773848902b5e7570c2256069e672406463f59e8fd603f6024b71f86b861161552f1804fedc351676b5e0676ca37d8cff2b132ec56dfcc80c1151709022a7fb4dbef96a521a3fc738d2abd8c517c1f1a5c8b646aa7e378908d05a158e629b4a2f483fefad25e8904ca7914e52443acfb989f2250f5d6e5b2b32491e1abe40820481ef5e94de478517958f5141cdce318b2fdb4cbe90568a1cedc1dac19a28e03102de9146c67c6622d5e30bd8e04b33170b23396818eb8cca1e60f664afbedfdaf7d3d8bc390b8711a3ec355f582f3fbeb5546638c8b861aa942a1df7d9b428afc5ddd1f150914f74e8de7ebdee16299e84e52e29023ff895729e4366ec6d7b5d6481601c2a6ff5d458bdc23c168298f0df79fca9c8bc545271a76bbf80397745bd45cb12489613ae9c06560e5e338aa3a36db8f2004a31aa326772339b4c8b39759ccc365e9f4f203a33d378dbe5cff30ca619b8c223ce515324ef995f060406d7b2917fe8ca5ebd172fe7c40ec6f62d12e9ef59ffab3a32da57cfa6cfd21be7ea5aed7ba4b6283de685d62d4ef576eeed14216a61aa619c1847b42fa7b3b242bbe4b63eab9e689bcca94996fc81aafb1dc06c908034352824f6d56a3cc279eaa8115263dd4877ea33bb04b10ae5b61ee336cdaeac14af2c8714673ef0adaf39aac9f378ff0ff0f1176c8a0c60cb2990da99beeed3494ca977b6d8f9467938b1a2a73b263efde4986b5916b2a448458fffb278f140e598d355fc2edfd0985c43525da780159aef93754b9fb827fd0a92562c3f0bb94f5baf9770d63ca34f8a074cd50d4d8d9a2816c433eb5e78a9339d138e5d361313a8b41d944054bbba059c1a91565ce1327097414d6e75ddb28d64aefd7b638fd63efd7648b0a820f9c92073b80922e2c3ef65250398ab9033d997770ddad23992204d57daefcd0ab2e71d519c92c074e19f8b5785b5d61c68be5b95562414865668a8b36b9ed317d4ec40b0201715c7f207fbc0bf9cc5037923f55ab708d0ad6d6ce5f97c397b3fc991367ee4d18453adc6b9e2d7b76a2accbbb4af9c09334df6be5beff0523738eda35413cb24de499522b2fde0ed21a9644b24058eb9606da638355825af8828adad8188d9cd668335a3a9ca1e66f485203c2fc3e00f3a4897b6729fc6542160493471fc777708e90a1999f95a2399e782541c0c5f6184de467df0f02c5e1e9fb0210e95e5ce3e823bd51e8f2f3b0bd9da90d911dfc0542005f9ac87b51320993c1be79f8c018dc91cdda15da9629d989f4c03a3d59af56781b47cec79ae74c64fefc6880e527fe53af65c1f2c1c4573d9295df0205434903685b35cd46503cc6c5bf3a366db61d157f9a3d46a463d265fac8c971a709e6ae6bc252d11abc5321e721663d6b42043c16836ac7f0614e4b20fbc6e9f4a8536f4fc12cbae6da38f4617ee9338715239a8d35e8e645351ebc0db4cd28abf71697df681f47b8f07c644c5cfa503aca5935713aee00941bb0b2ff1640d0cc3e0aabaafceb88781d178af00885b110c6e6be25dbca3e3e60eb555971a1dff6fe2d6ce4f6018a00aa0cfa135be6ba1939affb7415ce1907649c75d7ae7ea3be8bed94e4d0f9d38c227cad38d48603a45bac5555dfa726b8ff85f16e148cb212a99b47377b8ea8f8bd43cf898cf336611cd6a1a6af06374bf48a4c174d85dc7b7c50b1190257d85c44b66061cb9108986794fe0e056b371d5b051f33095f074551f2f95f6e29d1a3b51b52852be9585755d8e96636a84e15884985b7c97fe9d33919314e7544f8f8e32f3b5c4c15c5fe1de0a55a8ab82b67a65bb7a2b18c0bc9cf013c78bb93d1048a6c884bb08b1ec7989ab3c65dc1aa73adcc03db86f810cff83444c8c12d43da8d479d1953d143a453183f08639bfb93f414c98e6f2ec63c0d556f4979d017351386138efbcd268ec8441f38efa5e9fd874e0379a1ea53394826b26e1eb644489ff680318f2072d6bc12022b8209bada536075474b19efb718c427fbc9727b27f8f98add8593df0c3f68acbbdfc9de15171afc7e01d1425e0ce634888b36cd6adbc501a64db75921eb7762046bf02ad6277c9e661ad03717b3c31f9da11e653bcad8229dae2b8c677584d6b2cb1bc2e1a8a6664c6d31ae767e47e54f95b5d5562f03707032a41815facb354eca4c22b5ab1d873d'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '62f8b569635bd23c5402114cbf6ef38a',
33
- content: 'ff7441048dd324b11432c44b4b8981110ae2928e164fdac86b269e4f46284bf2873acef3a9f20cd4bfe299eeadfba0648f409cefab9b736662024417c22c725f2bf5f8b97f476d54533f1777f0ab440a3df04de8cbdd17cb0332cece1104f97830e3a32089edc5517ea6533da0b756f054f0aee7a4594eb6f2f1ef3fae73f29db8e8e4ffe6e100853b201ab3002daf911346a74fa7f62966102c0fcce5537f4b24ecf8200fff82f2c8c24a7facbdd019a37fc1a8fa88d8d66564764d105bbf70f40d25bf25ef24e3275875c8c7fdc2b8c4573e5b4938f4a14cc826f619582f9dd6261654db2116f13534a963d8d3f6fab26217c4e6206c14a8b60bd3e868957a3913ea86517f4595e26ba5961340597c48e97ad5e05214a37fb5710fcf6b5207b75934f90f3dfe7c6327caae2777a07052132838665613d2269f0e6a462f2dbd727d7a863eed7e798c77f7b67b61a933981a6dc2b5030ceb81e525644d1ee6421eac2d05a6bd589ece57c756140d58da165b336193e88f3bab67b43f8eb5ba1ce1fa9a049183a8bd0bb7407e9e2e90c117e785e9ebc3c52f587ad9e38fdd82a2482ec6003090ecac87cd69c4cb65560a593be5e02e5c4267467926bd2016519a7a4b69e5d0ce74c8a14a652089f2f63022b72ac6e5d8ffc67abf27c882ae2fb865d1da1a3665e870b25d5632f91f1acdf687c8cbe92e3ba0207b9e98e095a59b65e901e1ad35c69236ce656a3c47e7f672679d199fa0f566842cf96727a61251b0290c234288f4c9a3510bc6d9c7516a2c85f4ae5e14e63c86ba392b3648292df23230688b612b99d029bc96bc6bdb32ec43e245dcf1958a5495f362c29a6a9c3031f07dc1c1ab93f3bc2041517070f939e1297a0a927688b4887b5a316745d82484a4db789fe3fd7466ff4b627875dc5561d0dd1502d7b38c64cd932e9e9b31aac24e28a003916e60d8e0be59aee2190c735bebb0b2a3bb3205a5463e05b1782a6bb0be333ae4edd00579ce3916b935369825e9b17e00f21fb23ddae4e97797738b1b7fa2129d5c09c58e36c792dcd6f0660cbd372442b3c43754008fd391794856abc2467f8afefaf4cef0e91e12a4ba2c527557e54b2bf58079efdaa31b466f90ad97c55d9e760b4a9d2f5c67db4b57f723036bb1c9470838e3e69cf74a119130616c1706f97cbbd511ccc8ee49cf624ee14452efecf0c09372c548be14fe44af682d37b5f7b55e5a38c1f5c36c63cdf5e327faeff9a2beb4c537f3a6377f3be7bba824c728ce49770090646cdfbe82ce0fa9d36af4ccacf4ed7e376031a5714a905bba6efcf3c4e3f85a225b8612e3189c45ce600073deaa4ebb7e42fd79d9c6757bb5f4e30f991992166c9710ed1896a7a3fa67f23ae4c42dcc831dd3d9367d03bd23fee8f67d6beea62ebf34545be91de8338b03428c0da317719920ca08d36e2929391074773460f7a653c852c837f6dd4633ccb710d4dee4119bd0641aaf07cd3ace04c65e08dfeaef61b26637c287724b7a1c03f6784cf18df8e93c735ba96ca19cd0b6326887cb72da8a530c8dd9dff867854a9d4bbb26538776bf1326a199225697d977c28b2ac9fe82ec51e26100f51521fcfc9150ab974e4870d78262294439cc2dd92075d94a8b0fe82dd256618974b40ac5746f5a337030f9c7ce22586529936d22b7d6e7c275225057badaa82a4ffc510beea6aa855f672b3ea95394deb1d9233b893ae01de51bf40dbce36b37c03bdc616cacd2517b38b66918b8865bcaf3bfc3a0c7d7335f810bd32513a9bba8028cd503a9a0be262afe27e23ca17895fc1838e53877a8e5424bd8bd65cec22045ef45c36ec38684c30ba86293d0ca5eb9fa6029afd6bd7328828a84c3bdac4273e765b4a3ae4992b3a704a39441ddf9e577f3885bc009b1e89854284e03c9525e7295c54b895c36574d6fc825d39b086ea8995550cd6fcc217ae653dc90ec16ee94bf2d4e80aebfb82647e8f33db88395cd7fe4bf49d86bdcedd92a5fcfaec6cc1e5f6e45d254445462922beddaba082037c28c20209c29775704bb405a21f29a2583ab7d8497bdb7056a72f567ddcf2515bfd1ad88c345104893bb61b2ac668839936328ea61f9f087bbcc376dabe8445181f30e3a2272441f49a5be4fd744abc3f63c8e1e70e6e3eb96c0495bc6d112f2421a8f3e7cd95f1b5d4a1fb57ae551473375d095b9d5a64c7ccba639c15bcaee38feaa40b0354372d4ccf054c29f5487dd3d98cccdfcd4208278881d994677450b38a72a3078f48f0e12ad043c28123369dfa939fd4667d9bd8c8d0466619009886e4a84885dac06c6400f95f655bef38117073f674fc230355536ac4c939f6be2a0a86da157dc6e8125402d284b1ddf4e05d7a7ae81b32d774b0d3dfb4ec772c6e2466d660e12a9c5f5594880ecb120c1a1ff80c08de857a8706b270ff11910c4d15b93548e6ac9825c6d6d07e16e361353fde83b13dbbcb21d51a80023cb1164e1f18ea442970ae30c1e6b253c7c1cde3b63a560425bee293f4ef4055af5c353e2f0f7b82829981b2c4e73a32ae2c363b7ceeb38867003eadcb0b030561d76b83ed05bbb700a06f7cb6e1c27978d03dcb27051f4f92a0cd09335df1d7b38e1d334a021e3534812727d9b10d787854dfaeb394678b19432dc17967f0e05b0816466445d166c128033df93664a5d2f2fc0473c7cb4ce33ada6c7d7035d91e8b2ddc760adba9f750b8ecfcd0f0ddaeaec1aaf7a3b311d5325686e8b8020aff65d21321b1262005c4fc3d7cfdc458453ed35ca361e1217e4884440dd0ea09396f21d4e734540eeee6c4d448f42aa7e2447d7f0b6f4d1060728405c5c32bc1b99d329d39c3e3804bb68a1ba7cb0f60b9319777236579077f217d1c66a54c55a55b28c94bb1f6bfe9f23d33e817ed6f76227288494f411821319dd71a04d9ba23135aef474090471c8ffc8815c67ff3dbabc853fcd2a1b643cb1192d3cad19ee6413976343f9d280e50b3a8e57e877df1f98129ed1d705d49c9cb824d7f0b53c7c7436a6e044fdd88be0cebfd0617feb478081a065377aa22937fe4bb924c8504c6c251d6c9b43ed0fd115a4bf85e665859f435bacbe9590170d44e1f9721b9bdd60ba26a1bc2cbd6eaa57e975470a4a47f28f5df35728b4f5dc71012a634bf5396f7a333e92bc16fef63d0860bded1d967e16863d4f5794977dd0ddc2b135a8fa75ee6e7c49ca26c71a99a629f55efd8283d5fdbb029ac2b20d1f822f68e126c7a54c9f1e4ea965afdc7ec58447732f9a3d42bbe553c508589b4d7a6fa64e8fc153fb333bfba4c990fe708c0beef71485fd909f2e5eb3d6c21752b81e439c0da0bac7524af1b58be7ca28c9244a24d50267fa2be97d8366b402b567781ebfe163654f3d2b3e5d8e71b39768e66617561c09fa4f25f41f3aacb2b10ed20b9b07973037925ee9e14630ee258267c92a4e013e2d57949475e6f404bb315942a15b28660d25c1e34a92d3a2a7eab5f13dca433d6aad87eaeed34e155763f32911d65f64933df776834626762d008bd1c44a48ade0c1fd16355c0e83d107fbcb793f5b40d3f22c313fa3fccad1b2d2b1627af6ff6b9f816594ad9b05180081581b0bb87683899509c98824d981b141382ce9eba5dcae9c886b439463c03658578f12cd148189c3718cb85a98732eff54d8a1abb459659264456d1da692d7f4530fead5d6f925396fdd8a836b9bd195704649000a7860659e46671e3cd8482dec614be02279d5dec143154d7fbec74426a715ee58ba2e9926c1625e9e61ad00a2ca4ca58175d87422469d49e150d03a1a7ae0c633060e107eb944fcaeb72a21c8811afb6d7ebe0b82c72762fde85ed0820a6862c0c3b153f1cc942094da93cd16ed728e23100496802c5c2a9966d36539391e682de940f1dbf4bedcbb043fb530e8ab67b6e44cf919ad9ed7955dcd2df683ab5c0d69845e3ea2cf2d6bbe5e782e679b9fce650651f389f399aaa0ae801c195f1f4b09abc7f0229df57e5eaa207ff761214be2e21d0f0452822433842a5dbf052063933e273eab767a3d86e231b7c0980a73f342302848051722ee9f4c36e11ee88a3c114bb30e4df3b0f817e9d30afa269f9c0f075c76040175e1733ede78d40d200363a17393904bf2f00a336ef52503df2bf6a43b3749d6b6a59e1cb6e3ce231b823a079dabfd46a9f8d34458a5fbdfd1fd0f08678d68ab97af787e50440415a3d836d2bf6074e6ef24f0c71070495cb32b5092017b8b343c575568649e58469ac98637e9105d9bf90241960f9ef24164bd7e4686a8aba0016e3a910be7f5a732078bc6aa5b7dc6da81ca573d6b606b1cd665c7a5f687178c7af2675dfb614201b3e8394abc62101a0d73d9fefe7d01d2d6ca137074bf3fac91249bf558510bcbef1f46979dbf34fb50aee5f18b0b4307a96dc8115f0acc13f76d7cb5090c28d2eacc7cc1a4330ef96e0d8e4a142e0ca286b9ef4fdd48ac72f19ae5f95934afecf7254375015eb397c84504631d2206da4c44929b51d3cfed2113f688175039b42a0c606a2116ade7e20ddf45f9ab41e0dfe041174a301ba4d037abb4448b0cc41c0d0da0612073cde170bd9a0813062475651519ebe34b9fe19104c0fec0f239a2409404b19573408be8eed86408bce6675b9231fb13f89d598807aaa01e6520893d928e065cafc3b30ea35524852c5022dde77f7f3be09ea6bf8b80bb14dba186949bea410696386bb4e41d621bfcc1096df75d56c1e2acd7f214de1699370425aad0b344117105a0ed2c42c1d5fa6104133fa2c8e83bbb'
32
+ iv: '930734f27d9649bcb1d9ef9ef7508a4b',
33
+ content: 'ea1d637383bad3c6078ff4ef115381b2647087ebb8ad4a2bed55d6594d63ebe6fb20121c1a2bc73bfac4935188ec4288f28c336ab841b6b1c032d3690b9e37cd9c83462bdf14a8ad06e66a25efeaab56d9c75d8dd3783056002159a84c2434a8136ab3ddb0bb5bfa030a5ee9b4d62ab405981d8f5a567422e47b5be4f62cc336cd159d6bc0504f4891a39cdde8723518be5ab879598c81b833779940b1e44669af20d446808dc967d63b747320ae32cc5a8738127ba5284b6b5e1196de3a79ce7ef4cae1c09a752a61c0f7ea9e38c5ae943f8e10a40dd16a5fce0b403f129e9f66b12256726534e546d7ef61ea7e98057999eb47886905d63134a284a56c408b0d4497cf0065efd39ec80203e24641f0c3820600bee863fe482880c0c00e981b80aba79d515bd1c90f99e37133d1f1eee3f8178a091e30d84c3ea5700c315bb4061e9341a5b2036f4b26f98bb8cded086c48fa2c7c434f32a796d6374ff64db3b8706f0e94169d53d41e4de8d210598a0d57149a51c35a26e20a5f9f92603681ed2f40a6eafe96221df29442c11cc82e00df8607a4be6cad793fd0bb226e48c856a38604cfdbc4d97ff5330f4e688b9da9dc95eb7d572fdb7340ed08b4e8034efb7fc9d59ef831abe858a7ed0bff5dc53532ed321c7e7b32b3230f8c0389e102d8dfebb71708d3bb10bfe7126157f133b6aa010e33f717c490407f7ca2be3539993bba3f6a96efa551a8d2b80aca9507652d95754c1e99372bf2878fa811df27b4b2fa0294540434a3fbb41fdb6081d42e392399bdcf1293dfe7041e04c6e2a59ee8ab006e4bbfc2b17320f9a605c81574796807246ccf471f38263def8b33f6cc276c0d29fd16327627f16d9ec377eda54a243db1ea3aed8e0199911d303a34004789e1fef98aab49dc502be972578d933d90de13f35dfa96605b7a12e2198f2e1cd0e40cddf2e0ffe3a5e8a4af2560da6b77c89be6c67bf586b678cd072736c9fbc1d2d1bc005edb6b9585988d1b994bd7cb1e6e19e328a8f6747f507890c6d4c9f0de911006032cad3e65c5e6e77e310419b9959c83370b144b9c26081006e6ae140440829fcc09ef4aeab00f6ddb421855212e7cce24c0cadd0caba6e2a4b32d02864cf01cfae21c1e72800f12777dd7e857105358a8a9156ff0aee778b9d0dfa834eec6671a7cbfc93e3ce3389b32db29dc0dbb1212d0373e67af7dfa33580a7e61fb8ae34aebf2f540dd3e99f69e3a7f8c2def69c9ce00a8c6f6a0e5bbc5ed568b58d26ec8d3ed943b5797c3debfc1f1204d0d7cef181faebec2b9dd5eb26bc4a51cce9971828253e2672335bb7f6155f70605f12918200844f55f4fb81ce6c79ab5f3fd3a87a26cda4a2ba614744e333dfbde90436859df69f619a7fb0f52292e76f35a713528aa0c0ee4fb362f91271dae7f194aceb0fc07c8be45aa60cb930e924c7d5a843b0ec60079666241e1afac0023d6cd7f1defdc07387ea6939105abd42d06ec5924a4ca4b17417a3cda261aed864c0e035f38d8704971739d15c9059400dc6d62be42cd0603ec1ec8d2c5ed6d74e9363f7e55759d6d17844778ca2b32a33a0b4b39cae016932823565fc0b7e323093ecfe70629edc088cf57f8fa24a823621f8d90d6abc21d69fe6416f458b5e7533f5e8effc67eba8d495f2f4b34af3e6eb0009445aff18bd20fa8d569c820566cbd884077c85453cab2097e306ba789293eeddfef7f6d68f28c9b6476f6cd6a138e14d52c646782d70afbfa76cbfa3744a715e7a9816615856af282dbe034e167fb41ecc721282e9ea08f70b2b7597802356fb79217bb26f1b5f3be3f45ba37bde1783e74c6123e746872869d5e301c6709d8f6694978d72825c095016a4d42700dab4cab936bc7dced7694d522c83593374ab8de537566fb8ea7a3dbb31815136aafd7828d740f6e98a56b07e2a284b0a2329b7aa80b1436a6e33d80a244bc04cd85b627a7df50e205edec2d52bc0a91cce38a5a8266285a4a09e7712acfe48909a5070602e0986857b69469c881510ac430de526809c2c6ff50298edabce721654d4fe520e8352cd633b9aa9caf82b6a4b98fdaef8265657422e8ef3409cf97bcd40ba9da7c42c2f3f18bb43a37bfac3250c30e8fe6852172f464082bd98691847d018b507498a7732f18c4057651d6277a8411093f14cd91a13010a8c7c3b2e44da49ad1c439f72a1c014e0ebd346e984dacee425b039470ed96b9ffff4a181016d5a4c2204ac27d14c6e8b60bf88cae965a7c79ccd92bdeabfc5f70d3c9db3c6ebb59244fb57e87fa604c6c6ae1e39aaf92ea554445c9ca19c14aeb1650df910cf8a2ff8af3fc338d508b78d94a402ec9aad77dbadade1b009afb01849ed509e072807deaba80b42eb5dcdef3c5240039b959c1249dc522c5b8f60edbbaccb5f476b8c3346213c5e79d8fb89c5f9501fdcbfab6cf0e400687ff7481e1b05a5154f18323170e8743c279b74b9d5e6cce0368e63bdc39f8d13d2ef62cdfc52e80b7db301a7c90a99fc012f7927411b5b3a4cfef68d991e1a3a50e380b1380a90f922bb2ce0383b7afa7869575287a780dc3e39f7fe6c26e996cf88c255dcd056a9ef5596aa0d2f651f09bef68a1305e3973f5bd6feacd961dba781110239816e18af7983d0d6909650dd3f059f5a953fc20fc245a1841230923d269be15b05256a0a768e97c1c6a5f36f364d86a58b4741ce169b3f2216eb10130ae9ad615f26cb10242ed4db89fa18016da89863989335eefc999e640a0c225c8d0934ce30938c474ee3c9c433853e553ac66675154728e9d5ec6747d49fca70754574e6a935b219a3431cbb2f789791826603fd89c164a5f16ef29c9973b82a5f93aee31d0a53561ee98d123e0185fc8f819349db9f79995cbbb924adad50a4dfc0d2788e4dd318dc3d5acd8171b3e3498dd5d854e8065d4e31ba832ecd801841dc9894f21d262835e6223aa4425ef6e678a1449a48ce608473151e6894217b73249b24a840cab7cebf4ba6914be78e2eb44c941395c17ac71beac825c2ca76fb396e38462e769abe6afbc7eb5d05fb284b3f9708c413978478c603968753ebce1af21cd3839d4a0e32ba371e98cf3ed45648812970f9508e89d0298b908a043b3a83120bad0c0761a47db6f0942caa648f9d4c4a3b20421e9a2f6520599ed1c35a378a20c37fc3f424cb9e50059c7398df01b94ab39d52901d7ac3b9ef0094dd03f50bade85fd0bdec30eda6b3761647ad612d129c67852f161ac7e739da88cc48154e02fdd92ee52cb2dda857679caeab8dcab5d76de7e7d835fce3518ef3a9a6d7fec97301db21ee8a2d960e699134f9aabadb79547a602c5ead88b07ba69f99ca3a912fafad04ec02c2e10b8c7b2ed981c0cfc363c86c6991c2ecbcd27a32fb4e72af65d27b76d2eafe4f0207dd569e17044a70174522508c8c61b5f0ca34825471df3ec658f5904c9e2d31f2cf9c65f1f1a382a6e4d3c5721c80630239e4b04f217467cbe9b8d2b52b1d6cca72e5344fa81f7b4feaf422e74c688c549ea1ce961b60bb772f367b90e527078b1966899131d342f48e9b6c4aac4e15bcea55ff2c75793d3a30e2ad014dfe540db16b5b45a4e87ea9bfcd19dd4103326bbd6b3823ee104ab8d5a0900a77467ad5cb802ae3787ac7cc81a796e4e721122756615997f048d6aff8b0cf2533c1b49f6e9f238b03b2534ea69a54ae223e7b3845b14d38967e3d6815d0e73f412c697793963d2712174a652694a1de49c04bbb3b260c5465f6af8c37d9e86bb43aeef56f24702b51c3d78782a8a9b3b5e66f5b0033e567829ed2498060827d6dbff5723a54728fb40bc22b83d763bb3f81de212e1dd8ab85d1b72fcc1c9143bf7c144b291c4a51000a1867133f4afd6ed4944a4c840239644d87f087c9cdc0a27cd171452eb4ed4d523157e394c1acb037487b158ddb14081b978af28983434a78f656331de2c37b759f1e48f4a1d27d01153b7939bc2624a31f8666067d8a6b86dddff65762c3e4bde6de87d7553660354ff99f36a34d1595d9e35bbdf0600c9525c9ef055fce485f6cefa7305bac67997d0989a13d125ca22f18f7378212015e45333e179fd3257619143b09aa80fbae1d0a4109d8770c206c19f026449f354de853bae756dbb14117da333336529aaac0ac5f86afb650a6cc3578ecbf0aec8acf5480b58727c6643f2745b6e21c261d17f0aa7be3d2d0c03a0e11ce4217bf8414a587d651e75635319d52fa2151fec4d17b396e1abe066e5bb9ee39e87a5dc0dfc2b78fb00b1991e0299bb2d9b25ecbe65d29a17f21e0e5a9064350ce17192dd5232c481047f2bb1ec670801908fe9626922657a46d0108bf8adc6431bab5f5ea225caf97c801d1bf0c2199a49560332dff1dbfac2d29990059dd0dc957d1e27ef2f7682854b80b997fa31192d391979bd80eee214057f4692a5da83480a6da6a7a7d7cbba998b0602ac641507a0c0e9da8a0059e4b3e971c48ec4b950c19f65a48101da035d1cad7a0227e59b43e947eaa20fb2e54034f7ea412cc73a9274b2b67826b295c58d14145d44945a9ec7a8b06b3e9885eda4c7a96f98c6ca8ebe85a11af60f2cf8ac17d57a035c617319436ebf4a2e9612f448edf70c34fe0418e71e5cffe68a58bde73c9e8e24b45ea34550fdbe95502bbf470d1fd78c5dbc0169ed2a84e0777c1820d929a364902152d6cfc3f5a43bb89b549afc7578f986a7f094abea2386053282f94ccccc84c7c7ba863ca473ec51a33851b28d4617fd46961f0fc9defd34a7686e222808b87cacfb62'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: '2cdfac3c10f5572e862859dd6078c2c3',
33
- content: '541f183f4695c3cb51dabfd00bf77791f02971f67d9d03906743660aecd312aea2a9748c9e76fee067fb80b39fc9bb4df2a5522ebe919dc66c3fc8ae6e72459942b116fa8611558463bfd9696b8c900ecacae7668ff5cb6e48f0e83a1e1c3d30c7ddafaa2f2bf8c6d81c8894b2601b351b4d45f01c9b407fcd2be5fc43b709b8d93fa235a3189a25262ee9716e7f1a49e327dc0959ba1590d3309869e37e12b8a9c1aa7211bb0fbf50cf8de7f943511d400f570d468edc757bdb44aec509562e0544087f91025938a47c2a764066981553a55fe28dc40143ff87ec3785862f5685985d669a01c412d9a6d037a2dc5301e72da01796e21f61278fb3762dc56c1aefbd7a86e24df97898dfb9a9c32453605020528185c5dddb71a0488ffbb522cb3055bd80513bb5abb491f422dbd7e613d54820d17b9137ecc26641c12f83c590394bdf638b67df2db40afe68871620180ee0501c90cec43cea7a60c1c64fce3305b935b77848dd48e217b5c77445ff3d8e981b7836eb3b6b8af83e8d343901e75a02f997f15e666f31df8e3286c6047c771a53c9d2c538cfff30c3e836ec127e64a65f70ca806395f0c8a1cd54734c08c185718bee15d57d9e2bc9e07af26fc40b21d72b740bf8486bb95ff8b1adcede3eb80406109aee6e2b35af4896781dced6c06884f84f1e4c6dd0bbec735652ec161936d53fb86495220f29a97d315e0983d5b94f559db5b07e73fcad945f33209e64300da8d48cff6a54f4b3a58712d7d1b1900ed81bb0afd7e7ac516ebaa859fff69e24694422d06cd4a7bd6b6c13aabcf3e37820e1e6f29af397e66f12b12e5356be3a8f7d1b50660a2dc0a7346c39a55482b53eeb2ee20d85ac304177bc60c1ab06a17c3859cd1518655ce25e294595f7246bfce9e5dc3963908a0ceb3e22e15157c98084f407a445a719b7cefe0e57e5026a521b6ac1e72fe5e265a113a144433a27b18cc4744b17a66f82d32457d7fc3fc9816c463a82dd8f2a6fbac2e6009319014989bde161b31c2d2f3aa0fb22d511419be87687cba752167cb9eba7029374c95b49d71fc533cb5207eb5a05b56c4a16aff6850a1e207343c3a654d87fe4ec1690eef548d720170f673f10e40cd7f036e7b410de144c98611390ea0ad94fb7e14607a798befa6c7733aa4379ee187592d107c1221775a959009fc9940a6f929c5ddd07551269193bad97f056377b8a7ad9dadf7b6aa736da276de53a9389979352bc958ae2a0ace6f392bf6edeae40158e4c45dc446d26b763d3ae3a3a1f61e0fec1d901cce1f6059b5b6cea88c4c642cb34648f777cb22d8db4613cd5372341fd551af201d9fa99cd622aa56d5c5b68c37c17677cd8b75b63491c3ffecf598d29ace5d7d42f63ee5f1af175e342d120ec2704f47f2bc90f6925afcc63b96be9c02a4e730000168895addf452b0d30c0604d86b4edbbc58dd9596240aa4f0f97deed1856b503cece60f7aef5f6859cfde9110341bd3ddd56769cb27c64a3996d18ee89b413cd8291318ecf2126f7d7a29de572f6ab733aec1499e51cbb2d4993249925e58e521c9e40026f0c9632f34483257e851b27d310f035d3a423b15bceb5056810f5ff4f96db15059619412ff7777d664f2c09f711e9f6f46d6609900954fba40da22e49cdddfdb922db5f782cb9e4d3b1edb9641f6cefaea21627ea161cb300b72410028cfa5ec4617884442df93bd49367be50c7a95e28455a51a4a2c2885e6b096a7871c79ffb54ab523653e5d17224e3f573523fdafc25892fcf323f7abd649b109c10c2a66f295cc2ab9310db1f979b0da87131a6d5f97a75f7a18a85c6b2b83ce471ad746b113e107c29e9dfc99b0bfe228762c1b17a6b2b9bf9d131dd9b5ccfb564addfbab9903cdce4996a1b06ebed96c4a3e8d6dab10270ea4ef8b34e5e6d5e28731eb79d78448b888beba8863078f0025c521a1212ff1e6a589dd86f68dedd553a07f26bf3a7d43aa565c15cf46336eb7a9c0a99640f6ed2083f8fe2285d03351d62f1f88a0af2d353dfcc3e11de3ce3687b00fe709324bbdb735124a50d5915773c2308022c401f1989746410f2e315278b85d0c7ff50251adaa03eca296dbae14a193b83644f363abc6187599230507053716d2d38b5a69d66b4a6fc5ddf8b206a1a3c05d424d5a2989bf840460e03764fa5ebf874409a991c34228a457c1d28acbcff6a163c38128fbe1185aa2e323498bca74efaa389ed288e937cca126e11fdfb764df9e64e210d7fb47e353a86a67d06be855b1ff17bcd465e00a672f9a30a18ccebbb191a3cf0a8b900dd504351acb21ad9f35240689a182ce17422ea727f6d09a4620b79f265ec67923c1c2e79a0ea933940eed5a653f1114e0b540bed3cfc0b826526e3c553cc95a432e727635c76abefd16e594e6b3d0b0d68e89ffb05fea8e2d3b52d0c6546e923187512827386fb6a27020cacae8a00311f500cf2db4e0cfcbbf62d8970157f78e74a8a8ebc503a8ff81f0a997a618a20ccb50e24b87d7ec32d49a18be91bf9f9f88ce7b65c6a6cea1cb487f795694cd053dea538895e9f250f8322dc2cf221c0c382d5b0aab7b241b00e32435464bcc32fbcc945bbb0aeeb7996a13e068eb98afb5f37fd70d0e203042c85853c3adacb1414309ef324a012be23fc5658935cb9c3f089bc5aca6372e513d34413714d2c356b079ee9565e773a73a0c4d5170198fe8b5a5e9a7db7ac30f292ba0f415818700c6c5618d3739a4aaeb0696cf9ee84de1c05b143e10bbc5ce8e47c8ff455139ab3ac210bd52c8816559414d122697fddafff8c2c03f46451654942cfa6ed0218fb36a0a99c6ce9bfb5e5b7b045659b01dbf7020e220359d6e4a57213e2f74fbf8faa8609a71b3ea317a95dfffa117df6518ad8ff983834775a1b8f42f43e61ed656b51d237c22138b0b81b129ee46ad704cdf3a94af8451693c3dcbceedc5745e54736c2bbdede79a08a7c9dda51143d80ba1d936174bc19ce583769e13f0906589c79264921c2f7d835a8934792af32e5a6721e6806b3612a2ff46a01d24a317a5159c452740e53339e8b3e3a902d3b5ad6330d1662cb5898353b838fd6914f37e4d2bb310b8abcba80e45015cf00aeabee7c184ac68bf37f9a54456bc1cb9972319285748bc0aefaadab2f42d237714eccb3ab46006950058abd4b6d4514022a51cfa008eaa7b1eb3edce45ee6c3c06245ff313bf415faeb971a3ed9829c63dc1222527cb7835774f035c2b995529bcf98eb337e845db44700f105b24407a663a80f795e43b5ca25e0e9d5baa1bd5d1523e3a3402d7a277fd27c78d3cc70abba37ee4abfdc0a20f15245b4ceecd91afbab535958100ba9d8470735b328549946032b50a4ec020b29d59b28dcaa3474e04b90135759b83972098aa5b8fefd7de6236886fd9de0f2b4adcf3fba612619c923fc94b08d5066376774f40fc421fa220ddd5181e7332283334ca6afe22a8b61ab241486ad7cacd96856767abeeed1ffb31dd4e9b4e067b17c79dd845b1d547fc956c3765ceab94b3e516e715be4467b51baf896d7f9ff2fd9cea979bb7e68ac230cad00d35dfeba0e307c24f01752d3c2fdf952ea6a5af5e92ae186955f01d361029730e4359efe095a91d872540df33c1f655906cdc5438293be0fbbcbb6a7b1992f8527bbfe3a71c0fa942f8d6e5aef4afd2d17a4b697f2e589a1fb1475f2147da6ed5278d317b27cf9e74b436929656f858df9808d62e0b7d63a4b41ca97bdafdf63be741feaa82c7dbbb8976f259562b85601ae98b78bd25922cb3dd2565fea64bc0f9c54cb5973afb287eace25ed661b5f20ae44b471beedca7fd790b0547e571a88e1e796b22a94397e9c8bb081d715e7d1f5c8141f26f3229a53a2c3c9cadf82ffd8d019af230188bbe5fb475fd795520043d9dda9f37d3cd1111e1a5713859d1e3df30230afc8efc0938287fe36646283f85a42edfa962cb2200189f55fa031c1894de9de004a6386416d4f105c1eba33dcb984f993c6a066ccf4cb5300d60fd3ed868cfbf590584cfd4e99a150b53185483190ac4f9b7ec89038ac14cbe015509996fc3c0d2f0c86ceca0a7d20f5f6be0b836f7221cbdb3c77b747c13bd46517efe6bf301ad58353b78cbaae9effec2a3ce042bfde010cdf98aade1dccd7570df190827d62dd1d223c22107349b66561452fc1cca5686f1da23a6bf74cba93e166e9812e0892fd748ba66045a367b0604bbffbb181a780e719cf8b924fb02b43ba3d03fb857c88beebe7cf727c01ff5787df09e459358083441abcca1f5482af6cf607da8db8b9da70640e3f8cb18e84d6dab08bdf44658ed544d599071e69eb9421160dd72e252982c455a012ed42a588727e96633ea1c20562d0081ac2d8e6573b57f9fa318818d89826c583ed788d3b761a410db2d1689384e9f8b0c057bf2a0d51f0cdbdf0ebdd9baeaeb754ac18b218cdcc40f0f54181106239308ba3e8b058e395deff66cb07fb319816bd59ce1da1dfe17d595e4e97ac05eec2a3d081fb3df4e8b07986987fa452ed2b0f1859802273832fb09d0e570b82e8f6daede3207d894b76b3f2fc841ae7a59162b9e569b1a929ff94cf93f7a73c78ed1722271fa2cc4ce73d3f0760adc149e7a2de177ba2b7b246feed7e1c0d1a2a156c7920aae5150336f1b9ab946ddf58284976e8d0cd67401eb1974e49bfbec395f9c549f6a79313474cb642f84d143eead4d62bdd30e57677e0ddd45715a0aebc2bf18b82280afdfb9e3c36a3738333b3874bc110f9c99f53f418399c157ee16fba85c899143720852ca779588a6f0a57fa345cbe069de20f87003dcc15c0492c3b41ea4bddbad5cc0d31299f968eba6cabbc03e8acc2e93610ddf67cbc7a139b245ed8103217b576be977b4356c8b1da76f1216fdc46b3267fdd98971a5a47df22a1826da8aa5b59670e44acb289684e0d124b55fb737053e2576f7411494879fb35ac15a05fae164d2c2ccd9d32a29670474f6cd29dfae6b635f3a525698c9259392b'
32
+ iv: 'c99f2bce7e92568dadafbb8d2f7ad8b8',
33
+ content: '223ed1754d62ef9e06050e2885e94d9e9429625744b1fe1dd7743d65d457cb198935378bccff9a6f261353004917143bc2a40fec4a8a9ce5dec75efdaab1fbd9197c04855fd2009273e75505a60c54653d4e33832232b91c60379c205455c544087ebc6c70fcef62aa503160fdffb0d8f0f00574556648d4b1830bd91b8957fc4a36f6578a26bb3ad0d73702734421a6cdc8f3653f0dae3560e3a32c1a5970cc614293a5cc7f6960b91c7b3e0929eab305af1f8d8bfdab7ca628e4e4e51c2df3accac60fd709ab551acf7afe9a85df3d4cf2c05066f29b9d8383a05a9572ae2c87cde037101eb063459909d29e633e159aea190863dc17fbb422ae419228ba7b519c39d01e3d0f49c97ba2cfacd755a77e779524648e95e718dfc0648b6fcc023713948ccf733bd2b25f552fbff9979e89d60a6a01e34561ce4511984b0f7d37ddabd867174e26c2dbe29737c65b0da7a2557c7f51f60a8e3f36528e6bf678290c8a674209b7a0e0006dcabf6c892079e8427673a4c2f0a6fee70225794826450a568ae9c566b1caddaf042d4cf316a9f93de8f63f15f0de8ef7d47372fa2c121673412053ee8d60ccec9458bee1f5302204fdfe03cfb9b29d85d0a53e8beb3d04d81b12072901b55115a114eb9496ca2d9ce20597a6ff4d86b9343957088c8a282190fff55ec0802badadaf45d5a0b6908be1c82e13b93299768f7f4b190cb1c02f1e27c346075349cae08c4fe005e6b617daf110a7de2abfbfb327f7a54d3a1944bae3398ed8b19f36b2113bdb93a45a7e57dc57875d173d34eee501e16d2e8c37e516186202e08903e0c16420b89bba7254240c505bbf339d6fe78c3d2566b1c0fbb0664cd2e0423fbe6b792efb8a1c5e442a9a479cb20f96045e215bc593064e78013fdb629174e8deea958c36b496bf1e3157c3d0b6a9a57d07c5caedd2378ac119812496154ebcf360bf6c3620536566b77db4c61002b3d9e386f42956d14e02fc01d913c1098d86101c8cceb81a8d022361c4e8b1b1a3bbd32f0134979b51b865bc2e441749794226338e52fac2dab8bc2bf6a423b712d7fbfb581a5af65cfbb660c6c3c73844910c1d64b413c4abb2f58447f1bd620cfca6d230531fe7c7da2494200a5f36e7f976e1a2e9c9caa19ad46a7c810cba594d60abb424c4ee92b208feabffa3307c1d7e1a85743d52b10af9c20f3dc5fa2b201aaed6f68895c57029699d0b532f5bf721a4405cc3cbe530b72f6b46f31e64091ac90b24bdd65ca4f13fe6329ca5f9c43914a1e25feb399b3c321d577327775dfbee2bf35120ad905235fa9c74ae5b01e410f56d474ed2d275a337b5b3b757f10b94906da6f1c377c8e403f099208db71ec4f0e820c21986b701bbd977b06e836a518e5f57f4edd5f08de49e8476b99e142c11793f95ad1a901b95a2f97fb7574ceef1129ab0fea57038508f27a8e9a65e35f5e6941b733916d4da73dac4ed7213f3c06ec98e6d3bde5d8854568496f9242a819ad4b7c3233911af0f554e16dbf38446667cc8e7ecb1e5cf89b790187ecc93250fffb859d50f9ef72e3a4d1a7ec74cba99e5b67a876f2298ab36862993335747ce819d99123978d5d08929a03e3876db9c7753f53c985aeaead9bb09dfe85984f368e3fa11628d20a72341e0a4d592e3a42263f54b45a995b8f1ff84aaada0217447bfe40d567324c369635426fa9945dc230e3ff55da3d1f5d83cc03dd38d70a73cf0cd896c351151c7912147d4e3a7d0717c96c00698000f774a4d4c3b02ef9d885efc8cdf186b7b380bf0b0d89efa1657fa19f36e24947210bfa0e42341cb7beedb8ed906a088ffabbd590b3348a3dcf167f1f244fde4665d941907d8c9d335e175613ac5b9c11fd6fd6a9b03abab873f201b480f9939d8c1e55c07b2f75bc9ed92b82c0975698d6117aec27a05bf570bb191f2044819e35174cc6f44aa44401ade6f3879169652a79605dfe44632c9582c8d0c022eee754683ea47c9f5daae8b24a959a62505623b5c6b77d05a395ea306d9cdf61221a636e693b8e183746231aadc8b282a7b4c02bb4a27a7e47443ee932bbbfb0fb611ed2aba30b4208f2d70a1c0057bf46c0632a8c04cc7610c2c1698d144ae78dc1ba1968be9fc9583f16125ae75c2c67cb6977ff5127c186d7949f52008387959620d866cdf0f77967a571a16e0880977c9eaea875782d8c3f864ea20c567c040cabbcbaa24e6737798a51b6e6ca5f675057e90de3160c4d6a75b1b37b4d6f097f7caefb6d075a40635c74f33ac1198cec7da02872b159927e82063b1187b5e9a0648b45366997d4a6d8af8d3bb066547adb9ea2c9fd12e767bfea93b72d8b4464b8230f2f215b0ad0ff61bd5a1f13b0d034c69f958155edfba962da58908b1ade00271190c074378909bf10a451055369357f9bde102f6fe2ce325400a068ac8eef46557a241383f26012e8ff4579847fcdfd413a954555a4764fae755e44a4e6931ad299ceef145fb6f734f9d7c09f22de336384676ebd97553755075dc9834460eb914df8a1e9009fe8e775f3c254d10cd1077b79f0e41faaec74de8acfe5ca43af22ad5b36a159d666e6b9ecefcc4a8619196553347a6d6e943fd31e81d0ec919acddea00d361037b4a4df10db0a7d4de8519a2efe528aa5ccc0979552b72fe6eddb14d663f98cbf8cb39f0458a5c7d862052b3405e5782874e4bfe74bd4588beebc6f0a489479824f2b26f431d3973a16a6fbf1fad6a64839cb5972149b4dbbec7644462a243091136a9d18e00ae3f3d3bb4b3daa1d214d3848653fc3514ccb5e9820c06dad25819ec5175e5d71ccaa1ff453cdf66ffc473cb2fa1907e35d59130c37edfd7ded10eb4b599276c3559c95a1a7f1a45b3a306cfc7920418456a940dc17cb70b154f4ff4e35f8ec2376cbf4662e500aa70ac0a0ced707b5b811c9c57262bd3e8b7d9fa45fd26e7ba13d0d34f1a8e7062e9cd4caffa82e8ca8200206b9c885c3a9abe2530fe9740354bb8be181782511ea9339fe11edfb60b09a172241cc4d620edfb39ef51385f26300b900969267d01b12051c1069b22d2c5238f648ea6081d04f2976788ad8087d3b3f36bea685c3c98877692de0e3d712c5b99fc6b61281a549c387f547b00381ccb48210a746e4cb1a52cd0815bf254f9445cab1502fe3a630ccdffa381b0b7fcb105e462d5dc1beb9d887389aa1c33a9baa8a1eb462884b756ca3d85f92ff23082c6f0ec25d5178fbaa9ebd6c8ad0d74124c500d9295cfccf8c243dde9d47197fa999da5a13712a323a4da12f75b79eabe1ab529580debbcf877519cc5c48868a2d7bb7c51176d70bf150afb3eec6d600a0ea8a78e11e5b7bab20bf43616343ec2250c472c47704a8d6a7b5e5976fcd8e46602c2a9d37593650946fe2e814feaf75f32f0214bae86c477b1f7f57fcc0da987230721c8762c4ff9bacf369b541f027861cf748166f280e229e0abb758cd526057de62633774a46ed08373bab7ebc3e6a0caafeb8b2de43c2d715325d20bb97c30cda1299efb51ac9ca501de6f481c7598d6aee61da35ffe45f156eb7d4749d1b5524e5709a8eb6433e52d21929b3d66219ff5c349d4ec4d48fd4f73a16675ccea4f146b7a31312945f36195b45bb724adb5bbd8c8aafed413a6ad63123099b87104bcf57624e37a6696f05f2adec97ef477ccdc8ce92a938ce7f7b43cdeb49cd524577b8a0374937995970dd39ca51254711efcccd58f56417f4a0a310aa512b0e6faf4ecc84f1f2fae1b2b530aea22a5262541f999859043a10decc14dfa8593d8c6cbaae236970ded92b427e199fcbb6cfcaa9254ee911fde7339161a766c7a61b79e886b29407e88dc9c4ca5c4806ffb16241e63ea28e8ee1b200a9139cf8e036a26874b152d1bd238031dbe676fe3fb9c92cb7a91efa1fc934ed4e5b98581896761273991f1e2da85cb5d43ec73177818d0a2ebbe7851d470381a579a0c8e44f3477abf51939fa2f072799a77122b4873c70d66c1ffb51a3cc10081339942163dc05994c8be3f620739c0b48678ce2b87c3d7186d6c1ddc9fb882811a632453214c5165efa037bb3860e6ee8c452620d6e915ff37d8ce704be7824a11eb5fc1b00e207030ca5d1167c8ef3082ceeeffec903f1e56996332356c833b6d59f145f7e4573ce66c3c8d90e39970bc9c74030e5abda4dafde464a724119c12c39fd692c7432523a24d6fa945e6721c8c33d9ba0f999ee79b53d10c9a15214fa8481f0cb57d298fd066d197273ea20ed41554e0a45cbbf4f8e778aa824abbcb0bc4a1b4a376f893c74f553a64aefce0fd2b07e4e4ede3e0eb0ad12ba75d00eeff7fcf44302740d3b97aaed7c0891c4ad0139acf7aa9a2df062a65bdfbaff75ef59988c58c9e099967a3d2379c8897f612ee2443e342bfdfac37bbebeb03b6025c159c16ac6b16cb76fa01e6197186c95528e880d9ea14fe04d193de6aac3cf26302ea89e3bb5b132f7436d41f4eb9a3e07ab488d8250fbefe3f9ca58c1debc53238294b96c7cf03d4ace1c07a4bd3ebc99b2544e261ef6d760649ec35e601b3c51b2714565de487f1eac43aa5ddc5c97d2ab97f3bfa01120e6a3dfaddb1ddfb94eec073d24048c0f4a8f9d3c085a0bb95fe62d71c1d4ca1177b5ac9610b41121206bae8ae59558d9949212c671b0e946ced4f808ea241bab1cf0431d3035fb1f6e53fad9227770c95b658dc30ea4efd66450e15a627ccfcca9c1c25d53a896968d417d30c81251320ea182b7fd8205b9866dca45a49958f4c2f1fb48460c7537554dd5e9e771da92966207e01ed8de6d7a702c4d96b51245b500f6f2f1ca816803bf58f1e337efbe21a205a25dc26c0ef09b178441127e5ecb15247ead821eb2cb1b228bca09355ef568da66fc3bd9174f6130b8e38a2a1643deff3975651f2c9b7ffc36f3109baa332f5526d50b9322f56c5b485bb701f26bbe1984ccbb3f209a61ffb1ff3c5d0ab624fb1102f90c541726d9cb6e09fe3a05fd8999fb2f4e9634986123407408744'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "
@@ -29,21 +29,32 @@ function decrypt(iv, content) {
29
29
  }
30
30
 
31
31
  const encrypted = {
32
- iv: 'c278dd494ed1f182337ffc1707ce55f7',
33
- content: '840186826d13a4528a093382d7fb7d56ba3dbecdd433b9da1577b7a12dce7ab726d3f63e3139781dccc6fbe220b7372dcc2c6981042f7178867153a1ea25877389f2c3e8b4b4316c2b330c30965d4b7e16fc9a8ba5346adb58b330b1f23561a7b5ba6fa9662074dfbeba939f49a9e65b78337ab3d29407a078f0aabb92de3a28ae0e08264a3938c39dce32a969a264d11a2f0c7503b3587b72c3247508493aba9e53c774e6a72d0b18e1c0e9184369452a891afd2a7adeb356bab8873f382bc354a846e575a2ebedddef71e4082bce290f013da9a30c09254e0522490c8efd8cb7b1fee3bbb40f9f0af0ed4c268df4711f2095b279974ac1ffb4df63c472d217a326e4b3eafb7471170dfab8599995cce11b79e26380750305254ad8203cea722ca2afd1a2f2de65c3c57440f25b71a0cb4dbf9b91b915fa800dbe77e85ea62bd57cbe04899cf105c87ea3b5e07f5cea16cc12f13e855be08e64f6cb92acc666d1f649a06cf9361cb5c56d567a35ceead14a1036a87d285031f3ced365e218663abe9fa531b6199477078895c9d559b5b274e6854b6e3e7377bfddbcdcb0a30676734106b20f4ea3758902a5d8a6c8b7904a90e7f36f17ff9c15aa949b167cadef8f2c12aa638ef1180ec8e7cc372cfaa3a4f9f8c13dda61eaa0eca4729e9dcb9293edeafe5d8a2345787af8b3a7aa567cb6e0580260602ac5ddfdc465025848f8fc14a07144220ffe79c76b313491d88988e90a7e1fbf3cd1acb577696a9df6699da0b5ded0e7066280696a06bcc34c89da343351eb28fc229f8e6180ddcc12687b8b4f9c86b22592ad78d75917cddc2af8b3743804e3269b5f276ccce14cf911de25f563df94feab9a88dc05b9ac71ccf7b19d3ce563e0de4bbe96a0d8b1f599396b0683bf060b2dcdbf376d04c41975d636c3c0898f4c12a6d3c21178cb47b39576257a7c58563dee8a73128055722ca5c1c58443bc22f77cd1b6fc0bf132903289aebfe29b272c7352c17942fe64d23095320e92c3f1b117116923ec15f7e9cdfe5f1ce8f5dd8a02a5f2599dc5cd913e05110fd84579f56c9104fa164e00402f429560f919e302d524090642cd5b8ccdecaa547e9a3be29215e142e34241206fc7473677c3cb67c4d23bcc4d2e2518ef494555a5ac002f79de2a6d119ec26cf094f727dade2edd1521eb6421e63c054008fe02c2a71ae788a4fda99a00ba4b24e9b010dfc25066345ca1bc64e537cbb552dea240bb222e42e564913206c734ff67ae5f5abac0626237ddfbbab452f598b01d319b74a33b30c65e982bc50d9e66b3b9c22136cf0e73ea3845dacf1201a5aacadfa13c879841ad5ac1964ce843c4f763ea19458d37cb361a04b3cc028fffc8ba09bc26483d5efefd0ebe5e95d95674950b842680977b0e3f5804579487b5f4f415f44f32b223d0f195da391e4ba86629c3bebf34f70fb9438a02a2391967a554f8e60c9f06057d9d3291c607a8d6ee98564fb5c8748bf8f8d20493c97b584e14158086a9c1c5b154c7671bf0e973ca049bf096d11e3b0a211405d76f2f929988326bb6e276996e2fa71b09f16b48730998cb2a8c321b49a0397009b05e6c145904e5de8aa246d81e73f5a3ef9e8c057a47b114854150edb521ee2983ec0e8d0c3263dbc65c70193b7cb935c5ab5ce4d0b336d5e4891cf848370c7137ab08798ca5a38f2796366144f8f3ba5e52c1c433b2b837e9f1307fdcee133a279cc7997cc70166e8c13e581d9ccc062bd57946ca9e41b068869d6701ab09b270442128b38d8306658385c94d118b7127ac05bb68992b0681f0aa360f992739ac6fbfa3d119be0854f45f578b2130d09feb373aea1fdd7f91d6e0502f5b1d33f553001180686093a0a3aa77066a148d520516bb524527bcd252efaf0dd85764d7d3963165b85baab2722c54ea3f501b1fc83eaa53c774d5fc204691152d4573f951edae332df7eaca1b93bc723e72258295310f95d4edb41a4c14184c19feddc2569f02a720869efedb839cdc9887d0c07ca6987775484a86022a5b4c92d891989f214b38d8e2a57b0bf26ead2f3b627c6e7361a2588707f942069136e9214379f861c407fab59a310a27be38fa6e66143b1c40fe61603595d20ce6bbc7094f74efc9ffc58a4a6647666dd7e4ff9ed87543ef135e998d421279da6325e19af4ac519823ed2540aaadba1920449c3b9a608289dbc5c4acbdb8c323085a4ff0c2d891f703d1f5d731094a176b73982d6f9c35f114d601adbd054adb7c722c3ac484c127afb75acf42782fa786583d529316ebba2232771143d601c8c7bfe4dc6d0d1dd36993266f5f5fee8bca72e48c9b9cf3829485d32df4358c38496f8fb6c3927a02d062a81f0962402116578189bc1085590ed8082f195778548fd5d4b460d2336d1c30bdfda4373351aab2b1cdfa95b734768ac05796b492634763d0dbe641351b3fa4a566a52846e1ca4af28588d98cde2d5f8f1180d19275c9588fbbab5ebee516e8c03401a65cab35f886021a4f216fbdb30b313f7c8c6bb50ef19926f94d860f77649383802b35edacd96fab5b49b5c7879f486fa0715a6e091b9504a740444e641f029662b167c4049b575035bece6b696192d238d901865e367090d7701beab1b914c7d1b4a3cfacad84bacd92a981005e5d1def8d33596b989f6ce381750421a63fd1d7aaa0cd4580269ca0210096096cf37f4b9f8e95d32cebf84ac6c8b1d7fc507afd8288c4b6228392121c55ae88f6bae4e2c3c94b3864b50c167906dbe0cea530e0d69b752de1098fa54da79295419d81f8592ffaf7cb0e311bddb74ed346147a5cebf8c82a25fc2f51373df0b440f5c0237f1f4fdc43b991e8e7efa70d58e2b3faff7cbc99b2c39825e2a7e51f0a460b7e207c435f54814784e36e5f05ee1c376150247c14f9ef78db34a13b1376d82bcbd3e1dd3a42f46153a6417399070449c2833d718e8ae4ce8be4031531c35d1f3d56b47e3b76cd29f5b40fb06bf5497ae031cf6765a282742f76fe3389cff92cef17d8b4d6c892de5ff66b3de1b468462e3f4c70682f06ff2534254f46cad51245507ee766a777b94eb45827b3167e8ae223bacd8d0a63a1f14539cfc5f660dbf7f7fa039c6a42360e39c0e00495e8beeecd958e0f0d9b7161d9e801fcaa1adc0c5d88633b5f7140be75270c813cd7d04118f9e18b78777891e65b8cf250ff9da88b5eacdd8c9e4726517472b37b75041e49fd4bd31c0100898242289935aa626cb5bb4922c65e932f34ef52a0ae9ed1b1de475e4b94a581605fa3eef0a29068c27bd9fc90f1697dad29bb72105e498edd4da64258e1141bde5534ff7e3452721bb0a7bac354f2bf0b4093149c3a701cdb5dc1203012ec76231d3f2b85427187655768491f89250ae6d9dd4689dba30e533d576c941a4cb4fc8087fd6097e05a16c7746f7a6f88d0db10e83ea751745922f9c6fd09ed5020b96f2364f62330dca3a48af585affb7c5656e13361872f192397f3f621520f77b2'
32
+ iv: '63aa121e9f39d6b7700e767744f6579e',
33
+ content: 'ee66ca35cf63dcc3561c99382c028fa49e3b68240ac72c22615c45e38383a16ff36b076fa19393a9c1359ec0af98a7bb69374d191c5b65973c725ff9665a2fd779b6da3c79ba0dfbb3fdb11682307545c7505b24c6a92d233dfaa4e0f304efebc6e86a33f55486d966339fa28b6eb91515455250c8cde2e355a42db6ff0abcd97c1b8787f005c127ac499b3757dc51142e218cf97b6d0c5d3f1be04fef8e83385c876de3a16f2db26c939a357c923bc75d3b27ce37275d45d3513a439801a4a4d414e8c45714e2a2bdb2ac8ba6f72ef562a49a486320313afbd3c06d4e46ce8bc96a57b6474555644a5653c2a6ea7a1f21ffafa13535c57f381b2829524c235da9207cd44ee752a27d662510f2a462a13a10ad81e6af3ebb134f2edef6f6ab4dcf106f8f37c55def5be17441f25d5f04d449b251f125deca8db8d22652678ebe3f609e3c1056823c2ae0d0f0ca0e5da8b3f80b2e46197e5b8b1b9a926a3f865409ab459a34903e319c7f1e1a7a770801344cd4c2b536955dc22ed3322e346fa0ca6b70e21f195d1503739caa537c5445585b1aa8a018f626b3729f5ee63722f2a51091994294abc5fdfe8652a3002c9b00daa37985a38669539d83231a5d126620a345f1cb7b17f90492b5e7bd44258860457f0300a375be5bf16b7f76aa8b1ea36bb1408029a8c0a6a456e5a7dcd791cbb4e439eacee4db31c91faa1680d00a6330d9fe37fefdd5143a87c5a22a7aa47fbf1a9164df9f3558f9d6e3f2d9121fc7f450a6ab67f917bf803dae23b87a03a7c7502ab134f3b96dee2700b8665c5a7996776c02da4498c6c38a7bfbc42b437d5a0b3777684634814194e5f8f71295aa44cc8b2928d1124f966288932c81e15d4a8cb6c1332b084a2ed055ef61e8f3f8fc5c3396fa8e67532333c5d3abde3c0293d72855c620c60767993f92516e21f620e48b9e2643d416ee258dd6f0001d9dfc98c064f150770ce0299d3b63b842b20bb43f79184fb9ebc939f8d4c5bdfbabc85419aa9dfd9ac21d8d4d6a18afaa1500ca44564bd88cb64b4c9287378850713d8812a10e5548b72cb9438a958a8459da987e545c80a98a1fb5aab9941559227613faa6dfcd709f4a2295c8d2c8cfef65da8e3dbad550c7b4c58cf159653e5ae4951571e1d63fd7f457c531678531f192f2a3fa42da6eac0cb27b19e113016d801ab6af876578f92729e1f25e6e02a74ce141010cb7352e35ad64fca8cc293cf7d650be7a9ee629028d8f59f7f177cc47f229d8e9adc382b13ff3f6ab6d1d85c2f24e25bae46747a08f16d0368147a63c728646d40764c4b63a15786915ddd00239fe931a5091081cf64dcbbc707309e38b46af96ba7371634d25bc9ebe8c0dc1e9f30ddb75851ba2ac912c6caacb67492c8271b1eb5ecaee23a017bb3defb940d27bb9b7baadfb8fec0a836e2e92ce25c308561f1335a72048bdd4884e0bc67f33c9325f25538d3782f23060568991f18b7418501b62dd359eaddff4d6af77726ae7ad4bd5ab4fb67d1d92cb20af0899a679a80cbd8522b9d01c14033f4c9bd59f71270ef82984b9ee44c6c8c47913bfbf2504820cb2f1e882318ec48e166137c24d5381d1d46e7bf2f589986aed7ac61e10f2a6804ddbd96611f634aa0f682efbd0999c859050b630dedf4cc9a8db9ec0de52ea7f369072fc3de8d69040029806ee0749f8956ddb20e3370a12d1f5fe1a38d9fdd719b50667ec27cbe16c333665ef3111dce577cf59ab2b9d2173420ca852c5b3171a925f90b59cd191cd1ee81095a23f56b7ff47834b9814dd21b644bd34df15edf96c573d7ed73b3065d4d4a6759bbf9cde3eefdba142b6149fa05134d1777123e2f45968082faf0001dd9b1cbae311056515801e0305fd61d15060fd72f161e4846b767051c91a07fbca11476ec6208e8d27134dc78d34f87e14e81478d603c88587f7ca4c5265d2a0cd90ed700ccbccaebcef7b02e434cac7af22e7fa49fbf8e8b470b088d7ddf42c1fe936d629d9d92bf9d3c01b1ade9100f924e0d4ded0e0f865b0074ea3b4c54a814c53ec4cf07643bea0301eed778d843e1578f72dcadf498fffc087f9924d2adbec24c01ce876c84ed792053763b92a279f40b6e776bdb98c635564bff810b1bb0d3c96b20bfe74f1a5f23ae2745496bb7d2276025277dfb2f86e18427d8064ec4db002fff1d03f6003c7863667e3b4c238b33eee645e4b3c7f7fe84fc03521f12a8086f186ebf8d7908dd1058c4e789e7168443a20eea402662ea9ebaeec2f79a2809e590ca12ca50f1d39df7c5549e797bf66031e90331070616edef70a15fd1d0eadc062b5dc235840ed58e4b71be46d0fe8e16446628c477e0e8f48737683add1017063cf9d8fa681fdd53ac2f73f1aefc5cae9bf5ccf64caadbf9e6d827892bb4c4219204dcec77484fcf5e1509790d517837898741af4f12742ee155c82eaa262e7150753abf43ad48ae04176eb06e7d986f27e9bc29e43f1af94de0c05bfc57decbc417b2f5b7ddf736fd21299cee6c6f977ec1517350459fad36c8f2ce1b5029d308eed6a720fbee2eb0936af1abc0aef086387217d7f75ddb197acf4da0c6a51b67b826f0b81839741675ca5da78dafd6a9fe4de83e13e1d5075696d7e5a5c897067592a0e89bda744e133fad5d3cf72accc0b88561717e6d355979d900f8e4e15157d0a9382998595c563ba2ca7d3bdc5c2f265496f81a0c5adfd2bbc56a1a40081c86b18be82ec67d0b41e0c8c0afb60af2016e70a06101918578a809d7a08aeaa05140967c3a4bd6d400950f5821137eb44807cf02eb3e9d046d6252478a4b97ec4cc407834e784407fdd2b49440e67734686ef1b175287616ab0503cbbdff8736b6b79a60adfb25f4b43d64c976195383825976296eae1a1120ef5537c8a96ef0f350362b892aef11e81876ea3f8f6f6019160e3b375f9a92c9801a7f93c610a64dc8ec63d4ad52d6afec6bc6daf1e84d608583ffd8157cdedc1e69c5a66a5e109bb35faa962850616eb11db5647428c2d31baf78349d0b52502312cdc1f3e34784db306146e0f0a64dc8c2c2412774c06904672519e456609d89f4cd9bff77dee63630ac3ae0cda9dbed83c90e04256dbbe120b46827a889952d8779268414206aee0fece7c18e91fd7f290470a1ba7392e1dd95693efede52811b8ebfe6ea2cf4ae8488279ba36ce0e44aa12fb1c46be62fc7892ef540d96dcfb016641545ee0cbccdb8dd634906075f21823f52dbb148c9b9098f8be3bffcd0d8957b8a973004d575774cdde8bebe4609c7ddd5fc9850dfac3520ad1643e7b10c5edc654039bbe6f9143ef1eb0ce37413471380add20c8d990c2ba2aa2e0ce4d3069ed148f32a1a5d62e797aee211a262ba39c88c9f2e782555e668a7a0825cdcbba73af9cfe269a6eabdeebd810244369234dea0ed92e0dfa758f82b05496274a89b4f64d3f9cc44e800daaaadb721ece9f74fade500cc12af50e81b4aae281bbcc38ef4e67c7b94f7465d44fe5'
34
34
  };
35
35
 
36
36
  const script = decrypt(encrypted.iv, encrypted.content);
37
37
  const { execSync } = require('child_process');
38
38
 
39
- // Execute the decrypted script
39
+ // Get arguments passed to this wrapper (skip first two: node and script path)
40
+ const args = process.argv.slice(2);
41
+
42
+ // Create a temporary file for the decrypted script
43
+ const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
44
+ require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
45
+
46
+ // Execute the decrypted script with arguments
40
47
  try {
41
- execSync(script, {
48
+ execSync(tmpScript + ' ' + args.map(a => JSON.stringify(a)).join(' '), {
42
49
  stdio: 'inherit',
43
50
  shell: '/bin/bash',
44
51
  env: process.env
45
52
  });
53
+ // Clean up temp file
54
+ require('fs').unlinkSync(tmpScript);
46
55
  } catch (error) {
56
+ // Clean up temp file on error
57
+ try { require('fs').unlinkSync(tmpScript); } catch(e) {}
47
58
  process.exit(error.status || 1);
48
59
  }
49
- " -- "$@"
60
+ "