Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

saving Base64ImageField Type using Django Rest saves it as Raw image. How do I convert it to a normal image

I have 5 image fields in my model , imageA, imageB, imageC, imageD and imageE I am trying to save the images in the following manner.The image are of type Base64ImageField

    images=["imageA","imageB","imageC","imageD","imageE"]
    for field in images:
        if field in serializer.validated_data:
            content = serializer.validated_data[field]
            dict = {field : content}
            modelJob.objects.filter(id=modjob.id).update(**dict)

In the above code content contains the raw data.I am trying to update the image using the dict I created (the key is the field name and value is the content).

However the images saved in the imageField of the model are raw and not an actual image. How can I fix this ? This is what my serializer looks like

class Serializer_Custom_RX(serializers.ModelSerializer):
    imageA = Base64ImageField(max_length=None, use_url=True, )
    imageB = Base64ImageField(max_length=None, use_url=True, )
    imageC = Base64ImageField(max_length=None, use_url=True, )
    imageD = Base64ImageField(max_length=None, use_url=True, )
    class Meta:
        model = modelTest
        fields = [
                  'title',
                  'zip',
                  'imageA','imageB','imageC','imageD',
                  ]

More info:

If I do something like this

modelJob.instance.imageA.save(content=content,name="image.jpeg")

it works fine and the problem is solved.However there are two problems with this approach first of all I do not know the extension. How do I extract an extension ? I am just guessing a jpeg here and it works. The next thing is Ill have to check for imageA,B,C,D and E if they exist and then save each one individually. If I could come up with a dynamic solution close to something that I have that would work as well. This is what my jsondata looks like that I am posting

