[GRANTED] SC function wish - Base64 encoding/decoding

Features wanted...
admin
Site Admin
Posts: 64838
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by admin »

Marco wrote:PS: maybe this code can give ideas for better performance? http://www.di-mgt.com.au/src/basRadix64.txt
Thanks, but I got better one I think. I have super-optimized code back from my days at VBspeed. Just need the time to implement it.

Do you have problems with the performance?

Marco
Posts: 2354
Joined: 27 Jun 2011 15:20

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by Marco »

Nope, I was just curious if I could be helpful :)
Tag Backup - SimpleUpdater - XYplorer Messenger - The Unofficial XYplorer Archive - Everything in XYplorer
Don sees all [cit. from viewtopic.php?p=124094#p124094]

SkyFrontier
Posts: 2341
Joined: 04 Jan 2010 14:27
Location: Pasárgada (eu vou!)

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by SkyFrontier »

Marco, do you (or another user) have an idea of how I could enforce XY to intercept images stored at clipboard, so I could later use base64enc/dec on them? One and only time I saw html("<clipboard>") display it.

Also, how could I 'scriptically' tell the difference among text and image contained in the clipboard?

Reason: I'm trying to beautify reports delivered by XY, adding its
http://www.xyplorer.com/xyfc/styles/pro ... e_logo.gif
logo for instance without resourcing to a local or remote file [which I currently use, via html()].
New User's Ref. Guide and Quick Setup Guide can help a bit! Check XYplorer Resources Index for many useful links!
Want a new XYperience? XY MOD - surfYnXoard
-coz' the aim of computing is to free us to LIVE...

admin
Site Admin
Posts: 64838
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by admin »


Marco
Posts: 2354
Joined: 27 Jun 2011 15:20

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by Marco »

SkyFrontier wrote:Marco, do you (or another user) have an idea of how I could enforce XY to intercept images stored at clipboard, so I could later use base64enc/dec on them? One and only time I saw html("<clipboard>") display it.

Also, how could I 'scriptically' tell the difference among text and image contained in the clipboard?
Mmh, definitely a question for Don. Just tried to take a screenshot and then run in the AB

Code: Select all

text hexdump("<clipboard>", 1), 700;
but I got nothing. My suspect is that only textual clipboard is accessible as of now.
Provided you can inspect the raw content of an image file, all you need is check the first four bytes:

Code: Select all

FF D8 FF EE
for jpg

Code: Select all

89 50 4E 47
for png

Code: Select all

42 4D 40 6F
for bmp.
But, again, I suspect a screenshot is stored in memory as a raw bitmap with no header.
Let's wait for Don's insight.
Tag Backup - SimpleUpdater - XYplorer Messenger - The Unofficial XYplorer Archive - Everything in XYplorer
Don sees all [cit. from viewtopic.php?p=124094#p124094]

Marco
Posts: 2354
Joined: 27 Jun 2011 15:20

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by Marco »

Don, we are curious :)
Tag Backup - SimpleUpdater - XYplorer Messenger - The Unofficial XYplorer Archive - Everything in XYplorer
Don sees all [cit. from viewtopic.php?p=124094#p124094]

SkyFrontier
Posts: 2341
Joined: 04 Jan 2010 14:27
Location: Pasárgada (eu vou!)

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by SkyFrontier »

Marco wrote:Don, we are curious :)
very.
:|
:eh:
:roll:
:wink:
New User's Ref. Guide and Quick Setup Guide can help a bit! Check XYplorer Resources Index for many useful links!
Want a new XYperience? XY MOD - surfYnXoard
-coz' the aim of computing is to free us to LIVE...

admin
Site Admin
Posts: 64838
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by admin »

What't the question? Access a bitmap in clipboard?

Marco
Posts: 2354
Joined: 27 Jun 2011 15:20

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by Marco »

Yes. And more generally, how to distinguish programmatically between contents in clipboard.
SkyFrontier made some tests, and told me that XY knows if clipboard content is a text or an image: if you do ctrl+alt+v (Paste Special > Paste Text into New File) with an image into clipboard as source XY will warn about it. Vice versa too.
Tag Backup - SimpleUpdater - XYplorer Messenger - The Unofficial XYplorer Archive - Everything in XYplorer
Don sees all [cit. from viewtopic.php?p=124094#p124094]

admin
Site Admin
Posts: 64838
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by admin »

Yes, technically possible. But no time to open scripting for this now, sorry.

Marco
Posts: 2354
Joined: 27 Jun 2011 15:20

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by Marco »

Ok.
Tag Backup - SimpleUpdater - XYplorer Messenger - The Unofficial XYplorer Archive - Everything in XYplorer
Don sees all [cit. from viewtopic.php?p=124094#p124094]

admin
Site Admin
Posts: 64838
Joined: 22 May 2004 16:48
Location: Win8.1, Win10, Win11, all @100%
Contact:

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by admin »

In the other thread I just posted what's really important. :mrgreen:

Marco
Posts: 2354
Joined: 27 Jun 2011 15:20

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by Marco »

:D

Code: Select all

 writefile("%temp%\img.jpg", base64decode("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Y3RCb3R0b21sb25nAAAAAAAAAAxjcm9wUmVjdExlZnRsb25nAAAAAAAAAA1jcm9wUmVjdFJpZ2h0bG9uZwAAAAAAAAALY3JvcFJlY3RUb3Bsb25nAAAAAAA4QklNA+0AAAAAABAASAAAAAEAAgBIAAAAAQACOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD+AAAA4QklNBA0AAAAAAAQAAAAeOEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANRAAAABgAAAAAAAAAAAAAA/gAAAOIAAAAOADkAYwBwAGIAawA2AEsAYwBFAC4AagBwAGUAZwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA4gAAAP4AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAP4AAAAAUmdodGxvbmcAAADiAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpj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dW1lbnRJRD0iMTQwMjgwRkRFMjIzNTFDQjU2QTdDQjU0MzI1OTQzRjkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUI3NzhFNjc5OEMwRTMxMUI1RjVGOUJCQzZFRTUzOTkiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0iMTQwMjgwRkRFMjIzNTFDQjU2QTdDQjU0MzI1OTQzRjkiIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wOkNyZWF0ZURhdGU9IjIwMTQtMDQtMTBUMTI6MDY6NTErMDI6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE0LTA0LTEwVDEyOjEyOjI3KzAyOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE0LTA0LTEwVDEyOjEyOjI3KzAyOjAwIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6RUE3NzhFNjc5OEMwRTMxMUI1RjVGOUJCQzZFRTUzOTkiIHN0RXZ0OndoZW49IjIwMTQtMDQtMTBUMTI6MTI6MjcrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpFQjc3OEU2Nzk4QzBFMzExQjVGNUY5QkJDNkVFNTM5OSIgc3RFdnQ6d2hlbj0iMjAxNC0wNC0xMFQxMjoxMjoyNyswMjowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9InciPz7/7gAmQWRvYmUAZAAAAAABAwAVBAMGCg0AAAAAAAAAAAAAAAAAAAAA/9sAhAAKBwcHCAcKCAgKDwoICg8SDQoKDRIUEBASEBAUEQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQsMDBUTFSIYGCIUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wgARCAD+AOIDAREAAhEBAxEB/8QA7wAAAQUBAQAAAAAAAAAAAAAAAAIDBAUGAQcBAQEBAQEBAAAAAAAAAAAAAAABAgMEBRAAAQMDBAEEAgEEAwEAAAAAAQACAxESBBAwEwUgQCExFDIVIlBwIzRBMyQGEQABAgIGBQkGBAYCAwAAAAABAAIRAyExQVFxEhBhgSIyIDDwkaGxwdET4UJSIzMEQGJykvGCorLSFOJDgzSEEgAAAwYEBQUAAAAAAAAAAAAgIVEAMEABEWEQUHGhMUGRscFggJDwgRMBAAIBAgQGAwEBAQEBAQAAAQARITFBEFFhcSAwgZGhsUDB0fDh8VBgcP/aAAwDAQMCEQMRAAAB2YAAAAAAAcI/LUXz9GeW28VIdIvtiX352G89oAAAAAAAAAAOETy9Yfzu3fPpzOVICLeWt2x92N7Odp7vPa9c9AAAAAAAAATlX/L9Mfyb5cT+GeoFN6u1V6OjWq3cz+fnv/D1gdtM/T8+m9XFdAAAAAAACYqvkenK9+rGjXTlrvmc7XzUIvRWems2s7TeWbvxm7uD161n1eGu9nBQAAANQ7QBwg/K7p+frN/QxY8Jb+WryKAEqleopOgIarPR1i/Y82p78+gNQin4oonaWADPn3D+F3XIm1KrkVMrmeW8VFR+hU25k/nn1ODGt5f6Vv8A6Xluq6Q8qKnCqLip8Sxj5HoT4tQu2az0pGM2vlLx0a3Y/SZv6PGl9vNGomWVy0/i9iN0jWo5ms6mj3N2VeVBWeJJKNkZwr/H0qfThjrl3UTK3m2Pn0uaq/Rzf3H9Th0jZrObofB1v/FZXK5726rvRit9nH0wXFRGXp8cNoZMylO2SNQACLjSB+yRuB0BMReetZ8r1cQFw3rWV+n5djqayKqXL2NHTcRmjIndx7U6ogR81qV6yRudA6NZrnn3pPnehrUtfPm081o/X1i/X8my6Z5FVLlrGS5LyPOqRzsbrJW51BRImNIJOKvtldnREsbF0Pzu8zlprU0/gyrO6T19Y/1fJs+uOGbyzlILYsiDWLify1G65VudGsnuerLz70nz+2P+t54fbPbO4t14+07hvhIzNN8/MTp2ovZWvpeXb9ccIEZwnGkrpnSh+f3vfF365Uvs5Z/3YVle+Let+Zoabuqn14qvTzXnpF6RO4/zaPK51in+f7aD2c5Hv8206ZDh04dArym+L71ZxG6c6/387TlXMGZFVH0f1E7c6Q0cV/wW6+Xo+zzT7c0PzvZR9MXfr8+s3AAAAOGd+P7Z/ji5mv8ARiJ9jnMFD5BqwiPY8RLH/nbnfM2m6T9HlL+pzynn60Mu19PG6oAAADhUeHuj5nd7MJI/o5S/rcp2oqxuV3URm9iL8jojy7i9esjnlr14b+x55C4Lnr03rhdAAAAAzm5/43rmcdIsEfziV6sK7RvR7Eb89T5Nxt6qfUtPNtcc9OZ/2fI+QyWKoAAAAOFR5esD5veRis6ibLDhXc5VCbWtWB3lH7Oeh8HZ/Fj9I77+Nt7eHKqyoNlXQAAAAORnfF2j+Pq7miRukTYzuRemYvXMjnq88XZzNb1IvTL3s5Wvr5VBCIx6FXQAAAAA5Gc8vWB4+rkcE0mwp7noOCbI/SQuuZ3q5bHeSmzNmvoAAAAAAOFRy1nvN0Ry2uFR0SJprUjdMwu2bXtjY2IIBkzWVoQAAAAAAA4BU5tTz1AzYo0i9STuWWpoKmEGCOGHr0alAAAAAAAAABwAOnDoABwilfEyp4AAAAAAAAgy1y1rNRjaZZJvarkhK3Dhc1JAAAAAAAAAAA4YffNrrypOXVnHRJ6iYv0eY59OZ1XZ1q5dXQAAAAAAAAADURjOduMDrxrPP6q/OlHsB556PMs5jdVy67iW/oAAAAAAAAIEU0VRHJpBqARyPXrZjt82bGip59PQFvAAAAAAAABBQYP2tRVakCIAxTBMNTEcrajlXWrNsdAAAAAAACNGfzZVNJWVWjERKWbyWQV8VtkAqKRXqJOAAAAAAABiKzlWBuotQaqbF1LNFK8QkiFdVQRq15twAAAAAAABqIg0JFVYDpX5V/PTtkOolVxW2I09KJwAAAAAAAAAAAAHCoiPmsxFqDZytjU4AAAP/9oACAEBAAEFAt108TUcsoz5JRflK/KXPlhfekCZm47/AEj5wEb3oRhWq1UX8V/FUaU+AFDngUGfG/0BIAe9z1yQsX2sWtNcud0SM0xVzkSVhZriCxSwBwiypcZNc17dwminkdY6V70XsaqumXXwzRY+k2PFOD1USPVFO6vIWH15hKLVLFVRTPw5AQ4eRkYD4SOuNAQeplvi6zEjQAA8Kq5V8CFPFUYE/BLq99qimZLp2DmW4L3PxtJHWtA0LlU6V0OhcwLmgVQUHeEhYsx2OVhdjBLDpLK2zCkrmszHyZLuaaeXPhxhdmMZFMyUPNXqXLxoUe2xkztcIqOWGVEIS1U2RFCp+2kcnOllNjl7tTcrJah2GYEexy07MyXIMnlX1JwXQvaunzntlU0ELi7jhnjc4ZM7pGjAkixYm5mO9j8+OLKzOy5WfZyOIMJXGFxr3aY+wy2D9jPaS5xawBV1e2mmLjY7RF9BqflRNa73UnspP8c/2mqeMOU+JEAYaSyt5FBAyad+JjPb2mDBG1MHv4EUKj+fB34tFXU14pHKeAMa/wDLhnTvxn/F3saqBkr80c1vYltGxuMbPF/ymfPhIfbEZdNphsqnfGV8dVHFJIj8Sn2k/Kq6pn+fKka2PIuIjyDHADTxJ91JFJC4OrqXAL3cceLjZVVUDLInrIPt1B/9ek8tpLrnE0OGMtfrZpl3cTI8ZY2JLkI3Mder0XVUbVhYfJNkQMnZPiTQG4q5Na55gxhGvZFYsXJKpSpnLqf93SZhpLD79divD9O7ZXCw8CF8LXRsEkGLlNk6VydDIwsicTj9bO9RxsjYWBcSn6qKVfpntRa2IHJiC+w8qGDNyTg4UkCLVMfaVy6b/a886PkxMb/VOM6VT9Y23D+0+QDsqcvZgfc7Kv2O1X2u2c7j7ooYvbSI9RIoOqxnmfHx4W4+Kx8aa8NdLlRRiVz7JCujbsxM4SCqrKxGzLEmyHqOeRrpssBoyfZ+TI3I5pKMky73jMeIMTKEn04ySaKqoC8MjYsucSySFdVHZhbGY21zHV0DlNA5zsfJEjnH2Tj7qv8AImip/JzwEH3FPdRcUuQp8VpxjE987GhjdiWMSMYSEHJyZKnMjlVXUa80c5xN6961CkmDRyulcxtESmDkc2GJujsaI5FdrMiTXq6ocyqbMWlsiuV6vRepctjAHy5ckUbWC5OesaVok5WIzRhTdlGxO7Ksm1k45hIcrkSCLSE7IlYv2TQndqnZWVMosBzkwRxtvRenPWIwTSP66EiXqp0enyAoMZzex2vlZOI6JB9VcqquljVVVVyL06RPlXU5IGQZWoSsKknYxuNknJ7LcyOvZIZWzQESBXhXq9Xq9GROmTp6nG6nJnUGLjxROw2OUmLkRjIyMmRdPiiHH3aVUvW4sif1M4TsLPajHlhUyUMfOcmdVnvUXRMUGJjQaPfJEmZUbhJlNaOP7nYAUHqX40Ehk6uJ6xsODFbuuNG/s50/Py3J/adiCOzz0O3zQmOqx/ZYbCe5hX7uBDusQqGeKdnopY7H0WV/2yfxUf5ZjC7DH4+691OA09DXj9A6RjU3Lx3HKLr71+UjvmL/ALPlMFEUFle8nTU+lvTZQjUs2TKPr2lsPE6V5YpDG1znWpy/55mthP17ycdOJYpT79RZ9HdcaNYKq0JzFIEfdSfFaoLHxHzl8JkacOBPY0LkkYCKLocijt2d9kTZFyCjpFI5PKeC42OCbFfJFGxjKBT+5c0J7QpPYwyuilxcuHKZuStJYJ4yjwVP16HhCklY1Onc8/SzZUzByceRkoRlCc5OKkKlOn/z7TfuujY9HBxSv12Mv1mIh1uCEyKOPTJuCviejHjlhganwp7IwnmNqx8abLlxMWPFh9LN9C7ihTo3p0b06FhTYepBxPq8Xl//2gAIAQIAAQUC3S4LlXMuUrlK5Vyq70jpAE6QlV87k2RB1fQvlqqFWHwY2qpq9mgcmv33PuNFRUopSCdGuouVcq5QnyV1BTH7sr9OYIyndaUx1dt7qDZorSqeITK7czvdBhK4SjC5FpGlE1hKbCEBraFxhcYVgVQFcFXaZGrR4mMFcQ2HOKNytOg9ZVNchs13nn20edGJuyW+/mDXyca6u0am7Tn08SU99A11E14OtU52rjoEE3ZfJ7/KDi1CdVVU6QImqqqpsxC5l8q1WJxa1W3owhAIIbLvm6ibKrWlcYXCFwBcIXCFxNVjfCSSmkP4pw/kENmT50ZJTxoqKippJLrAdHobUoR1jktVdK+DjRPlqqaxfKKG0QiNSEHEITLmC5QuYIzFfKAVKasbU7sjdaqiprRUQYqWonWLfezxtXEuFWAIyI+/gwegcxU8a+FFRAID0Jai1U8KKioqIN9LRWq1Wq1Wqn9Up6waO9WND4DQ+rBVyr/Zr//aAAgBAwABBQLdorFYrVarFaqekDVRVVVXyLUR6EN86eFdC3fAppVF3lVV1roRutGtN4jbA266U8AjtjSquVyrpRVV3hVVVVXSm2T5VV2xRU/rA8Aij6ceARR2qeQCIVPADxaijshuhCp41VdKaVVdKqqCKOyPhU8KqqqqqvkdG/B2m/G+dG7bT4EbNNT6KioqKip5k7zT5UVFTSq+fB2+D5XK5VVPE+gB9dVV2a+mqqqqqq/1WvrDo31Z0HgdB6shWqn9mv/aAAgBAgIGPwLKFjC4bi0AloK2KB5Nwg6dcL7MmkT2d84LQChM+zhHlZnNriVwReiKpkl5/a4eISmHgCgUKzRkk13xm8pLqkFZ1SX7PHeBs1hkUt5g1gzAgt81L3Cf/9oACAEDAgY/Avmg/9oACAEBAQY/AudpNNwW4zrVEAuPsX1OwKsHZ5LflR/SfAqGbKbnUez8JBu8exbxou5n5TqPgNI9mxZZvy5nYcD4H8BE1Kihq3ngKHqDkNA43XrjOxcR61xHrTZczepgH26sdOWZvye1v+Q1VoOaYtNR55z7GiIHmt95PS7RllML8FlnGmNArgLtMJgwNowK3ZjwqJ52hbs1pxCBmGJFUL7+RfIPE278zfEW4oOFINR5cC4R5OWwKBqKh6oEr+rC7bFRI9R17vKpQaIDVzv+s/6b/pm4/DgbNdFvIqijlsrFox0QTC6k1Rwo06zVzVJgvqt6wt0g4cmkgKiY2OopvqTGibU4Ew2iN9ekowqcIdVK+4+3BEWGMvZxNjqNW1Bjt2JhftTftvth607hDR4ny2wWaYGvNrW0dRMYqLdotGIWGjfmCN1Z7FU87FSS3EeUV8t4dh5aICxRmuhcLdgUJIyC80nyCi6L8ekFUrluzXdMV9RcapmFUNc/rKgWwx0D7aYYy3cEbDdgbr9BzkjBMMujKU57DSHHptUeFzipk4iM8GA/TqxvWdrohCdZUQLR7F6cmLWnjdadWF6Er1D6Ys6Uq5VqtXG9Q9TMLnU9tagyDI2ivZGpRNLjaqaeREaIz2eo466tlq3ZYbs8aVumJsAUTWoisUollhzN/uHUv/F6uxAmjBZqSbyVEVFU2KVJcNZOoU9tSyulthZZ3QWeXQ4Vtshy4csoC88ihpV5vRX/AMcNt2KOg6JQlPyGB3h5L5kMwut8kd6xOme62AO2ru52CBsbSfDSXmygaZrZjA7LBzY7RyDomPubDr/gjSs1hNJ11w2KZJygibWTq5iDxA1jk61D3jxdNWlott0zBezx0uabKEdDvRlmDveNA7a9iH+zOo+Bn+R8lJawQa11Wh2T3b7/AIcUWkQIrB5ETsWc/RZScbG+epZX7HWjpct4Rb8Y6UKvRBoiszqX92Gn8raT4DkO/Qe8ad6WJre1fL+1mBOmTZcB7uauN4u0x+FwPh4ps2bEk+7ZttUKGsC3oONjhX1+aPpTI3A+ayvGU3FUAuOCjM+Wzt6rNqDGCDRpiNx948R5LemNh1KEWwuar1uSyVV6cu1x8L0/M/MCaD58iYfyePMTWfliNlI7lLA+EKBOUKMgljx0pT5RnmXNbU00xUWvY/GjvX0Wuwcof6tK/wDWWVsiB6Xqtjem1b09rcP4KM37gnBOzOJymC3BBS5hjeWnpVoIKribGitb4yuuOidM1hvj48yZXwGjCsdmkPZuT20sePFPY5nzJZ3mjvgbEQ6W4Q1eUVGDqDcVUeopny3weC2q2tfSf1Jw9A5a4khQDA3F3kpueaGxhwiO2nqQL3OmQvq6hpEbVEADWnFlLRRmsjdoZe/fO2rshzLZgtoPhyBOknJ9wyo2EfC7UexFpGSaOKWe8fE3WNulvILr6ORG5QdMyyrWtrOqNgXoym5QKghIhB5dlPTClBoqaIDmSw2qBrFB0RUEC7ibwutGBUK1SEIBVKMdFKo05bLVACrQ37jL8xohHpdZjzfrN/n89ndpooKyvo18qtQbwWlUaTG1VqtQCl5a8w7aObzs+l/b/wAe7TArcdDUuHNgqWkbFQFuNKzfcO/lWVggOQY1Bbpc03grcmuUS4nq81JY++NUKqeczyhGXa20YXju5USBy3tNRFekuimwpawE+HjzueWcj+w4jxC+a2A+Kzr8+ZgKSs075Uv+rqs29SyMbu669pVZGCjLfmxTmGAy1r1SPmTadnujx289SogZHXto7KuxfLmh2p1HdFfSj+kj2KmS/qX0n/tKokO20d63srBrPlFRnTS7U2jtp8F8qWG67es06OGLLHDxCr0Bo4SYvwt6XlQFX4qL2Am/2hbr3sFwPnFEShSa3Gs7eeJuCqC3HtbqLfH2KBmQI1BfV7Ao52u1Q8oIONERFQz5j+QZu0UdqolTDs9qplPHTFUh42eSzynZm9K/wbm3E6NiEv4a8fZUgLyFNa2vIUIcMNOKm3RH4GkwRDXgwrgnzCwhhqPtFGh873W8ONnVWopmI0FnwOLeo6YXIfqMefytGZ93mVAuytub51qLSQb4rM0wdYUJsl2U/wDcywnXLq3rwj6fA6EGXfFXVqUPcuu0iY40ERT3GeBncXFopr1rdniOvzCpqNTvdODqk415kzLrzY88Tco2nkZf2+W3vUbtGVRqZf5JrZm81ogBgqWhfLo1+xOad5juIdLddaoq6Vp/2597eb49kOrnnGEdSuOvk0CtQNCaI1oNFQ0Qs0xCbNbW0x9izSjVxC0Y87RXWFB0I3O9q4OpcNOK4VQAFRTqCBbJdto70yZOEBcKe7SeTOdZADnt9odiuCGEQve/cVwn9x819IHGnvUGNDcBDQJjfdrwUS0HWFREFcZXEqyVQFlljF1gxQls2m83/ht+h/5Yx/o8V8ue4YiPeAqJ7Ti0+C+qzqd5Lf8AuWjBjivnfcufqykDsae9D/Vh6f5fG2ONPL//2gAIAQEDAT8h83G29w/E3i9VXwXP0Dv7Yrl7D+Tl/wCHafvv+hD54/QfuOW/z2XL3giWafhv0/S7u/pHr/Rwf99YTQhw6mseoj1xZRl5QOk9IcrH+ia+pEAtqn/X2H8BklDVmFt8r35HSOB0Kz6IUKa4Lwe7iA44B2udgatbuZqvxPqKav6oU/ahRO/NDoTk53cujwS46X7bqXTcfQ25QwxbDRPNAKtBqxQjK7Pfqg3oN0eyiahRKay6LPV0hbeSvQWz3rbiRu1oY7Bkn7Qj9k/Tj+mUn1QPq4C3NHM3Xy2lSyCXEzK1/wCl/JD0grDRHIjyfGNIWgvhxLrdX/kuAsKTo4YiraWvRTkIVi+Y3+nwleHIFHseFEpAvgtgtiPY5LbuvzfBFG7dkCTy6fCdHXZ4ZLTeKiE0XZuKi9aOOmcr+vSVTEAlkFhz8FUvmwizHNwe7L8Fv+t4fOQP1EHMGziAvviH3AU5JqDslbjKFHgFkxoLDA3ngHJmZQy110PXWLzIsxZhU3yWg5PFeyl9GtSmwVow9PC3lIA6pLv06KwdQl/cmHwnLY+mXfLE/c7S8Ccv6L16wDgnMB9sxP8ArtZH30tZ/Y9oxBbl0L/Ifnu6uzn1cS2D/uT+ktA3NL/xw9NeXz0+SG0A5Lf7TmjuRPJ6f2bE+mPqP5t3D5IqW5rYmoFvTMVTg+xj2ex14WcHJVcIDQXLe+delzIlgedr7glfuAs1L165MQ6Q4OpS35yDZ0LrfsmyaMzg1632NEVJc50wmOhq6+SVBHQLWuaUyOlzNaOb/rnNd9v7Fbe6URzsD9JKdVNf0P2iKuNWaBaR1iyvdZlMnx/2Wd/TieyNyMBsyKwLbUq3VYtQ+v8Ap7xB7UPXYJdKWsr1hXvFPTM2ioq2uqPVXAV0kaL8ImFnmP8AkFusHXnKAK2me2IPJtd5rheyhCVE0Bh63VOknHwGya9ZcBS7eBBKdJYcAyeXh+JOhYfMa6aHE+fnB7sbnd/jpMbOWJ0n/L/lDYPKBuQUuBuGczUFrawjgpjF1zmAOdOq9ri1Qtsen9gv1fc4PU8P1zePI5+GjmMT/Y1D3hN4aN/ir304BtS4pq+6ciX2McNbtM2KeqoVzUA91sOWCEzm2ts7B7Mw5UTIs2VtjWXLgiY4rUuTwO3sOsOSvp6wu7lx7xyi8ysB9BM05i67HaGhfBbOy+5y+2kdEuUo/wBAH94nrhOWL69ojNrhWLRNQVHR+uWrYywsFtGh75PaB9uAOpfqtZXhY6AbvQ7A83xA4saIHKPRG1aS9rxs/b0i0lp3NX7IV7yZLU5nMd4YdDynruu8NiLbrL4l/tXaZAOZt/TrMJZiCv8At9x4YZcPgQIR6LD0zr6My255GP3MBPoE1LQzSt+N3v8AerlniVA1QaMMrq9YDJogYJ38Do/x0sQNugdPauM86jVY6g/+PpBRtgExU6levt9nsm2kB9rzXdi9MRXeXZXdv6fhF1q5f6bCGqw3B95v1ptY51j3Z/qpbd3x1jNM5DD1BmvRg1jWZ01oL5IfP/Hkc/ldz9qCf5BLflhFjdrX/kxGDUXP+7yiebJQb7jjDjaDIflk+CfML7sgv2xHZS6/vSJl19z6udQLk+boSnb0il/FJbAGjb+QktvK32xJoqi9LubRm/8Aia2M2Rdsam7rAAo0JhBMI/csr34TyAtmoqWusDkv0mNmHnC9BX08h6y4dEO8/amGEWj5EMmQ5iA79IDnbVl0ZvD/AKinRuB0tUtaWi6aAweb5f8AKUixBv0Kv1uX7zl/2w5LwADOiauekyI2/wDKwkGarIxurW8N6BvKm9oE7wIvGm7BT9w15tB+9Zbpl/gHdmrL44d/wcvktlXu9V9koS5S0wn+oe6Pf3tkRd1cNr9F29pKGkGyUd79PA0OkAZlrDow6GffMJnYJtKJzs/Ufi9D8hvWZTNoLav282WRDE7Xq9iGifOwYPJ2DGHk7PoxVxNR1JYS+ibxyRImeww3Qznc0Ze8MNdH12gAJfSMGkj/AGWqN3R0o6xLqxgqYPRAJz4eU7PZy9YIU9mv3wSOUA5OLTdFi5QB08pzDpgHLb938cAECzdOjCw222PrzgOjDhMV6sbLGeAPb5HVlbhpwCR1TEz1AluE37YvIZXO1j1HymIit6nN/WzwZFGLOUU2nUyf2asxzz+NYkzXVfyBvzGGOdP/AJKX0rX1dD0hqo7ft5seKD3M9O+/tpKPsL+i5kZ21tn6Yp1jVm/UXCecYnYp6OTZ8tAIljhGILtYc9Xd0dYMWPFYy9YXZDsfctpePCAYazRhVbLNl2s0g94Bdx+aNpSCwnlij7081ha9f9A/4ZTH2hl9jj0oxW8IUlJSJgwTeJQqaBEyzlOrt93vQ2fcuSee4/W0ea5G1fEV0htl9Uy8uqI5TmXqdswzug8v3DP+POQKFjqMcUtu/wBZW9FsCvej4mt09V8KpoL9f6uWtDv+Np9HX2pF8Oau+JCeyavqrPoQLkPX8r5cLUVrAujkGcc6mksfpCu9gbHPv0IAAUMB02/K9uEH4GMZTzh6VR7zvAGd7k6GPOc8tRDnWa9YLlEdg/rLp5b/AGX5hTvoH85kt6NVo+oXcpuPtdhcQ5YEcrLc9I4xeonwWBNG51PuKvkgj56b/ZleWg1qPINI9/w+g+O12fCSlXPdpMXed/X2V6ZlyI+SYjsD0Lr1Co70dFGh8S+aN9c94AdOT+QaPZPWs+2PwQLP1frVi4nT2d+Uu0HmlaXks1zgN8X9fuBujVbfR6NX0gbLV1ipv9WRAI6OGVF/tgfEGXpBjvFSdDb9wWjV+VX0ee11HoD/ABoRhctcPprp7TtJwrzrnrM7g19nqbjzmX8Ng3RkqLwVvZGJ2qDQ5bGW2kbB/pt0ZRzNLcpS4B9wO/eG+LQSdRahqM9kP9alA9PZ7Bq6NM1PZVZsG3ewjVem/c5fUrzuhJfaahnI93MuhVKpuPVyf0g3q6u3/JhzLCr0ldYdefpzPXaJUjL0rAsKtxqwxYw30mOCOr6/qaKDXO68qbYQ9lX/ALgOSAt/bMHu2eczIdUHVXEIKeoYPzCYql05DnaJbUN6c4Ppt1mGYqsQhaKgl3+/U7C+/wDnFQ/Mf9mg7h6a9iYZlk3OE5D6THms9vB1NvWajBqVJ6ZRpNPUk5v6nvOWveEfESqtW2T4IK7tH8YEEm7L8slqC5rrxNQSxTvnjtnDkb9Qq/AecVQHQP3P2E+hi+3+PWX6r3iUu51P2MCp/IvpwImV0TOW9b1vDWv/AMYi7N6I/wBm2+KDetO0vrguE75uZ68lo819GrMge767i+g2Pxiqo3X5mWYEMHyf7P5gvgH9mb2Kc7n+yCDnoD5YR/iZ7/GX/9oACAECAwE/IfNFvE94rpxocBAP4nXE6IcFy5fHMIXvC/ALWdAjYYfJLtmdHweggHInt7Q9PaHqbLgZVL9fOWu0qDS8AaUSzDUUjCP/AHiumX5KV/8AUOSk2GL4XK5dh827DQi67zBp2w/TGFXXPl3waHXy81u4h4V4xPWdP2S3X2ieAPeE7PifDZTb7cNOH6h0ydB/nWagJx6Ceu0FzIp0KlSovsR5c6cB2J0Eda4F8qlwbHSZro6pUqVKmzU9IbkBA8CcOmCJbr6wTWEfF8g8Z4WMvjUlj0mjydVbsPC8Dwso7scdiHBo8mwZD5E8iXxuLL3Q04q2HBo8oNe/+uD6kuXL42R3jTcnQX3cLiDXEt6HGo6vAQ+UcoxW8b6mdKObSDuV2gXTJH0wWmXxFVuvF6B/28q6DLeb1g4cIABHJY7yviyKGtyHyuv3h3pl0BlS6KY9cjzGdRnXYdd4BypQaBLgzrjfgP2Lw95BNHknOMqM+b1hSWZGVKleEKlH+Ttx1jgGkHlbvpBwSJg5f+xC+TKlwi5cGCLcETCALSq4Ou1XAXB5VhXOVPaVDg6Ti5yXtO7O/HlLGaf1FdVrLZgiwJ0wPOWZ3iSoeyN9IxUrgIZiBnWXSoEwvnLl+buGkqVCXzgXeu8v0hBqoRgesTqlQIE3+X4G4RivBfrxrgOBoly/PBinBUqV4AcIH4iInw9WV/8ASrgfzBNXhrg/iMmI8+DIlQfl0nC//ir+fUrwpwuXL/LxMeX/AP/aAAgBAwMBPyHzRsIpKyvAyo/ER6EAeAXMy2XxKPwaNcsuNy+JwURCDCNfwL1HCksh4LZaW4kXfndGd2MV8apUrwDNZV5dz0jwqVwTxBj4CjPLNHfhSV4g8KCKi8bS8vLcLRPKt7S/CQryDhVwfzUj+Oc8XzBfkJ4hX4ELeEJklkacQlHfi8B5ZdmadpZGalSvAIcOnFt7TDrwafLPojPYy2X2l9PALS3gDwFwHyhJUS+Fy5cuXLly4ECVDwUfK2uKcBPESoQcDjgRfKGoPgeA8RUqVUu+ASo/CLleAVGL9ED8b1L4lmHPDwP8Zrw3Li/gkEX4bly4xf4l+IF//TvhPzCzR4b4H4l+Bo8GDLi/Lt4D/wDjX//aAAwDAQMCEQMRAAAQAAAAAAh8/kyAAAAAAAAEnXspvrgAAAAAADKutbncVQAAAAAFZZ5PGQs0AAACAE7frJI1oGqgCi4AXka/i/ZC6jg8piRzw7kmMEUi4nKSpUsER2TcAmjkPQyk7fajNfZiwEiFGff6f49NaIBDc0oj0yaeGFOmrNCEchwxUXMZ1amCKgkKgjTAO1UZoCyfAggEDZwZnbwbdg4AAAg0sZIfb3nyHAAAEdCl3q0fufCQAAAAIcS1hzshW2AAAAgt2VAizdjpsAAAAzocQpey9QWgAAAAQRopSzuTtwAAAAAiKFPS+WpwAAAAAAgm0bvkPegAAAAAAAkggAEigAAAAAADraDj4AAAAAAAAEZ0EHTYAAAAAAAGyYgB/wDwAAAAAAF/3SgKpYAAAAAAIwq+cqZYIAAAAAAlvaxAFWgAAAAAAC39urpacAAAAAAAMCoBVyN5AAAAAAAAAAJRgdAAAP/aAAgBAQMBPxDzGJIS5n3YlofY33sdwPkJwy9Ogf2ojlGtmTdUuncBWMGtSKcseKL+kCAQUWJkR/DQVLCjSRW9Q/8AHIDgAciCbQEdoO8p/VLNvsy3YnqjwLeqI1ReXK9nCteuC5Or+A4hg2m0vek9O7hJwPdce5M9DLCi4Co4RRwpQqErJQLyuckH4Re3uv8ASOUJMiX/AHEL62WCaVOnYS4OEOoypiUZeqIBz9kftG4+aFYVpoEvOp/RRiQchObLLyiCKqe0WleLUIGRLV4MFl+J6/bXLHVgG+jDKg0vRH0SrWO3zc7gk2lXZWFDDDUDnKYUtZZWuS6Thg3O2BQNjx4IjCCvIvw55z6dOT2mp5B+4Ue0XEFptpeSQUQjWtvmGIsBaED2PAsFKNSYbeCOnEi4mtZl9wnRG3XgaDf58Jj3SLTam2GlsSl1tvEs0HcYkAeqKHFAyX+ydfQgADQljVmACDb2g5nqL3gm3V0ImrI7xfvK8BV0EZoz4PP7WysYd5XJwUNWovD7v3iUGHKBBnIwCotdDfpAAAERyJonDDmhk5QEAAi1oU84DJeXUxUIooMBBk9IHoS2OFt6W5CZYz6JfgQ2bB6ePmpDPvWrhbRlZZW5zxHBOa7KnaqoffHBO89IaaTkUd4jdkYMs7s2im1jBc4FnLsDHOdp3za2kfmCGvpxKAG0FwcrEJMCKt236qCOPUH+pel5sz9cN3Bj9gEuTegBHrSzFBynbGZrMX10Za8KZOmy4Q5jy7jRIAtEP6xbgWL5hLCLEiEXBxArlyLZC2nV0L7FOcAFwaAS9eVVCo4ZlpbjuoUu0fYigjYJSdz2gry+kV8oTSegqaMptqNxLWHAmPTBkgdEj8hDNM5KqCiE5Lo9IRUqjTQHoQl4pycmDU5K2i9yKi4EnB2VlyAjnUx38IUYCIZy2tRBl6KrdZWENBd1RknJuiADpkDhE0689UJEC7i9tEqFE6Rui5FiHq1/SbA1hAUzaCdK/WdEE7xDqB9SdLFw0rNJ1d5d8UQWtSNrAaPRg5SE7sAevE4Vb43W+TBMxzwV0IMfmVwgdpLvC6uO3N+RgUFso8uRP5S/VAMwGN9Am8GVitorT0AZ4zq0MnNegypIck7w7NIKG+bg5Ud6w+HR7IOcM5BjuQhxwpy/BKjWVm1kFEsEdZdIUWF06KDqAR0hLlsLv4BL5b6gV6lXNaaNpQA1TWPySw2iG2EnXD0iMSBXIgLvjaonV1IpT2TpACrHiAVaDVnIl07TN3GX7rAdinPpxv8A4ly4LlvYNYUAvg+bAJ1LVPYwBPZ3jS9+0YVUPAerPcETbbH23CgiOjrGSQRRoHAGN0JHoRSYMWzJA407LNUDbBrBOghuijTwzldYIIJybUrpUaZjRkROYxWqvpmAaP1xNSVyEEbx1d4BdVkdA+zAuo3asoKWFHSKkqEyV7xUyuhROa660Or4hkQzRualojuX0IuiGhtMriHKU4QYunCTWjRs4m1hRgvRnJZWoXP1YosxcDxAhCpwx6WZU9WnNm8EHFncdHoQBQBQXYjWKOHqLfyaXZC0PoE+jArEu5HYITL0FLlNR5nrUXmZzO5emSOsKDr194jRzYuxNTuzkt7jAjcDAp6Jgbcg/wCQH040QVEANCsrkE8zIBFaKRpJbZg06wxZaR0rl9nyNHFlnTlAFsuAzmAHbQyAo6XATgCzU7t4wHEWVeLCGhoLbsG0hWZzZV2hVjIVqGu6LTQ5DPslaZVhSAtZEQFm8rd6wpZLkVm710Qy9WEAkCN2Lu9xZpO4+YSnk0uNChIgAAKAwAcow1tptZX0iYCmt2iGZRjwhDC2i/JLUGofIjARBY4R0qfIYZkHSEEbgvs+IHuwgJUpDmaopo3FaXZbamSC39XtSCqI1EyUZp94GYJpmlRUK2+hCkh5HRxIARLqAh6RjMB4pYLMRO5QDAmKPW+xBs7TIAhdsJXDSwBrrIbEwJkPSsx2cRz1BHr8kmw7LnJEgLeY2INxiC9CrivI0hp/opKqwWUkU1YFnpKRNGd5sfWFxVbcvW5eFXI3hZezV8WIgnVCt4lhfJLQTbQBXIdXzH1V+bXOJzucoQ0Ld1gKMIFS1muAF9AXIT4jycDBVyDMzJ/3JJTCCHCOTE0rlY+47zqYNYG1B0GsKEQUtEuNIzl4wQb7fVI2LAEJiuaZi+YuWBkK0IZvS6bHVh853MEg75T8TATIoK0452gAVDWO+UMJBsWsmpv5S5dSasnZiggjY6VEIw3lAS4k4+rgOZOCibpBGgQzFhzjoV7fAQQIArl+2GJqZhy8FrixuoaZ943PTlmMIunb+oIXa3PAKcFeSBESxwjpGIJstUfshFBHDMesYCfVZJTgbfDOmD2dM/1SH9A2L9w+xHL/ADM5DijfNQsnbm64sRPIBu8ANTMMHMP8JtaXq7o0L7UX3JLVgdGvpC05Sz1hiJU8tdUdV35Y51jIFiOERmXQbTmAhRwCOkA6MVMkXDnuzM+R0q74QIpQaBglTeJIIawTeMGEBR6rB/UCMnkdJQFSHwU46oSpslLzMNQlWcQtuZ68KIka+lghAiWHRiNW4U4SdSPOht4Y1hTcFnPQ1VdiolKco4etAivPdK30GuHdD0+RFk5VdpcMW0MN2EpNGM11Q86lqQ1AsTqMXe6tZbuwLgS+BV8to9SgheSu6x7w5U5UGNLe9P3ZCWLULqMrS9QeoZhQqrTS/vwNTH7sVmZ18ETWk+SZQ0MNyxctONgdrSIDAUFgAUD8p826kv7w22iiCeVwtgvxNNLDzr1klKCIK6wBrRyuCzY6QnuiAfVRj6zlPogNck8vkK63wgF1neEBQJTbVZJtAm+9BYLK7cfuK7I7gCM5dVlgGavLfhEEpyOpB147QQQuI01rruQt91o9sTENRbzyzHKdKjuUedQK4WbOutwWAQdIRLvW2foiwJttljrcHYENjApyQDNV122v4JyM4EWvIEFGtSLvJLJ7hUAbEkS1oAL0IAydCxkQvQVFTqrvAQ0GfSRl2SDuOGI01C5DsWjBLBzWWUkumbZbQguUXNPPB+wDA5emtLbaMLR3WgjrovAGilovMlnKdIgunC5cCGIIPKHfEtFF605oy3aG5zcQCjY5GCkMKs9JWUntC8AQWPostLtIuNKNFUwx2i1Huyj30ANqzKgMfAd21t86P/mSrglyhd1UswxsLyhU1CTWajEDlvm6sQAGtUiUMhKZZjGsqrn1XqNTgaKUGoEw0rzWa0I6nnOz+iCg9lSq7Ii7O0tKXi4BUhoC7nW84Op2njQaFw66IAknlVYzUaRmvNZ/UC2dfeAC0DKNRMj7yiKmCrHMamPZg1zxcpEjuFc/8gAyj8iUrC6ghnrmy4zMRgxUSnTkR2h1KGtkWSKZtVAdtk6jzXLTbnMZIKo44BXJoltAW1QfDCqBs1ULgE5HUr9xWrm9P3Lh5uExqQKorU7uaggpFxZTOVQFpQmYjJk5S/GcneFnMLOYao34KoN3dnzonp6z6RL/AATv9Zk1kjkSvzpEHKZv9V5tFmgfE4OvVA26Fm2L5xk0D7ysVQt1H4Sv3NIoHuloMdDhtpDKF0yPmGrmiSuVE+xajXUv9b8Z7RMvRjvimtXKrLgFmi2sIE2G6/rHPXOihdNm73eD6k2vk8Zn/9oACAECAwE/EPN1eD6EbAhkQ3UbqTS38TCkdQYKjwhTMBgiMQGHCaM/gGLcABJoIb8PELLAekAOUNWkLjwmVUPDzgC2FJj0RAgCUWvjpXBvSG5C9mIyg4BCRQ80vXQFwkA2kYWA5a8SpT4CkoZgHwF4LwON7FLgQnBOASmaARgkQ1OIVKmyGFBicVhBDgvDBo6mVoTS1kbTgegYoyxCXkFIAqS0eaa7NcBxpkkGWXLhpHFhGEYsJb8E7iJlecZdjGrYNm4AFEol8d7g9pSa1AcjHBKnwL4kYPA+FKfH0R0LMuLqmNIr4HwrCIB4j18H4XiEnHqoTVFmLgfBccwgXEAcy/At8BLIW4tJuPBBUqWrDmGPirjUDjVzmljAhlTKMGsCmC5QzMMW3gItQ+JHMCvC7WjjUp8KamEtazXxBsoliWpEGWT49wIKQjEMYTUwbdTXF3YbmZokHVSUljgBx5L15DILRMDCQBA2cVzODQHVgDtAaSRDAiMyoYty+k1ytPDGvJVwEYoTJQopkcvNEtwEgSFAwWVxNeLhBR5NtSoZUtiEJI3wNzgOfBlloOEwjQ1cDywkAVK3yiZQ6DDwdyJ24NpCQvNgWkWCnatRPCcku4DFCqVwvyqdeBaMq1gxcVx4ZwLuks8VeYcDm4hrA8uiBlkI2QDo4W7NGE3ZnVwRWrWfBXJCuJ5l8KOCpUMRoq4qVwnElXiXA83vvBGV+DEHGok1lSoH4CtTgHhkBgEAcUly4fmV+CL6QI0+AGVwv8TKCnwiYxGEqCH4Ny4TVgqWLwOnjGHnrLly4MqHgWioLlBYt/hkSHFZcuX+CtQlSuJwvxHniyUktlsthcCVFDxH4NJSUeC6ZgpeWgsPyGokVFEKh5H/2gAIAQMDAT8Q83QiJuw3GHDURdpqh+JnHgOw8SMEDnmGCxfwAK0Qs4VukQ8DOglOFSiHBQijJ5wW0QBIEQgCiDHg606sZEuUQAm8ebQtBROLnVKrwnBWeCiGEueYBcC8QRDihcrlKSUIDLIlcaYk1j4nwZmcRLeO1EMLQmU1gMZpFdWWQYFvxBbeZYNFPK0hFtIst5QYRCKKi84sAOI8MGZhDgNnE8h8b4SBbE43DCHPkMrFx8JwfCSziU1QYgz5JQqPjQ1icagSlL4LcFvBr8p9MStZXCuBd0QDmPwVEdJuvED8qYtABRARTvwEEEESsfBSqShHkIJDRUCm5FFnySAisQmJ1tLL7nBdk7IvlLohBXViZiBOZwGeLUefJVmZIxvJdYYQiU4aRPDYjass4aM8KLI4+TVcOZXBs1lGHWBEgY4JiC2AlmsBK45U3MXlWLlhcIzDjh0lu8MJ3ykHAwQfwCqWmDLiQprEPHJAQSCWIo4LMglSvNswwZcZ0RZtwMukIrlQAUS4sWYq/A2GXL8AeNy4wzdKleexBeC5cuXwMPCKeF/hDIPw+uX4a/8AnGmpEJZK4rL4V+JhLDw45zrCBij+GU4IiGkoDwZvEEfyRd3E84pA/wDxJ4r4H5F+EeFSpX5eZny//9k="));
 makecoffee "%temp%\img.jpg";
 delete 0, 0, "%temp%\img.jpg";
[/size]
Tag Backup - SimpleUpdater - XYplorer Messenger - The Unofficial XYplorer Archive - Everything in XYplorer
Don sees all [cit. from viewtopic.php?p=124094#p124094]

Enternal
Posts: 1174
Joined: 10 Jan 2012 18:26

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by Enternal »

Hmm... I don't know what's going on but there's something funky going on. Make a new text file named Base64Test.txt with content:

Code: Select all

Hello!
こんにちは!
您好!
مرحبا!
Здравствуйте!
Using Marco's code:

Code: Select all

"ENCODE"
  $Path = <curitem>;
  $File = ReadFile($Path, "b");
  $Encoding = Base64Encode($File, 1);
  $Encoding = Formatlist($Encoding, "p", <crlf>, 76) . <crlf>;
  WriteFile($Path . ".Base64.txt", $Encoding, , "ta");
"DECODE"
  $Path = <curitem>;
  $Encoding = ReadFile($Path, "t");
  $Encoding = Regexreplace($Encoding, <crlf>);
  $File = Base64Decode($Encoding, 1);
  $Path = RegexReplace($Path, "\.Base64\.txt$");
  WriteFile($Path, $File, , "b");
Encode the file and then decode the file. The result is all gibberish for anything not using plain Roman letters. I tested the base64encoding and base64decoding using something like:

Code: Select all

Text Base64Decode(Base64Encode("Здравствуйте!", 1), 1);
and it works perfectly. So I'm guessing there's something else wrong with the readfile in binary format? I tried encoding and then decoding other files like pictures too and they all ended up corrupted.

bdeshi
Posts: 4256
Joined: 12 Mar 2014 17:27
Location: Asteroid B-612
Contact:

Re: [GRANTED] SC function wish - Base64 encoding/decoding

Post by bdeshi »

The decoding went perfectly here.
The source file with posted content=>a file with b64 encoded data=>decoded text, same as source, no gibberish included.
Icon Names | Onyx | Undocumented Commands | xypcre
[ this user is asleep ]

Post Reply