#Region
#AutoIt3Wrapper_Icon=icon\bl-xl_1.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Compile_Both=n
#AutoIt3Wrapper_UseX64=Y
#AutoIt3Wrapper_UseUpx=N
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Run_SciTE_Minimized=y
#AutoIt3Wrapper_Res_SaveSource=y
#AutoIt3Wrapper_Res_Comment=QR-Codes erstellen
#AutoIt3Wrapper_Res_CompanyName=René Holtz
#AutoIt3Wrapper_Res_ProductName=QR-Code-Generator
#AutoIt3Wrapper_Res_ProductVersion= 10.9.23.0
#AutoIt3Wrapper_Res_Description=QR-Code-Generator
#AutoIt3Wrapper_Res_Fileversion=10.9.23.0
#AutoIt3Wrapper_Res_LegalCopyright=2023, René Holtz, Lindau
#EndRegion

#include <ButtonConstants.au3>
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUITab.au3>
#include <TabConstants.au3>
#include <Statusbar_small.au3>
#include <QRCreator.au3>
#include <WinAPIConstants.au3>
#include <WinAPISys.au3>
#include <WindowsConstants.au3>


Opt('MustDeclareVars', 1)
Global $zint_path = @ScriptDir & "\zint"
Global $zint_exe = $zint_path & "\zint.exe"
Global $iCorrLevel = 0, $iErr = 0
Global $hWnd, $inFile, $editQR, $btFileExit, $sIssuer, $sKontoname, $editCode, $png, $hImage, $Bmp, $iCurrTab, $iCorrLevel
Global $r7, $r15, $r25, $r30
Global $udMargin, $udPtSize, $udScale, $cbResize, $inResize
Global $btDelete, $btCalculate, $sPath = @ScriptDir, $sFile, $aMsg, $iErr = 0
Global $aStatusBar, $g_sString, $g_sDecoded, $g_sEncoded, $sEncodeCode, $g_sEncoded, $vCode, $vKey, $sKey, $vCreate
Global $ActiveTabCount, $QRCodeText, $aInfo, $strWifiText
Global $strMfaText, $strReplaces, $strGiroText, $vCardText, $strCalText, $btActive, $matrixText, $dataText
Global $ifIniExist = @ScriptDir & "\settings\qrcodegen.ini"

#Region ; INI erstellen wenn nicht vorhanden
If Not FileExists($ifIniExist) Then
   IniWrite($ifIniExist, "Settings", "name", "QR-Code-Generator")
   IniWrite($ifIniExist, "Tab1Colors", "ErstesTab", "0xDE5247")
   IniWrite($ifIniExist, "Tab1Colors", "ZweitesTab", "0xC35831")
   IniWrite($ifIniExist, "Tab1Colors", "DrittesTab", "0xD36E70")
   IniWrite($ifIniExist, "Tab1Colors", "ViertesTab", "0x9E7394")
   IniWrite($ifIniExist, "Tab1Colors", "FuenftesTab", "0x578CB5")
   IniWrite($ifIniExist, "Tab1Colors", "SechstesTab", "0xBFE3BA")
   IniWrite($ifIniExist, "Tab1Colors", "SiebtesTab", "0xCFAF7F")
   IniWrite($ifIniExist, "Tab1Colors", "AchtesTab", "0xE8CF77")
   IniWrite($ifIniExist, "Tab1Colors", "NeuntesTab", "0xFF7F50")
   IniWrite($ifIniExist, "Tab1Colors", "ZehntesTab", "0xDDA0DD")
   IniWrite($ifIniExist, "Tab1Colors", "ElftesTab", "0xE0B184")
   IniWrite($ifIniExist, "Tab1Colors", "ZwoelftesTab", "0xFFFFFF")
   IniWrite($ifIniExist, "Tab1Colors", "DreizehntesTab", "0xFFFFFF")
EndIf
#EndRegion ;**** --- ****

Global $TabColors = IniReadSection(@ScriptDir & "\settings\qrcodegen.ini", "Tab1Colors")


#Region ;**** Dialog erstellen ****
   Global $hWnd = GUICreate("QR-Codes erstellen", 1700, 1000, -1, -1, $WS_SIZEBOX + $WS_SYSMENU)
   GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKTOP)
   GUISetBkColor(0x00E0FFFF)
#EndRegion ;**** --- ***