{
    "title" : "Some Title",
    "zip":12345,
    "imageA":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxMTEhUUEhMWFhUXGSIbGBgYGSIgHhogIB8fHSAbHyAeICghHR8lHh0dITElJSsrLi4uICAzODMsNygtLisBCgoKDg0OGxAQGy0lICUtLS01LS8tLS0tLS8vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLf/AABEIAKgBLAMBIgACEQEDEQH/xAAbAAACAgMBAAAAAAAAAAAAAAAFBgMEAAIHAf/EADwQAAIBAgUDAwMCBAUCBwEBAAECEQMhAAQSMUEFIlETYXEGMoFCkSOhscEUUmLR8AfhJDNygpKi8RUW/8QAGQEAAwEBAQAAAAAAAAAAAAAAAQIDAAQF/8QAKBEAAgICAgIBBAEFAAAAAAAAAAECEQMhEjEiQVEEEzJhcUKBwdHw/9oADAMBAAIRAxEAPwC10fKegPUMh3+2BqKCJ52m972w+fTvUlfV3FhOxMx8YWaJIzDgwQd0m0C/7if64vZlUUGpT0KQL8Dnf/X7nxGPPcnys7Z7CH1NQpMHVUU6khxsY3EWsd8IuWrNRZxZi4KMpiG8WNjYH8xghlyldalSlUd2UxFSwVTsw0m48RbC/UsX1Gb2YWmDc3uJ/vgtuwJVou1nsGCyx2PiI43M/wBce066OTqp7D/0n538yb4HZctLkkaI7R4O9hxMb/0wY6bkmYo02aQGv4k/NhthWjNhDJZoemEV27hctHP9WwVyKqFdG9TS0T9rLwJaQNM2tP74nz2XSlTRjEOZUEC20T5P45383M71DKVaYp1FTu4J0jY9wNtvxikFXYrS9HLetV0p16i0bqjSNaxt7GIIuLjCzmKAaTMGPx+/7YaeqZPLlajtWVai1AtHTOhkJAjvY6QsEySfuwrdQ+4B2LU1kB0XeBtc+Y52M4pCK9EJE/Ri5qotMeoSdOgsAGJBG/ncg74r5unoaoEBAV4IPBHFzNpO/GMrZV0KvTqIZAgo8FSwJ03iCIIPE49oytN1qKbkFSN7iDPlb/gnDuhCFAWJt3cjn8fi+PM47HR2kAEyZsYA2H/N8Xummiz6XJpyLNEydgA0iJtci2+BvUax0vTazBhHkGRMmbiJwIq5BapWePVD1AYBUWX3tvf5xvUo6WYfaJuJ3I9/GIek10DEkSBMA34sDbz7YJU6IqK7s3eSCsT3AkhgALDcG/g4aehKJGRlUKArK5Ugi5SCbHx8bxGL6y5EHTLElWspbURMfqHif9Xm46rUYawAIRo1Akd24Hsf1WP9MG6WUaqpiqbHspsSSFdtRj9tRP5xCTDV6JadAaS5YBid3HPtxc8fN8Tq4EdywePaQTjXN5JyxQNIDkAntDeGvtMgwb3xrmlAEXOntnYWH9Qecc6v2FaHHI9WT/ClUsywDYzbvBmIB7YF53OKebyLVFatT0SxsQD2wDsPeALmfa84B5LMXA0EaWBm0sRI7f54P0+rlaZQlNKkMH5B+DzYX9hbDfcvse7BiUKiUz65Ukccrs3wOR+MD6NXtYtZCSQs/Ij422GJs51QEM6hrRdo3Mi+504DZdxp0yZNoJ28D++HgmxWFlrCmqxIB4O4PjyYGD+RTLhA9VHAA+5RGpjBi4mY3i0YWaaGleoNQ0xMWDMmoDcEEE+eMFeo9Eq0FDsLNe6xBsYiSbExeJiR7O0Esf4tdbekpF+1b2B8zbycGQJC7dwhjaAfnfbf84g6H0IVqSE3LEkMGEDbtIknYG8DcjBTPUwqhQrKBuTtPgSZ21D+2J8H2FWMfTunrRE7+/zvgd9QV0dRpuwuLce3nAtM3VJRiFYG0Hdm4JA333O2M6g1VtdSoYCWOmP25uLH84ZztUkODaOZJYldybx+3zgn05ADrYLB2B5/bY4FdAz3pu4YAaxK7TBG9z5U+x+ME8zXAcJfSswQVZoUXsDG5/l84jVbDRLT6kbovdB2W8/j84H9Y60EGgfxKkwACCQdxqjb84p0emGozS5gkwdgb7E8RGLWU6ZTpj1GQSZBgQXAsPxMx+T8nXsYoDL+p/ErVDNm0iNNjIvETtv44xH6qPUBQFoEWn7m4E/GDlSiBSBKDQplr7c8/nziL6XeoU9VV0amY6YsVmFk8jSJ+TgX8meyxkOj1H0vUICkCeCB7HYHYH84Jv0+mhim9SPYjfnkYmyWfJU01l3Ahi2w/bc/GLGX6NSCjXJY3JkxPtGwxWCtaFsU+tdNanUFZgSCY7vcW29/+HFbMZJ6pCvURlqRMdpBEQNxJNx/ub4ZKvUFq0l9XukTpU3BkATHGq174g6hlmp04CLpIuSPzB8H8/GM1RZMW+oZCllpqIppuFkKrQCCRud7kftOAZy/rkmVmRq1Pc6yJ0gi8GbDjDnlehJWV2WsKhgRqaSoAEhhuNzEAR+cImfoOhB/hj+LC2MSYmVMEQbf0nBUfkZV0XM9lwqJSaxu7kGe07D3mC2DOV6zTRFFN2ci5HpwJjTYgwCRO37Yp5fJElTUjQe2dMwrfcLXB0gDbnG/UloCi70GhZ0gxJgbzedz+374BOfehhyHVDmhTpvlwVBhWkgWA7QY+7bke+IfqijkUqilVpVFLQTUUwqEmBM2XYxMKb4r/wDTTqzMtSnIJDQFYwD2r3TBm07f5cKX1Zk5qF0zNJtYYWqEdpBUySgUKLiQt5jycWSEboEZ+jRp5h0ql29NyG7RNjaIJWTcRt84kzr5R1C0j6J00yTVUmXAggRqCgkAz7XtgNVqVlUCpTJaoQdUfxGEnaLiYMEiTB9xh3X/AAmW1rmsuzMhZSyNrlWAh2LE3LWAKrtsZknjXZPsX6OdpoqNUpLUI1KEYNThpnWHSQ122gmQZAscQ9Xzb1yaroE4sukuOWImJFpKgDbaYwS6lTyYoEgmnmEP8JRcQSZmTfVJYkbGBA2wp16lV7sWZfMm3t/L+XthbT6Eeg3kM9QQ6EoK0ndgSxI2P7iSNrjaIwJ67kof7VVrSVICmVdm5tdSADc4iWuwUNJDKLECCQbGTza2NK1IuVjUWb7hYQTCi5Pud8HGmpWZytUUshAaWuPGCT1H74Kl2k8CDabARH4vgTQWbyT4wVylEz23I3mQIIEjeIk74pk+RaLVHMtpBZdS0zJWODBJJXa/PE++CmW6hSKsF1jUjaGBknYAMCYXYgkYqtSDU2J7KYEVGmLkjtAnuje3G4GK9BaQVmolmYHcrZRJMzPHwZ9sc7jaNsYsvnyKKoaKvCEGGIi4XXcROp4I32mBGIUpApuzNq7gBaLmVi+/Hv8At5TzdY6noI6h0PqED4ViRGlRMjtHJngiSgpIY0yU0Htk/ggmN7zF9sSmgkdZ/wCF3iGtLSYW8wR54n58jHtM1BDKAwJsCdrxYXAncDEtWCupwDNitxO0nx7/AL4JAK1JtCQqgAgAmR5iRO+/zsCcS5UwqOyo1NQSzAemwliTMRsTpv7wBjSrS0qqU4fT3Fyv3NJYRNyCo8Da++I1qEJJUarCNluD+LHztbEheo2gBT2rfSOBLaj7RN/GLReg0WaOVdEGk9weYixIIMAXn4wVyD1ivptWADsJSowMtNt5taZmLYEZWqx5Ibhr298XsilNSQErOJUswNzG+5HBt+ThIy8thRHmPUytXR6hQ7tp3M90Ha0wYwXb6lr19FNwAkyWCnibz8gi3vghnsiMzlxVFNAdQCnkkwtwBBsY+VFjiCrkqrZxEaopD6jTdgDFMlpBHkNZbCAfIxVuloLB+Vzy06ppVZ9XULHlbbFRK/n/AHxTzdWqaqOjduomouwa0/aAIOqL843+scktOoHK/wAJYV6lEyY911EgC4uR773nr5ta1YOqkkhQBI7jwJEAzta2BNcFaBbI6pBFNx94cppA/Qb6idjcD8E4ZKWXlEYAsxXumwQ7GwI4HPkGL4i6f1qnRoaGogy5VlUkksW5Ym8gbbCw2jG/R0d30uTpCEtTMwYggSOLg+8DG0+iiZBk65WmNChgCeJnuncC4+N78YuUT6oDvJ5t7cRsI3+QMS/4x6dIIqwANIflRsABG9v5HA/p+YXSJaLQYv8A2xCbppBs3+oXpnKkBdJfUiTdmc2GxgKBeSfFsbU816aAGfT2EDmw2/AjjFAVErVrM0U5HcIEmRIm4gf1OCVWkR+eZ/pPP/fBk20jInyOcQWQE8/HH/y84nOfqNcOR7Abfsd8DMtS0jUSd57fHFhOLbVK36FQD/W0H/6gjE+Ul7GSJaGTVczrpOHp1AI0wNidQMfduCPj2wb69mHp0iUUHhp4HmOcLn0r1qszilmUCVVMMJEOYs6gjtnxa/nDcgBJYgi0X8f2/wDzHoIEntWJ+Q6YiacxTlGZrlmJvEHtiwN7fHGA31DkHfMIrwzltY8HkaQ3nwd4GOlNSG2kaf6EbY5tm8s1d/WfuplriYIEwNMbb7YEkPGXJnn1CxSlQoq7LqYhgiydIljFyA0wOcVMx0ug1EoMxTFQD7qpixBkEj/MYUC4F/yS+pOgui03p12ChY9OpTkyYG8R+/i2KGW+hatOvOZak9NlJcE3MyABIjUCQf6HGjGts0qo550/ONTqEByobcLvF5CyDAgkT74em+mstRyvqlg9SokK1wFWqpUzLEFhI+299gLgawWnWq6DT9OqZYKsimASAsBZUySbHbziXN1CtSk1OorK1RToCwoYSdMMZUC5k/6vyryJMkol7r9CpkWo0gUzLQfv1MQxhUhSSAwtEW7RbeU/q/U67sDUN2/8w2AqXLS4FiQbCRIAHthnfrdPuerFV/S0EtDk6maHQ8ECIi8QThSpZudRZNZNlXnSRE3iYMWtf4wryOQstlSox0E6Z0mNQBvc3mNgYF/AxA9fTBE694IBX9vzzIucMWZRKNNKbhTJuxTbZhIsbgtBM2b912pk4EhrNMSJ0j+1j/3wYtexOLR4xeoJhT3Fm02UTEiAPjaMUqxYSpCwQDpAusQLmJvExJ34k4OdIphNJ9Q6T96rvuTBDWMge48+4WvVmq7zvBJ8QQJxSE020B6R7kmAWSB/scO2Q6IuYyqVQzKWcUiQxqMAEP6baZKwAeCCPGE7LLTLFiNa6WkASftYAx/6oM8b4az1J1yVCEUCqyyw7ZKgTJIAmDc3+4zFpabs0QZQ6dSerUpu0Uhq7zsCDCnfnxz/ADBDJ+lqamtQFDUbQP0lQrAPoKbN9okgyRIgYHU8oxRzAtA3+4GBa8xB32tjbptErVVmH8NWHqEgFY8GODf9rXxFzYOjoFPPirl6NBKQV1gFyEAMm7KCDqldyRvxhRrpUo1KyatUObqZEFoFwYFr/NsGOn9XFSguXYHUoY06hgrTjuYqAmpmgkW/0xcWBZTNQ7bPYhdW3JkjyRx5xOe0M9hLpOU9ZgrkC8CT9xNh/OPHF8MVbp7qqKEEqwBIaffTYkCbX+Ywo0M1LBVCrKhDyZ1TqHj/AC8298MvSOq6UamCIK6hAJuPtAgCA2mNW0D4B5q3Ro0bZvpTQFKlT3ElSDYQb9xCwvHvzxeFKgaNLLKyq5bVUaJOiDCsVkntiwsLYg+q8ylbLUKi6QzCG0m5iQV/lIneRih0/rjfwUTQSisssO6++ok8yQOd/NumlEbSKlWkdbelJG/MAC0zxf8ArjdOrGkskAFWF9Jn8gbjnGz9MYV2pkim+zD5vHIAji5xLnMkKP8ACZBcwDFzbYGTO87e+I+N0MloPVOrv6CFK9GG3oiFj92B+R84AjpzFldayu7OAaeqzCZAt3wdrHc3BuMTJWq6dS0KkCEjQwJJMSNRj8+2I831OmSKbUSjqO4MCZA+BpIm84eMpLaDQ1VuorVy1fLvl/SCgrUWBpUxIJItEwfOxPjCR0bMlaOlVA0tqmYbSuqw4BGg/NrYOZTptTMIDRqEgkqUOqGAknVNgomPz5OLFHqgoVKlJwESsJkqSoZVAYi0wUB/eeZxe3JbFo1q1EJorSUIQhJabsTa83uCeBvbbDF12itNabTvAf39j+P6DCFRK+uwsxDaEvsJsDsBbyLeAduiLkUYMgDs6JAZmGlTAhQNR8XwsE02FaBGbzYNJqevTqhmBWNTbGN4EgEX5O2AnpMZRSFYCSWN7nxuf6/2q5rMO19LNUa3F4i3tEDicMWR6dRWi5dhqN27+YsFi/P+4wkk5y2D2Xeh5Ck4ADtq58mLkzeJPi5wQ/8A4jXlu0bTzO9uJOK+RpJRZIkBhpA7p1DiIOoni/GPOqZ2ojkBamjy03neIEAf8tiqiuOxl3oG5mkKbb2i4Bvb9XMj5xZymWNRdRdrngTHtjRGcghKekEkkg7/AMjx74GVqRUwao87/wC+OOaSZTsI5bpaVgJp/wARJEEmFsIZQTqUCRY2jbDlSQ6RO4G/98LXQMwwqnVABG7N9wvB/wCeMFOssNBbUokRBNmPi34g47McvCxJW3Qt/VP1K6qyagLdwUwY5OrgWMfOFzpnVPUqCmlVQgI1iDJ0i8MRO0i2388S5+alWVVSB2nVAHJgwZJJOm3I2xJkqI9OrWRANbLTRAV7VUQW7ohS2pvMH2wNtfsslSNus9YLOKOXZqjWI/VeNzN2IHmd8D8/ns/6BZ2ZVqWBcwJF5F4F+T8Yu9HyQGXfM1aNM0gxZgSQxgkKosRBax+N98D/AKo+tPUHp0GdUcKCh0mL30m4utvIMEHjDUKwn0H6VLUabVaBZ45IF4PdBEExIMXvcjmh1fJPQAB9NCC2qVBLWIANjvq98Vl+r836nbmKoAG5AKgeCYuR/bArqFWs2qpUqAyWbWPuve3I8+BhJJCfIMVNbggiQSQLSW3AI2Mkx4/pgv0daeXT1KihnAB0lbkOZEOCRe5A0+b2JAjLZNgrlHWwgKDeeOLf2wYWmzoLk10B0lhF2kQNV97Enk25xOfwJBWDc9Xo9wqUnTlO4MASYloveAv4POKOXpAvpXaDqMEge94gEwt+cW+ruwqLpem5ouVDAWZZJK/Aab7/AN9OoqrE1FkU6g1KrAAAkghQ22xP998UpJUGS3ZOvTqlMqAumQAXgsApDG7QOFJhfG4wq9drj1qiUwoRZUaeQCL/ADI+bnDr9N18qVqLXqOGIKhVLHsANjpAgBokAiRN+Cm9cCl3alelLAEJAnQLTJ0nsspJIAmb4f6debsnLoj6NVVQSw1cEAxYggGb8mduB+CVAOyFiGKK2mSDpBidM7aiB7G3OF/Ig92kn7TIHwf5AxODtLMtSpqDcVR3wDsCDH/q2vFpHjFM0dkhl6B1Vg1Bq8sihkoKVBWbySJU/qF+4zG0DBnpXSqLLWNFqL1lqaApZdDIFV2Iv2sdL3sPuiIst9OABZ3pI1Ihvu41doi+8GRvcD8G/p/og9HMEVHdKcOAEI1HSQJk2MyP7wZxDkm6KGvSKiUVqVPTSodRVFLFYGoKxSCS0qbXmCSAbyHNUEMoB0z90EkRJsTt74zMiKSIrBTL+pctEFdNokfqHvzGBlKuyMFBEjkWkHjwRtOIpNgGLo/+DWk5rM4cEenG7QrA2jkkAg7gG/OI2zut0BOofawY30klt5OmZgwLSd742+l8rTrsVYqH1Aoalwxn7GYXAni2okXEXMZX6KKZinSq1wsmCEOogwSCTErJFp+7jDOLlHRqfordHltVBlSzFg5PeIK6gv8AmaAI/wDd+LnSMqEzFNlUu51htQmyvpPaLkgG8/PnFfpOV1NVVRBsdf8AlBtrlmAhrQT5F9ySP0j1PTmxKux/iaTM2Okyb7D+s40XY8aSLH1B0KscwShClou+xtHiQSV+AIviTK505av/AOIZKjLGphc8EQTcC9o3wy9WqpUqJ6hIOhpAntEq3Bu1jbj+eFGn1iiKrF6T1aYtLLMb+x3Mm3tiOXsel2E+s/UFOsQKSkW0kmbbmPmSD++BGVymiKlclCCYCnvncAztY77RO+C308gdiVCLSP3F1tEz+82HgCMUuqZGnSao1OsXSI7iIkzYWuMBN1ZqAuRyzio7pWakFEk6iSWNwI94MEadt9sS5b6gh6buDrp1FZiTA02RoF7EEGfAgzAxDk8zT9VQw002fuFyCIi95mw+MMPV8nTqxTSnpKAhX3UaiINtoliZ972x0Kb0agH6/wD4011AX1XkTpO3cGJ2JhgLbaQLRjolPotJwhNR3d4JJNos0QIjYfyxy8150aluGZZAOqVDWgnaYvvhny/1JVCUVU2juPIEjs9pvBnzhudS2bj8Fn6soquZsDpqNEgSNRkET/6iJuB3XxQy00nXulGmAwiSu9p8HmJvFsXurvUzGWFYgJ6LNGhpUBWuszqBAHjjAapmxVfUzLDXMcQIgEkgA3J+TieaS9B7Q7UHo+mzApqA1LN42+3wfgRi7Q616q6RRLsPukgAe99pF8KOQzyA6tEQ33ARPBvzG0f/AJizV6vDMtFCEbeFBE8MSVsfeMDHntbNxLy5fMs4g00WT2oe6AJuSCf2EeMD85llDkq1JQbwKc/1af3xX6nmAGIqEyPuuTEfpuIvzbAuk9bMTUpoCpNrm3tthZNvoZJjx0kKqCnVTUAbFhBaeSOTePycZ1hVFKrVjSKaksdMkxMCCDJO0HfED9ZouTDKxW0+5IjfxH88Lv1V1I1CFUgdwlgTDRFo2kHGxzbfBhStisc7Xo1lqep/5k6UMgEMSDtF9VwCD5nHQ8wKVLp4AAmoIUWN9iQYvYki3jCtlen06mbouEnQQ5BIWAB2mZteD+2GDM5xK2bSk7TSpjVIExaZPO+n98dSyJjvsO5vpRrUBRRl9MoEaJUzBnzG/jnHOOu/TtUPTRlARFBmAQJlQJMG4RrE8Tzhy/8A9JUy9JpUOJhWdomJubeByf5Yi6TmqdcVMzUU1GckNDSNABCgKLjUR2mPzc40ZRltE9+wHW6bROWqM2um9JQJGnQwMWWbzB+b4Weo9OZYaGAqLqUsV2mJPN7xG/8AR6+t81RrUwnpvTqipA1A6TaCbSpgEe4thZ6x0rL0UWoKtSoSpCqTC7j7fENf3gTG+NKhHsTWzDUwYbuJMrffzx7j5jBrpvU1VgXqXIBhEbUDYEcyogkRG+B+ZybF9dNWKiDIHBgR7mSf24wSyeVkU0oVC1YyVQRJIWe0A/dvv4JxNpMVJos5n6MJfWzEpVnSIiDJYBZ/Vptpid/gCuqdIzOXGmmHajUIVR/mnaB5DDgYgzvUKr6OxlZZPsWt3SSWJtNyYkgADBVfqnOGhRDmmFRnVGQw02JZ5DaQZEEAcnBUZe2M2gP05kRvVqgvUYxpEFoK3Yi8DgzxO2BfUa7tRp0yVKqzMzKsSzAgEgARvH7YK5vOa2DMP4mmTWg3UTIAVgCSTo1GMLOYzjkLJIIJJIYmZMnf3knzOK41u0RbKmSqlSSDFo3iZsR72OGXKh6iq5SVXSvbAJ3O5kSYMb2GwwB6Zky7i4CkwSfB/vxgwrlf4SEQDFjvBNxJgzh87VgGj6cVShqMoLMG0wyjQRLEaWPfKrtFjG0zitWz9RHq5fLAiidMlbgydxYSGYAAmwgWGBXTcv6gMN6ZOoAMbHiCZEc8cjFzLJmaNZvTkkAFiokaZ0yCeAYE7bc45Vq0FMO9A+m/UqNQrUwZBJZTBUiIIJggHnzxbdXzmWJzboJKpUcUyJAKq5AKnke+Gf6X6mn+Po1HAp02qHXMae5GAWIsJIvEfGBXSeosczU1ICqu/pqDOmKh+2N7dvuI9sUjKo8ki643dG3TpFZk7ZWGLPEydxC2bu2iPc2OOhdMdKlGmioAQA7UxSV4O7BnqEyRcjTp0iBfhIzXTPXqujKEckFiikWvb3Jj9484ccp9M0xTQatDkdxVSQ9MzAJYW5MiCJAJuJ5nl5fiS96CnR6lE9SZKasAcvpKssGzsQo9gIifbC/kso1LqDpTpsQuvWgjuQhAYkXt/QYj65mGyWbyrq2sSyF9V21QQD+rSoO5Y7tsFxvnMzUXqOaIc0mVFOsCTDMswBcyARI/BxaM/HaLRd2Xer9ZWUp0KTb6SDPYTMiRAMpxM7HEGapLl9RK3IJF+086IP7fvc4r0n0o+ts4lQ30mnKvIkFf4dy0Te4g/OF7rHVy40mpWdiAw1KsLO0ACZv/AMtjmpzF6Q49F6ktSn6isylTqYLTMeSJ2Ei8TPjF76nyVKpSGYQakK/oAvquGbnc8H5xzzL1axplStUIT3NcAFYsQt7CN7Xw4dG6PVI9R3LUnBEEsQZ2MCy7cm+MvHRgBXyNPSFpgFjHfP2ze0Ryf5n82crk61Kq1MMaqKsOJgpqBkGbExAIE7e8GbqHRUpHVoRzuACb2tAG0GP+84Zui9CFUI7rIt8sbb8AAW3nGWR3SKca2xP6g05kLSMK3eu0llUhvhtO49jtjJdoFF4ZpILD7SQRM/Emb8YPfW3TFywR6ACmmy1L2DNqgi+7aJsDwPaA+TEfxBp9NXBkNsNW41GTBg/jFMhtPaGLLdZSl/C9MFQipqBgEQVluNm8nCalP06zKzEMjgK0RKydJ+DvPEYZaPT/AFHj0yG0DtkCIeBqj9rHj4wM+tcn/ESooEooDngLuPaAZ3/zb4SD3TH4l+lXBTUCWgSR29pHB1EyNuR/vTq5lqs06jKCxDCGCkAA/cf6CL7wcLvSeqVXMJYNIKmLgcDVyQT5/OGs9PFFNXp0lX7g4KkzwWY74nJfbdM3YK6hXRTTpktVabARtckmwsPPxvbFv/H1aYAQogiSrXv8hsLWV6xorvmCVZ4KU4UQw5JFxExfwLb48fIGqddQuGO9vztIA+BbFqa7MnQ21ulVKR1TsSjCLLpnTcG4mL7mSOIxT6YHr129RQwpKzEDawO1xMsbSZwT+oeprSoltNPU8hmMTJk6o+W98AunZkU6TNbUSDP+kbTf/N/XDYZ8o8q/QIqtjT0DKkpUrzBmASDACwW5O4tvxgb0/raZelUzLq/dUAAVfHeRMgDZRvijm+v1Uyi0kVVRt2m8OCdiN5BHttfAPN1qyCmSwKGWCXOklSJIjcAT7EA+MNw7fz/gL6YZzn1AMyKulUR2WArtuWOmwjcWt/th5+i+m1suNFZFCr2yPNoF7ke/mccq6J0cvm0os6hEHqM5sCPA8m+8C6nxjuPT+ntA1k6f0qbxuSTN7zttGKwxxjqP8km9AvrnRqeYzSqSFCpNSIBNzaeJkYG/WnR2GVqfxgaZ0hF0r2yY+7e/Mm+5wFrrm/Xq1lKOUYqNYGlypso1WELfzbCrn81WqaGrOx9VS2n/ACBCQRoBhb3X2HvhrXwB60TUHoUwKavUBQg6tpcHdQCSoN/ew22xLTmmZorFSQVBBLQJsAfAJNxGxNhgFQDF20ldMkrIJcCPtEC5m0xz7YY+h5tddT1W0LTpEwzRYr20wW3YP233H7YjNO1RorQO6ZQOZinTQ1lHcFRWLguSxUk9qgXOqRxGBGbyjLVdXWoml2lF1MqARAlyBAuN5+bDBrKdRpUmKU2ei6xpaZt/lkQSxJOwjfHv1Fk/XBq1T3t3s6szdkCBBMKDqAvtER5WLXVCtcgNn85TfLQLaILA7k3UaCBa1rkXI3nCzT0FH1kqQJHMmYvIvwbX/Y4I9QpqEBDD/SZM2Jv/AKbgbD+pwJqZBgqsysA0xtBgwb/PtjoxJJbJN7DP05QRSGc9hqJB3Ki5LAEeBgzkqD06XrKikUzOoiSwZ4iI9x8YD5CpFBTEMlQD3NmsTsdxt7WHNvJZ6uPVSmkgyxK3UAXbzYCDa8R5xOdttButE9KgrgD/AMtadR9TKAD39yg1DAaNJhBHP4sZB6aEqxJpup1kEkwDO2oGZE78zxYFlnI1g2IYFl32J4JubxHzgx030aFZmzEsPTfSAfM6SQNhBO0xO2Fk30FS0b5CrTILgxDyD+qL3E8gc+YM426VR01dagKTJksYmSSTzcmce9I6VRqK9QEqWb+GRMDtZlH6jEgDk298UnrdumBcHVLRwd+d8TbkpaG8k0Hj1JRmzqEhiD2MFK2+4GStze5t+cN1fMAij6gYtURlQGqwFQCCAQhhDq2MGxHnCRlOnp6lAMwdXCxYq+khiI94sZuDO4iSNGhXpvUNDX2htIZSbMADcmAVB1SDMAW3GElFqwNPdhb/AKj5ZWy1LNJIKVVBIBvIIkFiSRMRM74vmgBn6dQ1HX1sssVGYTIJOqYIgyLQLYpfWRb/APlimyx6kEAH7WRw7agVWJA8bn84odYzoanlNmf/AArIBE3BtMf+mwxSErjT72Wg1VHQ8xUUiK5Y6lgPCwRvvBiZH/BOOVv09zUOkF4Z1kCWhDEwBeRsR7+MEst9b5r0TTNNO/V3sIJ4MTYkcDjxiH6QrN/jGOpg06vcLF1gRIJI328jEre7EtdBTL0dLIaupWIClSJuNJHEzp/74dsl00KXMQr3K2Cz/mgefcnCz1U0/T1ikKb0yKhUCLzFiRuJ/rPOL9Cq2YX1BVenIAGxURebrB3jHN9xRdjpA3rDmktSWJCg6WFpPAE8j298E+kZhqlAA6VJF7d4HJhQBttPtecUeo5ikgKu+vUJWVBnSSSTAAHsffG3090gk1alWCQbDTCAMtoH2i8jnbDpOaKSeifP5damX0CkWB5YkAQTJvubxz84V/p/NUhTqZZ1IIOiWiwiwBPIF/O8ecdJq0VEWkFd9xJ5HF7Y5H9YZdaWcYup9GsCYk2Zf1CDIuNQt8Ypjg7cJMVO0N30vX0sUV7BtM8nSY38MIf/AN3EHBXrnT6dSjVpNZGRkJmSLbzzpIF8KtLL1KGlnHeqio6rESoBN+dSz+QPODWZzRrUw7ApTjUF/wAx4JI322B8b4WcWtrsbs5l9N6pem7QVaN4GofFzMR72wQ6lmgU9FET1WJCdtwDuNR4kE/udgSKP1hlRTzKvfTXXvDbBv7yI38HBHprI1NauYqLrPYQ7yywYlRM2YfbsFEDacds6aUw66C/TPpKmKaMtR1JUKxIFvIESIHj23xH/gtNtagjeTz7arxi3ks9TpsIbUosQG2Ox7kb5OzcbYvZzP0ma6MYEDWsnzuabEi/nHFKTTtmoW+t5hqtRFDSWi35gG2wO/4G2LXW6ChUTUAgA1Gdhafm0fy8k4BZasBUeoqsQCQkm97Ak3O39cDOq13AMQYbumZbifj/ALY7oxqooKVDP9X9UWu9MKBoUAidieAI3EfG52wGHUX76xqmnWmy01PcDM939jgd0vKCKru8KFkIzQCSDzDC0QBF8R5YdhcszQYAtY/vPkgfnDqCiqJtMlyNdmadbALK3uRc2jULSTI+bY7NlfqygMu5p5kMyUz/AAyYcPsN5MTeBOObdK6JSHpslRXMEGmCAxdRwwPLbWFjM4LfWlagqp6NNleqwYyzENIib21S0GLjnAeTypCL9jD9O9fVqSUlpPUqSzuFUAbwj6nI2OnYjkXjCb1aq4eolSmfUJfWsgCxYkqQIAIJMXMjfFrp3WK1FQoqxTa2oGNIm8SduCRtHzgQ/UlYHsYksWep5BNze9xANxx8YSM227Fk0yPKUvVpgqwVDJpBvu+4jTqi4sPk284srWq1KdR7EUw2qXOupIiJJkt3avhbztjdshI9HYmWVgsBQvBmbknZbH2jE9fpiDLIZ0IulmJYQzlwpa1xA8HwPfCyezKWqF+tS0MYcsSt42k3gedM/vOL9HOirT9OolR1gl2V40mCNWiwfu0n+d7DE2eYV66sKhqGZZiAvZFtK6dQkkwTMyvM4myVcUzTVmquqAkqB9hMsKcm5YI0nzeIvAUvZoe7A+ao0qOR9QoPULaNUm48gSQGgHxucLVbqrMKc39MEKrXAEkxfcEnnBD6mzDVIJY6VMAH99/O2/t7YXRjswRTjbJzab0MvSHaqwQkKmoNIEBJ5ECwsBtgr0nO+jqFRS9PUwAtfSeBMXkn34OFfKZgDTdR5Jk+bmAT4wW6eT6kqwZjJP6geftMC/HvHzieWO3fRuRZyGXIrmpT1607oQkR8FYPtFr4jrsRWARVggBeRBAuZG45McHGlPNN67EkksVc6fdZMxFryRa4GLfozmKYatIZW11E0ibGBdRpNr6t/acSap7foDVljrko1elRYiijKDcE2ESdNhLHgnc8WwIeiRBOwFo25wTyoK0sygiokAkwVYhTZ7lo4MX/ABvgflidIkgNbbxcX8i398a9aDItjXCtMBI0+bk3/f8AqIx1PpOb9ZxlyfVosodC9PUxlZZdYeCygN3MvG208qdqbpYkFZ08CZEj4jxF4w6/SnUDSMNWFMssTVZtGmYQ0+3SCq9psIFhycSk12Lytm/T+lVKmWzZdI0a0W7AsQglmk3BKgHSFAkWvgF0HNAtlXYEgKgudtTlT+DOGSj1t6j16QKOapKwft7SYsVNjsNhJF+cJPTguioht6agd3MOBptyJJkft52KSabrZbHKKHvMdTpPQGVCglSRrcGE7/u7SWKkfn+WBf0p05BnabWKnUZiNmMWb20n2HxgTnsq4ZyIkGTLcXIk+bG1jtbEj1qtBaQZLJULaSNiVEwx7tLDTbawg74hFMEXb2db6zkUqUypEiINtv25+MA/8JCJTUEgT9rFQ0R27AYk6r1iocuDTpxWIkVSSEprvqLGRJ+0DyRxgLlaGaDL6eZlS0wRMqRdgIEx7725xDJhi5cvRRM26jRJqUsxEhDpZSSQQTeZiYMXPAJ4xJ03rNUVFo0wS9lZZG6tqIkzDRq38jfFqpl8z6TIQrBhAIGgp4OnYnncXG+FLNVKlJmchg+kFiASdSkKTcXkaf3xfDpUUWzp5zTOgRx6XBCGSNVgAdrgzPEYTf8Aqn0gtQLUkI9PvmRIAEFfMRfBPonV/UKKtgoO27nYSDtYsTjzrtSpVEqFNMKxczeCYAvbg+9vzgPL5K/QtUwLlMw2YyVHMISNO4n730liCbQIXTtcx4wWyyKqwizTpgOgNiwe9MC0wIg+Co42RforPVKPr5cSTTfWqzuBeItMj+pweyVUlgA+gMzKZiyknSDvEMSvi+OiaSbSHKH1zQFahp0aakygjhdU+87iY2I9oTOkdRj7izNI0RteS02JiwM/OOj57LilUC1GA1d5MBpGjTbYkCDA98czzSihmiywaZJcDjS09p/2xT6aXKLixRhoVqpUVBS0Ce1gTMb7H9xyRgtQzLEblveB/tiajRpogV1poGJ0u0auLtFwDNiYjFLOpSptpD0m5s7ACeLCD5n3xFvk6SHTKdAJ6BCatZglvtVdywM7kALf59sRJTFPp7VGUFq1XQpO+lbsf/lIn4wSzmfU6kVixjTBAESfEgC8jAnP1kXRTYErTH27/dduRtxisctvaE+4gh0esuYo/wCDpd2ZdvUg7GD9snwokxgFUyij0w9TTqdlMAsCqz3z+oahG2CnVerf+HY0yELMArBiCAYm6tsCo8mfxFDKdLpGvVQPrppTARtUq1RgDvI0gxMbDnDqSpyF5X0HvpXpdKqyCoXVXYqjCD3R+LyRtYxfGZqnTqdTpZenWapRy/arMQSLlmAZREAnT7RGwxR+lulM1RQKj019MVajKSOxlB0TFmKzz741+jO+rWzBETdLCFJMgQLEAACBx4wFrlKzJLsK/U+YFGqaVAgHVOpTfuAAQCLGLyPG2FxUM3XUoWCLHVIG3gxG174m627ai7adRIkLuIt+xOKhotKOWAkyA/3Fd7FrSTcg2iI8YWEdEJHuazEDYxMgSbe3gi+JMsoqU9LExrVRGotcj7REC3n3xrqW47y19QWIYeBuAfwcedAyxBNVxKoZP+mxhgPmL/GDWgqLvYdzZOXytIoykGoyspXdgxUXiYMDb2PjFKnVrim0vb1A8hpDNDAFW3kCQRbjE+cy1TRMMVIaQNpuwNz3bQTx84H5gEBWRlGsWUEkr28sCAYBECJ7rjCKOilUti11gy+kRpQAQIAMbkCf58+22A4wb6ijSSzCQCxGkktaxkDYn/MRH9QuPRw/ic3smyVKWuCR7fGGTo2TBZ1M6ASJiCLMY39hv5wE6TV0kysgm58Dk+9uMM/086h6iLJUKb+wQAki03O/tzvied9opjim9kuYU0cyBRIYtS0wVHMrp99ok74q5tHpwhJU1AC42FmMGdRBsJ43I5MzVK5OYDqoAQBRaREmN9+Tix9R10FdGpoqEMdfYSN/8uxF9R5uNoxyR7SYzrpA+lXZS6iSI0mNyDxB+MQVnAklFIBAPuTJuLcD+nnG3ql0gafuPfMMfaJ28TexvxiDOU4e1+1CSbQfb82/Jw6irYnC0Gs1SUUgVBCG+wImYuw2twfa18R6ggC1HaooH2hp/nJifI/ngm7r/hCSIcppkH70AnR5OwMkR28RaHKdMWplyWqaKaqurSs2LwLiCzB4seLcYg6XdglCmFPpjJPUqKSCEtpNM6W3lu6LnchTsOI2G1coEr5mmpNneYNnW7SY3BW5O3PGGX6Pol29Onl0qFZao3qlVWwABEH1Lyw2MW4vRyVKOp5qhMgKacmIh1IkBtgNX/198LCDkNCPLQLpu4puoDMqhVYkA9rXXVzOokA3nBLrvUjmaDD0wrUgHYg3BB+4WEyJn/hwvdNrlaKmoYDMh02OtY3A5KlDv5w9Z3p9OhS1uyansPTaRVQjkBYXgwST840lxYy06B+ez9WF/iOlN0XUAR3NaDLGJEeZtsYwWoZ2okQPVCoIl4hL6BILIS0zxGmNhOKPQFNTJ+lUK6gWgKQQRpFxx90zyIONvprLmrlSrV6utGI9JPIMHcgWiePxhIU5NIrq7Qcpdf1qFNGuraRNpjULe8bf7YTfqqppJ0uWD9piJXX27weYN8T9Sy+aZC1IMlNwoful20EoZ9yAD22I5OBWay5pqahqgSQChIvcgGBcEASdsGMeMxk6GLo1KnoRrlghmRs2oAd0j5k/GCtPp+mnXVnkEiRBkjTOm/leI8YWfohhmcw9EI6gqSe7SSFg6ttp4P8AscNOT6fUUA1KbEanCF2hhA0ie4D7QNv3wmbG0rA5W6OefUaPlc3TrAA6wA8jtJn+h/thgo0i1JKhGlHlLSPuYhTYcMBfzHvIz63yJIKyWIBZSReVibjcXtc/PmX6O6mlfJnLVXAbV2XIeTBkGYkRYf8A7jpjcsafxoMWEeuZlKlFWLBKjfwiWU2ZXCvBHs7G+8CMIvUuklkqPuUu3sJ06drkWJOwHzhtFOm1WijSJCs67EVEJptDR2lhFxJm/sIvqeqqCFQpTUENpMlxsd/bk+BhlLhJJGf7KX011JWpqrGDcMRYng6iDcHG9bICqxLCoYOkFFJBA9/MzOAXR6qUjI831c2jYRb2+MHsj1TQgBNzc3U3Jk7mecLl8ZNxMpFbOktUUVANbku4ufeDO0AHbgjFeooqS7LG5kHnkf8AbFatUD1ahB0fpCk3F9J8jzzzjajTZEQST6rHYcC3Bna5kbHDcKRJm+XrD1AmsIhQk+otmj9IgHckX9j8EfkVdVeqVimZKkg6ZJIULN7gEQfF9sGhR1d9FkLtIUzFtm1KZtEj3vvGM6qCAiNTX0kKk6Z0tsAI/SPut5ODGaWqAmi7XpmhkKtSTqdUXVO5caWgzYBTA8BTPEy/TVAplgxsHk/1W0ewB/OAPX86xy9GhadbPAH+Uemo8yTrNrGRGG6l0zSFQWKqEkT+kBZ38rP5ONk1j322UfQq9UoBKgBfVIkEiNidr7R5i/nfFqjnFdlbRqSkDqBb7gRA+L4G9YzCNXYjUVUkTvIFp/YE8/jG+UpXYBNjqJIkAKRv8krbB4+KsS/RnUcyGiGPZYTwNhG0DbA85mo+mnqIUmDH6bCSTYwSOdp3GJaz++oERbknzyIufxaZxplXLBUVIYHuJJOsE2kcRtb2w8dIWeRobs1SSmopiXV47QZAEiw/9ptNwJJHOAvWh/HehSJCaiABwQAhNh4AHJwT6pUBqUFAGoUhqEkjUZHtMKI5nzgPJSq72FvMRuDH4xCMtX7KTkuKBn1FkynqB3ZzTZVVimkEMoaJt3XuCO2B5MAaQJIAvJ2wU6znjVE8u5c2sd73E2mPG2BdFiGB8Xtj0cV8dnKEMpRkmLBTJj2NycNfSM6r5quxplAyrpU3MQtyQLzZiffnC507OFWJ3kGPaZI3+TbBbobilXLC0CDIM3AIgfEG28Y58j7sticU0WOrZk+pSqppLFzUZVjSG1AhPEqN+O4YJf8AUOokUygEmpJaIjUpbTxzJ2/tin9X06VMUBRYNrL1GvsW0iBYEAaTvN8DOuUZpwpJ0lT7nUCJA523FtsRircWF2maZGifTpuwZVYsNZ+1oJEfiBcY261VD1HYzTJAaEJICGLD9/jE2VIbI0gNXbVlpPJ1bX2943J+cDutytVp2NOBxa9v3GKRjcmw8fGw902kBQ19zIKY1Dj1ChWR7AlTG1hIw4/RldDkYZdNMamdiVGrUBK7aogCRNz7YQ+i58ek4vZGIHBNjf8A+Me2+Gf6V6Oc1Q/8300UFWp6yADurb8CRJH9MRzJK2x5KOmuwx9M9OepVrJlqzUMuCCWn+I4ZYU3sqzyRJA/OBWfyHpdQqowKBqagESxO66pMyZvJOC1Lri5enTIX1q1UST+oatQQsJH6VUEWkA7YCdbr1DnVNSslV1pgsqLAQgzAgkbnVY4MWrpGxryAKErToKN6TuuoWkLqWP/ALfiPfHSfo8FqDwNKKoKpVe5IlifAMXsBx745tR0o9QsO2nmiSCdwZJEHgxvjoucpZcpUyyB6VVe+mkhUY6bLpmbowvuYmbW2RK9iy7A/QHZK2bpDTqSszb7q0PIi57Sdp3GJ8jXrClmKdJaQFOox1VGkrs57ANoqbyCb8YDdPr1MpnFkFmqUhzuVlAPaBpgn2wQzvW6lPNVWVBpdEaon6pgob82VQcQkvLl8oaT6YU6r0+syr/iMyxBcFNI0BiAJBAH2mFi5O9zNlXPfTiCo8iFciCkKL73SAfB5uZx0DolcV8pSYlZFmn2lbAzvHt7YXPqGto9NCthO5IYi3zeAOBONLI1kq+w0uxZ6lkHpaTr9QLdzOx1FGXy4BVTOxDD3w+ZPrYcFnpoagEMwkBYJYdukgW5HjCr1FaAijTfSDUB1dxDhwyTxCyKIiNw2GjoWVbM5EKwU1Kb94Y6WAUBACVG2kAWO2LtckZ9A/q9N6i1WdHsLIWEpJGoxzvhF+ls1/hs7DwEJMk+D+qT4N/xhz6v0t6JV1QGmwDrZrRwNY1GLbxPjCN9SK7VhUnc+RNze3t/LAxNNuD9mSoN0KtVw7NOssatG0TpYswBPkczbBPMZxCmtQrUqgDxp7iCI2iBF7De+84ioVUahT7x2NMkgKZPd/UfyxWoZioVrUt9Pegj9JnUDEgQZI+PjCSXJfwNVoqUumIv2KqRABgkx/cx5k74np5ymkqrGxvqW84DrUY1GTVukgHg288+3vgfSzzgXYTztb29/nFFib7Y0UkaU8yAhGgNJmTIInneP3wayXVWRSophxTplAT+kG7R+APiPfAPK0HLgUgdS9x2gQffweMWFBpowJu8XHj/AIcUmk9HPvsv0K9MFDTUaqjnsDMWTmZ4BmYk2mcFZQZbWmoVKesuh1QyiTqm+mQAd/E8wv8AT6Oqoukxa1+Taf5xglmsvArBNkVQCf1G5aAd2KlbfjnEZJN0aMSj0Cmcxm6ICkgODpmbKdemTxNvzh6+pmrUKBcOoAQCLTqJuRMk7xY/0wp/9OHUV2eoANKkEMSIkg6hySIwQ+v+sCqiIgH3FtQ/UAO0eeZ8WGHybyKAzegJ9OqdVR2+2mhJm0FiF23NptizU6yAlZFEgtCHkj35tAn53wP6ctQUzUVSAD3H9PsL788HbGy5fSQ3cdY+3ZgJg7zeSSLccYdq2xLd6K6sCIEgW/f++5tgz0LKoIZy8QVJkNveYIsPa/zijlKt6ihtJViApHcSYEkixAAnFwsyB6gpfcCZpiwgGTtZYBN4thZp1SEit7Jep5pVrO6aiVAWTETB2jcQbGBfi2AGez06oi+/kQI3/czjMxmGeRO7T4BO1/xgfnKLaB2k334/5thoY1asabtFOpW4WyxEfmf9sR0x7fGN6lTvkxtG2PAf9Nid+PjxjuWkRCOVIOlSwAF5ieP+fucX8jXP+IJTkDiZsAZ83m38+cDcsovPiJAkA+PMRf8A/MEcuyiqAoA7ACo+L7zIMzjlmlsfGgr1oJ6dIx/E9aCxP6dB7QNokT54wM6mYHqKzakKhSeLW+IvvO0YtZrPdyI3cobUg2AJ3/lfEHVUUZUy0MQNKyIY67sQDeADE7YljtcUUlskq9RDZZVuHLBqnaNIuSNMbDuMg84HdcMm5nSpHx3GP64uZf06k06YaCAtIMRJbtN//tzz7YjzWTLHSWWyaZjYg/z8XjFYtRezR/FlDpVRRck7XHngj9sOH0l1N0XUEUgNB4IMWPk8/sMLeU6YsMNRkW7pFzxHMH/hwa6RRKUnipwDCmdXBBHi9weMT+ocZJmd6Oj1MqalFmNUNpUEMYLDSWM/Bnm/GFD6mzmqoGGif8O5LoILkbavwAMHPozOrodSbaLxsnBEHfeRxhN+oX01WXcem4HxMjxsMcX09/dSY8JbTIatXU+YlSob0qh5MWDGRbgm5wzdD60Eq05DEps0AA2KCZI2kfgcRhXNQVGcqfuymn3LKCymPcAftiak6ovaDNVImY03BiPwMdWeN0HJpWXvq3PerUpZkWZappkTFipKmOCNBH7Y96wzU2oNCkOrBj5J7wOSIUW35xR61Po1EQHQiipEWUqwO97xPO2B1fqJdaYaewqQdrbfyDG+EjDlGL+LRO24nSf+n+aH+GqU0ntM91yJiRtgL1J5qOGlmKsotJPudzNv5Y1+laFWjmA6uppVFlr7yNQJ/wBQ2xbz6UlzJZp1cMH2mYsQZIBnE5pVaLRVxsDdXrFqCNUYEp2Bl/y9rLI/SBKm3IwT6P1bM6f4NXS1RBUEEBWKk61OqIA/tgf6wVKlJxIKshPkoSFYgf6SAD5vij0vN1UplkKhqZFdQRNiCGQe+oX4viuP2ghnL9TqMo1B7WIAJIEE+DaMCvquqmaRSqKjKgXY9xBBmeSVJ/8Aw4Lvm6tUCpSJpSsF11SwOykBogFSBPj3wD6rnalIS7amAAsQeSADG/59sSx6na7ASfR/VKZDUaigrU7BsAAbMSPgg/gYuUKj5dhUPdpLUqomdSbE2N/0sPacKGRrtRq2kQ025/7YZ89X1sVEKtQKCJnbdreVEW8Y6sip2NdKwXXRSwqKxnXJLC+ltubwsfOPepBg500Uqar6im/HBjjBUZRalEqCFIMGd5402iMWUzFJRpY3FrWH9ccss+9KznnPYv8ATqbaNSISpaJBN/IBiNgBtv5xTzKBWvItceRvH8h+2MxmOpfnRRLVkmWGkmAe7giwAGN89mB6QpoSbmTeL7mDtP8A2tj3GYKVsLikiSnUIoqWbucteIJWyyI8nXM+BitkumvXqenSEyDoDcgSd7Dgj/bGYzBerZKthPO5ZqWWRNGnlmVtiwlQ17Hxgb1bqzd+m4YINRMt2fqn9JmRbicZjMbGk+xpaNenVvUpS9RixJHxICxPwZG0Hg74OVc0yU5IBLCCDKkL9uqVaxlJsPneBmMxsi8gLYK6jklpABCCYBJ5DXESN+D+2KFWqyXWVU2YgwYjz4nxjMZgRe9hl7AVYyx+cYpg3mOYxmMx3HOE6qaSfThltf5499/wcT1M7qdREEKs8z2hf7Y9xmOfimUx+i31SrqXLkfcraSfIuQfO0Yo1FBpVYVTcS3Ihj42kcm1vjGYzA6X/fJWS2XukOnpuI7tJ0kzJJ/ltIxUzWr0tRMgk33mf9749xmJt1P+/wDsSTrRZ+mVDMskwpE/3jBLoEK9QP8AaWgAi0yJnxbGYzC/ULTRRKooZugVESqVpvMIe42Fu7TJB4i/zGFTrVao9bU5JlHgxbwY+LfFsZjMQwKshoLoh6QoFPLPAP30z54iPxq/ng39PVKJksGDiFlTAIEWsPbGYzFvql4s2T8UM9LoPr0aoQEI6sLmQpg2BFxuDB845p03IvVohqaMzoDq8KsbmeQQf3xmMxLD4Y21+hYx8Q50Oq4NNwwAMNpYxIncCL2Jv7DFv6ncNW21KpUm/tt7b8YzGYVdsbG7iyhWrNDFQdWrUSPG554XV+wxX6bnR6iyAqxpaQD2vIJv/qiRtjMZiuNJoawglSqilAzEUyQVB22KsFkwCsG35xQzrBxpYR3C/LR88W2EYzGYX+qxn0DurUdK038uwJtMAJA/mcEMjmgS2knUtMhSdzYGLbxP8sZjMWa5Q2Izc5liQ0drD2uY8jbFLMZ0qYifyMZjMShBOVUc0ls//9k="
}
like image 659
Rajeshwar Avatar asked May 29 '18 03:05

