diff --git a/NodeApp/package-lock.json b/NodeApp/package-lock.json
index 7ae764575baa6e829775e3cd3d1c49750139635b..f504d82b1d5933368d3ff1aee9a2bc60c71b5213 100644
--- a/NodeApp/package-lock.json
+++ b/NodeApp/package-lock.json
@@ -19,6 +19,7 @@
                 "json5": "^2.2.3",
                 "jsonwebtoken": "^8.5.1",
                 "ora": "^5.4.1",
+                "tar-stream": "^3.1.6",
                 "winston": "^3.10.0"
             },
             "bin": {
@@ -28,6 +29,7 @@
                 "@types/inquirer": "^8.2.6",
                 "@types/jsonwebtoken": "^8.5.9",
                 "@types/node": "^18.17.2",
+                "@types/tar-stream": "^2.2.2",
                 "pkg": "^5.8.1",
                 "ts-node": "^10.9.1",
                 "typescript": "^5.1.6"
@@ -269,6 +271,15 @@
             "integrity": "sha512-wBo3KqP/PBqje5TI9UTiuL3yWfP6sdPtjtygSOqcYZWT232dfDeDOnkDps5wqZBP9NgGgYrNejinl0faAuE+HQ==",
             "dev": true
         },
+        "node_modules/@types/tar-stream": {
+            "version": "2.2.2",
+            "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-2.2.2.tgz",
+            "integrity": "sha512-1AX+Yt3icFuU6kxwmPakaiGrJUwG44MpuiqPg4dSolRFk6jmvs4b3IbUol9wKDLIgU76gevn3EwE8y/DkSJCZQ==",
+            "dev": true,
+            "dependencies": {
+                "@types/node": "*"
+            }
+        },
         "node_modules/@types/through": {
             "version": "0.0.30",
             "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz",
@@ -416,6 +427,11 @@
                 "proxy-from-env": "^1.1.0"
             }
         },
+        "node_modules/b4a": {
+            "version": "1.6.4",
+            "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
+            "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw=="
+        },
         "node_modules/base64-js": {
             "version": "1.5.1",
             "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -825,6 +841,11 @@
             "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
             "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
         },
+        "node_modules/fast-fifo": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.0.tgz",
+            "integrity": "sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw=="
+        },
         "node_modules/fast-glob": {
             "version": "3.3.1",
             "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
@@ -1840,6 +1861,11 @@
                 }
             ]
         },
+        "node_modules/queue-tick": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+            "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="
+        },
         "node_modules/rc": {
             "version": "1.2.8",
             "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
@@ -2129,6 +2155,15 @@
                 "safe-buffer": "~5.1.0"
             }
         },
+        "node_modules/streamx": {
+            "version": "2.15.1",
+            "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz",
+            "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==",
+            "dependencies": {
+                "fast-fifo": "^1.1.0",
+                "queue-tick": "^1.0.1"
+            }
+        },
         "node_modules/string_decoder": {
             "version": "1.3.0",
             "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -2205,7 +2240,7 @@
                 "tar-stream": "^2.1.4"
             }
         },
-        "node_modules/tar-stream": {
+        "node_modules/tar-fs/node_modules/tar-stream": {
             "version": "2.2.0",
             "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
             "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
@@ -2221,6 +2256,16 @@
                 "node": ">=6"
             }
         },
+        "node_modules/tar-stream": {
+            "version": "3.1.6",
+            "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
+            "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
+            "dependencies": {
+                "b4a": "^1.6.4",
+                "fast-fifo": "^1.2.0",
+                "streamx": "^2.15.0"
+            }
+        },
         "node_modules/text-hex": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
diff --git a/NodeApp/package.json b/NodeApp/package.json
index 76de1910af8229fd427ab4a4163f61e40eafc673..37becb99a91565b226343b3f8ae0dbe6ecac8c08 100644
--- a/NodeApp/package.json
+++ b/NodeApp/package.json
@@ -36,12 +36,14 @@
         "json5"            : "^2.2.3",
         "jsonwebtoken"     : "^8.5.1",
         "ora"              : "^5.4.1",
+        "tar-stream"       : "^3.1.6",
         "winston"          : "^3.10.0"
     },
     "devDependencies": {
         "@types/inquirer"    : "^8.2.6",
         "@types/jsonwebtoken": "^8.5.9",
         "@types/node"        : "^18.17.2",
+        "@types/tar-stream"  : "^2.2.2",
         "pkg"                : "^5.8.1",
         "ts-node"            : "^10.9.1",
         "typescript"         : "^5.1.6"
diff --git a/NodeApp/src/shared b/NodeApp/src/shared
index c6e9f764ca4b12fa1e75b4a247fba5572597b1d7..eab5c0a5a32079fcb439a1ad79453611c8605536 160000
--- a/NodeApp/src/shared
+++ b/NodeApp/src/shared
@@ -1 +1 @@
-Subproject commit c6e9f764ca4b12fa1e75b4a247fba5572597b1d7
+Subproject commit eab5c0a5a32079fcb439a1ad79453611c8605536