#Region ;**** Bildvorschau erstelllen ****

   #Region ;**** Gruppe Bildvorschau erstellen ***
      GUICtrlCreateGroup(' Bildvorschau', 1250, 30, 430, 440)
      Global $Pic1 = GUICtrlCreatePic("", 1250, 5, 300, 300)
      GUICtrlSetBkColor(-1, 0xB9D1EA)
      GUICtrlCreateGroup("", -99, -99, 1, 1)
      GuiCtrlGroupSetColor( 1250, 30, 430, 440, 0x8B008B)
   #EndRegion ;**** --- ****

   #Region ;**** Trennstrich setzen ****
      Global $strich1 = GUICtrlCreateLabel('', 1250, 485, 430, 3)
      GUICtrlSetBkColor($strich1, 0xDE5247)
   #EndRegion ;**** --- ****

   #Region ;**** Beispielbild als Vorschau laden ****
      _GDIPlus_Startup()
      $png = @ScriptDir & "\beispiel.png"
      $hImage = _GDIPlus_ImageLoadFromFile($png)
      $Bmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
      _WinAPI_DeleteObject(GUICtrlSendMsg($Pic1, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp))
     _GDIPlus_Shutdown()
	 GUICtrlSetState(-1,$GUI_SHOW)
     GUICtrlSetPos($Pic1, 1300, 60, 360, 360)
   #EndRegion ;**** --- ****


   #Region ;**** Copyright-Bereich erstellen ****
      _GDIPlus_Startup()
      Global $iSize = 32, $hResize, $hRed, $hGreen
      $hGreen = _GDIPlus_BitmapCreateFromMemory(_greenpng())
      $hResize = _GDIPlus_ImageResize($hGreen, 120, 120)
      _GDIPlus_BitmapDispose($hGreen)
      $hGreen =  _GDIPlus_BitmapCreateHBITMAPFromBitmap($hResize)
      _GDIPlus_BitmapDispose($hResize)
      _GDIPlus_Shutdown()

	  Global $strich4 = GUICtrlCreateLabel('', 1250, 785, 430, 3)
      GUICtrlSetBkColor($strich4, 0xDE5247)

	  GUICtrlCreateGroup(' Info ', 1250, 790, 430, 155)
         Global $idPic2 = GUICtrlCreatePic('', 1540,810, 120, 120)
	     GUICtrlCreateLabel('Copyright 2023, René Holtz' & @CRLF & @CRLF & _
		                    'Betriebsbezirk Kempten 3, I.NB-S-N-AUG-B 08' & @CRLF & @CRLF & _
	                        'DB Netz AG' & @CRLF & _
							'Äschacher Ufer 37, 88131 Lindau' & @CRLF & @CRLF & _
							'Mobil: +49 152 3 7440 162', 1260, 825, 300, 110)
      GUICtrlCreateGroup("", -99, -99, 1, 1)
      GuiCtrlGroupSetColor( 1250, 790, 430, 155, 0x8B008B)
   #EndRegion ;**** --- ****


    #Region ;**** Größeneinstellungen ****
       GUICtrlCreateGroup(' Größen ', 1250, 500, 430, 60)
          GUICtrlCreateLabel('Randgröße:', 1260, 527, 60, 17) ;+27
          $udMargin = GUICtrlCreateInput('4', 1320, 525, 50) ; +25
	      GUICtrlCreateUpdown(-1)
          GUICtrlSetLimit(-1, 10, 1)
          GUICtrlCreateLabel('Modulgröße:', 1400, 527, 110, 17) ;+27
          $udPtSize = GUICtrlCreateInput('2', 1470, 525, 50, 20) ;+25
          GUICtrlCreateUpdown(-1)
          GUICtrlSetLimit(-1, 4, 1)
       GUICtrlCreateGroup("", -99, -99, 1, 1)
       GuiCtrlGroupSetColor( 1250, 500, 430, 60, 0x8B008B)

       GUICtrlCreateGroup(' Korrekturrate ', 1250, 570, 430, 60)
		  $r7 = GUICtrlCreateRadio('7 %', 1260, 597, 60, 20) ;+25
          GUICtrlSetState(-1, $GUI_CHECKED)
          $r15 = GUICtrlCreateRadio('15 %', 1320, 595, 60, 20)
          $r25 = GUICtrlCreateRadio('25 %', 1380, 595, 60, 20)
          $r30 = GUICtrlCreateRadio('30 %', 1440, 595, 60, 20)
	   GUICtrlCreateGroup("", -99, -99, 1, 1)
       GuiCtrlGroupSetColor( 1250, 570, 430, 60, 0x8B008B)
    #EndRegion ;**** --- ****

    #Region ;**** Dateieinstellungen ****
       GUICtrlCreateGroup(' Dateieinstellungen ', 1250, 635, 430, 143)
          GUICtrlCreateLabel('Ordner:', 1255, 676, 50, 17) ;805 +41
          Global $inPath = GUICtrlCreateEdit(@ScriptDir, 1315, 674, 300, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE)) ;+39
          Global $btPath = GUICtrlCreateButton('Ordner wählen', 1516, 692, 100, 22) ;+57
	      GUICtrlSetTip(-1, "Ordner wählen")
          GUICtrlCreateLabel('Dateiname:', 1255, 733, 70, 17) ; +98
    Global $inFile = GUICtrlCreateEdit('Daniel-Mairing-Test', 1315, 730, 300, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE)) ; +95
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GuiCtrlGroupSetColor( 1250, 635, 430, 143, 0x8B008B) ; Rahmenfarbe Gruppe "Dateieinstellungen"
    #EndRegion ;**** --- ****

    #Region ;**** Tab-Control erstellen ****
       Global $Tab1 = GUICtrlCreateTab(200, 0, 1000, 950)
    #EndRegion ;**** --- ****

	#Region ;**** Erstes Tab füllen ****
       Global $TabSheet1 = GUICtrlCreateTabItem("  ")
       _GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[1][1])
	   GUICtrlCreateGroup(' Grundeinstellungen ', 210, 40, 420, 280)

	       ; Kontoname
	       GUICtrlCreateLabel('Kontoname/Benutzername:', 225, 60)
		   Global $mfaKonto = GUICtrlCreateEdit('', 225, 80, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Anzeigename
		   GUICtrlCreateLabel('Anzeigename/Anbietername:', 225, 110)
		   Global $mfaName = GUICtrlCreateEdit('', 225, 130, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Securecode
		   GUICtrlCreateLabel('Securecode:', 225, 160)
		   Global $mfaSecure = GUICtrlCreateEdit('', 225, 180, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

	       ; Herausgeber
	       GUICtrlCreateLabel('Herausgeber (optional)', 225, 210)
		   Global $mfaHerausgeber = GUICtrlCreateEdit('', 225, 230, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

	       ; Image
	       GUICtrlCreateLabel('Image/Bild-Url (optional)', 225, 260)
		   Global $mfaImage = GUICtrlCreateEdit('', 225, 280, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

	   GUICtrlCreateGroup("", -99, -99, 1, 1)
       GuiCtrlGroupSetColor(210, 40, 420, 280, 0x8B008B) ; Rahmenfarbe Gruppe "QR-Code erstellen"
       Global $readCodeFromFile = GUICtrlCreateButton("Code auslesen aus Datei", 210, 400, 150, 40)
       Global $readCodeFromCam = GUICtrlCreateButton("Code auslesen mit Webcam", 380, 400, 150, 40)

	   GUICtrlCreateGroup(' Weitere Einstellungen ', 640, 40, 420, 400)

           ; Verschlüsselung
		   GUICtrlCreateLabel('Verschlüsselung (Standard ist SHA1):', 660, 60)
		   Global $mfaCodierung = GUICtrlCreateCombo('SHA1', 660, 80, 380, 20)
           GUICtrlSetData($mfaCodierung, "SHA224|SHA256|SHA384|SHA512", "SHA1")

           ; Digits
		   GUICtrlCreateLabel('Digits (Standard ist 6):', 660, 110)
		   Global $mfADigits = GUICtrlCreateCombo('6', 660, 130, 380, 20)
           GUICtrlSetData($mfaDigits, "6|7|8|9|10|11|12", "6")

	       ; Timeout
	       GUICtrlCreateLabel('Timeout (Standard sind 30s):', 660, 160)
		   Global $mfaTimeout = GUICtrlCreateCombo('30s', 660, 180, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))
           GUICtrlSetData($mfaTimeout, "15s|1m|2m|5m|10m", "30s")

		   ; Counter
		   GUICtrlCreateLabel('Counter (Standard ist 0):', 660, 210)
		   Global $mfaCounter = GUICtrlCreateCombo('0', 660, 230, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))
           GUICtrlSetData($mfaCounter, "1|2|3|4|5|6", "30s")

		   ; Standard
		   Global $mfaStandard = GUICtrlCreateCheckbox("Standard verwenden", 660, 300, 380, 20)
           GUICtrlSetState(-1, $GUI_CHECKED)

        GUIStartGroup()
        Global $mfaTimebased = GUICtrlCreateRadio("Time based (Standard)", 680, 340, 380, 20)
		GUICtrlSetState(-1, $GUI_CHECKED)
        Global $mfaCounterbased = GUICtrlCreateRadio("Counter based", 680, 360, 360, 20)
        Global $mfaGroup = GUICtrlCreateGroup("Zählart", 660, 320, 380, 80)

	   GUICtrlCreateGroup("", -99, -99, 1, 1)
       GuiCtrlGroupSetColor(660, 320, 420, 400, 0x8B008B) ; Rahmenfarbe Gruppe "QR-Code erstellen"


    #EndRegion ;**** --- ****

    #Region ;**** Zweites Register füllen ****
      Global $TabSheet2 = GUICtrlCreateTabItem("  ")
	     _GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[2][1])
     ; _GUICtrlTabSetBkColor($hWnd, $Tab1, $aTabColours[1])
	   GUICtrlCreateGroup(' Email-QR-Code erstellen ', 210, 140, 480, 280)

	       ; Email-Adresse
	       GUICtrlCreateLabel('Emailadresse:', 225, 173)
		   Global $editAddress = GUICtrlCreateEdit('Emailadresse eingeben', 290, 170, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Betreff
		   GUICtrlCreateLabel('Betreff:', 225, 203)
		   Global $editSubject = GUICtrlCreateEdit('Betreff eingeben', 290, 200, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Emailtext
		   GUICtrlCreateLabel('Text:', 225, 253)
		   Global $editBody = GUICtrlCreateEdit('Emailtext eingeben.', 290, 250, 380, 140, BitOR($ES_WANTRETURN, $ES_MULTILINE))
           GUICtrlSetBkColor(-1, 0x00FFFF)

	   GUICtrlCreateGroup("", -99, -99, 1, 1)
       GuiCtrlGroupSetColor(210, 140, 480, 280, 0x8B008B) ; Rahmenfarbe Gruppe "QR-Code erstellen"

    #EndRegion ;**** --- ****

    #Region ;**** Drittes Register füllen ****
    Global $TabSheet3 = GUICtrlCreateTabItem("  ")
	   _GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[3][1])
	;_GUICtrlTabSetBkColor($hWnd, $Tab1, $aTabColours[2])
	       ; Servicetag
	       GUICtrlCreateLabel('Servicetag:', 225, 60)
		   Global $giroTag = GUICtrlCreateEdit('BCD', 225, 80, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Version
		   GUICtrlCreateLabel('Version (Möglich: 001 oder 002):', 225, 110)
		   Global $giroVersion = GUICtrlCreateEdit('Betreff eingeben', 225, 130, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Zeichencodierung
		   GUICtrlCreateLabel('Zeichencodierung (siehe Hinweis):', 225, 160)
		   Global $giroCodierung = GUICtrlCreateEdit('1', 225, 180, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

	       ; Art
	       GUICtrlCreateLabel('Art (SCT = Sepa Credit Transfer)', 225, 210)
		   Global $giroArt = GUICtrlCreateEdit('SCT', 225, 230, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; BIC
		   GUICtrlCreateLabel('BIC der Empfängerbank (in der EU entbehrlich)', 225, 260)
 		   Global $giroBic = GUICtrlCreateEdit('', 225, 280, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

           ; Emfpänger
		   GUICtrlCreateLabel('Empfänger:', 225, 310)
		   Global $giroInhaber = GUICtrlCreateEdit('', 225, 330, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

           ; IBAN
		   GUICtrlCreateLabel('IBAN des Zahlungsemfpängers:', 225, 360)
		   Global $giroIBAN = GUICtrlCreateEdit('', 225, 380, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

	       ; Betrag
	       GUICtrlCreateLabel('Betrag (Durch Punkt getrennt):', 225, 410)
		   Global $giroBetrag = GUICtrlCreateEdit('0.01', 225, 430, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Char
		   GUICtrlCreateLabel('Char (Zweck. 4-stelliger Zahlencode. Optional):', 225, 460)
		   Global $giroChar = GUICtrlCreateEdit('', 225, 480, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Referenz
		   GUICtrlCreateLabel('Referenz (Strukturierter 35-Zeichencode gem. ISO 11649 RF Creditor-Referenz):', 225, 510)
		   Global $giroRef = GUICtrlCreateEdit('', 225, 530, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Verwendungszweck
		   GUICtrlCreateLabel('Verwendungszweck:', 225, 560)
		   Global $giroZweck = GUICtrlCreateEdit('', 225, 580, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Nutzerhinweis
		   GUICtrlCreateLabel('Hinweis an den Nutzer (Optional):', 225, 610)
		   Global $giroOpt = GUICtrlCreateEdit('', 225, 630, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))
    #EndRegion ;**** --- ****

    #Region ;**** Viertes Register füllen ****
	  Global $TabSheet4 = GUICtrlCreateTabItem("  ")
	     _GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[4][1])
	       ;_GUICtrlTabSetBkColor($hWnd, $Tab1, $aTabColours[3])
	       GUICtrlCreateLabel('Internetadresse:', 225, 60)
	       Global $webAddress = GUICtrlCreateEdit('https://www.rholtz-office.de', 225, 80, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))
    #EndRegion ;**** --- ****

    #Region ;**** Fünftes Register füllen ****
    Global $TabSheet5 = GUICtrlCreateTabItem("  ")
       _GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[5][1])

	       ; Vorname
	       GUICtrlCreateLabel('Vorname:', 225, 30)
		   Global $tbxVorname = GUICtrlCreateEdit('', 225, 50, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

	       ; Beschreibung
	       GUICtrlCreateLabel('Beschreibung:', 640, 30)
		   Global $tbxBeschreibung = GUICtrlCreateEdit('', 645, 50, 520, 250, BitOR($ES_WANTRETURN, $ES_MULTILINE))

	       ; Revision
	       GUICtrlCreateLabel('Revision:', 640, 320)
		   Global $tbxRevision = GUICtrlCreateDate('', 640, 350, 520, 20)
		   GUICtrlSetState(-1, $GUI_DISABLE)

           ; Nachname
		   GUICtrlCreateLabel('Nachname:', 225, 80)
		   Global $tbxName = GUICtrlCreateEdit('', 225, 100, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Geburtsdatum
		   GUICtrlCreateLabel('Geburtsdatum (Format: 1987-08-01, JJJJ-Monat-Tag):', 225, 130)
		   Global $tbxBDAY = GUICtrlCreateEdit('', 225, 150, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

	       ; PLZ
	       GUICtrlCreateLabel('Postleitzahl:', 225, 180)
		   Global $tbxPLZ = GUICtrlCreateEdit('', 225, 200, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Ort
		   GUICtrlCreateLabel('Ort:', 225, 230)
 		   Global $tbxOrt = GUICtrlCreateEdit('', 225, 250, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

           ; Straße
		   GUICtrlCreateLabel('Straße:', 225, 280)
		   Global $tbxStrasse = GUICtrlCreateEdit('', 225, 300, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

           ; Hausnummer
		   GUICtrlCreateLabel('Hausnumer:', 225, 330)
		   Global $tbxHNR = GUICtrlCreateEdit('', 225, 350, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

	       ; Land
	       GUICtrlCreateLabel('Land:', 225, 380)
		   Global $tbxLand = GUICtrlCreateEdit('Deutschland', 225, 400, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Telefon
		   GUICtrlCreateLabel('Telefon:', 225, 430)
		   Global $tbxTel = GUICtrlCreateEdit('', 225, 450, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Mobil
		   GUICtrlCreateLabel('Telefon mobil:', 225, 480)
		   Global $tbxMobil = GUICtrlCreateEdit('', 225, 500, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Email
		   GUICtrlCreateLabel('Emailadresse:', 225, 530)
		   Global $tbxEmail  = GUICtrlCreateEdit('', 225, 550, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Webadresse
		   GUICtrlCreateLabel('Webadresse:', 225, 580)
		   Global $tbxURL = GUICtrlCreateEdit('', 225, 600, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

	       ; Betrieb
	       GUICtrlCreateLabel('Betrieb:', 225, 630)
		   Global $tbxOrg = GUICtrlCreateEdit('', 225, 650, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Orhanisationseinheit
		   GUICtrlCreateLabel('Organisationseinheit:', 225, 680)
		   Global $tbxOrgEinheit = GUICtrlCreateEdit('', 225, 700, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Funktiom
		   GUICtrlCreateLabel('Funktion:', 225, 730)
		   Global $tbxRolle  = GUICtrlCreateEdit('', 225, 750, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Grad
		   GUICtrlCreateLabel('Grad (Titel):', 225, 780)
		   Global $tbxGrad   = GUICtrlCreateEdit('', 225, 800, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))


    #EndRegion ;**** --- ****

	#Region ;**** Sechstes Register füllen ****
    Global $TabSheet6 = GUICtrlCreateTabItem("  ")
	_GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[6][1])
	GUICtrlCreateLabel('Text eingeben. Maximal 35 Zeichen:', 225, 60)
	Global $microText = GUICtrlCreateEdit('', 225, 80, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))
	GUICtrlSetLimit(-1, 35)

    #EndRegion ;**** --- ****

    #Region ;**** Siebtes Register füllen ****
    Global $TabSheet7 = GUICtrlCreateTabItem("  ")
	_GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[7][1])
	GUICtrlCreateLabel('Text eingeben. Maximal 4129 Zeichen:', 225, 60)
	Global $standardText = GUICtrlCreateEdit('', 225, 80, 800, 600, BitOR($ES_WANTRETURN, $ES_MULTILINE))
	GUICtrlSetLimit(-1, 4129)
    #EndRegion ;**** --- ****

    #Region ;**** Achtes Register füllen ****
    Global $TabSheet8 = GUICtrlCreateTabItem("  ")
   _GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[8][1])
		   GUICtrlCreateGroup(' Einstellungen ', 210, 40, 420, 220)
	       ; Kontoname
	       GUICtrlCreateLabel('Netzwerkname (SSID):', 225, 60)
		   Global $wifiNetzwerkname = GUICtrlCreateEdit('', 225, 80, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Anzeigename
		   GUICtrlCreateLabel('Passwort:', 225, 110)
		   Global $wifiPasswort = GUICtrlCreateEdit('', 225, 130, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

           GUICtrlCreateLabel('Verschlüsselungstyp:', 225, 160)
		   Global $wifiSecTyp = GUICtrlCreateCombo('WPA', 225, 180, 380, 20)
           GUICtrlSetData($wifiSecTyp, "WPE", "WPA")

		  Global $wifeHideSSID= GUICtrlCreateCheckbox("SSID verstecken", 225, 210, 380, 20)

	   GUICtrlCreateGroup("", -99, -99, 1, 1)
       GuiCtrlGroupSetColor(210, 40, 420, 220, 0x8B008B) ; Rahmenfarbe Gruppe "QR-Code erstellen"


    #EndRegion ;**** --- ****

    #Region ;**** Neuntes Register füllen ****
    Global $TabSheet9 = GUICtrlCreateTabItem("  ")
   _GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[9][1])
	GUICtrlCreateLabel('Telefonnummer eingeben:', 225, 60)
	Global $telNumber = GUICtrlCreateEdit('0123 12345678', 225, 80, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))
	GUICtrlCreateLabel('Sie sind hier: Telefon-Code erstellen', 225, 760)
    #EndRegion ;**** --- ****

    #Region ;**** Zehntes Register füllen ****
    Global $TabSheet10 = GUICtrlCreateTabItem("  ")
   _GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[10][1])
	GUICtrlCreateLabel('SMS-Text (maximal 160 Zeichen):', 225, 60)
	Global $smsText = GUICtrlCreateEdit('Nur ein Test', 225, 80, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))
	GUICtrlCreateLabel('Sie sind hier: SMS-Code erstellen', 225, 760)
#EndRegion ;**** --- ****

    #Region ;**** Elftes Register füllen ****
    Global $TabSheet11 = GUICtrlCreateTabItem("  ")
   _GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[11][1])
	       ; Kontoname
	       GUICtrlCreateLabel('Name der Veranstaltung:', 225, 60)
		   Global $vcalWorkname = GUICtrlCreateEdit('', 225, 80, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Anzeigename
		   GUICtrlCreateLabel('Kurzbeschreibung der Veranstaltung:', 225, 110)
		   Global $vcalDescription = GUICtrlCreateEdit('', 225, 130, 380, 60, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   ; Veranstaltungsort
		   GUICtrlCreateLabel('Veranstaltungsort:', 225, 210)
		   Global $vcalOrt = GUICtrlCreateEdit('', 225, 230, 380, 20, BitOR($ES_WANTRETURN, $ES_MULTILINE))

		   GUICtrlCreateLabel('Beginn:', 225, 280)
           Global $vcalDateBeginn = GUICtrlCreateDate("", 225, 300, 200, 20)
		   Global $vcalTimeBeginn = GUICtrlCreateDate("", 440, 300, 100, 20, $DTS_TIMEFORMAT)

		   GUICtrlCreateLabel('Ende:', 225, 360)
           Global $vcalDateEnde = GUICtrlCreateDate("", 225, 380, 200, 20)
		   Global $vcalTimeEnde = GUICtrlCreateDate("", 440, 380, 100, 20, $DTS_TIMEFORMAT)
    #EndRegion ;**** --- ****

     #Region ;**** ZwölftesRegister füllen ****
     Global $TabSheet12 = GUICtrlCreateTabItem("  ")
   _GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[12][1])
	GUICtrlCreateLabel('Text eingeben. Maximal 4129 Zeichen:', 225, 60)
	Global $AztecText = GUICtrlCreateEdit('', 225, 80, 800, 600, BitOR($ES_WANTRETURN, $ES_MULTILINE))
	GUICtrlSetLimit(-1, 4129)
     #Region ;**** Dreizehntes Register füllen ****
     Global $TabSheet12 = GUICtrlCreateTabItem("  ")
   _GUICtrlTabSetBkColor($hWnd, $Tab1, $TabColors[13][1])
  	GUICtrlCreateLabel('Text eingeben. Maximal 4129 Zeichen:', 225, 60)
	Global $DatamatrixText = GUICtrlCreateEdit('', 225, 80, 800, 600, BitOR($ES_WANTRETURN, $ES_MULTILINE))
	GUICtrlSetLimit(-1, 4129)
     #EndRegion ;**** --- ****

   GUICtrlCreateTabItem("")

    Global $btTab1 = GUICtrlCreateButton('MFA/2FA-Code erstellen', 6, 0, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab2 = GUICtrlCreateButton('Email-Code erstellen', 6, 40, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab3 = GUICtrlCreateButton('Giro-Code erstellen', 6, 80, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab4 = GUICtrlCreateButton('Url-Code erstellen', 6, 120, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab5 = GUICtrlCreateButton('VCard erstellen', 6, 160, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab6 = GUICtrlCreateButton('Micro-QR-Code erstellen', 6, 200, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab7 = GUICtrlCreateButton('Standard-Code erstellen', 6, 240, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab8 = GUICtrlCreateButton('WiFi-Code erstellen', 6, 280, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab9 = GUICtrlCreateButton('Telefon-Code erstellen', 6, 320, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab10 = GUICtrlCreateButton('SMS-Code erstellen', 6, 360, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab11 = GUICtrlCreateButton('Kalender-Code erstellen', 6, 400, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab12 = GuiCtrlCreateButton('Aztec-Code erstellen', 6, 440, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btTab13 = GuiCtrlCreateButton('Datamatrix-Code erstellen', 6, 480, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)

    Global $btFileSave = GUICtrlCreateButton('QR-Code generieren', 6, 870, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0x0000FF)
    Global $btFileExit = GUICtrlCreateButton('Beenden', 6, 910, 190, 40, $BS_Flat)
	GUICtrlSetColor(-1, 0xFFFFFF)
	GUICtrlSetBkColor(-1, 0xFF0000)

	#Region ;**** Statusbar erstellen ****
    $aStatusBar = _StatusbarCreate($hWnd, '75|75|70|-1', '|||', 'c|c|c|l', 'Consolas|10|0')
    StatusbarSetColors($aStatusBar, -1, 0x001FD3)
    #EndRegion ;**** --- ****

   GUISetState(@SW_SHOW, $hWnd)
   Sleep(200)
   _SetImage($idPic2, $hGreen)
	#Region ;**** Tab 0 aktivieren ****
	_GUICtrlTab_SetCurFocus($Tab1, 0)
	ControlClick($hWnd, "", $btTab1)
	GUICtrlSetState($btTab1, $GUI_CHECKED)
	Local $aBt1Clrs[12] = [0x0000FF, 0xFFFFFF, 0xAAAAAA, 0x00FF00, 0x000000, 0x0000FF, 0xFFFF00, 0x555555, 0x33AAEE, 0xAAAAFF, 0x000000, 0xFFFF00]
	GUICtrlSetBkColor($btTab1, 0x00FF00)
	GUICtrlSetColor($btTab1, 0x000000)
	_WinAPI_SetFocus($hWnd)
	#EndRegion ;**** --- ****

Global $iLastTab
    While True
	    $aMsg = GUIGetMsg(1)
	    Switch $aMsg[0]
			  ; Programm beenden
		      Case $btFileExit
			          Exit
			  ; Dateipfad festlegen
		      Case $btPath
                      $sPath = FileSelectFolder('Wähle den Ordner für die QR-Code-Datei', '', 7)
                      If $sPath = '' Then $sPath = @ScriptDir
			          GUICtrlSetData($inPath, $sPath)
					  GUICtrlSetState($btActive, $GUI_FOCUS + $GUI_DEFBUTTON)

              ; Tab-Nummer speichern
			  Case $Tab1
                   $iCurrTab = GUICtrlRead($Tab1)
                      Switch $iCurrTab
 					         Case -1
 					         Case Else
					         $ActiveTabCount = $iCurrTab
				      EndSwitch
			  Case $btTab1
                   _GUICtrlTab_SetCurFocus($Tab1, 0)
				   GUICtrlSetData($udPtSize, 2)
				   GUICtrlSetData($udMargin, 4)
				   $btActive = $btTab1
				   __SetButtonColors()
			  Case $btTab2
				  _GUICtrlTab_SetCurFocus($Tab1, 1)
				   GUICtrlSetData($udPtSize, 2)
				   GUICtrlSetData($udMargin, 4)
				   $btActive = $btTab2
                   __SetButtonColors()
			  Case $btTab3
				  _GUICtrlTab_SetCurFocus($Tab1, 2)
				   GUICtrlSetData($udPtSize, 4)
				   GUICtrlSetData($udMargin, 10)
				   $btActive = $btTab3
				   __SetButtonColors()
			  Case $btTab4
				   _GUICtrlTab_SetCurFocus($Tab1, 3)
				   GUICtrlSetData($udPtSize, 2)
				   GUICtrlSetData($udMargin, 4)
				   $btActive = $btTab4
				   __SetButtonColors()
			  Case $btTab5
				   _GUICtrlTab_SetCurFocus($Tab1, 4)
				   GUICtrlSetData($udPtSize, 4)
				   GUICtrlSetData($udMargin, 10)
				   $btActive = $btTab5
				   __SetButtonColors()
			  Case $btTab6
                   _GUICtrlTab_SetCurFocus($Tab1, 5)
				   GUICtrlSetData($udPtSize, 2)
				   GUICtrlSetData($udMargin, 4)
				   $btActive = $btTab6
				   __SetButtonColors()
			  Case $btTab7
				   _GUICtrlTab_SetCurFocus($Tab1, 6)
				   GUICtrlSetData($udPtSize, 4)
				   GUICtrlSetData($udMargin, 10)
				   $btActive = $btTab7
				   __SetButtonColors()
			  Case $btTab8
				   _GUICtrlTab_SetCurFocus($Tab1, 7)
				   GUICtrlSetData($udPtSize, 2)
				   GUICtrlSetData($udMargin, 4)
				   $btActive = $btTab8
				   __SetButtonColors()
			  Case $btTab9
				   _GUICtrlTab_SetCurFocus($Tab1, 8)
				   GUICtrlSetData($udPtSize, 2)
				   GUICtrlSetData($udMargin, 4)
				   $btActive = $btTab9
				   __SetButtonColors()
			  Case $btTab10
				   _GUICtrlTab_SetCurFocus($Tab1, 9)
				   GUICtrlSetData($udPtSize, 2)
				   GUICtrlSetData($udMargin, 4)
				   $btActive = $btTab10
				   __SetButtonColors()
			  Case $btTab11
				   _GUICtrlTab_SetCurFocus($Tab1, 10)
				   GUICtrlSetData($udPtSize, 4)
				   GUICtrlSetData($udMargin, 10)
				   $btActive = $btTab11
				   __SetButtonColors()
			  Case $btTab12
 				   _GUICtrlTab_SetCurFocus($Tab1, 11)
 				   $btActive = $btTab12
                   __SetButtonColors()
			  Case $btTab13
 				   _GUICtrlTab_SetCurFocus($Tab1, 12)
 				   $btActive = $btTab13
                   __SetButtonColors()

			  Case $r7
				   If BitAND(GUICtrlRead($r7), $GUI_CHECKED) Then
				      $iCorrLevel = 0
				      GUICtrlSetLimit($udPtSize, 4, 1)
				      GUICtrlSetData($udPtSize, 2)
					  GUICtrlSetState($btActive, $GUI_FOCUS + $GUI_DEFBUTTON)
			       EndIf
		      Case $r15
				   If BitAND(GUICtrlRead($r15), $GUI_CHECKED) Then
				      $iCorrLevel = 1
				      GUICtrlSetLimit($udPtSize, 3, 1)
				      GUICtrlSetData($udPtSize, 2)
					  GUICtrlSetState($btActive, $GUI_FOCUS + $GUI_DEFBUTTON)
			       EndIf
		      Case $r25
			       If BitAND(GUICtrlRead($r25), $GUI_CHECKED) Then
				      $iCorrLevel = 2
				      GUICtrlSetLimit($udPtSize, 2, 1)
				      GUICtrlSetData($udPtSize, 2)
					  GUICtrlSetState($btActive, $GUI_FOCUS + $GUI_DEFBUTTON)
			       EndIf
		      Case $r30
			       If BitAND(GUICtrlRead($r30), $GUI_CHECKED) Then
				      $iCorrLevel = 3
				      GUICtrlSetLimit($udPtSize, 1, 1)
				      GUICtrlSetData($udPtSize, 1)
					  GUICtrlSetState($btActive, $GUI_FOCUS + $GUI_DEFBUTTON)
			       EndIf

            Case $readCodeFromFile
				 ___Read_Barcode_From_File()

			Case $readCodeFromCam
				___Read_Barcode_From_Cam()

			Case $btFileSave
				_WinAPI_SetFocus($hWnd)
                Global  $iFileExists = FileExists(GUICtrlRead($inPath) & "\" & GUICtrlRead($inFile) & ".png")
                If $iFileExists Then
                   MsgBox(48, "Achtung!", "Im gewählten Ordner existiert bereits eine Datei mit dem Namen '" & GUICtrlRead($inFile) & "'. Bitte wählen sie einen anderen Namen oder Speicherort für die Datei. Vorgang abgebrochen")
                Else
				   If $ActiveTabCount = 0 Then
                      ___Create_2FA_Code()
				   ElseIf $ActiveTabCount = 1 Then
                      ___Create_Email_Code()
				   ElseIf $ActiveTabCount = 2 Then
					  ___Create_Giro_Code()
				   ElseIf $ActiveTabCount = 3 Then
					  ___Create_Web_Code()
				   ElseIf $ActiveTabCount = 4 Then
					 ___Create_VCard_Code()
				   ElseIf $ActiveTabCount = 5 Then
					 ___Create_Micro_Code()
				   ElseIf $ActiveTabCount = 6 Then
					 ___Create_Standard_Code()
				   ElseIf $ActiveTabCount = 7 Then
					 ___Create_WiFi_Code()
				   ElseIf $ActiveTabCount = 8 Then
					 ___Create_Phone_Code()
				   ElseIf $ActiveTabCount = 9 Then
					 ___Create_SMS_Code()
				   ElseIf $ActiveTabCount = 10 Then
					 ___Create_Cal_Code()
				   ElseIf $ActiveTabCount = 11 Then
					 ___Create_Aztec_Code()
				   ElseIf $ActiveTabCount = 12 Then
					 ___Create_Datamatrix_Code()
				   Else
					  MsgBox(64,"Hinweis", "Im gewählten Tab sind noch keine Funktionen enthalten")
				   EndIf
                EndIf

	    EndSwitch
	          ; Eingabefelder bei Mausklick leeren
              $aInfo = GUIGetCursorInfo($hWnd)
              If $aInfo[2] Then
                  If $aInfo[4] = $editAddress Then GUICtrlSetData($editAddress, "")
                  If $aInfo[4] = $vCode Then GUICtrlSetData($vCode, "")
				  If $aInfo[4] = $inFile Then GUICtrlSetData($inFile, "")
			      If $aInfo[4] = $editSubject Then GUICtrlSetData($editSubject, "")
			      If $aInfo[4] = $editBody Then GUICtrlSetData($editBody, "")
				  If $aInfo[4] = $inPath Then GUICtrlSetData($inPath, "")
		      EndIf
	WEnd

Func __SetButtonColors()
     GUICtrlSetColor($btTab1, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab1, 0x0000FF)
	 GUICtrlSetColor($btTab2, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab2, 0x0000FF)
     GUICtrlSetColor($btTab3, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab3, 0x0000FF)
     GUICtrlSetColor($btTab4, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab4, 0x0000FF)
     GUICtrlSetColor($btTab5, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab5, 0x0000FF)
     GUICtrlSetColor($btTab6, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab6, 0x0000FF)
     GUICtrlSetColor($btTab7, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab7, 0x0000FF)
     GUICtrlSetColor($btTab8, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab8, 0x0000FF)
     GUICtrlSetColor($btTab9, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab9, 0x0000FF)
     GUICtrlSetColor($btTab10, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab10, 0x0000FF)
     GUICtrlSetColor($btTab11, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab11, 0x0000FF)
     GUICtrlSetColor($btTab12, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab12, 0x0000FF)
     GUICtrlSetColor($btTab13, 0xFFFFFF)
	 GUICtrlSetBkColor($btTab13, 0x0000FF)
     GUICtrlSetBkColor($btActive, 0x00FF00)
	 GUICtrlSetColor($btActive, 0x000000)
	 _WinAPI_SetFocus($hWnd)
EndFunc

#Region ;**** Datamatrix-Code erstellen ****
Func ___Create_Datamatrix_Code()
	$dataText = GUICtrlRead($DatamatrixText)
	__Go_QrCode($dataText, "Datamatrix")
EndFunc
#EndRegion ;**** --- ****

#Region ;**** Aztec-Code erstellen ****
Func ___Create_Aztec_Code()
	$matrixText = GUICtrlRead($AztecText)
    __Go_QrCode($matrixText, "Aztec")
EndFunc
#EndRegion ;**** --- ****

#Region ;**** 2FA-Code erstellen ****
Func ___Create_2FA_Code()

  $strMfaText = "otpauth://" & ((GuiCtrlRead($mfaTimebased) = $GUI_CHECKED = True) ? "t" : "h") & "otp/"
  $strMfaText = $strMfaText & (GuiCtrlRead($mfaName) <> "" ? GuiCtrlRead($mfaName) & ":" & GuiCtrlRead($mfaKonto) : GuiCtrlRead($mfaKonto))
  $strMfaText = StringReplace($strMfaText, "@", "%40")
  $strMfaText = $strMfaText & "?secret=" & GuiCtrlRead($mfaSecure)
  $strMfaText = (GuiCtrlRead($mfaHerausgeber) <> "" ? $strMfaText & "&issuer=" & GuiCtrlRead($mfaHerausgeber) : $strMfaText)
  $strMfaText = (GuiCtrlRead($mfaImage) <> "" ? $strMfaText & "&image=" & GuiCtrlRead($mfaImage) : $strMfaText)

  If GuiCtrlRead($mfaStandard) = $GUI_CHECKED = False Then
     $strReplaces = StringReplace(GuiCtrlRead($mfaTimeOut), "s", "")
     $strMfaText = GuiCtrlRead($mfaTimebased) = $GUI_CHECKED = True ? $strMfaText & "%26period=" & $strReplaces : $strMfaText & "&counter=" & GuiCtrlRead($mfaCounter)
     $strMfaText = $strMfaText & "&algorithm=" & GuiCtrlRead($mfaCodierung)
     $strMfaText = $strMfaText & "&digits=" & GuiCtrlRead($mfaDigits)
  Else
    ;$strMfaText = $strMfaText & "&period=30" & "&algorithm=SHA1" & "&digits=6"
  EndIf
   __Go_QRCode($strMfaText, "QR")
EndFunc
#EndRegion ;**** --- ****

#Region ;**** QR-Email erstellen ****
Func ___Create_Email_Code()
	Local $qrMailText = "MATMSG:TO:"  & GUICtrlRead($editAddress) & ";SUB:" & GUICtrlRead($editSubject) & ";BODY:" & GUICtrlRead($editBody) & ";;"
	__Go_QRCode($qrMailText, "QR")
EndFunc
#EndRegion ;**** --- ****

#Region ;**** Giro-Code erstellen ****
Func ___Create_Giro_Code()

  $strGiroText = $giroTag & @CRLF
  $strGiroText = $strGiroText & GUICtrlRead($giroVersion) & @CRLF
  $strGiroText = $strGiroText & GUICtrlRead($giroCodierung) & @CRLF
  $strGiroText = $strGiroText & GUICtrlRead($giroArt) & @CRLF
  $strGiroText = $strGiroText & GUICtrlRead($giroBic) & @CRLF
  $strGiroText = $strGiroText & GUICtrlRead($giroInhaber) & @CRLF
  $strGiroText = $strGiroText & GUICtrlRead($giroIBAN) & @CRLF
  $strGiroText = $strGiroText & "EUR" & GUICtrlRead($giroBetrag) & @CRLF
  $strGiroText = $strGiroText & GUICtrlRead($giroChar) & @CRLF
  $strGiroText = $strGiroText & GUICtrlRead($giroRef) & @CRLF
  $strGiroText = $strGiroText & GUICtrlRead($giroZweck) & @CRLF
  $strGiroText = $strGiroText & GUICtrlRead($giroOpt)
  $strGiroText = StringReplace($strGiroText, " ", Chr(160))
  __Go_QRCode($strGiroText, "QR")

EndFunc
#EndRegion ;**** --- ****

#Region ;**** WebCode erstellen ****
Func ___Create_Web_Code()
	__Go_QRCode(GUICtrlRead($webAddress), "QR")
EndFunc
#EndRegion ;**** --- ****

#Region ;**** VCard erstellen ****
Func ___Create_VCard_Code()

   Local $strLineText = StringReplace(GUICtrlRead($tbxBeschreibung), @CRLF, "\n")
   Local $dateRev = "yyyyMMdd" & "T" & "HHmmss" & "Z"

	GUICtrlSendMsg($tbxRevision, $DTM_SETFORMATW, 0, $dateRev)

  $vCardText = ""
  $vCardText = "BEGIN:VCARD" & @CRLF
  $vCardText = $vCardText & "VERSION:4.0" & @CRLF
  $vCardText = $vCardText & "ADR;TYPE=home:;;" & GUICtrlRead($tbxStrasse) & " " & GUICtrlRead($tbxHNR) & ";" & GUICtrlRead($tbxOrt) & ";;" & GUICtrlRead($tbxPLZ) & ";" & GUICtrlRead($tbxLand) & @CRLF
  $vCardText = $vCardText & "FN:" & GUICtrlRead($tbxVorname) & " " & GUICtrlRead($tbxName) & @CRLF
  $vCardText = $vCardText & "N:" & GUICtrlRead($tbxVorname) & ";" & GUICtrlRead($tbxName) & ";;" & GUICtrlRead($tbxGrad) & ";" & @CRLF
  $vCardText = ($tbxOrg <> "") ? $vCardText & "ORG:" & GUICtrlRead($tbxOrg) & @CRLF : $vCardText
  $vCardText = ($tbxOrgEinheit <> "") ? $vCardText & "ORG-DIRECTORY:" & $tbxOrgEinheit & @CRLF : $vCardText
  $vCardText = ($tbxRolle <> "") ? $vCardText & "Title:" & GUICtrlRead($tbxRolle) & @CRLF : $vCardText
  $vCardText = ($strLineText <> "") ? $vCardText & "Note:" & $strLineText & @CRLF : $vCardText
  $vCardText = $vCardText & "TEL;TYPE=work,voice;VALUE=uri:" & GUICtrlRead($tbxTel) & @CRLF
  $vCardText = ($tbxMobil <> "") ? $vCardText & "TEL;TYPE=home,voice;VALUE=uri:" & GUICtrlRead($tbxMobil) & @CRLF : $vCardText
  $vCardText = $vCardText & "ADR;TYPE=home;LABEL=""" & GUICtrlRead($tbxStrasse) & " " & GUICtrlRead($tbxHNR) & "\n" & GUICtrlRead($tbxPLZ) & " " & GUICtrlRead($tbxOrt) & "\n" & GUICtrlRead($tbxLand) & @CRLF
  $vCardText = $vCardText & ":;;" & GUICtrlRead($tbxStrasse) & " " & GUICtrlRead($tbxHNR) & ";" & GUICtrlRead($tbxOrt) & ";;" & GUICtrlRead($tbxPLZ) & ";" & GUICtrlRead($tbxLand) & @CRLF
  $vCardText = $vCardText & "EMAIL:" & GUICtrlRead($tbxEmail) & @CRLF
  $vCardText = ($tbxURL <> "") ? $vCardText & "URL:" & GUICtrlRead($tbxURL) & @CRLF : $vCardText
  $vCardText = ($tbxBDAY <> "") ? $vCardText & "BDAY:" & GUICtrlRead($tbxBDAY) & @CRLF : $vCardText
  $vCardText = $vCardText & "REV:" & GUICtrlRead($tbxRevision) & @CRLF
  $vCardText = $vCardText & "PROFILE:VCARD" & @CRLF
  $vCardText = $vCardText & "End:VCARD"
  $vCardText = StringReplace($vCardText, " ", Chr(160))

     __Go_QRCode($vCardText, "QR")
EndFunc
#EndRegion ;**** --- ****

#Region ;**** MicroCode erstellen ****
Func ___Create_Micro_Code()
     __Go_QRCode(GUICtrlRead($microText), "QR")
EndFunc
#EndRegion ;**** --- ****

#Region ;**** Standard erstellen ****
Func ___Create_Standard_Code()
     __Go_QRCode(GUICtrlRead($standardText), "QR")
EndFunc
#EndRegion ;**** --- ****

#Region ;**** WiFi-Code erstellen ****
Func ___Create_WiFi_Code()
      $strWifiText = "WIFI:T:"
      $strWifiText = $strWifiText & GUICtrlRead($wifiSecTyp) & ";"
      $strWifiText = $strWifiText & "S:" & GUICtrlRead($wifiNetzwerkname) & ";"
      $strWifiText = $strWifiText & "P:" & GUICtrlRead($wifiPasswort) & ";"
      $strWifiText = GuiCtrlRead($wifeHideSSID) = $GUI_CHECKED = True ?  $strWifiText & "H:" & "true;" : $strWifiText & ";"
	  __Go_QRCode($strWiFiText, "QR")
EndFunc
#EndRegion ;**** --- ****

#Region ;**** Telefon erstellen ****
Func ___Create_Phone_Code()
     Local $strTelText = "tel:" & GUICtrlRead($telNumber)
	 __Go_QRCode($strTelText, "QR")
EndFunc
#EndRegion ;**** --- ****

#Region ;**** SMS-Code erstellen ****
Func ___Create_SMS_Code()
     Local $strSMSText = "smsto:" & GUICtrlRead($smsText)
	 __Go_QRCode($strSMSText, "QR")
EndFunc
#EndRegion ;**** --- ****

#Region ;**** Kalender erstellen ****
Func ___Create_Cal_Code()
  Local $dateStyleOut = "yyyyMMdd"
  Local $timeStyleOut ="HHmmss"
  Local $timeStyleIn = "HH:mm:ss"
  Local $dateStyleIn = "dddd, dd. MMMM yyyy"

    GUICtrlSendMsg($vcalDateBeginn, $DTM_SETFORMATW, 0, $dateStyleOut)
    GUICtrlSendMsg($vcalDateEnde, $DTM_SETFORMATW, 0, $dateStyleOut)
    GUICtrlSendMsg($vcalTimeBeginn, $DTM_SETFORMATW, 0, $timeStyleOut)
    GUICtrlSendMsg($vcalTimeEnde, $DTM_SETFORMATW, 0, $timeStyleOut)

      $strCalText = "BEGIN:VCALENDAR" & @CRLF
      $strCalText = $strCalText & "PRODID: Microsoft Outlook 365, VBA 7.0" & @CRLF
      $strCalText = $strCalText & "Method:PUBLISH" & @CRLF
      $strCalText = $strCalText & "BEGIN:VEVENT" & @CRLF
      $strCalText = $strCalText & "SUMMARY:" & GUICtrlRead($vcalWorkname) & @CRLF
      $strCalText = $strCalText & "DESCRIPTION:" & GUICtrlRead($vcalDescription) & @CRLF
      $strCalText = $strCalText & "LOCATION:" & GUICtrlRead($vcalOrt) & @CRLF
      $strCalText = $strCalText & "DTSTART:" & GUICtrlRead($vcalDateBeginn) & "T" & GUICtrlRead($vcalTimeBeginn) & @CRLF
      $strCalText = $strCalText & "DTEND:" & GUICtrlRead($vcalDateEnde) & "T" & GUICtrlRead($vcalTimeEnde) & @CRLF
      $strCalText = $strCalText & "PROFILE:VCalendar" & @CRLF
      $strCalText = $strCalText & "End:VEVENT" & @CRLF
      $strCalText = $strCalText & "END:VCALENDAR"
      $strCalText = StringReplace($strCalText, " ", Chr(160))

      __Go_QRCode($strCalText, "QR")

    GUICtrlSendMsg($vcalTimeBeginn, $DTM_SETFORMATW, 0, $timeStyleIn)
    GUICtrlSendMsg($vcalTimeEnde, $DTM_SETFORMATW, 0, $timeStyleIn)
    GUICtrlSendMsg($vcalDateBeginn, $DTM_SETFORMATW, 0, $dateStyleIn)
    GUICtrlSendMsg($vcalDateEnde, $DTM_SETFORMATW, 0, $dateStyleIn)
EndFunc
#EndRegion ;**** --- ****

#Region ;**** QR-Code generieren ****
Func __Go_QRCode($strQRText, $CodeTyp)

	If $CodeTyp = "QR" Then
	   QR_generatePNG($strQRText, CreateFullPath() & 'png', GUICtrlRead($udMargin), GUICtrlRead($udPtSize), $iCorrLevel)
       ___loadPicAndBar(False)
	ElseIf $CodeTyp = "Aztec" Then
         Local $cmd1 = $zint_exe & ' -o ' & GUICtrlRead($inFile) & '.png -b Aztec --scale=4 --border=1 --box -d "' & $strQRText & '" --quietzones'
		 Run($cmd1, GUICtrlRead($inPath) & "\")
		 ___loadPicAndBar(True)
	ElseIf $CodeTyp = "Datamatrix" Then
         Local $cmd2 = $zint_exe & ' -o ' & GUICtrlRead($inFile) & '.png -b Datamatrix --scale=4 --border=1 --box -d "' & $strQRText & '" --quietzones'
		 Run($cmd2, GUICtrlRead($inPath) & "\")
		 ___loadPicAndBar(True)
	EndIf



EndFunc
#EndRegion ;**** --- ++++

#Region ;**** Bild laden und Statusbar füllen ****
Func ___loadPicAndBar($sWerte = False)
	 $iErr = @error
	_GDIPlus_Startup()
    $png = GUICtrlRead($inPath) & "\" & GUICtrlRead($inFile) & ".png"
    $hImage = _GDIPlus_ImageLoadFromFile($png)
    $Bmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    _WinAPI_DeleteObject(GUICtrlSendMsg($Pic1, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp))
	$iErr += @error
	StatusbarSetColors($aStatusBar, -1, 0x001FD3)
	If $sWerte = False Then
	   _StatusBarShowResult()
	ElseIf $sWerte = True Then

	EndIf

EndFunc
#EndRegion ;**** --- ****

#Region ;**** Pfad erstellen ****
Func CreateFullPath()
	    $sFile = GUICtrlRead($inFile)
	    If $sFile = '' Then $sFile = _QR_FileDefault()
	    If StringRegExp($sFile, '(?i)\.bmp|png') Then $sFile = StringTrimRight($sFile, 4)
	    GUICtrlSetData($inFile, $sFile)
	    Return StringFormat('%s\%s.', $sPath, $sFile)
EndFunc
#EndRegion ;**** --- ****

#Region ;**** Pfadagaben bereinigen ****
Func ShrinkPath($_sPath)
	    Local $sLeft = StringLeft($_sPath, 3)
	    Local $sRight = StringTrimLeft($_sPath, (StringInStr($_sPath, '\', 0, -1) -1))
	    Return StringFormat('%s..%s', $sLeft, $sRight)
EndFunc
#EndRegion ;**** --- ****

#Region ;**** Gruppenrahmen färben ****
Func GuiCtrlGroupSetColor($iLeft, $iTop, $iWidth, $iHeight, $iBorderColor = 0x8B008B, $iBkGndCol0r = $GUI_BKCOLOR_TRANSPARENT)
        GUICtrlCreateGraphic($iLeft, $iTop, $iWidth, $iHeight)
        GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $iBorderColor, $iBkGndCol0r)
        GUICtrlSetGraphic(-1, $GUI_GR_RECT, -1, 7, $iWidth, $iHeight - 7)
EndFunc
#EndRegion ;**** --- ****

#Region ;**** Gruppenrahmen einfärben ****
Func _GUICtrlTabSetBkColor($hWnd, $hSysTab32, $sBkColor)
    ;Disabled Label to hold the color
    Local $aTabPos = ControlGetPos($hWnd, "", $hSysTab32)

    GUICtrlCreateLabel("", $aTabPos[0]+2, $aTabPos[1]+23, $aTabPos[2]-4, $aTabPos[3]-26)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetBkColor(-1, $sBkColor)
EndFunc
#EndRegion ;**** --- ****

#Region ;**** Barcodes lesen ****
Func ___Read_Barcode_From_Cam()
     Local $eXecPath = @ScriptDir & "\Exec\zbarcam --prescale=320x240 -q"
     Local $objShell = ObjCreate("WScript.Shell")
           $objShell.Run("cmd /c " & $eXecPath & " | clip", 0, True)
	 Local $oShell = ObjCreate("new: {1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
     Local $oShellText = ClipGet()
		If $oShellText = "" Then
		   MsgBox(64, "Hinweis", "Es wurde kein Code eingelesen")
	    Else
           Local $inString
	       Local $outString

           Local  $ret = StringReplace($oShellText, "QR-Code:", "")
                  $ret = StringReplace($ret, "Â", "")
                  $ret = StringReplace($ret, "Ã¤", "ä")
                  $ret = StringReplace($ret, "Ã¶", "ö")
				  $ret = StringReplace($ret, "Ã¼", "ü")
                  $ret = StringReplace($ret, "ÃŸ", "ß")
		          $ret = StringReplace($ret, "Ã©", "é")
                  $ret = StringReplace($ret, Chr(160), " ")

		          If StringInStr($ret, "&") Then
					 $ret = StringSplit($ret, "?", $STR_ENTIRESPLIT)
                     $ret = StringSplit($ret[2], "&", $STR_ENTIRESPLIT)
		                  For $inString = 1 To $ret[0]
						      If StringMid($ret[$inString], 1, 7) = "secret=" Then GUICtrlSetData($mfaSecure, StringReplace($ret[$inString], "secret=", ""))
					      Next
		          Else
                     $ret = StringSplit($ret, "?")
			         $ret = $ret[2]
			         $ret= GUICtrlSetData($mfaSecure, StringReplace($ret, "secret=", ""))
		          EndIf
       EndIf
EndFunc

Func ___Read_Barcode_From_File()
     Local $eXecPath = @ScriptDir & "\Exec\QRDeCode.dll -q "
     Local $filePath = FileOpenDialog("QR-Code öffnen", @ScriptDir & "\", "Images (*.png;*.bmp)", BitOR($FD_FILEMUSTEXIST, $FD_MULTISELECT))
     Local $inString
	 Local $outString
        If @error Then
                MsgBox($MB_SYSTEMMODAL, "", "Es wurde keine Datei ausgewählt")
		Else
		   Local $ret = ObjCreate("WScript.Shell").Exec($eXecPath & $filePath).StdOut.ReadAll

           $ret = StringReplace($ret, "QR-Code:", "")
           $ret = StringReplace($ret, "Â", "")
           $ret = StringReplace($ret, "Ã¤", "ä")
           $ret = StringReplace($ret, "Ã¶", "ö")
           $ret = StringReplace($ret, "Ã¼", "ü")
           $ret = StringReplace($ret, "ÃŸ", "ß")
		   $ret = StringReplace($ret, "Ã©", "é")
           $ret = StringReplace($ret, Chr(160), " ")
		   If StringInStr($ret, "&") Then
			  $ret = StringSplit($ret, "?", $STR_ENTIRESPLIT)
              $ret = StringSplit($ret[2], "&", $STR_ENTIRESPLIT)
		             For $inString = 1 To $ret[0]
						  If StringMid($ret[$inString], 1, 7) = "secret=" Then GUICtrlSetData($mfaSecure, StringReplace($ret[$inString], "secret=", ""))
					 Next
		   Else
              $ret = StringSplit($ret, "?")
			  $ret = $ret[2]
			  $ret= GUICtrlSetData($mfaSecure, StringReplace($ret, "secret=", ""))
		   EndIf

		EndIf

EndFunc
#EndRegion ;**** -- ****

#Region ;**** Privat Logo ****
Func _SetImage(ByRef $idCtrl, ByRef $hImg)
    Local $hCtrl, $hPrevImage
    $hCtrl = GUICtrlGetHandle($idCtrl)
    $hPrevImage = _SendMessage($hCtrl, $STM_SETIMAGE, $IMAGE_BITMAP, $hImg)
    If $hPrevImage Then _WinAPI_DeleteObject($hPrevImage)
EndFunc

;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2015-09-19
Func _greenpng($bSaveBinary = False, $sSavePath = @ScriptDir)
    Global $greenpng
	$greenpng &= 'iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My4zNqnn4iUAAEoBSURBVHhe7Z0HeFb1+f79ddihVmvVat3a2lqrba3WPWuto25ZggwVBQeyZO+9N4EQIAkJIWGEvTcCAjJlyRZEcYHKHkme//05zZPrcHzfDMS22n+u63tlve95z/nez30/47tOOeU78HXqqaf+309/+tMfnHHGGT8+66yzzlS7QD9fdfrpp1+v7/eoPXjaaac9HWpP6W8P/exnP7tb32/U99+eeeaZv/r5z39+pn7+Mdfimt+Brvn2PcL/6esnP/nJ9wXEaQLyIoF4t36vJkB6/uhHPxqvv68477zztl9xxRW7//jHPx689957cx555JHcsmXL5lasWLGglStXLvexxx7L/dvf/nb4xhtv/PzXv/71+7/85S/f0fWm6FoJulYNAX2frncJn8Vn8tnfvh77FtzxD37wg/8T+34Ey/T9YXV+R4EwSz9/cP755x+67rrrch9//PG8pk2b5g0dOjRv+vTptnTpUtuwYYPt3LnTPvnkE/vss89s9+7dx7VPP/3UPv74Y9uxY4etX7/eFi5caGPHjs3r3bt33gsvvJB7yy23HLn44os/EdDz9Xk9BPJTugeM6kfc07eg6/57bxGJRHLVfv3jH/+4qn7PVkd/cPbZZx/7zW9+k3v//ffn1alTx4YPHx6AuX379gC8L7/8Mmh79+49ocZ7v/jii8Agtm3bZosWLbKUlJS85557Lvf6668/9otf/OIzGRgsr6n7uZp7/P9yXgI7EpjI7zliSyl13Aix9MNzzjnn2OWXX55722235VWvXt3EUnvnnXfsww8/DMD4OoAWxxA+//xz++CDD2z58uU2ePDgPKT+97///THd'
	$greenpng &= '56e6x0lqVcTq85HxEjzq/9ZLxYYfqpN+I3Y0E8hrFPAcvuSSS3J+97vf5f3973+35s2b25w5cwLJ3bNnzwmxszhgFvUaPhu1mDZtmtWrVy/v1ltvzZHvPiJwt/3whz/sru/XyShP/d9Cr5CnFbCnqv1JLOit77vUWceuvPLKXAFrCoCsVatWgUx+9NFHAVuLAuDf9X/uhXuaN2+eNWnSxKQuuRdddNExGekeAZ0uQ72duOF/Fmix9AfqgN+pM3oJ2I8vuOCCY4pk837729/aX//6V6tbt27A2F27dpVIgvft22dfp5XUQACae5wyZYq9/PLLpsg9T4HZMfnmzxWIZQjoG8XqH/zPAK0H/p6s/JdIMUGTA3vVVVfZH/7wBytdurRlZWUFkW1RjP06QJbkvcUBHT9NUDZkyBBTWma4FjH6qJ51t4y4rwz6Mp79Ow20HvanetCn9aArzz333KNIMcAix7AWqVu5cmUQDcfr1JIA8028tiiwib4XL15sRPh//vOfDVWSEeOjtwjol/X9jO8cyHqw70mOr9D3FEWe+y677LICYBWN2n333WeDBg0KWBsrIv4mgDoZ14wHNsoDm/v27Wu333674XZUeMlRinVAfTBZ8QYxx3eDzZJhkfbHpdU2IsfKYQM/e/XVVxdI8sSJE+39998PmIvUuTSfDBD+XdcAbM/BuX+eBYMlT0eyeV6pFf75KMGkgK6hPjntW8vm733ve9SHzyV1gLXKY3NcjnlYBSNWqVKlIDjZsmVLADC5JgEL1SWqTFHA6cR/F2DF+RwHFaMkfUKeqZpx/+TopHSbN282DFilUrvmmmsCNss15ahgA5uz5K4u/f73v//tqorpxqkX/17fp8nXHvHoGGCRZMCtVq2aUVJcu3ZtUFLctGmTbd261d57773A8ukcwCYV8VIjnRgubBQFwv79+604rajr+P8LA5R7xUAxVPJkJBpwN27cGDzjhAkTTPXvApBRsl/96leHBfAK'
	$greenpng &= '9dOtiri/HZKtG/6B2t8lP5svvPDCQJIJogAXCybwqFq1qk2ePDkoMa5YsSKoSq1Zs8bWrVtn7777bgA2rKaTHGwYEQY7zG6kERCKA2ZxX8P13MdiVGGWoi7cC/cEqNwjhomBcu8YLLVtgF29erWtWrUqeNbRo0cHTCZboE9QtEsvvRTJ/lgAl1e//fC/WrIFqmKHUyviY3TjBZIMawH3T3/6k1WpUsVGjhwZFAgo7lPEePvtt23ZsmVBBA3YdAwdhPXDgiiz6diolMNuQPAgLczK4oDqgIb9qMuuD0o4qKhLGFRnahRUSpsAu2TJkuA533zzTcvIyLCnn346ABmjzw/AKHuSN9cXyD/+rwQ5H9yaJPjUjT2QAlweBlkmxyVPxO/OmDHDZs+eHQC9YMECe+utt4KOoEPoGKw+zGrAdlYjge6zw8wOSzngREGPFfX64AKv9dEmfGkU1Kj8ci/cE4qD8jhTUaQwqBgxwFK0mTVrlk2dOtWSkpKCwAujd5BJGeWX98kfdxXIP/lvA1kx1feqCNxPSAccXB7AwX3ooYesV69elp2dbePHj7dJkyYFQOOHeXA6gI6IxWo6rzBWA7az2mUcgGiA5Q0AHXh+diD9tRiIB0nuU6NsRYIBtjC28gzz58+3uXPnBkaMMQMsz8yz0wddu3Y1jVUfx2TFKrkaWDkokPvJL5/+3wIywcHTal01AN9F0ryLKo6Dq7Fau+OOO6xFixaWnp4eVKmQaPzRuHHjgggToCnez5w5swBoWO3yDaNjyXfYV3twFgbbgzSiWpoDGAYSg/AWC1TiANga9q0oC0bHPXFvuBiKG85WgMVoMV6ezYEdM2aMjRo1Kkid6IvGjRvbTTfdVMBk/LJAztFAyzbNLWivPv2PyzXh/WNqndQu0U1drWrV65KbtQynAa5mSwQ12n79+llycrKlpaUFw32ZmZk2YsSIwJo1yB5EmWFG00lRRjvQYUaHI3DAQL7xjwDtMo68evPA'
	$greenpng &= 'yL+H/wdbeb9HwQCLf40GTWFgMcKoDDuwGC9GjDFj1Bj3sGHDAnBTU1Otf//+pnHmIPCEEAq6jiowXSslrKH+pDX9T4IMuH9X66l2mdqFar9SlHhtw4YNm2kYbc6111775ZNPPpnXqVOnoKqTmJhoAwcODIDGFzvQPDzWHU+6kTv30QRj+Dl8NEDj/zwg81SLoMwjcAc7DKT/DKAuwYCKCjhjHdjCfGyUsVEpDjOW4Arj1uSBoGo3YMCAwOjbtGnDqFmeCLFPDJ4s//tofn/+St9fV3tD7T8y/PhnfXCS2m/ULgJgleIuEvMeEwBV9DA1KlSoMFDFjO2aSpOLz9FUGEtISAiA5iGd0Tw8soV80SmwmTTKZduDsbB/jrIZoGGaR96wz6PvsHw7swHeQY0CGw6ePNWJshYXQoDoPpZ75Z65dxQJZeKZYGwsYIlHWrZsac8+++wxkWHzU089lSzQa6i/fgdR8vv0Yn1vqVZB7d86mQBAU9Suc3ABuEePHjeKWVXErCryU5UFyPPdu3dvrPlNk2rUqPGpxnbzunXrFgCN9WLFAI1cRWXb/TPBSTjihs0A7RF3OI+GyTAOgGAzLHSgYSYNMB1QDIDmUuwBlLMWX0va5umO+9lYAVRUjnFBPBPPplkgQeTMM/Ps7du3p9CToxr8zgcffHCMWNxE7ugF9Vtl+e5HlC6hhjT6GXXsrXaP2r+lGEL9NEHtzvybCG5Gk98uUqeXVYcAcGUAlvVXErMq6aardujQobUKHPNff/31L1u3bp0r4K1Pnz6BH+Lhnc1YPJYf9c3OZnyzSzYdHqtY4kx2kB3IWN/jgetpTzxwCQjd1zprPYAKsxaXhGIBrPrAXnvtNWZ5fvaPf/xjllxZKz3Xi/qsSvQXxKD/GjVqdG2obwH5t2qpar9W+0bLmshEg3zJcAsLfK+k969hcB1gsaqSOryigK4oVlZv1qxZJ82rmvnqq69+KonKFesL2Iyl45vDku0BmEs2'
	$greenpng &= '0Skge5QNk90vRytiHoABYrwGyz1ChrlIMszFx0cLFc5c7gGDIzoG3Kiv5RmctRhxu3bt7KWXXjomYD9Qm1irVq0OMoaXAVafWVGfGRCCRh/i5uSLncXez7epnxPVzlT7Rr6wnPvVWoXkIwBX9eaLFASVcmmOggvAks2K6swKeqBn5bue79ixY7MXX3xxvB58e4MGDQ7LR+fBZjomLNkegEWjbC+QwGLSFC+OhCPsqFwDZrTFk2V8LobDtYmUMShPf8L+1sElQnZJhrX4WKbxVq5c+aBqAJs1BztbqWIzMf8FjF398Sz9AsConAOM+sm4KssIfk/fhvoaJldUI+j6RmaInK8LD1IrCKryb+BXGqi/VpZXYIVYJDfNA3hTRz6rzn1WTKogqawA2Oq05+SX6orNSSphvi0/vUfyfYyIm2iTDqPjkD6YjJ9zn0xhxMudLtWeK0crYC7VsQDGX3saRKDmfpdrIf/ud8MBFelcmLncI6kPrkaGm1ezZs2jyiY+ffjhhxcpaBoglaon43hen1WB56cvMHjvG1QOdxYGWerwDxWPLoiAfIl+75zvHk+qP0aayXXvDvmGgL3KfS/QzdzvNxcLXKzVweUBaQp4yiuKfUYBzzN677NiQjVJdisFZJnKDVdpRsTn8lk5dBo+DZ9M4IUswqCoVMO0WAFXNLIOS3VUnh1gl2euSXrmpUb8LgaGoWFw5PEYogLHPM2wPKaI+DMxdbnAzZAfbS31eVmGX1EGXZ7n9WfHuAE5TIAoyHqWCkozARQWh5mMPx6sdq7aSfHHXORBtUb5HxSkRPk/X6Dc7WLdTHkHGOYiO37zgMvD+MM5uAK2vFKVZ7wpHy0H4OqQAGxF3C0UlA0R2AsUmH2g3w+I7Tnyz3l0Lh1NihLNkb2GTUQdK23yqLmw4MrlOVydAlyMC1AlwXkYn5i6T6ngjieeeOJNfU+VkrUUqNX1/ooCtODZ9Fzled5wH2DwUZDpu7A/7tKlC6lo'
	$greenpng &= 'mMXujx/X3xurnZTRp5/rQsfluyGrukBB0x++LriADMAqQJRTubCsqkxl9bdyeuAKilRfUARaT7MsuwnwkWL4W5LyLfrcPWLOIfnrHEl4sFwFsGGdj0iFhx69+OHpUjg9Cleq8OWwFhfAMhapR5786TEZ2EF97mfyqZvE0AXly5cfqd91C93qKQCsqj6oICCDZ6Ap3y4AmOcD4OKC7P2p6xLzAHBUqsmPkeqbvi6LYW8ttSej0uwfrM69M15QVRzmhsEFWAD2phpxWdWNy6iOXEYdVlYBSAXlxM9LFmu0bdu2mQKRnsonM55//vnJKocuUQqyQdL4vipnX3Tu3HmvgNkngI6oQpYjn5kbbfp7rqQ/RxnAYbFlH+/RBPvPFRNs13U3SHIXqU0SqEN17R5yIc2Vt78uF/GCWPosgOoey3Cf4fsuCcj5/rhArsNBl4K8shp0CAMclurrhUE/ta818nS5LkDOiywfJ835AJ8v1jxWSFAV+FsPrKKyDLjeGeEO4mcHF4A12lNGoz+lNRJUWmO+pfS9lP5WWu8tIxfwjFzEswL+OeXP1VU8qalArZnksrXAbicZ7adofaiYPyxOG6q0rZ8i+ba8BxAVzddSoeJlAfm8OpnOR2HK6F6Ce6BxP9wbLQpwvgrFZXLYHxcWdJFGaVHdFXFYDB611Z5SO6GAizchA+RfnpO5ww+sStNyLpAll4/63XDEHAYXHxv2u8UBV0N6QWfSAFezKwprT/N/vRYDCJqYX0b3U06GELfpvlCK0rxen1eqsM/hf34/3BvG5yoTNVIpUrFAjhV0uT+WUlH0IIOJJdVkNARcZ6mV+OsavaNrPrgx2asy22WS54pezMjPd78SVMFcAo2SgEvHObjO3HjgatC+lNrTGtCP2TRb4+l4Ld57uGZhxuQsBuySgpyfPZQnXQxF1scFXS7VqmPjZ+MBDC4vqVGrLhGLeTFpERcPs9etiA88X0HGVZLncMRcMZbfjYIbDqjC'
	$greenpng &= 'Vo+vDUuyy3JhwEYBAkhN0XmKduDAgWI1fz3vjV4Pw4l+/vvv76i0es3q6itWray+bPny6jLsyg4y9x9lsitV2MAd5HBkHfXHEEdxwl3q618WAjLlS+oTJWLxZXpDr8LYy4dKPq4Jp0TxpDmaDvHA0YAqFrjxpBJ2RYEoCaBFAc+1omCHgc7OHtG7UdOGBzp07Xy4QZNGB4akpfXFGFEc98uxQMawIyAXmh/Tt0rPGJItDGBY/Ipa6eKymMiZgea7C2MvH9qzZ8/r4uW7yE++NBf4XVKHfHCDdMhbCcE9jmUnE9go8HGALrVhw/rn2ndotT91SLL16Nlj76bNm6q4ZDvIPFP4GTFonj0KMn1UmFSryPKA+vq8IkD24sdPi+OIf6YX4bh9TLKgqKG/IdHIMxZ1nkqKBQDns7fApxApRqPmWEGVR8seKcOEWJIcZe03CWxRQK9YsaxbanL/Y/NmT7V+CX2OLliwsDv3XAyQvxJ0FSLVgetTOZciU1EAw2JIiZwXWd0qoxdVCrE3DHDgex1g5Zl/iBVYOXtjSXOsPBdZKyxSDgdQSGdREhv9/8GDB5+K1Up6HZft9evX1h44oM/BaZPHaMizxwEFmnXcKP053CfHy5HDfQMRIqXMgoBLaeg/8gEuCuSb9TqynkIHIvgnDpv8N2bk7ODq+7kauL4agGOxNxxYhaT5uIKA+6uTDS5gHjp06MnDhw8Xq/Fa3lMcwFGOnTvfr5KU2GffmOxhqpOnL5MsPxNWneKAHJbqWFG1D0ioHHsvfV0MFlPd8ppFXKUmIutSHHnmQ1VEuEIAH5cWxWJvLGl2vxtOhaLSHGZuUZJcUlDjgV8csAVwZQDOGqZx30FJo6L3Hc6VYwVdsfJjCBGLxSpX3h4CuCgWo7zl1OKmTC/rn/8MyTN+OJwaBb43v52rnW4uVAGhPIm6h/uFBFZfKUGGK1RfB9x4bD1y5MiTtKNHjz5BO3bsWEHjd/9/LLALA1ppUuX+'
	$greenpng &= '/Xrvy8xgZmTCCCL6eCDHC7qKE3DBYpVa/5IPcHFY/Ae9luwn5iAE8sygwqXFkWe95hyNV56jikvpwsqRhUXNLmUxwC1IgwpjLqyNBU4UzDCw8X52wKPXA+iodMuIK/fp3W3fsKEpmi3aKwA4Vr7sQVcsf+xRdXhQIuqLAVh1dSLkc2LItBc/opMC+uYr8FdkGnb2iSPPxwVX+R/Gh/5CozcPRMZ4CypW7ntjBVYuzbFyXc9xCwuoYrH2RICNAh4L6Cibt23b+kK/hJ77YfCgQQMWCMiy+SAfV/1yqS4ui6MRtQB+RpMGADAMcFEy/aJe/4TaV6JpVieUL4Y8IxW0AGD5iJviDSbEqlhFA6t40lwScJHa4rC0JK8B6CibPRB7883ZaQMSe+eNHD5U04D77P1g585KbpTR5ymCxUHaFI2oPS9WlfAJTaj4RX5fx2JxrPo0Y8jEUcdNswXt7mpXFVeeHWCNk14RaxA/VuTsOW889oZz3XgRbZS5J4O1hQEfC+Qli+b3SUnqkzNhzHBLGpi4Ra6mvKdQsaQ6XOWKFkCivhgWe7ClaT4EWADsIBfHDxNNU8c4bvcAZs7zR6S4yPTIweWDtZbmXJXUnooGVyfCXmdBPL8bBbckjPw6r0UhwkC/t21r5aQ+3fZNGsvsjv4j3Bj9/qMDFVEWRypccVmsOgOEOzsGwFGZ9lE+H9Ztp/cwgb5ApgmsOhbif4+LnkMA8+Fna0LabbGqVqQD0cF7j5yjvjcWe/W3svJ3b2zetKn+ti2b62/dvLHeti2b6r2ntmPblnpbNr5bb+vmDfXef29rvd2ffvKCQHjq6NGTL9cYRxjk7e9tqzQkqc++aRNGWmpKUgHAJ8LieMGWspOntF4JxoYBLq5MM7pUNgzwQ/rlhZL63/wP/7kGHS4XwAW+JJY8R/PeqK9y69+ze7fGbTfUX7ZkccLCOTM3zJw2IXfK5PE2ddJ4mzZpnE0eP9pmTtXsykljbc7MyTZn'
	$greenpng &= 'xkRb+pbWGc+csnvKhHGbZ8+cMXHp0re7fPHlF898HdbGeq+zeIcATh3Qc9+k0ZmWkTa4AGCYXBSLY+XFsWRaNehb1b9Ml3KASyLTjAKy5CXww9C4rhp1zHhDg87gguAqXzb48J9r2ejPlS49GJ5A5/OrnMHh4ArJCgOcP55bes3qVV1nTJu8atTIYYezs7NswrhRWpWXrpWIaZaZNVTTZ4fr9yzNlcq2jGHpNmbsKE2rHWpTJ2sFn14/dqwWsel/Q4el502bPnXVkiWLO2/duqX6pk0bq+Xk5DyZl5f3eLjl5uY+XhIj8MBr+7YtlVKTeu2bOCbLRmQOPQ7geCz2iDpOynScTIssZbXqAV/qAMeS6aKGEEmXgnyYqgfJMVWsEvlfZ7C+n6WB6d86wNHcNzqgEJXn/EJBmbVrVzddtXJZ5zFjRhycMnVizqTJ49bNmT05Z9b0STZ/9jQbOyLdMlISbXD/nkfTB/c7mj4o4UhaUu8jGYP6HMnOTDkyddK4I7NmTj0yY8aUo5MmjM2dO3t63tjRI3N79eh6dOK4MVmb1r1Te0RKv/m73n/vVTN73JtAfmrrlo2vzpg+KTN7ZNaqtLTkVcOHZ66aPHlipmZpNldMUMYNAaneunlTpYH9euwbP1pGNWbUcQCHWRxVqXjBVlSmNUvmHi0CP6sIgPHDnr7Gmj/NKgiuEaA8IB/cKMBx8998cAMGcyGtaT1LZcuHfZ5V2P8WV57pnI8//qiKOm3f5Enj93+068May5csPLB43qyjWzduXLd82bLD69auG73rgw9e+/STj6rt+eyTap9+vKvax7s+qLbrg53VPvloV7XPPv2k2hd7dlffunH9rBlTtdJPILy/baMMZEbu4nkz9w8f2GvDji2bmzq4hw8fKj196oTZQwb335eW3M+GqA0ayFLXPtavP2unEnKTU5Lf3PnBzkoO8oZ3173Uv3eXAyNUqpwyacJXAA6x+Li8ODyXK1Y0jWtj+pBc'
	$greenpng &= 'Hux1gMMy7T44XjTt02rBsZsa86pPYXiQ2XlYQSyACwuw+PAAYLUztYDsSqa7Rgf0HeBYMzQ8uPK8VylUxalTJ+3MHpl58IOd79dZuWzx3NlTx+0TgLXWrX7nSwU4XQuTVSQY8D7csW3YnJlTNEl9tG3bqE1dViy12fLboxK7HFq3anktB3jY0LSubVo2OpbQq5ONHJZsI7NSLTMjxdLTtIRmyGBLTOpnHTp3yEvol7BWAAV+PSMtJT0lKSFvzCitIEwfMjzW8GKs6lZUpqMzMck8NIHwTlUIWX9En4ZZXNJ8uKHejy8OUGZ6jo//hifWFQwN6v/HFTjyGezgBgBrdf+ZmpN8Zyz/G6/u7AMK4dRoztxZwyjkb3h3feayJfMzZk4enbtmzaqslUuX7F+9csWbCnZKxwLZwQU8Mbn6xAlj9k9VQPbe5g22UAvGxmck2cwh3fXzzE83rFuTorTrmaVLl9Ro0qT+wR7dO9jQIUk2ehQjRKla4ZghP59m/RMTrFXbVta5a5e1u/fsKcfnJiT0zuzcpZ3WH3UTyxO+AnA8mY5WtsJDifSZ2PuU5n4jvQDsIJ9ooFVZ12DG5SlMrmuWD3Dcwf18gJGIoIIVC2D97WeaP/xL3eiTYesMz7OK5X+x9jDAixYtGDZOAZO+Z767ZrkAztaa4LkTVi1d8vGyRQv37t+3r2IUYAKmsF/9cOf7HWbMmHp05sxptnrlMssckmYZiZ1t0fCEIxtWr0755OOPakvKq2WPGp7cqmXTPI0O2agRQ8X4MTZ2XLaNyh4hBidbPwHcsWsnSxyYtHrf/v3lSMWShySPH5iaZENUix6WOWyi1KdUlMXxKlthPxwBuKym/jJYgKKeDIAZNGJC3il3qLFVwAlF0PkyEjA4/+bO0ESx30bzX69exUuPwh20bt3qniNHZebMnj1z1o6tm7OmjBths6eNG75x7eqsFYvm792/d28BwES2sQbzt2xYn6Wgy+bPm2FLF8yx'
	$greenpng &= 'xB4dLKNXC1s+MuHg6BFZLbW+qPZbCxe8njG479bkPl0sbWCCDUkdaOlDh9ig1GQbMHiQ9R800BIG9Lf2nTta+05d9n6466NKO97fUaF5qxafZyiyHzkywzp36vDF9u3vVYwCXFI/rAl2d+u0GMCNB3BJI2myIlYinsKeECxL/DoAu8Vxc2doNv4ZkuqbwxPYSwLwrl0fVho3YfSBmbNm7F22dMnA8dkZx6ZNHrt70YL5y1e+/dahCePHz9Qk94WanL5IQL2t1RXbtRJxv9blHlYccERrh46MHjUyZ4KYOHPGJFs4Z7qNSE+29MRuNnZQZ0sZlHRsaOrgo8OHph5J6tnORqX0tWHJAjg5UWuTU21IWoqlpqdZIntpCOje/fpamw7tc4dmZs5Lz8iYW69hg9wEMTsjI81at2m5b9mypa/p+cqHQY6XLsUKtKR4j5QpUwYA2Wo4DDLEOdFUiZp0awB+Rg2tPmkAc6N33nnnWapR/52lHeEpOdH8F8nWQrIaAqqhlpEkawbDCEnVO8NHDssdmT0ib9XKlUenThplkyaMtq1bNtuaFcsKFmyzWNuXebKeiCWevtnYtKna40P+lyBrnIKhtGS2UOhlGYN7Ckj52qGpli0/mzUk0bIzBlrqoH42OHmgDUpJtiS2XdCGKclpQwRyknXp2c06SKZ790+w5PQhAbNHjCYXH0ot2voPSDikyXcfDRmSNkuL04ZqgVwb7axTl7pydKw4CrB871MySILb008ywKwvZl77KVXUHjnJAHOzp2tJyNmKDB8GYBisInoFjT69oVV6XcS4yVrctVqLxj4T2w9raCxXxpDnWwmPl7yOUPFCsyds3qypNl4+eceO7bbmnZW2ccO7wV4cLPZmkTYLtFl4xoIx9vMI1u+O12YuKpRkC1wNzlvH9m2sU6d2NjBJKdCA3jZwcH/Jr9IiAT00Y4ilKGLun9TfBgi8wazQT03R31IIomyQgB82XNsfZQ61fgMHWK/+'
	$greenpng &= '/SxBi7x7a8F6X+0z0jdpgPUQy7tqWwqVGPM0ASJX93ZMS18+l9LskLJM18D9QD1zK913pdCaq1LqjysVNQf9dZIBphbdE4BxxEzsOpkM9hu+9NFHHy2jBVvDVAhZJkndpxGSYxpDzgMcVvWxyo8db9iEjJ3nHOAlby+yjMx0rfldbrNnTrXskcNs1coV9vbit+ydlcuDFYQ0rhHdnoGddN5atNBGU9XKzLCWbdtYo2ZNrWuP7mLoYDWBmDLIkgYkKiUaqtQo04bre+bQNBsgAHv062Ndeve0gdruaWBKqqWkpVuyAB+Slqq/DZJhaAskgdqPTWRgvGS8Z0IfBWOdFZxlF2xQyrOxwJxn1WLyPJUfc9UHh8TYDVr3PFWL2lgCenW+LJ8owKSx8Za1UM06pZoayxRPCsDazuGvmsrTWOtlZ2hR9CfamuEYB0vBLLZBYE8NFmrz0L6GF5BgZHiXnHnztHxzzCibozXAc+fOtJGKcAF22eKFtmLJW6YChSmSNpUgTenRcU3RtK1dt9ayx2SLicn2RsOG1rxNqwCcrCzJstKfdEXIQ+VrFXDZhNHafU7+NEstXYxOhdV63fCRwwMZzhBzM/X7iBHDLCV1sCWL2YMGD7Qs/X3kiEwbpfLpwEEDrGffngHIc7SHSHhrCJ6VZ+bZ6QOUhl14tPI/94033tiv5agrta1hd5V8iYdIkzzQKo4PLhLgryXRKqmdq81H79KWQJ2feeaZdzUR77DW7rJA2thJh32x2CqJVfr4Rx6QbZBYXM1aXEBlzS7bCbJbrAIVgXfY1q9dQ03ZJsmXrlu7yrIF8MplS2z54vk2a8p427Vzux0I9oPeZwf1nkMHD9qhQwftsNrBgwfEmCVKYbStgnxkG+WxgwYnWaaAnTZpjE3XdNfx1LlHZdmUyRNsxrRJNl3+WqVKm6prT5Z7mD5los2chh+fICObZtP1mhnT2QdrtNg8yNLSU23GlEk2c7Lep9cOV00cKW/b'
	$greenpng &= 'oZ1W/HeR23gr2A4CF8KzEiPw3MQJbElBn9A39BF9pf078mrXrp0jsD9R/JKpvaTLq2/xzUUFWfEAZqoPJehgFkd4/W+8iXbHDTQopL9WWxU21gYjK3QS2JFXXnklOGpOSzaDs464ad8Ti/2w2G+DnXLYJoGd5sJgqr4bsNEZyfd3BXwSkaz2vmBzloED+4kpGUplBqjKNNDShgwwTT63xP495WO7y7fKr6oNHtTXEvp0FfNUkVIQhW/t07eXpHOUTRw/zha/OSvw6RMnjNXOehqRmjVdirDoX01ALBMIywXG4vlvBm3JwvmBaixa8KZGrbTJ6OwZKoKwb8hIXWu2va3rLZk/yyZOGWuD0lOsU7eu1lYGlSIX8NlnnwZ7WPv2/gBOfMAuPGytxA489BF9RZ/Rd/Sh+pJtl3MeeOCBD7QDXqL2rmT5Cv1fkhElgizKlcH8HcYPiyXROnfhTu2tmC4Z/qxUqVK5bMuv9bfs/xTcHDfJDm7cOBuTIEewFIayda8zVPmrhRugst2vivxB+jF+3BjrJ3ntrj06Xnr1NXvx5RetaYuG1q1nJ+vTT1svJfZSANTDeiuH7dajvXXv2VFAaje9Pp2tu34foYrUlKmT5FP7W4NG9ayrfGT7Pr3kW7UR24AE6yLQOyf0skTlvkM19WaojCFNkpusPJjvAyXf6SMzLVWsHyW2Z6nwkaXRrGF63WDd3wD23Bw+Qj4+U38fad0H9LXegwdY5549rVWblta5c4fAgFAXnhNV4tkxbLZPZKsJwGZXIS08DzZrdYDpS/qUvtUWzHnaU4sDOOdrJ0GGdPG3xZnZ8Se9rg0AkxC/WhTAOpHsblnTeMnHQS0bzdO+FKbczcTe4Ga0j0Zwk2whBKgEPgRNgMaDqRgRNJUHg8YDw1wensCKjVVq1Hg9uGbZcmWtX58e6sA0G6gIN02B0lBJ4Ej5wGEqYY6StDJ8OEx+kQ4frt8z9HMq4KjzacPlF4cJKKpRzVs0'
	$greenpng &= 'sTSxrnOfBOvVt0+woUt/BVipSoMmTZpo89+cYwvna9eeuTM07DjcRgxPl4FkKcJOVxQ+UlI9RePO02yugr3xo4dLRRSoSY5HKULv27u7DDLFkpIHqCVbpy7drFnL5tauQxvtQ9lS7mVN8Jz+3N4PMBuDZxdcVI2NXdgsDZAdYPqW/qCv2Y757rvv5qi/1WI0cROELGzIkAJWfQBmgXGTeABr9/bf6xicRO3WvldHxORxBI5m+gUfyvb0WjUfMJb9rJAgP4IuvMV+PIABmQcdqWCmd68e1rNnd7Gvm/VVFDtMYI3SyoF5c6fbVJUPMzKHaJcdbac0ZoRNVAFjzGjtVCtGTRDTxylaHqO/ZanDsxRtj9PPEzSwMHbCeAGcai2aN7IU+fP2vROsnfbMHKH3ETCN13XHKP0aNz5bHTw28MfDMA4MR0Y1QIFTpoxk3pyZtngR+38s1JbHU7V7rPJy+ek3Jc8pyqmz5OupWQ+Qn2/ZtrU1FcCt27e2jl062q6PdgXGHAWYPqHx/PQV+1jDbPw1rK5fv36wO74DTJ/T92zNzCmo2rZ5njZhZ91SvLXDTOJgnnuwF2J7tfBgQxB2y1KeUAC1lfN5ObiKM4A4TxBrYvd2bXsQbCdExMim2uGTyqIAO8hhBvPgSFYfRZ/jBcpYyeAEzdiYJHCyxMA0sWn85LE2a9o4y9bsCdiaPWZkMOg/QvKZNUJAZKUHLUPMHilws8WwMZorFdSJJfd9xdg2bZoHCtBfqc5gpTpjxo0OiiBTp2i/aoFLvjxZkwYmK1gKSpWKkEmvEpK0aarSqomaTTJV4M+Vv86SYSSKvRn6ni0j66sce4BGnHr27mHd1Zq2aq6UrLFVf+0VW7psaYFaxQLYjxoInw9Bf0ASJJwN4bRfiGmj0qDP6XswAAuO0NPm61/qKIC2woopV9ExYdwu68yCKM0nSwfDhZqqeZG2l28hKznAlvOcteAAcxIovoH9ofCtAOtnHYXP7vUz'
	$greenpng &= 'E3gIt9ZYMo1RtGzVzPr37WaTRouxsybbjKnjArDSBNwsderc6dMkzxnyaSNs4YKZNmvmRDFbke3U8TZ7ljYTF1AzFQHPnjHV3pw3U0YggCWb4yZN0M7qXeTrxllTsbhVu1aKciWdbVtah47trYtSmp5Sjm5Sja7duypA6hKA1KNPTzG9s3Xto91xlRf36d83YHOSfCypVrJUIVk+epCi6eS0ZFW7VM2Srye1qtPgDXvosX8GpU6eFyOOMjjMXmewHzfgRww40EThxDOKd44DGEzAhuOKRMRJwoxBo/Ak+Hr6ne03gr2IWdHgM/IuklW05sgXWUhwOgjnLQDwPffcEwRSpDvIiW+R/3UAxhAGa5A9ZVAfG56WZKMyBtv4UeScGeo8/SwZJU0ZpaBphgBd9tY8e3vhbEW2c235onmKbOfYqrcXKAp+U22eLVs0RxIKg9NskLYpbqeBgmnTJlpNqU3jNm2DIKhb717WVUB2U9DVS5UqSpC9ExUkCcheYmQPKUoPBWBd5V+7aEiwc4+uAryjtVVr362zdejeJShddpAEt+3Y1uo2qGulype2ek3qWenyZax5yxaB7OJ7iyPPYQaHAaZf/aBqdtPTjj+mGMgZHAAMRtpEPFcTLuYKQ6pXPuhPmZINXIKJWaxouBKQ5XOrc26ADlYM3uwA67jzwC+QuxIY+AEWfvAFTAyfaeSHWLkMFeaH8a3dOrW0zNREDQoMDL5379bemrVqYlmKcKcJ2CmSUGZoLF0wN0hLFi+YFYC7bNFcW/m2Uhl9p721cJaN0esSCYSGZVrrDu3F4AnWXNWsjmJpunzxv2RcxwpI7seomMLw4Di5hon6jAkyqPGqX09Qvoxx0QJ/Likfo/v0xu8Ed+07t7WyFUrbXX+/02rWfd1q1qkZ5PUObkkADp/44sf4+MkvEIpAFJDzJTrABozASgWmXGGXne9yGeNnEgdpVTDpjpLZrUqsb9Sg/Xt6cfAmBxg5YOt55AJw'
	$greenpng &= 'o4dcOIOLAjieH6bIkKA0J1k57TDNudJcKy2s7m5vNKgt38rsiiQFM/1tokBZotxz8Zsz7W2BC8BLBHQArhj9tsB9S7+T8iQpeu6fOsTaSIqnqUjRWrvOt1U6MiRD/lpBUbqCKViert/TVa3id+rNFFcy5V+HKxAbNVoGIH89VnXtcWpj9fNIxQVp8u/9EnsrIu9qzVs1stLlnrC/3X+30rE3lN/2CzY8LQrgsP8NH+njRHGAwyfBcAwBu+IriwlUNQKwSXkPa6/pmvlkZU7WjwCYL3LhyjrzqLlelAPAon0BwDh2JIJ6cfg0k7BEfx2ZXiDQunZqbYM0CDBUACfre6Jy3WYtGqsje6pw0UVRdmdL6N3Fxg9Ptenjhssvj7e35k1XIUJyLYCRbabPLhLAIwTMAAVHA9KHapivg4K28fZGsxZWv0Vr68/m3KofD0hO+VcLRo9UUEkeEnwfRN1Z+ftATRBIoslIGFTo1F3pT5vWVrdRQ6uvujZRcuu2Ta1GTeWrVUrbvffdZg0a17VHHn/I6jeub1OmTw1iDw+u+I5PLo7/BeQwwE4o+h514BiAv/zlLwUAgxWYnXnmmaZtiJcJSxaDkwMXLAZnBn07/XMSL3KA5cCDixCqMyznJ5f4cTXhY2qKAtiDrViB1prVK61tm6aS5Q4ByCkD+1iiGNxcgVE3MXtQkvxh1/ZqbTW818+Gp6ppmG+khvkmZg+16ZqAPmeqqlKKtucoSMsQ+/oJ4D7KS1urdDhFkv1G06bynd1UZlRQNFBjvP2TFBhpvJfgSSNI/VVQ6aUd2TtrQAK/Xb9pE3uxZi0rV7Wa2stW5ZUaVk2/12zQ0KpUq27VatWyOo0bWS353/JVnrH77r9Lx+M2smefe97+WeoZq/hCtSD1KSo9inUgF30ZBdiJRYRNzowvBhswCgOs1OlLBVzsTlhZrWCdMFROFcCrxOCvAEwhg1QoFsDRQKu4Ms3rpqt4gEXv2bNbADezTh1b'
	$greenpng &= '2wBVpxITulmfHh0VXTfRhLc2+lt3a9+htTVv3VTs7mGD+nezYQJ4eFqijc4cbGOyki07a7BlpmlMd2Avq9e0kdVt0dRqt25tFV58znr07mr3PfSAPVupgtWt+arVq/O61a1X22rUqWWvCqhqr75slZ+vZC9Uq2plKC5Uec6eKl/Onnuxir3G6+vXVfxRx5o1qW8tmjVUXt1QpcVmiswba8C/mdWr96oOurrXWrRuYI1aNLBn9b7HSz8duLLipkfx/G/4fCc/DoiatqpbwalpYYDBThgeFJZj1f6Y734DiQbpvpLo+bxIQVZgFc5gbbwZDM1FAeYBTlSmP9z1oXLFakEAwyS3Tp3aKF3pHEjzALG3tybBtVLn1Vdk2kszHtsJ4Hrq4N49OxgzIHt3a2eDElRzTkmwrFSlKGoDk3oo7+0iKW1pr9VvYGVees1uufd++8V559kvzr9I5yRUtd4dm1lC96bWs0tje61GNbvmhpvtqlvutt/fcptd99eb7eqbbrUrb7jNrrn1Dnut1qvWQffQpnFte/WVqnb1DbfaZdf91a68/ja78i9qet2F1/zJzrr0crvk9zof6oF/WoMmzWyRhjSbNGkQsNCl+UTlOQowGLDxKhlNGGAwywf4S2E5SY0RqeO+KmmqzUKF2zm8WGmSqYIVXEQlsmCvZpy8W1FxZTpWNA1rN2t2Rs1arwUzF5NUKKgvVrzSsK61kG+jdtymYxur0bC+VRPLeghU6ss1W9S3Ri0bWft2LSSjrVQ1aqLgqYW10N9atm1u9Vo1tQZtW1g1BWcvvVHLnq9V22762/320zN+ZtWrVlCg+LhVfPxv9vqLZe2Vcg/bK5XL2fPVnxVgt9vvbrrFfvPnG+2qm+6wP952q1Sii3VpohJs2YfspVIPWMu6lS01sbv95Y67AoOg/eavdwQgX379Lfbbm+61S2+83Zq37xikRuGyrLulaPWquPLsJ7TR95wUQ16MDwYbMAKrEMDvawJB'
	$greenpng &= 'ipA9/pQWsfdy0fsdAfxxGGBOyCRio6JCdSV8dJwzuDgy7ZUtf0iA17TYghr1ev2crRGfxUsX2xzVhWfNnWUTNBTXR9Ns2nRsJXZ3sVoN3whksaMKFgDK31t1aCn5bmVtWksyWzUWe5tYU7WX69e2stVfthvv+ZtOE7vMGr5e1Z549C6r8OTDinjvsReeLWulHr7fatd+zq4SQH+ST7v8z3+xi/54s9V6/VWr/syTVqfi4/ZqxUetRtVKVq/K0/Z65SflRtrZJdfeYL++5T779c332G/UrrrlXv1+l1122+3WRn6+qNQoXnEjHFz5WYphcAlyqUFog1LTZuHB6aVhgIUdR8mvFVGrh+U5oLFOTTldDnqFAqx5qmIddgZzES6ms300DNY2GKj3aDpWulTcYCtWXvyv0ZbdtnPHNo35jrM0BVzNGhDcvGzVa9eyyjWqW3XlmjXq1RSzX7EGTevb6/q5RcumVqduLasL42u+ZjUa1LHqDepbBQVF195ys9104x+ttfxk+acfsKqlHrGH7r/FXij7qNVS9JvUrY5dd+01dsHlV9i1N9xkZ513vjWo+6o99uCdVqNSKbv7nlvlv+8X4E9YqQfussF9O9uNN99kdz70iJVVAPbc67WsSo1a9pyCsCflv0fo3Kdo5OzyHC81ihY3Yh2UiXriezlFjtPkogBrpClXAfK60047bb0aBY/jv+Rvvy+A+8v37hTIb2n06AjW4QAjCei+ttwNBq8Z0w3L9ImwOBpRM2D/5Zdf2Pb3dKjVlo22cvkS27xxvWZGTgkWmfXUUF9HFRYaNKprr77+spV5prTddNtNdu/f77E7VEK9VT7wvidL298ee9J+9+cb7LxLLrNzFEtcdNmlem9Xe/zRe63ey+WtmuS52jOPW+2qZW1IYns775fn2ak/Os1O/enpdtrZ51qlCk9by3ovWvVnn7AKT9xnVcs+aHVfeMpav1HV2raoZ3fff5/9s3RZuZWWNnbSFA0Y'
	$greenpng &= '/GuSwl5Vrw7mj5Z9Hd8bZi+yzDlPjKXrAJOgFg0WYYBFTk4u3XTJJZesEIazhF3sneBlAQ/BXi3q3iEGL1Wx46AOeA5OyNQIhlHN4sRMomq2tvfIujjBVjxfHCtt8votxQJvDCsyU2Pvvr3y31tstabkLF/9ji1arvN5NW9rmYLApavesXUbN9mXe/fZtvdV+Zk7z7LEqBbyWd01QjVK0Xbv9g2ta8u61qZ5Xeuf0t/SVMVK1JhuMkfPZQ231NGqg6uqNTQ9ydq1qGNVJdNVBHByTx2uOai3TZ05y4aNn2pLVmpO2Np1wZCf329xpTmW742V++IOCW6Z8KDZMgHBwAAswATyCdQcAbpFRanVGqvfJ1fLStHYX2LvOdLwdRzJrjfvEauXisUfaxw4l4vefPPNdtddd5kG+4PcmGFCzjLA8cPmkrC4qEGIeCBHJwn4TJDwjBDmaYXbUU0mwFB2a4bF7k808eCLz+3jjz4IhvJ8Nom/nuvzNy2C0xlKAnHVcntv22Zbt2aV7dBkvlj3FWtAoajAyo+Lj1auYC+RMvPUGLem9q/zH4M+p+8dYA6zFKiUlBeJhOvVkOiPVa5k0CH2FzItgDuIvcEBz0qkj6itFOArJAn7dRRqHgk2I0r//Oc/g2EsbacfHNXG7AQmznFz4fp0eITJWRwNuLwzohMCThTkwsCOgs/vUSMJ/x6deRJWlVjlyKKkOV7kTJ/hZ4lxGFvHFTLgD7j0NX1O30MyBb1Hhcl7AvVtDTh8LqzyhN1RBcljxOLCD+rQXKvrlU/thf5USsRezgL+TN8XCuTV+oBDGnjO80H/cuXKmaZ/BvOImFfEqWUMWjMVFkYTdMUbRiyMxT7rozggA0JhIJ3I/6LAOrMd4FiyXFxwnb30DcpH7ZpDt5gNA7CaTx70KX3LxAof7L/tttuOCdydwmWhMHlPLcdPEFfctF8As8td4V+i/Y/F4gmS5oDFfkS7Bv1zdPEP1N5RFLdBvni/'
	$greenpng &= 'zgjKZVYHlqZVcUEqhaRoVmXBad9MFaV+Gp4QEB4rPlGQfbpPLCBOBFB/T1HAhlkb9rnFBRdQUTniF85jghA6ECQAlr6jD+lLxtzpW6VEeWLvERFrh/p+odp6YXEYHww2+YdKM5K0VuPCjO0X/aXXPap2BBZjIeg9URujSppwl6cobs8NN9ywXKnTas382yV/fERSnQeLNfXTtP1AMD+LtIqb59RNps0yN5qaNj6bwAxml1SufS5XNACLBYz/LR7ghb0nytgTYS7Pho8lEmaOGkf+EA1z3CwzKplsx7mG9BV9Rt/Rh0yDUlCVI+buUdS8Tn29Qn2+Q3HQUTDg4G0AdvZKlg+JvfVFyiK3Eg7Qv/jii88SixdI1/PCLKbgwWnVhOnkYvLJWNZ7mie0SkNYayQpH0lejmjCe56Opwlu3s8N9jODmYaC1XIqNoDz0AQULumADqu/mkL9a6JeLMkuCdhFgVpSYJ253DNgolSkNaybYkkNB3gRLPHMftSsT5mlb+gj+oqxdrE3R+O9+3WA5SZVD99RQLVRffyF+jpPIAfRMxhANmcvwZWGeLfJrQar+Yv1JWD/TxHZs0qZYrKYD+IDGXgmqmMyniT7oArgO3Rz68XodUqldgjofWJxjnaGz2NuNA/IjH4e2A+BpgNoDGYDODMyybNZCQDwdBaFFYIQOtDBD/voaOATTq1OFNBoAOUT5LgHYgsCIpamMG2JSRAUIXxtFLVibzwbz8oz8+z0AX2hPbDyFJzmirmHRIqPVe9fJ5e3XkTZqrlXXyqgyqVvBXBAJkgVi73MvBF72yqaLtGhHKdoPtbZ+SyO+uIoi03OP8jRGOEQwER+xwTyHt30u5oZuFKW+Y58zHbJ9ecKJI5qbDlXA9fBaWX4IYIypJvpo/gmP9SZn/kbftyPdiUY4T38zt/9mHdeRxSPQdD5GAUNefShtuh3fKG/jsINwQ6AcS0apVk/u9DPL/Tzi1EeXsu98pmA7e/nWXgm'
	$greenpng &= '3sMzArAWoeVptmSOVjIckCTv0gqQdZLiNVris06+docykoNax5XHYD61BgoaRMyQCDKhnHHYu0lkZH/vkn3BYq2VKSNffNgjavfFLtVhFhPCM62T2X/USpl1qZtn6meu2HxIvuUjndLyro6oW6ZjV1dqNv9qSdVm+eYvtdrwsBiQq6SelXnBfC98tKcUAMPf6Eym5jpjYDxjoxzxSuGF1RNMBmTaKSzB9+PrOKMYOdTJoEHjZ/7G/8InkfuJp1yLa3Jt8nzYyWciu9wD98I9edrHvWIg/E8Glydwc6VIR3WdAzLonfq8DZLhRVqHtELArpfB71BVap/iFiQ5CKY8HSLfZXCH0jDsdWl29oKB+15VsA6rctVYZCwZe90UBPLpis4myicHLObCOHecPB+IVOf74gIWK+gyWaI9/fTTQZhPNEjQQA2VyfECmIAiVyAfUKHkQ0n4RknVYnX4CnX2IvmqdzVytUmdulsd+oVW5x1Uxx3T9xwxNNeZBYNgMcV3Ahc/DZTVFAAMcICo7XhNJ6EFUapcRtD4mb/xPz+gmvfwXsDlWlyTa/t5iLAZxvryUDE2R/d1WPezV/fyuYxhu1i6QYa1XPL7tgxpqfzreqWO25VV7NWE9sMCmKNng0iZaiDznhmKZcak5Llgaixzn2GvSzPs9cDKfe+VV16ZI4V9RwNDbKlx4l/Kr+7QKMVuqlv5eXEAcjTgwl94EQQWk785i5nPRR2VB9N5g0EnN27cuCDSzmdVnnz1UR30cVilud2y/PfV6Wu0jme1QF+vtkg+bJWCsw2S+OWKRDcIkO36+y69Zqc6drtWBuxRO6AOPirWHJXhHJURHdVnHZVhHZWCBI2f+Rv/4zW8Vu8LPlvtCynLTvnK7fq8j6QwO6UMm/Q5q8Tq9SpCrMu/l3W6hzW6x1VaSLZd7/lIi8kO6bOPaDgvF+MhgKI2IGMO5pCTBunzNS5dLSgQkV7GY28saXb2oqgaXNgv8jH3+et9'
	$greenpng &= 'icWnKkrrqnpnjrM4LNXhgCvsi2Exla4wi0ngeUAelAfmwSl30hGkDKy0Y/kG7OPcYG3HECzUyj8oOledmyOAj4lh++TXdkvadyuIoW1TJW2lWLdObYN+3qS/BU1SGTT/Pfr38P/03o1q69Xe0eveVftMP+8WO3dLVb4QwEe1MjBHTOWY2yDdQdYpUFAvdndAakh1D5WgJsByFLHXYC9pEHkuhYwwe/G9TGyHvbGkOZwWqf58TNI8Wpgct6PsCSOtCO1iycEK5VnHpU1hqcZXICtRX4z88CA8ELLEA/KgPDC5Hx1AR9AhDrL7xhggB2U8UixklOCFM32JVAlm8JecKUw0SzDEUk0PyFi2Gm5IL/+j8Trew3u5Btfimsg0fpjJDnwmyz4FbpDyRMHl1HIpUJD3s1qQiXGkPygVioVyoWAoGYqG7/VlKZQiw763MGlWWpQnwu1QfHTdCQMafSMBlyThMeVa+xhdCks1IIdzY1hMkMANc+MEDzwIDxRLqrFuOgKQ6Rg6KBwARUEm1cBP0tkEQnQ+IAAG9XBPtwAKH+qAA6AD7z/zP17DawnYosAyRRVDIsXhM5lZWhi4HshR4KF4ga8nv3VpRsFcmlE24hSUjrjFI2fYS0oUjprD0iyXe0jSXEOYnFhgFc8qxN4fyRf3kE/OiVa4wv6YG0RmkJt4AZdLNZUbOsD9MVYfC2QiYoIgckgCIapidDZspvMdaGc0YHtuHc5JAdGb/x2D4LUYB2qAsTiwYdbymbgKXAauA8NDlp25YXBxO2G/S3BJkBmVZrIN4hWyDx8p8pSIIJaCRjhqlpISWI3RqN/JkeYo2Iqmf6XZAnPDUXWs1ImAixtmBMTTJqSaMU2kmgflgd0fAzLWjtWHQXafzEp4r4Th89wv0+lIZhhoGAdAgA1YgAbgsZoDymt5D2qAsWA0XBPWohhh1rIyP14KBnMdXNwPGYP7XY+aSR1RtHBaRA0B5UOaiWnCBQ2PmjVGQL35'
	$greenpng &= 'XSkpU5y/mS9qncq9bhbI26NlTK9Ve+rkAZdLta8nzs+NA3/sqZMHXWGQwz5ZkWnAFBgDc5zN+EFYBQgw2qUbgGAfYAE4wNEA0YHkd/5Hc1CRfYDFaBxYFAPlgLUEUxgaBkcwiCvBpZAFRMH1oCrqd4maCT7D0uyBVTxw8btyj3tU0HgEd/nNoJt/VcaM5QeeYUhRqdNX/LHnxy7V+BakOr/CFVhvGGSCLiQMkJ3J7pMBmXSDWYQEMB580cl0dhRomBYGG7BoAAfo4cbfHFAMw0F1KcZ4HNgwazE0DA51ISj0gAr1QZZhbhTcqN8l5yVqRpoJSlG8aCnSmZufEh1WYPWGChqFHlt30oDHH6vC1ViR3KFYQRcgc8OeG/MgPJCnTlixB10eWYdBxicDMjkkKRQMgSl0qrPZK1AOtEu3sxqwAYvmoMNyb/zN/89rUQLei/z7oIADi3KEWYu/xfA8FfKAitTPZdmZGwXX/S7uyytWSLMXM3wggaIS4CoVOipp7ie3WKyTRU8myFKMM/vKJxwLTQ44rtJFwEDJDX/sZUys1/PjMMhhuSatILomhcKn4Zddsr3MiETCJoCG0Ug3gMBqwHbAAQzgaMitNwfTAeX1yDDXwGjws2FgURCUxFmLJGOAngqhPrHApZJH7EEMArgM3uO23O9S0AiDGw6qNJAQBFX6zp4c//4vMflcSXWGR9ax0ies01MnD7oA2UuZgEzJzn0ygRc5o+fJ7pdJo+hUJJFOprPxgTAa6YZhDjbgADhAOegAH238zwHl9RiKg4rxuJ/ls9zXoijci0syhohBkhGgQrgccl1nbhhcz3cBl8EE3Bh+l1QzGjGz5lfgztFYL+u2/3Nf8gsXKn0aXRjIWGk8kF2uAZnomhSKTUiIPmEEzKAT8W90Kp1LJzvQMBrphmEONuA44ABGA7xw879jFLyW92AogMq1uCbXxphwESgISoKioCy4ESQZQ8QgMUxUCEMl36cMSa7rzAVc'
	$greenpng &= 'RtuISbzW7OBSpYqkQ4C7UOCyZvs//6XS2aUCeQyLkGPJNRKEtWK1+J0wk5FrQCbwIoViYIJarQdfMINOpDPpVJdtZ7QHYgABIM5sBxzACmsYBa9FDRxU2IqPxYgwJgcWOUZRCKRgLYGhDx5gmBgohooqFQUuMYoPIITBzWfuQvne34k832zEXBLTkVxfKLkegU8OB17cPA+CtcYCmcDLq12UNPFZMMAl29lMZ9KpdK4DDaPxgwAAEIAN2wAHwAEK0B14wA83/s5reC3v4b0OKu4AI3LGOrDua521YUnGQDFUDBYXhCtynxtmbhhcomUPqMRYfO4cgXyFSPPfA64bgizuAgVeiYqumTwfpFDhOV2AHJZrj65JociTkTMsHwY4m/FndCISCFscaGc00g2rHWxAccAddECL1TAIGq8DUN6HwQAqbOXaGJMzFpfhwBIlozSw1iUZf0sa6HkuRR4PqFyWo+DSR6ie1O+YouVRqlYVf+pNSRh4sl6rPPlssbiVJPsAy0+jI1DItYPs0TV5Mj6KKBPLhwFhNtOJLtthoJFuGAUA+GlYBtiAA+AARQM0gA83/uZg8lrew3u5hoPKtV2Kw8AixygMgZSz1iUZQ8VgSQtxReGAysF1Sc6fEZmnlPOo+quvCMJGpP/9XwL2J6p4PaeK1w5ZZDACFY6wAZnomhSKRB/5wtKxeJdsZzOS57LtQBPMIN1ErXQ8rAZswIDZDjhA0QANNoYbf3MwMQ7ew3sBlWtxTfw/qsFnoSJRYFEaWMu4N6x1ScZgvb5McBmOll2S89f2MjK0WwDXVp99M/Xlb8pcdMM/FLj36AHeUuUr1/2yzwqhGOJDjMgXlo7FY/nOZjqNzoMdUaCRbjqcjnewAQNQAAc5BSgHHvABz1npszv4P691QDEYDIdrIsMYk0uxM9aBRY5RHGetSzIGi+FiwF7ECM+ERJLlb/Mkyeu10IDyI1tZffu+FHh9T+1Kzc5MRLJ9Qbn7ZYIv'
	$greenpng &= 'ZAsLx9KRbEahnM3um+lEOtOBJgUhWqXDYbWDDRiAAjhIOUDRAD5W8//zWgfUmQqoyDBRPT4WFQkDi8IALIpDIOWsJUvwCXMYMIbsg/WomKbaIMlH1B8jVJ26WoMIJ3fY7z9hJrLQM1SNqSA2ryWVCkfZWLZLNqVN2EwnIXHkjS7b+GdntPtoOpyOB2xAAAwABxhAByRY7g0D8Bb+O6/j9byXa2A4XNNBJR7AuFATZ2xYjt3XOmuJMTzHDdeU1Qd5DNQoRnlFwHKQyXfnS+z9voD+g9g8QEB/yT5c4dmajCmH2UxnIdthoGE0QJNWOasBGz+IhDvgBD4OOmDRAC7c/O8YBq/lPQCKOnAtBxXlgK0YF58dZizAIscoTzzW5m+zkKfs4pBYO1zP/Rf1w79n0OA/YT6y3DMkTY8qZ56rhw4WmXuk7Wx234xsR4F2H01Hh8GGXcFWxPmAAxDNgQf8aON/DiZGAku5hjMVUJFh2EpcgJogxbGA9bFc3E5o5qPJoHPE2uUqXJQVsN8t1sYzICo0AvoCSdbLYvMK5c3HHGgvjLhsu38GaKQbH00Hu3zT8TAbEAADdgMMDKfBPgCL1/g/r+M9vNcBxYDCoBIXoCaoCvcSnpjuS0rwtfl+lk1RcgXsBslxPQF70QnPXf5PsPBkfSZSJaCvUEr1huRrlRh9TBWcoJPCQMNogCYqpWORRDrawabzYRYMI+Bx0AEJ4GmwPdr4O6+hYSS8l2ugEhgQhuSg8pnEB9yDz1kOA5u/8yuMBdiNAraFjPaq77QcF9cQ8oG+TCW6VyTd84m4BboRjIVXNuKjCWDoYAfbme2AAwjAADogATwN0MLN/85raM5QjAa/ilo4qLiK6DISryPjXogn2CdSwC6TFNfR81xJmljc5/+feR2zRUToX8ryHxcD0iTf25VSHJPPDvx0rAn3MJvo2wGHZYAOOIAE8IU1XuNguvQCKNcMgxpe2QdbcSnsbKN7/FDKQ/BUGrfD'
	$greenpng &= 'M/zPAHaiD8rcL3XW6WrXqeNeEcgTxOoP1JE5KhAEzI4uoUHGCXRgOKADjgMP+IAWbfyd1ziYvpLP1wOFp67iNjA03Qt7M3+se5kmlaklQP9E4Fjstbkn2inf1fdRLFEn/kydeK0ClcoKXpLVwStYTgO7AZyaNwA4w/MXqge5KLJOA7Rw87/zGoDkPeHVeypIBNs5iqU5+qwvxNTV8q/pArmqPu+P5LHfiSLFf5PhwBLq3OrYC9VuVUD2gnxeD3X8FIGwWn7wIzFrn34/qoJKnv4XgETgFqvhO/H1KhfmMcypaP6ArvGJrrVOP0/XNfroNdX0WberXcRn/3+m/hstIh/wU/PZdLG+/1ntQTG9ioCpo9ZBDE8WgFlqo8JN4GUJ3BQZQBe9rq4M4DkB+LDef73aJWpnUSNW+1aXEv8fjq/0OCAnOxIAAAAASUVORK5CYII='

    Local $bString = _WinAPI_Base64Decode($greenpng)
          If @error Then Return SetError(1, 0, 0)
          $bString = Binary($bString)
          If $bSaveBinary Then
             Local Const $hFile = FileOpen($sSavePath & "\green.png", 18)
             If @error Then Return SetError(2, 0, $bString)
             FileWrite($hFile, $bString)
             FileClose($hFile)
          EndIf
    Return $bString
EndFunc

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode
#EndRegion ;**** --- ****

#Region ;*** Resultate in Statusbar schreiben ****
Func _StatusBarShowResult()
		Local Static $iRed = 0xDB0E00, $iGreen = 0x289916
	    Local $tRes = _QR_getLastCall()
	    StatusbarSetColors($aStatusBar, 1, ($tRes.success ? $iGreen : $iRed))
	    Local $aText[4] = [($tRes.type = 'B' ? 'HBMP': ($tRes.type = 'C' ? 'CLIPBOARD' : ($tRes.type = 'R' ? 'RESIZED' : 'FILECREATE'))), _
						   ($tRes.success ? 'SUCCES' : 'FAILED'), ($tRes.success ? StringFormat('%dx%d', $tRes.width, $tRes.width) : ''), _
						   ($tRes.type = 'F' ? ShrinkPath($tRes.output) : '')]
	     If $tRes.type = 'R' Then
		    $aText[3] = ($tRes.width = -1 ? $tRes.output : ShrinkPath($tRes.output))
		    If $tRes.width = -1 Then StatusbarSetColors($aStatusBar, 3, $iRed)
	     EndIf
	     StatusbarSetText($aStatusBar, '0|1|2|3', $aText)
EndFunc
#EndRegion ;**** --- ****