Rajeshwar


2 Answers

Here is how I solved this problem. None of the answers above had this information

However there are two problems with this approach first of all I do not know the extension.How do I extract an extension ?

The extension can be extracted by using the following code

from PIL import Image
decodedbytes = base64.decodebytes(str.encode(image_content))
image_stream = io.BytesIO(decodedbytes)
image = Image.open(image_stream)
filetype = image.format #Contains the extension

The next thing is Ill have to check for imageA,B,C,D and E if they exist and then save each one individually. If I could come up with a dynamic solution close to something that I have that would work as well. The solution to this was simple to use

getattr(job_inst, field).save(content=data , name="img"+filetype)
like image 83
Rajeshwar Avatar answered Sep 19 '22 08:09

Rajeshwar


The images encoding should come from the client, this is how you can know which format of each one has. Example:

base_64 = "data:image/gif;base64,R0lGODlhPQBEAPeoAJosM//AwO/AwHVYZ/z595kzAP/s7P+goOXMv8+fhw/v739......

You will receive it from the client and you know that is a .gif

Once you have validated the extensions and the base64 you can convert it to images and save it in your OS:

Convert string in base64 to image and save on filesystem in Python or Decoding base64 from POST to use in PIL

Once you have the images in your OS, you can link them to your ImageField in the model changing the name property: Set Django's FileField to an existing file

I hope that is clear and helpful!!

like image 36
Marcos Schroh Avatar answered Sep 23 '22 08:09

Marcos Schroh