{"id":19936994,"url":"https://github.com/aveyo/compressed2txt","last_synced_at":"2025-05-10T23:13:49.786Z","repository":{"id":35167165,"uuid":"39419201","full_name":"AveYo/Compressed2TXT","owner":"AveYo","description":"File(s)/Folder(s) \"Send to\" menu .bat ascii encoder with optional password and makecab lzx compression","archived":false,"fork":false,"pushed_at":"2021-11-14T17:18:38.000Z","size":228,"stargazers_count":231,"open_issues_count":4,"forks_count":35,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-05-10T23:13:42.410Z","etag":null,"topics":["ascii85","base91","btoa","compressed","encoder","file2bat","key","lzx","makecab","password","text"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"enaeher/local-time-duration","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AveYo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-21T02:21:20.000Z","updated_at":"2025-05-01T00:40:09.000Z","dependencies_parsed_at":"2022-07-27T19:49:06.703Z","dependency_job_id":null,"html_url":"https://github.com/AveYo/Compressed2TXT","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AveYo%2FCompressed2TXT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AveYo%2FCompressed2TXT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AveYo%2FCompressed2TXT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AveYo%2FCompressed2TXT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AveYo","download_url":"https://codeload.github.com/AveYo/Compressed2TXT/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253492767,"owners_count":21916974,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ascii85","base91","btoa","compressed","encoder","file2bat","key","lzx","makecab","password","text"],"created_at":"2024-11-12T23:30:08.564Z","updated_at":"2025-05-10T23:13:49.750Z","avatar_url":"https://github.com/AveYo.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Compressed 2 TXT (formerly File2Batch / res2batch)  \r\nWindows 7 support ( PowerShell 2.0 / C# 2.0 )  \r\nVery fast encoding and decoding BAT85 and BAT91 classes  \r\nMultiple file(s) and folder(s) \"Send to\" menu selection  \r\n\r\n![preview](preview.png)\r\n\r\n## What's new in v6.1 final:  \r\nGUI option 1: Input decoding key as password - saved in external file `output~key.ini`  \r\nGUI option 2: Randomize decoding key (use with 1)  \r\nGUI option 3: BAT91 encoder instead of BAT85 -1.7% size but uses web-problematic chars ``\u003c*`%\\\u003e``  \r\nGUI option 4: No long lines (adds more overhead)  \r\nGUI option 5: No LZX compression (for dense files)  \r\nGUI option 6: No txt encoding (cab archive only)  \r\n\r\n__::__ prefix to disable syntax highlight in advanced text viewers is always used  \r\nencoded text is either split at __128__ chars or at __\u003c1024__ chars to keep lame new windows notepad happy  \r\nimproved MakeCab ddf generator to handle localized and special characters filenames better  \r\n~~two pass MakeCab to reduce size of filenames tree as well~~  \r\nimproved BAT85 encoder / decoder and added BAT91 alternative   \r\nimproved handling of multiple selected files and folders as source  \r\nprompt to accept or change the randomized decoding key  \r\noriginal cmd / powershell hybrid; script-friendlier $choices variable  \r\nskip inaccessible files  \r\nbetter test of non-writable dir with Desktop fallback  \r\nsupport for changed locations of default user folders  \r\nmakecab single pass (2nd one did not reduce size much)  \r\nsimplified expand function  \r\nfix no choices selected, now default  \r\nprint total processing time  \r\n\r\n### More about option 1: Input decoding key as password  \r\nYes you can definitely put your own / reuse a randomized key, that's what the option is for and it works great!  \r\nbut it must be strictly 85 chars long if using default BAT85 or 91 chars long if using new BAT91,  \r\nand it must use only non-repeating characters from the base dictionary.  \r\n__In other words, you can only shuffle the characters around, not add new or repeat them__ (without editing the script)  \r\nThat's still quite hard to crack: 85 or 91 minus 6 _(MSCAB. :D)_ \\*factorial combinations!  \r\nReusing the key is a must when adding multiple bundled files in the same script - all have to use the same key!  \r\nScript will verify if input key matches the length and base dictionary and if not provide the information  \r\n\r\n### Finding the right options for your target files  \r\nScript has plenty of GUI choices to help you determine the best course of action for the specific file(s).  \r\nBy default script will LZX compress files. This works best with deep directory structure and lots of small files.  \r\nFor monolithic huge files that are rather incompressible, you should select option __5: No LZX compression (for dense files)__  \r\nA ridiculous 259.45MB source file \"achieving\" 98.94% compression is not worth the extra 4min for saving 1.06%  \r\n\u003cdetails\u003e\r\n  \u003csummary\u003ePractical example (click here to show)\u003c/summary\u003e\r\n  \r\nLet's say we want something pointless as encoding a huge boot.wim from a mounted iso:   \r\nAlready know it's incompressible so we can save time, directly selecting option __5: No LZX compression (for dense files)__  \r\n\r\nbut just to confirm it, run with just the option __6: No text encoder (cab archive only)__  \r\n```\r\nF:\\sources\\boot.wim\r\ncabonly\r\n\r\nCabinet Maker - Lossless Data Compression Tool\r\n\r\n272,062,257 bytes in 1 files\r\nTotal files:              1\r\nBytes before:   272,062,257\r\nBytes after:    269,188,732\r\nAfter/Before:            98.94% compression\r\nTime:                   278.01 seconds ( 0 hr  4 min 38.01 sec)\r\nThroughput:             955.66 Kb/second\r\n```\r\n_not very compressible 256.78MB, and took almost 5 mins_  \r\n\r\nlet's see how long it takes after also adding option __5: No LZX compression (for dense files)__  \r\n```\r\nF:\\sources\\boot.wim\r\nnocompress,cabonly\r\n\r\nCabinet Maker - Lossless Data Compression Tool\r\n\r\n272,062,257 bytes in 1 files\r\nTotal files:              1\r\nBytes before:   272,062,257\r\nBytes after:    272,062,257\r\nAfter/Before:           100.00% compression\r\nTime:                    36.97 seconds ( 0 hr  0 min 36.97 sec)\r\nThroughput:            7187.11 Kb/second\r\n```\r\n_259.52MB, and took just 37 seconds, so it makes much more sense to encode with option 5_  \r\n\r\nlet's do the actual text encoding with option __5: No LZX compression__   \r\n```\r\nF:\\sources\\boot.wim\r\nnolonglines,nocompress\r\n\r\nCabinet Maker - Lossless Data Compression Tool\r\n\r\n272,062,257 bytes in 1 files\r\nTotal files:              1\r\nBytes before:   272,062,257\r\nBytes after:    272,062,257\r\nAfter/Before:           100.00% compression\r\nTime:                    40.91 seconds ( 0 hr  0 min 40.91 sec)\r\nThroughput:            6494.56 Kb/second\r\n\r\nBAT85 encoding C:\\Users\\z\\Desktop\\boot.wim~.bat ...\r\n7.8508956 seconds\r\n```\r\n_334.78MB in ~50s. As expected. For such large files is not worth saving 1-2MB for the cost of extra 4mins_  \r\n\r\nLarge files also benefit greatly from __*not using*__ choice __4: No long lines (more overhead)__  \r\n```\r\nF:\\sources\\boot.wim\r\nnocompress\r\n\r\nCabinet Maker - Lossless Data Compression Tool\r\n\r\n272,062,257 bytes in 1 files\r\nTotal files:              1\r\nBytes before:   272,062,257\r\nBytes after:    272,062,257\r\nAfter/Before:           100.00% compression\r\nTime:                    40.75 seconds ( 0 hr  0 min 40.75 sec)\r\nThroughput:            6519.90 Kb/second\r\n\r\nBAT85 encoding C:\\Users\\z\\Desktop\\boot.wim~.bat ...\r\n7.8476116 seconds\r\n```\r\n_325.68MB. When I say more overhead with No long lines - I mean it._  \r\n_Just unselecting choice 4 you save more than LZX compress, without the extra 4min time (for this file)!_  \r\n\r\nHow about using choice __3: BAT91 encoder instead of BAT85__  \r\n```\r\nF:\\sources\\boot.wim\r\nbat91,nocompress\r\n\r\nCabinet Maker - Lossless Data Compression Tool\r\n\r\n272,062,257 bytes in 1 files\r\nTotal files:              1\r\nBytes before:   272,062,257\r\nBytes after:    272,062,257\r\nAfter/Before:           100.00% compression\r\nTime:                    36.39 seconds ( 0 hr  0 min 36.39 sec)\r\nThroughput:            7300.26 Kb/second\r\n\r\nBAT91 encoding C:\\Users\\z\\Desktop\\boot.wim~.bat ...\r\n7.6984016 seconds\r\n```\r\n_320.33MB. BAM! The most efficient text encoder using just built-in tools in Windows 7+_\r\n\u003c/details\u003e\r\n\r\n## Typical usage  \r\nUsed mostly for sharing configs / scripts / dumps / captures as plain-text on message boards that lack proper file attachments, or to safekeep, run multiple tests and sharing binaries in malware analysis tasks  \r\n\r\nTo prevent copy/paste line-endings issues with the script, use github's [clone or download - download ZIP](https://github.com/AveYo/Compressed2TXT/archive/master.zip) button  \r\n\r\n## Uninstall  \r\n`Compressed 2 TXT.bat` adds itself to the Send To right-click menu for convenience in usage. To remove, just run:  \r\n```bat\r\ncmd.exe /c del /f/q \"%USERPROFILE%\\AppData\\Roaming\\Microsoft\\Windows\\SendTo\\Compressed 2 TXT.bat\"  \r\n```\r\n## BAT85 encoder/decoder details  \r\nTweaked version of [Ascii85](https://en.wikipedia.org/wiki/Ascii85) that works well with batch syntax highlighter used by pastebin and others  \r\n\r\nDictionary (can be randomized):  \r\n```\r\n.,;{-}[+](/)_|^=?O123456A789BCDEFGHYIeJKLMoN0PQRSTyUWXVZabcdfghijklmnpqrvstuwxz!@#$\u0026~\r\n```\r\n\u003cdetails\u003e\r\n  \u003csummary\u003eBAT85 encoded example of 6.1 release with randomized key bundled for auto-extract:\u003c/summary\u003e\r\n\r\n```bat\r\n@echo off \u0026 color 07 \u0026 chcp 65001 \u003enul\r\nset \"0=%~f0\" \u0026 powershell -nop -c $f=[IO.File]::ReadAllText($env:0)-split':bat2file\\:.*';iex($f[1]); X 1\r\n@pause \u0026 exit/b\r\n\r\n:bat2file: Compressed2TXT v6.1\r\n$k='efNVd3#S0[R6^T_HlpmA8Xz\u0026D=n|7E5OiI@4PW{}1bQjGC?;rw~.F-q)!+Mvct,YkBxy2Kh9oga$s/LuZJ]U('; Add-Type -Ty @'\r\nusing System.IO; public class BAT85 {public static void Dec (ref string[] f, int x, string fo, string key) { unchecked {\r\nbyte[] b85=new byte[256];long n=0;int p=0,q=0,c=255,z=f[x].Length; while (c\u003e0) b85[c--]=85; while (c\u003c85) b85[key[c]]=(byte)c++;\r\nint[] p85={52200625,614125,7225,85,1}; using (FileStream o=new FileStream(fo,FileMode.Create)) { for (int i=0;i != z;i++) {\r\nc=b85[f[x][i]]; if (c==85) continue; n += c * p85[p++]; if (p==5) {p=0; q=4; while (q \u003e 0) {q--; o.WriteByte((byte)(n\u003e\u003e8*q));}\r\nn=0;}} if (p\u003e0) {for (int i=0;i\u003c5-p;i++) {n += 84 * p85[p+i];} q=4; while (q \u003e p-1) {q--;o.WriteByte((byte)(n\u003e\u003e8*q));} } } }}}\r\n'@; cd -lit (Split-Path $env:0); function X([int]$x=1) {[BAT85]::Dec([ref]$f,$x+1,$x,$k); expand -R $x -F:* .; del $x -force}\r\n\r\n:bat2file:[ Compressed 2 TXT_bat\r\n::DoW4QeeeeeYE3Oreeeee_^N!Geeeeee]3P3e||[f$osWonNhwJe||m=?N1d7eeeeeeedz5rRiS|X+XhvPBH|8iw$L7RIp}I_/_zpe\u0026UC[=Gtx6py=K,C|Dkk{rz,liAi|~eR3+w_BY\u0026Mp5?wTqFYb,X@S71\u0026bBUI~9/jmd[-p$|5B_))uiV(\u0026=F!=yK7/D0wSS+e8lWk6c[C[L7z!Yzx!9Qbd$+}eM-gtONCfC9V-kRPb=_Q2W$;de^CVs{5sCCqm^NDTiM68EErm|65vz_;(oqAE?v9Hir[FpQRcO~3Fa4T]z$38IP_N7efIGj8!gYp\u0026C6|y4/p70)SsieR{G,#.quS[.!jkwK4a$HZ[?NpFcg,c\u0026-S}Zw(rGtf3BzwWkS-up3wJBO;@08qrfTwRC1I[=Aw@p5_r~#[XxbiqQC!U}^efIeP5|[-R_WUeAzQFe?RUbN-v2!tsTC@\u0026y}}S^HEFzTyWB,@;dl6Dd0Jw;=#T9@_n5Nr]lL07}4vqKrhP[C0t[]q.e[0nvMzLqtuc.e|@);6w$8wlqoCh\u0026Jm/M_mfJqkEfV#q()9el]/.|_bvxiAyD[PO[8z8B#5X!VkftJBEjG|;{kJS$8N)K-Sf7O,-BU,!ni26\u0026hE)+)gX8w8!-xxY1^1}i5FC.RFHs{8+K1CoNyb1ovZDdY5y)2c)9QUTWo7u}a\u0026!JR3{/k~|7)f{Y12@x)yuui,RTMA[i?k]dL96QrlRr2e+i,SuG=33xVF6k95+}^Wpf+Dq[2[TL{VjGOoBx-4\u0026A72B+6sP6i?+Si(VWWFIqndcbjL~1MgavkI/kdQRZef.I1ZgjeL}?jW0c,~Aa5QgiM2M}l[78!JX]3hAM1Ps$/n3Q)ETB2r2VB\u0026^Yljf.3OK=sk6Mm.k@M7diOaB{=,-kIFx)|B2/e]z!u4/povuH{=+@OMc@PS@uNIDw!k8O|DF{\u0026\u0026u7mM^|cR{I02@XJV01BruU4t8fb8W/Pc!NzBXDo+G/8vs-RCxHOkq{@t5F;xu7uQ$\u0026s\r\n::~hP)egsB?k$w{Mci{j)/}RPn.m51$?3V4mcEHQ]=VWW]!?{[-#$@Dx}-Mp}mqV$d21J9~Bn5\u0026M-)dG5~qZfa5.6hQML/]s/BP;KaoCxO$u93}Iu2.zipnrx?7g\u0026bM^d0yg;FeE/QbAVE6#cDJi;UfA.#f_2qX;[-)@4Hs4)u,KMOTHPG[H$PQKI~^!=Fjk7{O@{@|y#aJ_\u00263jeoGPYjxB3Pd$cGcR=P$(84t-fCvqz47o6N3Cews63DRGyGUm5om}bHpOC]#v,v}UMvm.Q/L?Li{r|s3m0;5)#Vt]DN-4^aGqil61lWIO^+MoBC+R=?W!UGKhxwg,6#[hed6!S@=57tm9_G!?dG,mPfk;Q]fzp\u0026uREH9b+g)EYeJCUQ7f)Q,gi^4CGTK]P^~sAhDrKl}7.AOs7?GQ-LF{)hm)0g,Rj+89jH;Ui?$D6W}=K3He[yBwB~@TB)jfX6m^!QEpr83BPlVChFoW4w)9w8xGd0on7b\u00260WzjUEjmYt3epvz$G]\u00266XQRX1UjUW\u0026b8NqeecQez9P;tPz53\u0026@DgQa!-uW~E7|7im{kHF/F7l,7rK6[,KacTUNHcToWJC+;r6a.{I$Wi|m77/k(wCII8h(6y)7]n1A+pieJZV/GE!b8AM-Glhl)[6QenDpR#@hgG^[AT/ltA?aW}-o.-f02=iv#E^z{t2D~1kDbc,CH6C2YP_oGML$shb[s!0i_]yVnlBIuh!)n-K.8FsMlF{tGQG(tRAo(odw^Ytb5wsahW.9E8gnVoqD)=k8MXhKcpldFs9B$V^p6pbD13kM#7eB~$WTVO+R?_+[CKiB|3}aUA=PlEYLa$nh/iFFSw3[mgnC[N.R~Kj$o3p(168\u0026/ez,#,sP~GOQ9UIrkWRJiA)vL.#Xa!hwp0C^?i.S!$hh}d-T.X67_(zQB}@oHIp_mv{QMxn-1q9|?J+w2|nBOx-~Wjhq0{nZlJHngdXM|?JfHr3?6In;1ZFGVS5T$v_}=.+bC|[@Z|yT/X){k@qZg^1ZAaB4.\r\n::$T0qS@6YCr=!dz7A2#;dW5m19}\u0026afhBp/AfcS~}|5.=F$TWnSJg{[S)-]!V!sLG.@1m9?6\u0026Z,8l{zof)3{YfmX~2]1HNr|LpMR/L5O?N\u0026V|nj-d5\u0026A0ZSMQ\u0026Fa3}n7u0|7s~#JSBlirAx8~raB@)!nLmJ,Kgzo#O=J.GA)FEL5fpLurCaSW68wgyW};p]M}xC9Jp#[L2|B${^zh{==?=TEc{0O|$EPj#$9XLkVR|A21WoeS@qQtQ^;D]ml,H]}60XVuY@ld~;uyySzpUm!NfmH3G)eXKQH\u00260UXEJ){0Rw#]W6OZ0Hs$YBe7;QC0m/8v#_]DJ(f6iiOyr,|Zsy8OrrbHfjDJD#.G~$\u0026FO/L~v)FB1XHL0]/[5Q8JNw7lY=}U+IY~n0iRLmRT|/N.v!dHgH,1={(VLqU$Ng0GG[sj[PKjT{D}UeCugfgA3gBse5$+M7mc_$.jQ{+ptVef~DDG{D.-fxnNeO)#?6!oqFGT0wso\u0026Ke$cJL2-9Mg60x;|!N5$JtowC+HqCDct+jPUN+WJA+lqnI9Vxd)+,{~=J=sJ[_cDz/{H#20Z+MSTjq0sbcCi@mH9;d!8+)u7OQyvbyJEyf9IB(Pihpu!1Wo-To)/o5V!/Y9Q;4k}#wbkP}{0kKq#6dL+?hIy.[WXKxogi[HhGd9O-pC|@AY(7.;aDLcl4Uwald|_z+2QSR9EH#V0c6hqwV/,)9}QnqD}vD)5Q(OYc2UA36uZ}X!||cS\u0026sDYb6pl1+P7U5B5XIYR0y#l~8w}I!Do4Y/I2HP|4@O+6{YZlIU;j/1(ZsJ29XH3uHY9c./t#4mwS7xT1?U!nh-mnXAJZiueKaTd-~Y16eDj+h[a/7wX!^X}baBFd|$V3KL]^orXITdA6cR,Wim4tDM)z!UvTdd(c{+}={c?82/6XTP#}f;[jF1+cu$=s#J?{zUwOYlesgrbY4pbs0^t^TFi4lPV}m3).LT]!l/q+KLH9WG(zD$8K0@)Lh()N)1nA2Ob|1RKY)M{h\u0026H=jm\u0026^\r\n::^Jm$gNx,gNayZnYp@Ec\u0026l}2L}V2WvFbLX.}J3o}++|_B\u0026)#ET~VlDL9TajuPO.U!fGQ#X/)]ACv?Nh3GHy}wwKWH8,gH_c9!Ba{TWPgZeDT7l9;JIkz_B2/oi,=58s1lBxVKDYW2Mb-SpF^pkB(wi;oh]]o{U;ry?I;khIP@[-B+xUq0SvZ.Q,MXj^i3W=Ee(4qW9?$SjRL^a6RzDf}u6yJjk;IeBa[eVW6HHTM8T^UHkHwUe\u0026er#qTKYnB2MB@qd_rk-a~[XCpHr5VbAgV^fH?dW(owFt.kVtO}emeF$;uh-,$l^RW)YblC,gOld-F(S7N_H4_$DQ.1!NF4vI]}[IE=V,vG^QVWoEN8)kgI!/T5YlT\u0026a]bZ91|),UIPPT|/ntRizL,(~dTcJuuwGT~fD1DhLXTw6$g~2pHORy(x-OVNAvR7Vcg6|T7u?!4yx\u0026b{36_6_LM0kfP,kEm-1QgS9?EIqzNBJo]t0YbF{b7u|EuOeDCgJ\u0026[Rkxo6Sp0Dr1lTgbCCur0RNe8LC;Hwh5slv3$lk!fnPRFdDZ~NeY;b@_DdyS+_?-w1sJ7,pY@A0pb!+)XHmvsGFKg-I+~f(aHdns,^iag7a7O9#)bTOX~2]D]Ih]s~erJ2I5m$~8ml6Sy!c)o7-EI1[p.evIikpI9^sfsQ3p2PZAFZf$mM@DFe?-2HRjPS0cgB!+w8T3z$tV]poDz02JYhMT]e}lxvFdvcsB3OD!_3Y}=1ola4Nz-O8WL1;rubBP4b2LLfzavhRwXqw]$gb;~,+fbIHRy3WC~pLyK5c5cu;3B{Bd[JS[;{=Z$!.L1R6=q,m.,#-/!(o\u0026dX1(]Ylh?}9OUMlSLSkCG;\u0026EgpR)$lKOjxg6[w@|w6Gv|k2QQE;FfDBtis9!d@g5Pzx^g\u0026WVwMTW.tVQ#swFMZ|o#z}442pw^Q_[m+-}uuVvwm,3jTQ|/x]=tmJlTZGiSBQr29g/|NK~.j!Pg@$=ndDgL06GSj14N3eJF,UxZKO0xK^AmaoX19RZ\u0026\r\n::J=B|XLqg-F~v_=UX{(\u00267Q9BP,jYytD_)tvvn4o)]y(Z]P3(Kc|P6TZO3q_0)2ZaG$FA3p]I],~dyHonL3fC[Xttcvub1j2#NONg0FTQCXTNzx[$rQ!IO$~+\u00262]v?w?7}/]s-~g-bep||+#k,2O0;~wO,#F^3htB(kkrm]l\u0026M9kfv9nOipi]+CmMsfwJf[^4f{bep!PZ}fWYCL-r}z.fmHSP|YdGK0n^;j!fxcgE1z}lCp[y!91,BYIpYdiEoH$,-Exk@b9qKXmoGQ|kk07aAe7(ycO@fBFo0yeQBaWs{1V6VaYb+oq1,YAO{|{rG87=dYicP25|OGI)qeet.+T[ch]RYanT3S00fL}vjGGbn1,YkSqQ[w;Qy@Gm0ZQgZ[KkIy?kKc,}$)4sp@,pGXg,hLXqAuDq]uhRn!\u0026]$]ep0\u0026rVwm;WnUx9XK!/2i@au5aVOMmVMP1ADL!^}85{LAk^kD{=Nh9c/lm\u0026{VH[$XX55h@0JL._mI7Lg?n=EzQ_Wy-W~\u0026hBZJ.@yNQ1]@FGfLS/aHXFvbX77lF]lX3dUF90b[7bx.EX~BCE=Rew(Kk\u0026JwqjBZVUot?2bHBTIKnqjW~C8Y]/da2^]E-#o@B@Ww]s|b0x\u0026,ZZmUNq2eJbE1Q!i;7?$pbz[$Hp$04_ddz\u0026[alR$Tzs.v,OOZKlQ!J7~t[-APE~@!$Wo\u0026bNCOL^F(^nBCba3w]\u0026Q2!uAj[i.QuM7gl2Q{vr5n|~R5D\u0026NSa0@omY_mn.1p6=6;;6[NVo02pZPCKVOZqHHMkm46R|0iBLB==iaN8h?@pWeVnU#w/$p/dBkS^[y)XPOu#r.$65qNLV2^Cm9?EMbwJ~6ibWYLdo[(pEbWbtbS/XbK$}+9^K[Y3,PZe#kxwjd1p$4Fow2Fy/vEJ5td|a8vpD84C^7iQ,G;#zP?~,YH97jv|qa-HfHozeA[^3Y;efhf\u0026!tj.V($MXuDXm1Kl2_uz,v;@!#yng\u0026(]Q4OL^x{+}_)q4qAFD0G7D6YeAqPzOY+\u0026x{iU[\r\n::dzi?ianXw4=H9cl,vY}y8byX~TcW#38YEk8z|a7c3VHQ[8#_SdHNE#eI159?kcm{|oomwm;$lH-~6-oC1o8P#f,520O/fm,WjQ;5qkDUcojU(HDyu|azncn2RLnvz~IRTN,/O1XVZz+h_T?}cso+AkSJ_Dbkdm.kXA-;O)Ek+t?hX|g.xtUpfe0a5szT(m,qi{~RZ5Y22ATEyocd[odEPvPH|kBX6adS|l@r~SEWX{z4a3/r,|2bLbOgoK;rH).WT-]G;?]OH\u0026AIXeZJ.aSJ4,)Ip(u2,B6wdzQV6{/|ZrB806[8G_Ot!O7=iOPz+|0X7e1p{Xl2LQ)GgVh1#nZZGW/.\u0026mH,QhP2UyYw}Gak$Da,Asj~on~o=g^r+-3C75unx1b1I_ziF\u0026QwvS^Y3z/?pfc7-GGk~eE^!JLil/_l)\u0026k9XZAKBmj2U-W;c{zHmq+x]IzWb@ULMIT\u0026yjYp9Yuo(3Ymi0oRuykKjY.]UL9M_+XZ_[ID)kLd=[n}kD^(6_5M$#Q;^O3u;;P;lNr[QrHYvP/}Td,T-f]G|kQ5RjY}Yz[2X|YUSf{1Y_yd4lYg3]zwEmZx?|YE6V1w.FO_j;F@U_^no_?ukI29qMPk1Ar|^A=UL5c44xj!=?FV[wCMr~Cr@~8wJ\u0026-TbzC$Z1-I6NsN=8RUylK+k7,.DLEghEf-fOuTh,!N^,BI{g75f}Xa#,L=kOP_)5Z{Z@Lhiy/NM_3dLo)z3_Zeye{bW3[$W}G]-\u0026vG_\u0026VDuoO.yw2?e/roA~y!3/aB37)NX[X1bLE,Vb=WTK!toOZIpOo4XWZw.B0UN~2[~y4{Uek=w?P1XF!;FTLFF@6\u0026H;1Ya~2Q2ElZ1g7[hAg$3NnHw@{rYNDzOs1McbGf|1#qJ0qC@Ya#CFMf}(AJm4^op8@(FT];q}xmR;(ZgEXu4jwTy~sPhe8/#-s7,}WBQq(MavrZ7C9-L^k1z.0ek~l2^1+!5H#=uhA9JjM#M.YwDL4i$bXTyd;-w\u00265mDVv#^v^.OjR69O4\r\n::6CunH$X00!r/3#l.5}aTJ?V)rk,bT]|jT2)[-yrOJKB@fTz[o5ff|0tHp;l]DscK[ukx)?8UzKT~uF9LyV1TcD7H_,C,]iv{7G#uPqm,hNOXbBe9;f;1IadUn|(6aC}RA=_OrT1/OYz$g11.60M)_f~EHN8/!mJ6d{Gky5?#.RK(7j?I,})7lK33L^)fFj|kQiqGkuujCsJ[Et8;#{X{N-WZc8s.^?+JXApf!t[/uBXmy37E+uzwUqGB~k81{7fkj[LKhu=PCAQ$Nc0pGH1)r;xP|DfcjsSYPpC~Tsvo1/d#4F~@MK!6Y99^40QA3R+UQD1PNpZ4u30=rwz?f^HwVUt-HlZ@F#joF@pCg/TRT@_icXGn6l8EdLkjVZHeP!mngrUKqY;ifF\u0026DtUTq=T7E!~_]?@WMuS6gwZqLe[yF($,#_;Aw\u00266JM7qGeYa7Fj~[FY@JC\u0026)w+8sUHpGo}z02GT8q,rVRsuqOhclKeLhNsf/QmUk6L)m(m~H1j14P0F|w-=,quQefg1qzx6a1_r$$BZSL\u0026enFhdLz+4wCSUL+9|I66Ao$n0N,~P11@wlrQ^sVVi}npAGKmz6HB@J?Iv=s=L|hvLRr,~\u002651}kBg_lu?oG\u0026h-7RU$,N7(7[0/5ETQH~LS2?o(0\u0026\u0026$V~FH4vQ8h$IEH!]-H9tTKgflAnZ$fKPpH|9j1y7P=xr$akDgy=3}b/!6;Wd|n7}+ga@voR4av995/Pue9aJ-Tm#CzPsc2PpmJ8d6P_)8!lQN[2V0~e?7u.R/Lk;,?b8T4tk)~D{7AIFYmmT=#(rdZ7}}pB3WJU.[B{RElVTNYl;gwL1G#_G]0rMqsp@-nAa@uT6fY@1UH0k#Uarik3ro?WgT83Yy3Ia6{c=c\r\n:bat2file:]\r\n```\r\n\u003c/details\u003e\r\n\r\n## BAT91 encoder/decoder details  \r\nTweaked version of [base91](http://base91.sourceforge.net) that works ok with batch syntax highlighter used by pastebin and others.  \r\nSame dictionary as BAT85 plus ``\u003c*`%\\\u003e`` characters that are less safe when posted online.  \r\nGenerates 1.7% ~ 2% less size than BAT85, so if a BASE85 encode is just above a size limit - 512KB on pastebin for example,  \r\nBASE91 might make it fit, but otherwise keep using BASE85.  \r\n\r\nDictionary (can be randomized):  \r\n```\r\n.,;{-}[+](/)_|^=?O123456789ABCDeFGHyIdJKLMoN0PQRSTYUWXVZabcfghijklmnpqrstuvwxz!@#$\u0026~E\u003c*`%\\\u003e\r\n```\r\n\u003cdetails\u003e\r\n  \u003csummary\u003eBAT91 encoded example of 6.1 release with randomized key used as a password:\u003c/summary\u003e\r\n\r\n```bat\r\n@echo off \u0026 color 07 \u0026 chcp 65001 \u003enul\r\nset \"0=%~f0\" \u0026 powershell -nop -c $f=[IO.File]::ReadAllText($env:0)-split':bat2file\\:.*';iex($f[1]); X 1\r\n@pause \u0026 exit/b\r\n\r\n:bat2file: Compressed2TXT v6.1\r\n$b='Microsoft.VisualBasic';Add-Type -As $b;$k=iex \"[$b.Interaction]::InputBox('Key',91)\";if($k.Length-ne91){exit}Add-Type -Ty @'\r\nusing System.IO; public class BAT91 {public static void Dec (ref string[] f, int x, string fo, string key) { unchecked {\r\nbyte[] b91=new byte[256]; int n=0,c=255,v=91,q=0,z=f[x].Length; while (c\u003e0) b91[c--]=91; while(c\u003c91) b91[key[c]]=(byte)c++;\r\nusing (FileStream o=new FileStream(fo,FileMode.Create)) { for (int i=0; i != z; i++) { c=b91[ f[x][i] ]; if (c == 91) continue;\r\nif (v == 91) {v = c;} else {v += c * 91; q |= v \u003c\u003c n; if ((v \u0026 8191) \u003e 88) {n += 13;} else {n += 14;} v = 91;\r\ndo {o.WriteByte((byte)q); q \u003e\u003e= 8; n -= 8;} while (n\u003e7);} } if (v != 91) o.WriteByte((byte)(q | v \u003c\u003c n)); } }}}\r\n'@; cd -lit (Split-Path $env:0); function X([int]$x=1) {[BAT91]::Dec([ref]$f,$x+1,$x,$k); expand -R $x -F:* .; del $x -force}\r\n\r\n:bat2file:[ Compressed 2 TXT_bat\r\n::gSuP2(((q{\u003cz((((((kc((((((((}bE(I(((G\u00260Y((tf((yGDe-z[hG(((((((((g,6.LYj@m#DJRN#^R-5Gyn%\u003c7q$xWs)b8_?YGz?%BrfEI(|J.Y)iG(dj|xJY((bc8Rok$1\u003e/3`$tRWD008[gw[b@/fKl-i|2=!w#t?g.]K\u003e,3gGZ9M,.((TpuR[(q{\u003clZ`S5opZdY\u003cq5nd.sd1hG|G7?_9(E~x(_(~)=#f_\u003c,y#E\u003c?$auA(eRs\u0026\u0026*#xhz\\[G~!t\u003e,c^tbE8c_BOVGsr%\u003e6azBCfVDTY?!S,uxCqbAF((F(\u003cp254C3{C$$;+vP65;3c5;PY{x,Y7{@^mna\u0026*u#OG|72Pp_k1;x\u003cLmHH{X)}UikxU\u003e7NWa!e1.)s/0xshbG\u003ed3!MY)]XSg_SI[8H?punA`-`Nt2q\u003c)xc\u003cx6\u003c6f8.eD8G!3Zqb|f?(??s[2ScBXFVR]6-!6YLPzOZ3A_\u0026}`*t^..21t+[ao4IX+bmZEwk?k!e)0.I{3$pj\u003eSd!8m,@W.\u003c_XvA((6)R[N\u003e}JP-hF@XIfI-7gnwf)4sW34pxo;BV,Dw(+m]r,}yZe3)d\\\u003cCEi(@BOx-)\u003ek{7i$lnRf*Z-@FnJ6zDJ\u003eyKVIT.X.T^\\VaHUx\u0026xkY.9C2Ky-uG7;,nS7-jX\\InJjnNyWmxp\u003e\\?E)4cGARV+}@+HY4{,=[yW4KN=q7u]]8SEmNp@-|N%.7OjoQ=H}w*o0hA5az$pBWc]A(`!a#V20@95`};`F)a9FgBIkdz\\jU=M6dH5#.E6F1!z$|fFn8\u003cRf{4vGF/V4+@4%\u003c#]nXy%HeL__aP#tacFc9}DICsWO\u0026B@aMRH}[;*J7{s(mG8^eE2O=rV+kpsAa0$wl^Z/[x.l=6|zhe\u003ey0?8H-C~v.]Ea,#LsdgAc\\xG^h|T_XE~\u003cf}8#jZm$h6DHC;JEmS6d_=_iXQ2c=1;lGt[(rsEu_!g~!_Song\\^Okk1c]Z.z%*`9FpV#!\u003cwd3Q5l]=*yR9h9T$z!_6h\u0026v./LT\\}bCk{HURd9p_1dDmE\r\n::SoB83@ky5L\u00266O;|m\u003edA{kQpj~]SgR7oDZ\\6JcfS,j@yHg\\(Vr(MwfclLbcMv%{\\!Q`!.ouD|M\u003eqO7LSNVE^/.hI1CMw36QV_Ac4cJe#vap[7vRQ`[*B3D\u0026+[EmjVE@{F+24,B*_J8BC=i^){2-6F~bvqAN!TLJV,1y]XrP{pssJ/HY+i.Ln#70Q6%`-].5LIGi6MA,.\\($?qzP+r(g3s%;\\q8V^fy0IFgT\u003cJBmplnO!V`/b)0DNObnzWl4dnj\u003cnk2tLF(VB\u0026T;+Y\u003c\\uukKuA}wY5`D#ed\u0026qX\u003c3r`g5,$)%-U^\u0026udT\u0026iXE7UT+ru6M\u0026\u003eBjF_zi2=-g9.f-q+H~N4d4ce7ffOI\\}od9|WdS$y||`5?v52vn@-HM@XfX{g1[Yy\u0026Uh44{8*aR7IsO{(7ufJIfRPh]YU@t\u003e\u0026sP~\u003e_h0Dw9h*3\u003eHrg\u003caPxW,1K^2\\R;\u003eM8ybx0.f2{VD3P!ety=*OOa\u0026UxV.)+V5xNJNIR_f0SVTlQl4m,hb(Jkc-(\u003c_LI\u003enS46|avx?VL9\u003cwaK#W+^t3.o%Nd,U;vm}miTuDIV%RuGZ3EI.l,CY0S^PbgvveuZr%CBtK-q\\fNgm#a.NigWDn]}E\u003et6I\\;)chQyn[OIF?6\u0026lC=exhzJB5$s!v3wr(Xyp#M{mp3fk!\\Jev/tFX%bH6LE;4yfJ/ODc?wqvd{rEv^U$/wX71#w^zOM0H*?/A~Yp~XTz1$X]}+,11QZ}\u003cm8#F\u0026r,mR,l~m06y}4fo.hF%nZH[\\M`cScqi*k\u003c!*lcI9ZlZV4FITVQGakAld]MMXnMpsdnzr^6/_lvXeiNB85\u003enqKj2C?Jy0t{v[Ok,=h,^qV)8ovhcQg[DSMLW$?%E@|?\u003e+]oQ{ZE[6#a;-ls`toXn.s\u003c7[Lh*vU)Q~wy?~\\jbEgi#l7y7MOS=Sf\u003eIwb5xv8yt\u003c\u003ejQRO_8@4##]UIn^w`#O|3r3XyyRP_]p=[zykA.h6y|U\u003ek\u003ea6~\u003c_8-9\u003edT9M|\\3U!{LUw^X{c)tI,^Lm47B~6UG0r=mi?n?qDk^l\r\n::ex\u0026t5td]K~tQLoMl|U\\9\\=7dRk;-27?`NKYuq~Z5qieFmppl=NM@BoISbz}46=w\u0026^p$1z#/q?GFM6\u0026w$\u003e{FpLFBKFU`y~xuh.n=d=2OHufo*NC3O^_,u4/M\u003c1~4\u003c5n\u0026jw|-@|0.^.Gt.?c%uNLtInv}RWyV?9vW3C3f[w{HJ`xywLlPaJ9)tk]aIY*O(9Y6HJxL0\u003c\\gC\u00266\u0026F#.U\u0026Y\u003c\u003e\u00264TR6,yp9^M\u003etgT!5em?;TDxMx3C461M+KwxnO%TYsUVWo,`s[H9;Emu!v\u003cu7\u003ed]-N[C%)G{\u003e.Ri=v@(WVuM4_!!i_t3pu{-Lu|kiUTmI2pA|))hNs)1P]?knY\\|\\ZPIhTQ$wk@1FS;%ORp~Nwp/bdm-.YA,D9jL9=@O;Y;x~`z=bsB5+!LplS=ex/Gak%+19\u003cl11{jd\u003e5dkXv1-B3Wk$LhM4n\u0026@[4P~XAd\u003eniTz+Bg1QHUp5\\_Nu4oc%5%Y~eroc.jQAKT]#w7^?yIFb$AhqjM7R\\Key#L5`C)#=i5nm`XFi6TvyB}5EMZ#e|od~96qK8;TM_OR!zEZ,B*!Oqzm;W\u003e;M{Co\u003c@@3ZiQ|/~UYi*=*H^fV$9\u0026dY@o2@Dm(t*^mr)f{I}Q8,/[i\\Z^ntxX)}y`yN\u003c3uW4dqD0hg3OwP59@y}Wac.3w#z,.Ol0bEY9n^cwiKg-_odi\u003ePA10J1)jHD6EJjGc,,o}UV*7/W$PR}UL`Vxg3Ag47qg[X/Kwt0.KldS`KEcSJ#}yf9*QMCS!j!7RUjkpt*N5\u0026FIL6v8^W%#Q]aohmUY\\+\u003eqB-uxDl^Ft*}-iv\\l\u003edsHNsBH`^k!#vqS\u003c0}s=J,1Zt7wQ#l4xtaa|5=^{K(x%Qi}BD6T#./iXqLG!+/$Cd1r]qocsgq[f2#Usr)v5Dg~AZ*O$84es@Sad,6IvvNT5/x(sB5*v%$ycOcr[MQ]*RvaFt^%^p3=^\u0026cy.uHBr@4Q9Jb+wU+?b(\u003cm\u003cLx!gO!+\u0026vLYBn_]@uDV~^d-PkI(A#k]YA/Y\u003e*]N}+-wk#mo^ohKf-]R!Dw\r\n::Hb\u003e~v/~cu0\u003e,]On`ckgdXgo-,1nD`s%e|nGsr+!.Tf/+p3pmRLrUE_z-i%Z\\Na%~hz}a\\V/=z_J]qk~RA;z;N!*!0[#?1$S}u\\vQSpZf?w8?pgxS8-WNY~%%Hsjr5{sG+U]%\u003ewL~{h3i.j#J4XC6dCHRL/#M=Bd/|VTP-/r4T`TN_Uf-+P([KKu2%\u003cR1(2[su-\\.e,\\O2TEQc`w~\u003cT4yPbO`JgVI\u003c/@}Jn\u0026V\u003c@%hds(={+RgXGIn-Wb+5F6p*rG]@S]f+ZPhi0%k3]mLCWMBk2P`~j15^q~_v\u0026J{;GpXYeWs3+v-]CnbX5IrnRf*$(.=@Q+EnDrp$\u0026%m##cC~VG5oY]#VU}\u003c*]fZt*fp\u0026p6W@Afp\u003eg\u003ejU8So90gTs[PFov`z62g6EW\u0026~Nd66gwZW=E9#P_8-XjdJC\\S^(U`@g|DG$hH_brBCT3jF1t}sR*wW{Xb\\CPptWO3FI/z.|]6}JI-+h7a2G/o_`I}?m1c;/tA\\q~860Kt8Q6w3Yz!We5($_f8%Zbx[HTm/Sxf*o[k,aJQ*l-s7|ql~Ss=f;l.Py#wv2X-3\u0026Ai6{4oVKDv/anTafD!Q%+n*n~ZC-o2WiVVSv}t,^K=2vYN[Cl\u003cSK_cnbtIxl+bld$eCq+X8A}dd3EymR~~hYP=r1G-b[Q9{CrbszX0/8\u003c*Xa@mZ.{p6\u003eFQ\u0026ra0m\\_+\u003cPq]HF\u003c2C{ER5r$n;8/xYCrb!A0]9^Go}HmWO!K]rKfSJv\u0026hNwch8WC,OoO6O(8(bpA%)4chF)3mMh+A+cqT4cB6S/sEDcX{?3xc;o#~8[l?HG@fq+8Z)p@z/L80N4$Y[PK0_*.5~UI=/U4Km\\FcjJ\u003eu^\u00264S3tdA.puXI%OZ7=/4\u003ep{47X+ATaH?zE+sWrTB}_dm_]W2[@B](dulXKswi\u0026torW6Z~A2$X3f~@\u0026?T?g7]Sv{d+~egb\u0026*Y]a)N5/]7b(`}ZpOqV9!AOkt,epxp2oV}]C$Lj}TL,#8M)RTuA+Z9VgU^?{-!$t#u75fMR7/rB0\u003c6;($$Sh!0d\r\n::krNpIrv]+CeQRa~Y4jpPf!GJ9qA-0E?)$jiO-|Oy#Jt`#}50|Y=zD2HhL\\+Wr-~;OBOC5\u0026Tx]xy6MC|`I~(L,1=@+2Y=\\q%S0G+~UxW*6~D7I$$)v+4W//\\\\I\\E`x{P0/!Y/SnrrUXW\u0026Ik)FV/`YMJrm2KL}KM([M%x0QF[W\u003e\u003ecVd#)WJ\u003e6Z`VHbZdy4/\u003cB]?d(yJuJ-`@`R\u003e#P[F]84ze;+Ca%Z;XS`TFL.skj$$QO0mA\\Ric459n%nVf\\ywY/s[y_|4Io1H_n=;9dx\u003ce{H{#5\u003c\u003eMbGc%%P,^pAK#R}\u003cOeZQ+=w0*l{kXi#|b+!eD+!?V6J7@U}GBlJ1iL,,x1QGV7\\vVXR^\u0026()dm04l=aVLyC}-hTk0w$eA[!.]D2Z#f7fID133SME(q4RT5rfD\\-hb]uN.*(-`vjlpcIT|*D2y55D\\/[wcQ.W-y*0DbZ*bg^#deM+q7hj=OnLO7NbYe%*56|FN]zAx0X]mF$|b@8,!Af/yhhicZ|E8tE_0P?\u003eu[lzqqpQu]zYy[igtyW}/;\u0026\\Es6[2~TVq\u0026F)\u003ecuR^r.Xl\u003ei_N7VleHyy[SP\u003cv/tv\u003c5WCi`x%A+QJg.Y~I~Rg]AeJMx*b)9?jR=+u1PGk7aKy8Al/AuC_$!,4`]DGi~}Dr%a+ee{#hSPI!T^G$)y0*#}qx8{g0\u003ezP/8KfLU59KyQ}[})\u003e4Ld;|}FyTSp.Cc5db4ZP.ZMG$|)w0-|gLr,s\u00269C]9hl7T%_z7[;2e,!gdYS](Niq=%K5,6\u003e2{D{\u003e,K`K\u0026kHDwIk}%^e/)LDQLk?~fd.PT[!JBPcw;bNag{,bEnqkDdmBV\\Gi]x|avjh$\u0026}60J=rK8PAsq%vW~rM~p,6/jfBj3d$_(y?rY;aQM+^b-xqeC8Td%CSv}Kp8fbg~Aq.AD2Nmjt;UKJ1g,w5s?)V~Z{ZK9g0.wl,u?^;,I,SguR`l)*(W3D2\u0026.=`hA0OT?`6MKnd9mu.rRY{\\84L75U{Vo04Bu?hj)UO7)zY%-t68?9C^I_\\Th6,3fnmal~Nz\r\n::+JQ7G@*dNhgm}u\u003e5s{@X6Id,DARxX=^Ki?*qc)~Ee#;,;Kl~AAh`TYZxF2eQ-Bw`vIppv\u003c;XX0r\\*[0S[2jjUN.M;Zn.\u003cTXz#I^hLzMGKR0^cAABD\\W9JX\u003cJ,e|!.`,h7CzFkY/kj2nCTJQoU2poU-Q_`8NJC=\\CS/,C+dGZ4Ah\u003eK,`u$)CMn\u003cPI40TbZa23D-L\u0026gEX*@OUMynTW|PDI)^/zc})A3qhoKV$CZY=h{?gVBu/u1}xL\u003c\u003e6GZ0qB`EV$s`xSua{\\rB#e]k(D`4PJNT[$hUeB\u003e{\u003ea8EX-t%BXI^6WoYoMa*igi@6UOzYDck5~keKFJqL=q_qW8d*=3.pTNYn01ph\u003cobZ{*[E~Q{$kT+{n_4Px5_3T%@zr)q0j$MkrH6=k#wf)^*F?s$4kX#KjP!\u003ct\\\u003efC;HC%0?wv/SK=f-b~Huq8(((*Z[nCQT+@g`OKB4}LGee\u0026VK$~yq=9GoN|ntZ52~W-l~GPY)#F-z=h(zuurLM^yR9`D5M9*F\\Q8cJeqe0zZ`alH;{[Qr~Kof1W0K$Q-IdRt.;#0?eGM)5)%o},TbRg*3jJu\u003c`i[ANElRd}RJ]Hx99Xl1GBIW$J0O^!tlr\u0026b_?@Dxlp\\I7Su}LE\u003ep%]OW+L2XnzaL0)NMP`M{$t{K(\u003eDcd{x{Y\\iC1+\u003exckvOAU-Wg{#7Lkru=azYcJ~g\u003eZJF(~{1Fk!d%b}j#k`pqtV@)a(e\u0026dJ`H!6?dr.)okHX@_ohT`viN8}#fd_}B^b{bO^CvOrQt;40rGvGGd*+\u003eSDZ]MpiG/V%%nvw;44TxLvK4EfqN#9}?u|H0!%d{HmU`-bwO^Fnl{*hO|hbDVmNE}Eux2Qjj6vxZY$E$fLk}8wfOh+TjZ}[%kgr4-=_-Jzh/}\u003ceQr\\`52n!fLEyE0%T7;1E)xp~vZ.AN36\u0026WbQ\u003cIT|C4\u003epMpMZV93C#pRu8{SiwI%L\\jb|?*8fN?J%V~knJfzR5xY0[XyK_\\s1/pG^GxfI@si!\u0026A{![F8P4cu2PWX{]P*%HoJG|vWIKBY\r\n::M\u0026!GXQAw`wcy]+,^=KC}e7DY[+SJ8Pxu.8pJUH+bxPRfuuf$2pfI2?DRN\u003e0FuDV,%SeuYqu$\u003cz1`X6wIgmqJ7rI3{lQwGdQ-bbTs|l1uN9k_1$p,1Lb9\u003ci7PGnzwlawZO%p\u003c_P=./Nn\u003cl^pq|3\\aUv2~UukF4d6MpzxwwEy=}*UAbob_pqZ~)J}08NG6|4cuNa]\\p.\u0026ERM]\\lLj51`SM1A3JA;*U1II\u003eGi!xMYi?ri}m%B}5VN?0\u003eEMz~UsgSkQb{Pf\u003e%KjW{F[ED0ADLw2`pB2}_2)eD?uXQW1J4,!m=)P*piDEkJ(Ia*raKE6*UOgh13C]ayA_HuQtg?zo]Ox9bQ?Ud!V~1*E2\\gGc=-TUh@E#QU[5[=f4n]E+.};PZ};P/\\tLqoo5\u003eU/?1LNU\u003cN%M;xnTtd/aX*!$~7qP5UBdEvPb=S2~lZ8Oy=Gtm`TY(ZSam_%+zyYCYWH{n+(L\u0026u(S]4yv,p*6gxD2Q1t]~jT\u003e}}}bG/f{^,cP[In..ppzmZr{*Ye,yd~=Mrtp#|*-L#rQL.~WHY\u0026YHz6Fd1@2w+\u003c4tw(|2=sO\u0026{_7,%T_oy_Z9tLKEOro,.HIpyTrz8+AC,3R\u003e.FdN4!a_`{IIZzO\u003c(QBJ\u003e#\u003c}E|Sr+)Lw.|s*o{zBu{Wm\u0026Ie\u003cQekbuFYMjd9nnvz,_$rvvQ2/b?1ooq6sL1`=Z]Q(\u0026x6M;@/Ap6s[7[`{vS,,2\\jmKtb/FDODBT!|!_mu)BW~5hX6h$xEdU0]2dQr0I(y^N/8sY\r\n:bat2file:]\r\n```\r\n\u003c/details\u003e\r\n\r\n## Intuitive multiple encoded files support with low overhead\r\nOne-liner trigger for multiple bundled files expand in one go:  \r\n```bat\r\nset \"0=%~f0\" \u0026 powershell -nop -c $f=[IO.File]::ReadAllText($env:0)-split':bat2file\\:.*';iex($f[1]); X 2; X 4\r\n```\r\nOr split into individual triggers, can be anywhere in the batch script:  \r\n```bat\r\nset \"0=%~f0\" \u0026 powershell -nop -c $f=[IO.File]::ReadAllText($env:0)-split':bat2file\\:.*';iex($f[1]); X 4\r\n:: ...  \r\nset \"0=%~f0\" \u0026 powershell -nop -c $f=[IO.File]::ReadAllText($env:0)-split':bat2file\\:.*';iex($f[1]); X 2\r\n```\r\n_where `X 2;` calls the decoding block to expand the 2nd file data, and `X 4;` - the 4th_  \r\nTip: keep only the last `:bat2file:]` ending tag and skip intermediary ones to use consecutive X parameters. \r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faveyo%2Fcompressed2txt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faveyo%2Fcompressed2txt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faveyo%2Fcompressed2txt/lists"}