Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 05/19/2023 in all areas

  1. He also provide Bans.
    4 points
  2. Andreik

    Bulldozer

    Added 20 more levels, so there are 60 levels now. Since some of you already played some levels I added also the option to start to a specific level so you don't have to play again from the beginning. To use this functionality just press J and enter the level that you want to play.
    2 points
  3. Hello I'm excited to share a piece of code with you that I've been working on. This code uses the GPT-4 api language model from OpenAI to correct German translations based on Dutch (nl-be) source texts. It can be especially helpful for those who are translating content between these languages or need to ensure the accuracy of translations. Here's an overview of what the code does: It uses the GPT-4 model from the OpenAI API to process the input text. The input consists of a Dutch source text, its German translation, and a prompt to correct the translation. It sends an HTTP POST request to the OpenAI API with the required headers and data. The code receives a JSON response from the API, which includes the corrected German translation. #include <InetConstants.au3> #include <Date.au3> #include <File.au3> #include <SQLite.au3> #include <SQLite.dll.au3> #include <GuiImageList.au3> #include <GuiListView.au3> #include <FileConstants.au3> #include <MsgBoxConstants.au3> #include <Excel.au3> #include <GUIConstantsEx.au3> #include <GuiListBox.au3> #include <GuiEdit.au3> #include <WindowsConstants.au3> #include <WinHttp.au3> #include <WinHttpConstants.au3> #include <Json.au3> #include <WinAPISys.au3> #include <WinAPIConv.au3> #include <WinAPILocale.au3> #include <Array.au3> #include <String.au3> #include <WinAPIConv.au3> #include <XMLWrapperEx.au3> While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch ;~ You can use this when the function ProcessWithGPT would have a loop in it. This way if the api fails, it tries again after 60 seconds. ;~ if $Go = 1 then ;~ If TimerDiff($iTimer) >= 60000 Then ;~ $iTimer = TimerInit() ;~ If Not $bFunctieActief Then ;~ $bFunctieActief = True ;~ ConsoleWrite(@CRLF & "Restart!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" & @CRLF) ;~ sleep(60000) ;~ ProcessWithGPT() ;~ EndIf ;~ EndIf ;~ EndIf WEnd Func ProcessWithGPT() $bFunctieActief = True $bron = "Zelf chape leggen met Staenis" $taal = "de" $vertaling = "Estrich selbst verlegen mit Staenis" Local $sPrompt = "Source text (Dutch, nl-be): " & $bron & " (" & $taal & "): " & $vertaling $sPrompt = EncodeAnchorTags($sPrompt) $opdracht = "Correct the German translation based on the Dutch (nl-be) source text, just make sure that the corrected translation is displayed." Local $iLength = StringLen($opdracht & $sPrompt) If $iLength > 4096 Then MsgBox(0, "error", "Te lang", 1) Return EndIf ; Store your API key and OpenAI organization key in a variable Local $api_key = "" Local $OpenAIOrganization = "" ; Create the WinHttpRequest object Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1") ; Open a POST request to the OpenAI API $oHTTP.Open("POST", "https://api.openai.com/v1/chat/completions", False) ; Set the headers for the request $oHTTP.SetRequestHeader("Content-Type", "application/json; charset=UTF-8") ;~ $oHTTP.SetRequestHeader("Content-Type", "application/json") $oHTTP.SetRequestHeader("Authorization", "Bearer " & $api_key) $oHTTP.SetRequestHeader("OpenAI-Organization", $OpenAIOrganization) ;~ ConsoleWrite('{"model": "gpt-4", "temperature": 0, "messages":[{"role": "system", "content": "' & $opdracht & '"}, {"role": "user","content": "' & $sPrompt & '"}]}') ConsoleWrite("{""model"": ""gpt-4"", ""temperature"": 0, ""messages"":[{""role"": ""system"", ""content"": " & Chr(34) & StringReplace($opdracht, Chr(34), "\" & Chr(34)) & Chr(34) & "}, {""role"": ""user"", ""content" & Chr(34) & ": " & Chr(34) & StringReplace($sPrompt, Chr(34), "\" & Chr(34)) & Chr(34) & "}]}") $oHTTP.SetTimeouts("130000", "130000", "130000", "130000") ; Try sending the HTTP request ;~ $oHTTP.Send('{"model": "gpt-4", "temperature": 0, "messages":[{"role": "system", "content": "' & $opdracht & '"}, {"role": "user","content": "' & $sPrompt & '"}]}') $oHTTP.Send("{""model"": ""gpt-4"", ""temperature"": 0, ""messages"":[{""role"": ""system"", ""content"": " & Chr(34) & StringReplace($opdracht, Chr(34), "\" & Chr(34)) & Chr(34) & "}, {""role"": ""user"", ""content" & Chr(34) & ": " & Chr(34) & StringReplace($sPrompt, Chr(34), "\" & Chr(34)) & Chr(34) & "}]}") If (@error) Then ConsoleWrite("Error: An error occurred while sending the HTTP request." & @CRLF) $bFunctieActief = False Return SetError(2, 0, 0) EndIf ; Waiting for a response from the server $oHTTP.WaitForResponse("130000") ; Check the status code of the HTTP request If ($oHttp.Status <> $HTTP_STATUS_OK) Then ConsoleWrite("Error: The HTTP request failed with status code " & $oHttp.Status & "." & @CRLF) EndIf ; Get the response text Local $sResponse = $oHTTP.ResponseText $sResponse = BinaryToString($oHTTP.ResponseBody, 4) ; Decode the JSON response to an AutoIt variable Local $oJsonResponse = Json_Decode($sResponse) ConsoleWrite("JSON-respons: " & $sResponse) ; Verify that JSON decoding has been done correctly If Not Json_IsObject($oJsonResponse) Then ConsoleWrite(@CRLF & "Error: JSON response cannot be decoded." & @CRLF) $bFunctieActief = False Return EndIf ; Remove the "choices" property from the JSON response Local $aChoices = Json_ObjGet($oJsonResponse, "choices") ; Check that the property was retrieved correctly If @error Then ConsoleWrite(@CRLF & "Error: Cannot extract the choices from the JSON response." & @CRLF) ConsoleWrite("JSON-respons: " & $sResponse & @CRLF) If StringInStr($sResponse, "That model is currently overloaded with other requests.") Then $retry += 1 ConsoleWrite("Server error detected, retry in 1 minute...." & @CRLF) Else $bFunctieActief = False Return EndIf EndIf ; Check for choices If UBound($aChoices) = 0 Then ConsoleWrite("Error: No choices are present in the JSON response." & @CRLF) ConsoleWrite("JSON-respons: " & $sResponse & @CRLF) $bFunctieActief = False Return EndIf ; Get the text from the "message" object of the first choice Local $oFirstChoiceMessage = Json_ObjGet($aChoices[0], "message") Global $sText = Json_ObjGet($oFirstChoiceMessage, "content") $sText = DecodeAnchorTags($sText) ; Get the response text ConsoleWrite(@CRLF & "Generated response: " & $sResponse & @CRLF) ConsoleWrite(@CRLF & "Generated text: " & $sText & @CRLF) $bFunctieActief = False EndFunc Func EncodeAnchorTags($sText) ; This is something i need to keep links alive in the resource files $sText = StringReplace($sText, "} '", "}'") $sText = StringReplace($sText, "' {", "'{") For $i = 0 To 9 $sText = StringReplace($sText, "<a href='{" & $i & "}'>", "(" & $i & $i & $i & ")") $sText = StringReplace($sText, "</a>", "(" & $i & $i & ")") Next Return $sText EndFunc Func DecodeAnchorTags($sEncodedText) ; This is something i need to keep links alive in the resource files For $i = 0 To 9 $sEncodedText = StringReplace($sEncodedText, "(" & $i & $i & $i & ")", "<a href='{" & $i & "}'>") $sEncodedText = StringReplace($sEncodedText, "(" & $i & $i & ")", "</a>") Next Return $sEncodedText EndFunc Func ReplaceSpecialChars($sText) $sText = StringReplace($sText, "'", "\'") $sText = StringReplace($sText, '"', '\"') $sText = StringReplace($sText, '„', '\"') $sText = StringReplace($sText, '‘', "\'") $sText = StringReplace($sText, '’', "\'") $sText = StringReplace($sText, '“', '\"') Return $sText EndFunc Please note that you will need to obtain an API key and an OpenAI organization key to use this code. Replace the empty strings in the following lines with your keys: Local $api_key = "" Local $OpenAIOrganization = "" You may also need to install some necessary AutoIt libraries (such as Json.au3) to use the code successfully. Feel free to use, modify, or share this code as needed. If you have any questions or suggestions, please don't hesitate to reply to this thread. I hope you find this code helpful! Best regards, KillaH229
    1 point
  4. This basically sums it up: You aren't clearly putting in any effort for anything before posting.
    1 point
  5. wolf9228

    Class create

    With this project, you can create a Class with a set of functions... There are two examples for the rich editor. The code speaks for itself Class.zip Class.au3 #include <Memory.au3> Func AddClassVariable($VariableArray,$VariableType,$VariableName,$VariableVale) if Not IsArray($VariableArray) Then Local $cVariableArray[1][3] Else $cVariableArray = $VariableArray ReDim $cVariableArray[UBound($cVariableArray) + 1][3] EndIf $cVariableArray[UBound($cVariableArray) - 1][0] = $VariableType $cVariableArray[UBound($cVariableArray) - 1][1] = $VariableName $cVariableArray[UBound($cVariableArray) - 1][2] = $VariableVale Return $cVariableArray EndFunc Func AddClassMethod($MethodArray,$MethodName,$MethodPointer) if Not IsArray($MethodArray) Then Local $cMethodArray[1][3] Else $cMethodArray = $MethodArray ReDim $cMethodArray[UBound($cMethodArray) + 1][2] EndIf $cMethodArray[UBound($cMethodArray) - 1][0] = $MethodName $cMethodArray[UBound($cMethodArray) - 1][1] = $MethodPointer Return $cMethodArray EndFunc Func NewClass($MethodArray,$VariableArray = 0) Local $TagClass = "",$Tag_Class = "",$UBoundA = UBound($MethodArray),$UBoundB = UBound($VariableArray) if $UBoundA + $UBoundB = 0 Then Return SetError(1,0,0) if $UBoundA Then For $i = 1 To $UBoundA $TagClass &= "PTR " & $MethodArray[$i - 1][0] & ";" Next $TagClass = StringTrimRight($TagClass,1) EndIf if $UBoundB Then For $i = 1 To $UBoundB $Tag_Class &= $VariableArray[$i - 1][0] & " " & $VariableArray[$i - 1][1] & ";" Next $Tag_Class = StringTrimRight($Tag_Class,1) EndIf $NewClass = DllStructCreate($TagClass,_MemGlobalLock(_MemGlobalAlloc(DllStructGetSize(DllStructCreate($TagClass))))) if @error And StringLen($TagClass) Then SetError(3,0,0) if $UBoundA Then For $i = 1 To $UBoundA DllStructSetData($NewClass,$MethodArray[$i - 1][0],$MethodArray[$i - 1][1]) if @error Then Return SetError(4,0,0) Next EndIf $cTag_Class = "PTR;INT;INT;INT;WCHAR[" & StringLen($TagClass) + 2 & "]" & ";WCHAR[" & StringLen($Tag_Class) + 2 & "];" & $Tag_Class $New_Class = DllStructCreate($cTag_Class,_MemGlobalLock(_MemGlobalAlloc(DllStructGetSize(DllStructCreate($cTag_Class))))) DllStructSetData($New_Class,1,DllStructGetPtr($NewClass)) DllStructSetData($New_Class,3 , StringLen($TagClass) + 2) DllStructSetData($New_Class, 4,StringLen($Tag_Class) + 2) DllStructSetData($New_Class,2,0123456789) DllStructSetData($New_Class,5, $TagClass) DllStructSetData($New_Class,6,$Tag_Class) if $UBoundB Then For $i = 1 To $UBoundB DllStructSetData($New_Class,$VariableArray[$i - 1][1],$VariableArray[$i - 1][2]) if @error Then Return SetError(5,0,0) Next EndIf Return SetError(0,0,DllStructGetPtr($New_Class)) EndFunc Func GetValue($Object,$VarName) $Class = DllStructCreate("PTR;INT;INT;INT",$Object) $FormatNumbr = DllStructGetData($Class,2) if ($FormatNumbr <> 0123456789) Then Return SetError(6,0,0) ; error 6 $StrLenA = DllStructGetData($Class,3) $StrLenB = DllStructGetData($Class,4) $Class = DllStructCreate("PTR;INT;INT;INT;WCHAR[" & $StrLenA & "]" & ";WCHAR[" & $StrLenB & "]",$Object) $Tag_Class = DllStructGetData($Class,6) $ClassSt = DllStructCreate("PTR;INT;INT;INT;WCHAR[" & $StrLenA & "]" & ";WCHAR[" & $StrLenB & "];" & $Tag_Class,$Object) $Value = DllStructGetData($ClassSt,$VarName) ; DllStructGetData @error ==> 1 2 3 4 5 Return SetError(@error,0,$Value) ; DllStructGetData @error ==> 1 2 3 4 5 EndFunc Func SetValue($Object,$VarName,$Value) $Class = DllStructCreate("PTR;INT;INT;INT",$Object) $FormatNumbr = DllStructGetData($Class,2) if ($FormatNumbr <> 0123456789) Then Return SetError(6,0,0) ; error 6 $StrLenA = DllStructGetData($Class,3) $StrLenB = DllStructGetData($Class,4) $Class = DllStructCreate("PTR;INT;INT;INT;WCHAR[" & $StrLenA & "]" & ";WCHAR[" & $StrLenB & "]",$Object) $Tag_Class = DllStructGetData($Class,6) $ClassSt = DllStructCreate("PTR;INT;INT;INT;WCHAR[" & $StrLenA & "]" & ";WCHAR[" & $StrLenB & "];" & $Tag_Class,$Object) $Value = DllStructSetData($ClassSt,$VarName,$Value) Return SetError(@error,0,$Value) ;DllStructSetData @error ==> 1 2 3 4 5 EndFunc Func CallMethodA($ReturnType,$MethodNumber,$MehParams,$VarType1 = 0,$VarName1 = 0,$VarType2 = 0,$VarName2 = 0 , $VarType3 = 0 , $VarName3 = 0 ,$VarType4 = 0, _ $VarName4 = 0,$VarType5 = 0 , $VarName5 = 0 , $VarType6 = 0 , $VarName6 = 0 , $VarType7 = 0,$VarName7 = 0,$VarType8 = 0,$VarName8 = 0,$VarType9 = 0,$VarName9 = 0, _ $VarType10 = 0,$VarName10 = 0 , $VarType11 = 0 , $VarName11 = 0 , $VarType12 = 0 , $VarName12 = 0 ,$VarType13 = 0 ,$VarName13 = 0 ,$VarType14 = 0 ,$VarName14 = 0, _ $VarType15 = 0,$VarName15 = 0 , $VarType16 = 0 , $VarName16 = 0 , $VarType17 = 0 , $VarName17 = 0 , $VarType18 = 0 ,$VarName18 = 0,$VarType19 = 0,$VarName19 = 0, _ $VarType20 = 0,$VarName20 = 0) ;$MehParams ==> @NumParams macro $Class = DllStructCreate("PTR Class",$VarName1) $MethodSt = DllStructCreate("PTR",DllStructGetData($Class,1) + (($MethodNumber - 1) * 4)) $MethodPtr = DllStructGetData($MethodSt,1) Switch $MehParams Case 1 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1) Case 2 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2) Case 3 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3) Case 4 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4) Case 5 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5) Case 6 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6) Case 7 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7) Case 8 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8) Case 9 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9) Case 10 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10) Case 11 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11) Case 12 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12) Case 13 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13) Case 14 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14) Case 15 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15) Case 16 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16) Case 17 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17) Case 18 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18) Case 19 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18,$VarType19, _ $VarName19) Case 20 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18,$VarType19, _ $VarName19,$VarType20,$VarName20) EndSwitch Return SetError(1,0,0) EndFunc Func CallMethodB($ReturnType,$MethodName,$MehParams,$VarType1 = 0,$VarName1 = 0,$VarType2 = 0,$VarName2 = 0 , $VarType3 = 0 , $VarName3 = 0 ,$VarType4 = 0, _ $VarName4 = 0,$VarType5 = 0 , $VarName5 = 0 , $VarType6 = 0 , $VarName6 = 0 , $VarType7 = 0,$VarName7 = 0,$VarType8 = 0,$VarName8 = 0,$VarType9 = 0,$VarName9 = 0, _ $VarType10 = 0,$VarName10 = 0 , $VarType11 = 0 , $VarName11 = 0 , $VarType12 = 0 , $VarName12 = 0 ,$VarType13 = 0 ,$VarName13 = 0 ,$VarType14 = 0 ,$VarName14 = 0, _ $VarType15 = 0,$VarName15 = 0 , $VarType16 = 0 , $VarName16 = 0 , $VarType17 = 0 , $VarName17 = 0 , $VarType18 = 0 ,$VarName18 = 0,$VarType19 = 0,$VarName19 = 0, _ $VarType20 = 0,$VarName20 = 0) ;$MehParams ==> @NumParams macro $Class = DllStructCreate("PTR;INT;INT;INT",$VarName1) $FormatNumbr = DllStructGetData($Class,2) if ($FormatNumbr <> 0123456789) Then Return SetError(1,0,0) $StrLenA = DllStructGetData($Class,3) $StrLenB = DllStructGetData($Class,4) $Class = DllStructCreate("PTR;INT;INT;INT;WCHAR[" & $StrLenA & "]" & ";WCHAR[" & $StrLenB & "]",$VarName1) $TagClass = DllStructGetData($Class,5) $ClassSt = DllStructCreate($TagClass,DllStructGetData($Class,1)) $MethodPtr = DllStructGetData($ClassSt,$MethodName) if @error Then Return SetError(2,0,0) Switch $MehParams Case 1 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1) Case 2 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2) Case 3 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3) Case 4 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4) Case 5 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5) Case 6 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6) Case 7 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7) Case 8 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8) Case 9 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9) Case 10 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10) Case 11 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11) Case 12 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12) Case 13 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13) Case 14 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14) Case 15 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15) Case 16 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16) Case 17 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17) Case 18 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18) Case 19 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18,$VarType19, _ $VarName19) Case 20 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18,$VarType19, _ $VarName19,$VarType20,$VarName20) EndSwitch Return SetError(3,0,0) EndFunc Func DeleteClass($Object) $Class = DllStructCreate("PTR Class",$Object) $ClassPtr = DllStructGetData($Class,1) _MemGlobalFree(GlobalHandle($ClassPtr)) _MemGlobalFree( GlobalHandle ($Object)) EndFunc Func GlobalHandle($pMem) $Return = DllCall("Kernel32.dll","ptr","GlobalHandle","ptr",$pMem) if @error Then Return SetError(1,0,0) Return $Return[0] EndFunc RichEdit_Class.au3 #include <Class.au3> Global $S_OK = 0 , $E_NOTIMPL = 0x80004001 Func RichEdit_CB_QueryInterface($Object,$iid,$ppvObject) return $S_OK EndFunc Func RichEdit_CB_AddRef($Object) return SetValue($Object,"nCount",GetValue($Object,"nCount") + 1) EndFunc Func RichEdit_CB_Release($Object) if (GetValue($Object,"nCount") > 0) Then return SetValue($Object,"nCount",GetValue($Object,"nCount") - 1) return $S_OK; EndFunc Func RichEdit_CB_GetNewStorage($Object,$lplpstg) $nHresult = DllCall("Ole32.dll","LONG","CreateILockBytesOnHGlobal","PTR",0,"BOOL",True,"PTR*",0) if (@error Or $nHresult[0] <> $S_OK) Then return $nHresult[0] $Lock_Bytes = $nHresult[3] ;BitOR(STGM_SHARE_EXCLUSIVE,STGM_READWRITE,STGM_CREATE) $nHresult = DllCall("Ole32.dll","LONG","StgCreateDocfileOnILockBytes","PTR",$Lock_Bytes _ ,"DWORD",BitOR(0x00000010,0x00000002,0x00001000),"DWORD",0,"PTR*",0) if (@error Or $nHresult[0] <> $S_OK) Then CallMethodA("LONG",3,1,"PTR",$Lock_Bytes) ; Call Release() Method In $Lock_Bytes Obj // Release() Method Table Number 3 $Cast = DllStructCreate("PTR",$lplpstg) DllStructSetData($Cast,1,$nHresult[4]) return $nHresult[0] EndFunc Func RichEdit_CB_GetInPlaceContext($Object,$lplpFrame,$lplpDoc,$lpFrameInfo) return $E_NOTIMPL EndFunc Func RichEdit_CB_ShowContainerUI($Object,$fShow) return $E_NOTIMPL EndFunc Func RichEdit_CB_QueryInsertObject($Object,$lpclsid,$lpstg,$cp) return $S_OK EndFunc Func RichEdit_CB_DeleteObject($Object,$lpoleobj) return $E_NOTIMPL EndFunc Func RichEdit_CB_QueryAcceptData($Object,$lpdataobj,$lpcfFormat,$reco,$fReally,$hMetaPict) return $S_OK EndFunc Func RichEdit_CB_ContextSensitiveHelp($Object,$fEnterMode) return $E_NOTIMPL EndFunc Func RichEdit_CB_GetClipboardData($Object,$lpchrg,$reco,$lplpdataobj) return $E_NOTIMPL EndFunc Func RichEdit_CB_GetDragDropEffect($Object,$fDrag,$grfKeyState,$pdwEffect) return $E_NOTIMPL EndFunc Func RichEdit_CB_GetContextMenu($Object,$seltype,$lpoleobj,$lpchrg,$lphmenu) return $E_NOTIMPL EndFunc Func IDataObject_QueryInterface($Object,$iid,$ppvObject) return $E_NOTIMPL EndFunc Func IDataObject_AddRef($Object) return $E_NOTIMPL EndFunc Func IDataObject_Release($Object) return $E_NOTIMPL EndFunc Func IDataObject_GetData($Object,$pformatetcIn,$pmedium) MoveMemory( GetValue( $Object , "pmedium" ) ,$pmedium,12) return $S_OK EndFunc Func IDataObject_GetDataHere($Object,$pformatetc,$pmedium) return $E_NOTIMPL EndFunc Func IDataObject_QueryGetData($Object,$pformatetc) return $E_NOTIMPL EndFunc Func IDataObject_GetCanonicalFormatEtc($Object,$pformatectIn,$pformatetcOut) return $E_NOTIMPL EndFunc Func IDataObject_SetData($Object,$pformatetc,$pmedium,$fRelease) MoveMemory(GetValue($Object,"pformatetc"),$pformatetc,20) MoveMemory( GetValue( $Object , "pmedium" ) ,$pmedium,12) return $S_OK EndFunc Func IDataObject_EnumFormatEtc($Object,$dwDirection,$ppenumFormatEtc) return $E_NOTIMPL EndFunc Func IDataObject_DAdvise($Object,$pformatetc,$advf,$pAdvSink,$pdwConnection) return $E_NOTIMPL EndFunc Func IDataObject_DUnadvise($Object,$dwConnection) return $E_NOTIMPL EndFunc Func IDataObject_EnumDAdvise($Object,$ppenumAdvise) return $E_NOTIMPL EndFunc Func MoveMemory($Source,$Destination,$Length) DllCall("Kernel32.dll","none","RtlMoveMemory","PTR",$Destination,"PTR",$Source,"INT",$Length) EndFunc RichEdit_Example.au3 #include <GUIConstantsEx.au3> #include <GuiRichEdit.au3> #include <WindowsConstants.au3> #include <SendMessage.au3> #include <GDIPlus.au3> #include "RichEdit_Class.au3" ;Minimum supported Windows XP Global $RichEdit_CB_Method[13] , $IDataObject_Method[12] , $IRichEditOleCallback = 0 , $IDataObject = 0 $hGui = GUICreate("InsertObject Example",700,390) $hRichEdit = _GUICtrl_RichEdit_Create($hGui,"", 10, 10,680,300, _ BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) $Button1 = GUICtrlCreateButton("InsertObject",10,320,200,50) GUICtrlSetFont(-1,18,600) GUISetState() InsertObject($hRichEdit,@ScriptDir & "\Image.TIF") While True $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE _GUICtrlRichEdit_SetText ($hRichEdit,"") _GUICtrlRichEdit_Destroy($hRichEdit) DeleteClass($IRichEditOleCallback) DeleteClass($IDataObject) Exit Case $iMsg = $Button1 $var = FileOpenDialog("", @ScriptDir & "\","All (*.*)", 1 + 4) if Not @error Then InsertObject($hRichEdit,$var) EndIf EndSelect WEnd Func __GCR_SetOLE_Callback($hWnd) If Not IsHWnd($hWnd) Then Return SetError(101, 0, False) if ($IRichEditOleCallback = 0) Then $IRichEditOleCallback = IRichEditOleCallback_Create() Local Const $EM_SETOLECALLBACK = 0x400 + 70 If _SendMessage($hWnd, $EM_SETOLECALLBACK, 0, $IRichEditOleCallback) = 0 Then Return SetError(700, 0, False) Return True EndFunc ;==>__GCR_SetOLECallback ;http://msdn.microsoft.com/en-us/library/windows/desktop/dd387916%28v=vs.85%29.aspx ;Use a Rich Edit Interface ;Rich edit controls expose some of their functionality through Component Object Model ;(COM) interfaces. By obtaining an interface from a control, you gain the ability to ;work with other objects within the control. You can obtain this interface by sending ;the EM_GETOLEINTERFACE message. From the IRichEditOle interface, you can then obtain ;interfaces used in the Text Object Model. ;Another interface, IRichEditOleCallback, is implemented by applications to define the ;behavior of the control when it interacts with objects. ;Insert an Object into a Rich Edit Control ;The following code example inserts a file object into a rich edit control. If a program ;is associated with the file type on the user's machine (for example, Microsoft Excel for ;an .xls file), the contents of the file display in the control; otherwise, an icon appears. ; BMP, GIF, JPEG, PNG, TIFF, Exif, WMF, and EMF // GDIPlus Library Func InsertObject($hRichEdit,$pszFileName) Local $hr = 0, $Rt = 0 , $EM_GETOLEINTERFACE = 1084 , $pRichEditOle = 0 $pRichEditOle = _SendMessage($hRichEdit,$EM_GETOLEINTERFACE,0,0,4,"wparam","ptr*") if ($pRichEditOle == 0) Then return FALSE; EndIf Local $pLockBytes = 0 $hr = DllCall("Ole32.dll","long","CreateILockBytesOnHGlobal","ptr",0,"BOOL",True,"Ptr*",0) if (@error Or $hr[0] <> 0) Then return FALSE; EndIf $pLockBytes = $hr[3] Local $pStorage = 0 $hr = DllCall("Ole32.dll","long","StgCreateDocfileOnILockBytes","ptr",$pLockBytes, _ "DWORD",BitOR(0x00000010,0x00001000,0x00000002), _ "DWORD",0,"Ptr*",0) if (@error Or $hr[0] <> 0) Then return FALSE; EndIf $pStorage = $hr[4] $tagFORMATETC = "int cfFormat;ptr ptd;DWORD dwAspect;LONG lindex;DWORD tymed" $formatEtc = DllStructCreate($tagFORMATETC) DllStructSetData($formatEtc,"cfFormat",0) DllStructSetData($formatEtc,"ptd",0) DllStructSetData($formatEtc,"dwAspect",1) DllStructSetData($formatEtc,"lindex",-1) DllStructSetData($formatEtc,"tymed",0) Local $pClientSite ;hr = pRichEditOle->GetClientSite(&pClientSite); ;GetClientSite Virtual Method Number Of GetClientSite Is 4 in (IRichEditOle interface) $hr = CallMethodA("long",4,2,"ptr",$pRichEditOle,"ptr*",0) if (@error Or $hr[0] <> 0) Then return FALSE; EndIf $pClientSite = $hr[2] Local $pUnk,$clsid = CLSIDFromString("{00000000-0000-0000-0000-000000000000}") Local $IID_IUnknown = IIDFromString("{00000000-0000-0000-C000-000000000046}") _GDIPlus_Startup() ; BMP, GIF, JPEG, PNG, TIFF, Exif, WMF, and EMF Local $hBMP = 0 $hBitmap = _GDIPlus_BitmapCreateFromFile($pszFileName) if ($hBitmap) Then $hBMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap) _GDIPlus_BitmapDispose($hBitmap) EndIf _GDIPlus_Shutdown ( ) if ($hBMP) Then if $IDataObject = 0 Then $IDataObject = IDataObject_Create() $DVASPECT_CONTENT = 1 $TYMED_GDI = 16 $OLERENDER_FORMAT = 2 DllStructSetData($formatEtc,"cfFormat",$CF_BITMAP) DllStructSetData($formatEtc,"ptd",0) DllStructSetData($formatEtc,"dwAspect",$DVASPECT_CONTENT) DllStructSetData($formatEtc,"lindex",-1) DllStructSetData($formatEtc,"tymed",$TYMED_GDI) $tagSTGMEDIUM = "DWORD tymed;ptr hBitmap;ptr pUnkForRelease" $STGMEDIUM = DllStructCreate($tagSTGMEDIUM) DllStructSetData($STGMEDIUM,"tymed",$TYMED_GDI) DllStructSetData($STGMEDIUM , "hBitmap" ,$hBMP) DllStructSetData($STGMEDIUM,"pUnkForRelease",0) SetValue($IDataObject,"pformatetc",DllStructGetPtr($formatEtc)) SetValue($IDataObject ,"pmedium" , DllStructGetPtr($STGMEDIUM)) $ID_IOleObject = IIDFromString("{00000112-0000-0000-C000-000000000046}") $hr = DllCall("Ole32.dll","long","OleCreateStaticFromData","ptr",$IDataObject,"ptr", _ DllStructGetPtr($ID_IOleObject),"DWORD",$OLERENDER_FORMAT,"ptr",DllStructGetPtr($formatEtc) _ ,"ptr",$pClientSite,"ptr",$pStorage,"Ptr*",0) if ($hr[0] <> 0) Then return FALSE; EndIf $pObject = $hr[7] DllCall("Ole32.dll","long","OleSetContainedObject","ptr",$pObject,"BOOL",True) $tagREOBJECT = "DWORD cbStruct;LONG cp;ulong Data1;ushort Data2;ushort Data3;byte Data4[8]" & _ ";ptr poleobj;ptr pstg;ptr polesite;long x;long y;DWORD dvaspect;DWORD dwFlags;DWORD dwUser" $reobject = DllStructCreate($tagREOBJECT) DllStructSetData($reobject,"cbStruct",DllStructGetSize($reobject)) ;hr = pObject->GetUserClassID(&clsid); ;GetUserClassID Virtual Method Number Of GetUserClassID Is 16 in (IOleObject interface) $hr = CallMethodA("long",16,2,"ptr",$pObject,"ptr",DllStructGetPtr($clsid)) if ($hr[0] <> 0) Then ;pObject->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IOleObject interface) CallMethodA("long",3,1,"ptr",$pObject) return FALSE EndIf MoveMemory(DllStructGetPtr($clsid),DllStructGetPtr($reobject) + 8,16) ;8 ==> SizeOf "DWORD cbStruct;LONG cp;" ;16 ==> sizeOf $clsid DllStructSetData($reobject,"cp",-1) DllStructSetData($reobject,"dvaspect",1) DllStructSetData($reobject,"dwFlags",BitOR(0x00000001,0x00000002)) DllStructSetData($reobject,"dwUser",0) DllStructSetData($reobject,"poleobj",$pObject) DllStructSetData($reobject,"polesite",$pClientSite) DllStructSetData($reobject,"pstg",$pStorage) $SIZEL = DllStructCreate("long;long"); DllStructSetData($reobject,"SIZEL",DllStructGetPtr($SIZEL)) _SendMessage($hRichEdit, 0xB1, 0, -1);EM_SETSEL $Rt = _SendMessage($hRichEdit, 0xB0,0,0,-1,"DWORD*","DWORD*");EM_GETSEL Local $dwStart = $Rt[3], $dwEnd = $Rt[4] _SendMessage($hRichEdit,0xB1, $dwEnd+1, $dwEnd+1);EM_SETSEL _SendMessage($hRichEdit, 0xC2, TRUE,@CRLF,0,"BOOL","wstr");EM_REPLACESEL ;hr = pRichEditOle->InsertObject(&reobject); ;InsertObject Virtual Method Number Of InsertObject Is 8 in (IRichEditOle interface) $hr = CallMethodA("long",8,2,"ptr",$pRichEditOle,"ptr",DllStructGetPtr($reobject)) ;pObject->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IOleObject interface) CallMethodA("long",3,1,"ptr",$pObject) ;pRichEditOle->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IRichEditOle interface) CallMethodA("long",3,1,"ptr",$pRichEditOle) if ($hr[0] <> 0) Then return FALSE; EndIf _WinAPI_DeleteObject ( $hBMP ) return TRUE; Else $hr = DllCall("Ole32.dll","long","OleCreateFromFile","ptr",DllStructGetPtr($clsid),"wstr", _ $pszFileName,"ptr",DllStructGetPtr($IID_IUnknown),"DWORD",1,"ptr",DllStructGetPtr($formatEtc) _ ,"ptr",$pClientSite,"ptr",$pStorage,"Ptr*",0) ;pClientSite->Release(); ;IOleClientSite interface inherits from the IUnknown Or IOleClientSite : public IUnknown ;Release() Virtual Method Number Of Release() Is 3 In (IOleClientSite interface) CallMethodA("long",3,1,"ptr",$pClientSite) if ($hr[0] <> 0) Then return FALSE; EndIf $pUnk = $hr[8] Local $pObject,$IID_IOleObject = IIDFromString("{00000112-0000-0000-C000-000000000046}") ;hr = pUnk->QueryInterface(IID_IOleObject, (void**)&pObject); ;New pUnk (IOleObject) interface inherits from the IUnknown Or IOleObject : public IUnknown ;QueryInterface() Virtual Method Number Of QueryInterface() Is 1 In (IOleObject) $hr = CallMethodA("long",1,3,"ptr",$pUnk,"ptr",DllStructGetPtr($IID_IOleObject),"ptr*",0) ;Release() Virtual Method Number Of Release() Is 3 In (IOleObject interface) ;pUnk->Release(); CallMethodA("long",3,1,"ptr",$pUnk) if ($hr[0] <> 0) Then return FALSE; EndIf $pObject = $hr[3] DllCall("Ole32.dll","long","OleSetContainedObject","ptr",$pObject,"BOOL",True) $tagREOBJECT = "DWORD cbStruct;LONG cp;ulong Data1;ushort Data2;ushort Data3;byte Data4[8]" & _ ";ptr poleobj;ptr pstg;ptr polesite;long x;long y;DWORD dvaspect;DWORD dwFlags;DWORD dwUser" $reobject = DllStructCreate($tagREOBJECT) DllStructSetData($reobject,"cbStruct",DllStructGetSize($reobject)) ;hr = pObject->GetUserClassID(&clsid); ;GetUserClassID Virtual Method Number Of GetUserClassID Is 16 in (IOleObject interface) $hr = CallMethodA("long",16,2,"ptr",$pObject,"ptr",DllStructGetPtr($clsid)) if (@error Or $hr[0] <> 0) Then ;pObject->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IOleObject interface) CallMethodA("long",3,1,"ptr",$pObject) return FALSE EndIf MoveMemory(DllStructGetPtr($clsid),DllStructGetPtr($reobject) + 8,16) ;8 ==> SizeOf "DWORD cbStruct;LONG cp;" ;16 ==> sizeOf $clsid DllStructSetData($reobject,"cp",-1) DllStructSetData($reobject,"dvaspect",1) DllStructSetData($reobject,"dwFlags",BitOR(0x00000001,0x00000002)) DllStructSetData($reobject,"dwUser",0) DllStructSetData($reobject,"poleobj",$pObject) DllStructSetData($reobject,"polesite",$pClientSite) DllStructSetData($reobject,"pstg",$pStorage) $SIZEL = DllStructCreate("long;long"); DllStructSetData($reobject,"SIZEL",DllStructGetPtr($SIZEL)) _SendMessage($hRichEdit, 0xB1, 0, -1);EM_SETSEL $Rt = _SendMessage($hRichEdit, 0xB0,0,0,-1,"DWORD*","DWORD*");EM_GETSEL Local $dwStart = $Rt[3], $dwEnd = $Rt[4] _SendMessage($hRichEdit,0xB1, $dwEnd+1, $dwEnd+1);EM_SETSEL _SendMessage($hRichEdit, 0xC2, TRUE,@CRLF,0,"BOOL","wstr");EM_REPLACESEL ;hr = pRichEditOle->InsertObject(&reobject); ;InsertObject Virtual Method Number Of InsertObject Is 8 in (IRichEditOle interface) $hr = CallMethodA("long",8,2,"ptr",$pRichEditOle,"ptr",DllStructGetPtr($reobject)) ;pObject->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IOleObject interface) CallMethodA("long",3,1,"ptr",$pObject) ;pRichEditOle->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IRichEditOle interface) CallMethodA("long",3,1,"ptr",$pRichEditOle) if ($hr[0] <> 0) Then return FALSE; EndIf return TRUE; EndIf EndFunc Func IDataObject_Create() Local $cMethodArray = 0 $IDataObject_Method[0] = DllCallbackRegister("IDataObject_QueryInterface","LONG","PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_QueryInterface",DllCallbackGetPtr($IDataObject_Method[0])) $IDataObject_Method[1] = DllCallbackRegister("IDataObject_AddRef","LONG","PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_AddRef",DllCallbackGetPtr($IDataObject_Method[1])) $IDataObject_Method[2] = DllCallbackRegister("IDataObject_Release","LONG","PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_Release",DllCallbackGetPtr($IDataObject_Method[2])) $IDataObject_Method[3] = DllCallbackRegister("IDataObject_GetData","LONG","PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_GetData",DllCallbackGetPtr($IDataObject_Method[3])) $IDataObject_Method[4] = DllCallbackRegister("IDataObject_GetDataHere","LONG","PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_GetDataHere",DllCallbackGetPtr($IDataObject_Method[4])) $IDataObject_Method[5] = DllCallbackRegister("IDataObject_QueryGetData","LONG","PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_QueryGetData",DllCallbackGetPtr($IDataObject_Method[5])) $IDataObject_Method[6] = DllCallbackRegister("IDataObject_GetCanonicalFormatEtc","LONG","PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_GetCanonicalFormatEtc",DllCallbackGetPtr($IDataObject_Method[6])) $IDataObject_Method[7] = DllCallbackRegister("IDataObject_SetData","LONG","PTR;PTR;PTR;BOOL") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_SetData",DllCallbackGetPtr($IDataObject_Method[7])) $IDataObject_Method[8] = DllCallbackRegister("IDataObject_EnumFormatEtc","LONG","PTR;DWORD;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_EnumFormatEtc",DllCallbackGetPtr($IDataObject_Method[8])) $IDataObject_Method[9] = DllCallbackRegister("IDataObject_DAdvise","LONG","PTR;PTR;DWORD;PTR;DWORD") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_DAdvise",DllCallbackGetPtr($IDataObject_Method[9])) $IDataObject_Method[10] = DllCallbackRegister("IDataObject_DUnadvise","LONG","PTR;DWORD") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_DUnadvise",DllCallbackGetPtr($IDataObject_Method[10])) $IDataObject_Method[11] = DllCallbackRegister("IDataObject_EnumDAdvise","LONG","PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_EnumDAdvise",DllCallbackGetPtr($IDataObject_Method[11])) Local $cVariableArray = 0 $cVariableArray = AddClassVariable($cVariableArray,"PTR","pformatetc",0) $cVariableArray = AddClassVariable($cVariableArray,"PTR","pmedium",0) Return NewClass($cMethodArray,$cVariableArray) EndFunc Func IRichEditOleCallback_Create() Local $cMethodArray = 0 $RichEdit_CB_Method[0] = DllCallbackRegister("RichEdit_CB_QueryInterface","LONG","PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_QueryInterface",DllCallbackGetPtr($RichEdit_CB_Method[0])) $RichEdit_CB_Method[1] = DllCallbackRegister("RichEdit_CB_AddRef","LONG","PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_AddRef",DllCallbackGetPtr($RichEdit_CB_Method[1])) $RichEdit_CB_Method[2] = DllCallbackRegister("RichEdit_CB_Release","LONG","PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_Release",DllCallbackGetPtr($RichEdit_CB_Method[2])) $RichEdit_CB_Method[3]= DllCallbackRegister("RichEdit_CB_GetNewStorage","LONG","PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_GetNewStorage",DllCallbackGetPtr($RichEdit_CB_Method[3])) $RichEdit_CB_Method[4] = DllCallbackRegister("RichEdit_CB_GetInPlaceContext","LONG","PTR;PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_GetInPlaceContext",DllCallbackGetPtr($RichEdit_CB_Method[4])) $RichEdit_CB_Method[5]= DllCallbackRegister("RichEdit_CB_ShowContainerUI","LONG","PTR;BOOL") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_ShowContainerUI",DllCallbackGetPtr($RichEdit_CB_Method[5])) $RichEdit_CB_Method[6]= DllCallbackRegister("RichEdit_CB_QueryInsertObject","LONG","PTR;PTR;PTR;LONG") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_QueryInsertObject",DllCallbackGetPtr($RichEdit_CB_Method[6])) $RichEdit_CB_Method[7] = DllCallbackRegister("RichEdit_CB_DeleteObject","LONG","PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_DeleteObject",DllCallbackGetPtr($RichEdit_CB_Method[7])) $RichEdit_CB_Method[8]= DllCallbackRegister("RichEdit_CB_QueryAcceptData","LONG","PTR;PTR;PTR;DWORD;BOOL;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_QueryAcceptData",DllCallbackGetPtr($RichEdit_CB_Method[8])) $RichEdit_CB_Method[9] = DllCallbackRegister("RichEdit_CB_ContextSensitiveHelp","LONG","PTR;BOOL") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_ContextSensitiveHelp",DllCallbackGetPtr($RichEdit_CB_Method[9])) $RichEdit_CB_Method[10] = DllCallbackRegister("RichEdit_CB_GetClipboardData","LONG","PTR;PTR;DWORD;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_GetClipboardData",DllCallbackGetPtr($RichEdit_CB_Method[10])) $RichEdit_CB_Method[11] = DllCallbackRegister("RichEdit_CB_GetDragDropEffect","LONG","PTR;BOOL;DWORD;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_GetDragDropEffect",DllCallbackGetPtr($RichEdit_CB_Method[11])) $RichEdit_CB_Method[12] = DllCallbackRegister("RichEdit_CB_GetContextMenu","LONG","PTR;WORD;PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_GetContextMenu",DllCallbackGetPtr($RichEdit_CB_Method[12])) Local $cVariableArray = 0 $cVariableArray = AddClassVariable($cVariableArray,"int","nCount",0) Return NewClass($cMethodArray,$cVariableArray) EndFunc Func _GUICtrl_RichEdit_Create($hWnd, $sText, $iLeft, $iTop, $iWidth = 150, $iHeight = 150, $iStyle = -1, $iExStyle = -1) If Not IsHWnd($hWnd) Then Return SetError(1, 0, 0) ; Invalid Window handle for _GUICtrlRichEdit_Create 1st parameter If Not IsString($sText) Then Return SetError(2, 0, 0) ; 2nd parameter not a string for _GUICtrlRichEdit_Create If Not __GCR_IsNumeric($iWidth, ">0,-1") Then Return SetError(105, 0, 0) If Not __GCR_IsNumeric($iHeight, ">0,-1") Then Return SetError(106, 0, 0) If Not __GCR_IsNumeric($iStyle, ">=0,-1") Then Return SetError(107, 0, 0) If Not __GCR_IsNumeric($iExStyle, ">=0,-1") Then Return SetError(108, 0, 0) If $iWidth = -1 Then $iWidth = 150 If $iHeight = -1 Then $iHeight = 150 If $iStyle = -1 Then $iStyle = BitOR($ES_WANTRETURN, $ES_MULTILINE) If BitAND($iStyle, $ES_MULTILINE) <> 0 Then $iStyle = BitOR($iStyle, $ES_WANTRETURN) If $iExStyle = -1 Then $iExStyle = 0x200 ; $DS_FOREGROUND $iStyle = BitOR($iStyle, $__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE) If BitAND($iStyle, $ES_READONLY) = 0 Then $iStyle = BitOR($iStyle, $__UDFGUICONSTANT_WS_TABSTOP) Local $nCtrlID = __UDF_GetNextGlobalID($hWnd) If @error Then Return SetError(@error, @extended, 0) __GCR_Init() Local $hRichEdit = _WinAPI_CreateWindowEx($iExStyle, $__g_sRTFClassName, "", $iStyle, $iLeft, $iTop, $iWidth, _ $iHeight, $hWnd, $nCtrlID) If $hRichEdit = 0 Then Return SetError(700, 0, False) __GCR_SetOLE_Callback($hRichEdit) _SendMessage($hRichEdit, $__RICHEDITCONSTANT_WM_SETFONT, _WinAPI_GetStockObject($DEFAULT_GUI_FONT), True) _GUICtrlRichEdit_AppendText($hRichEdit, $sText) Return $hRichEdit EndFunc ;==>_GUICtrlRichEdit_Create Func CLSIDFromString($psz) $GUID = DllStructCreate("ulong Data1;ushort Data2;ushort Data3;byte Data4[8]") $Oleerror = DllCall("Ole32.dll","int","CLSIDFromString","WSTR",$psz,"struct*",$GUID) if @error Or $Oleerror[0] <> 0 Then Return SetError(1,0,0) Return SetError(0,0,$Oleerror[2]) EndFunc Func IIDFromString($psz) $GUID = DllStructCreate("ulong Data1;ushort Data2;ushort Data3;byte Data4[8]") $Oleerror = DllCall("Ole32.dll","int","IIDFromString","WSTR",$psz,"struct*",$GUID) if @error Or $Oleerror[0] <> 0 Then Return SetError(1,0,0) Return SetError(0,0,$Oleerror[2]) EndFunc
    1 point
  6. I would consider two aspects: readability and good coding style. A script is easy to read and understand when everything a function needs is passed as parameter. Good coding style means: Every function has one point to enter (the function call) and one point to exit (no more than one Return statement). Hence all data being read/written by the function should be passed as parameter. So I suggest to use version 2. Sometimes you might think that global variables can't be avoided. In this case please have a look at the Static keyword.
    1 point
  7. Danp2

    AutoIt/Wiki broken?

    Oh... sorry if I misspoke. To be clear, I was referring to granting him access to the Chat forum, not fixing the wiki. 😉
    1 point
  8. Zvend

    AutoIt/Wiki broken?

    Yea i jsut read up, i need 20 posts on this forum. I almost never have a question than reporting bugs. Im kind of good in googling, debugging and experimenting. Will probably take another year to get 20 posts.
    1 point
  9. Update using _WinHttp UDF (#include <WinHttp.au3> and #include <WinHttpConstants.au3> from 2020): Func VerwerkOutput1() $hOpen = _WinHttpOpen() If Not $hOpen Then ConsoleWriteError("Error when calling _WinHttpOpen. Error code: " & @error & @CRLF) For $i = 0 To _GUICtrlListView_GetItemCount($ListView1) $IDthread = _GUICtrlListView_GetItemText($ListView1, $i, 0) $Input = _GUICtrlListView_GetItemText($ListView1, $i, 1) $Output1 = _GUICtrlListView_GetItemText($ListView1, $i, 2) $Output2 = _GUICtrlListView_GetItemText($ListView1, $i, 3) If $IDthread <> "" and $Output2 = "" Then ProcessWithGPT($IDthread, $Input, $Output1, $i) EndIf Next EndFunc Func ProcessWithGPT($IDthread, $Input, $Output1, $i) $Lengte2 = " Oké " Local $sSelectQuery = "SELECT COUNT(*) FROM gegevens WHERE IDthread = " & _SQLite_FastEscape($IDthread) & ";" Local $aResult, $iRows, $iColumns _SQLite_GetTable2D($hDb, $sSelectQuery, $aResult, $iRows, $iColumns) If @error Then MsgBox($MB_SYSTEMMODAL, "SQLite Error", "Can't create a memory Database!3") EndIf $sPromptx = StringreplacePrompt($Output1) $sPrompt = Json_Encode($sPromptx) $opdracht = "Combine all customer question emails into 1 single, overarching question and provide a comprehensive response. Avoid printing customers' personal information or contact information. Use Question: and Answer: as labels." Local $iLength = StringLen($opdracht & $sPrompt) If $iLength < 8000 Then Else MsgBox(0, "GPT error", "Te lang", 1) $Lengte2 = " Te lang " Return EndIf $GPTversion = "GPT" $sReturned = WinHttpApi($opdracht, $sPrompt, $Lengte2, $GPTversion) if $sReturned <> "" then ; Get the response text $Smalleretekst = StringStripWS($sReturned, $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES) ConsoleWrite("GPT Response2: " & $Smalleretekst & @CRLF) _GUICtrlListView_BeginUpdate($ListView1) _GUICtrlListView_AddSubItem($ListView1, $i, $sReturned, 3) _GUICtrlListView_EndUpdate($ListView1) ; Save the data to the SQLite database UpdateListViewDataInSQLite($IDthread, $Input, $Output1, $sReturned) $iTokensUsed += $iTokens ; Add the number of tokens to the total WinSetTitle($Form1, "", "Database v2 - Tokens used: " & $iTokensUsed) _GUICtrlListView_SetItemSelected ( $ListView1, $i, True) ToonRijTekstInEditBox() ConsoleWrite(@CRLF & "Sleep 5 sec - Database v2 - Tokens used: " & $iTokensUsed & @CRLF ) sleep(5000) $sReturned = "" EndIf EndFunc Func WinHttpApi($opdracht, $sPrompt, $Lengte, $GPTversion) $sPrompt = StringReplace($sPrompt, "\/", "/") $sPrompt = StringReplace($sPrompt, "\n", " ") $sPrompt = StringReplace($sPrompt, "\u200c", "") $sPrompt = StringStripWS($sPrompt, $STR_STRIPLEADING + $STR_STRIPTRAILING + $STR_STRIPSPACES) $sData = ("{""model"": ""gpt-4"", ""temperature"": 0, ""messages"":[{""role"": ""system"", ""content"": " & Chr(34) & StringReplace($opdracht, Chr(34), "") & Chr(34) & "}, {""role"": ""user"", ""content" & Chr(34) & ": " & $sPrompt & "}]}") $iTokens = StringLen($sData) $iTimePassed = TimerDiff($iTimerStart) / 1000 ; Check whether the number of tokens exceeds the limit If $iTokensUsed + $iTokens > $iTokenLimit Then Local $iWaitTime = ($iTokensUsed + $iTokens - $iTokenLimit) * 60 / $iTokenLimit ConsoleWrite("Sleep: " & $iWaitTime * 1000) Sleep($iWaitTime * 1000) $iTokensUsed = 0 $iTimerStart = TimerInit() Else Sleep(5000) EndIf ConsoleWrite(@CRLF & $GPTversion & $Lengte & $sData & @CRLF) Local $sURL = "https://api.openai.com/v1/chat/completions" Local $api_key = "" _WinHttpSetTimeouts($hOpen, 900000, 900000, 900000, 900000) Local $hConnect = _WinHttpConnect($hOpen, $sURL) If Not $hConnect Then ConsoleWriteError("Error when calling _WinHttpConnect. Error code: " & @error & @CRLF) Local $hRequest = _WinHttpOpenRequest($hConnect, "POST", "/v1/chat/completions", Default, Default, Default, $WINHTTP_FLAG_SECURE) If Not $hRequest Then ConsoleWriteError("Error when calling _WinHttpOpenRequest. Error code: " & @error & @CRLF) ; Add headers _WinHttpAddRequestHeaders($hRequest, "Content-Type: application/json") _WinHttpAddRequestHeaders($hRequest, "Authorization: Bearer " & $api_key) If Not _WinHttpSendRequest($hRequest, -1, $sData) Then ConsoleWriteError("Error when calling _WinHttpSendRequest. Error code: " & @error & @CRLF) _WinHttpCloseHandle($hRequest) _WinHttpCloseHandle($hConnect) _WinHttpCloseHandle($hOpen) sleep(5000) $hOpen = _WinHttpOpen() If Not $hOpen Then ConsoleWriteError("2 Fout bij het aanroepen van _WinHttpOpen. Foutcode: " & @error & @CRLF) return EndIf If Not _WinHttpReceiveResponse($hRequest) Then ConsoleWriteError("Error when calling _WinHttpReceiveResponse. Error code: " & @error & @CRLF) return EndIf ;~ ; Get the raw headers ;~ Local $sRawHeaders = _WinHttpQueryHeaders($hRequest, $WINHTTP_QUERY_RAW_HEADERS_CRLF) ;~ ConsoleWrite("Ruwe headers: " & @CRLF & $sRawHeaders & @CRLF) ;~ ; Extraheer de statuscode uit de ruwe headers ;~ Local $iStatusCode = StringRegExpReplace($sRawHeaders, "^HTTP/\d\.\d\s(\d+).*$", "$1") ;~ ConsoleWrite("Status code: " & $iStatusCode & @CRLF) Local $iStatusCode = _WinHttpQueryHeaders($hRequest, $WINHTTP_QUERY_STATUS_CODE) If @error Then ConsoleWriteError("Error retrieving status code. Error code: " & @error & @CRLF) return Else ;~ ConsoleWrite("Status code: " & $iStatusCode & @CRLF) EndIf ; Check for an answer Global $sHeader, $sReturned Local $iDataAvailable = _WinHttpQueryDataAvailable($hRequest) If $iDataAvailable Then ;~ ConsoleWrite("Number of bytes available: " & @extended & @CRLF) $sHeader = _WinHttpQueryHeaders($hRequest) Do $sReturned &= _WinHttpReadData($hRequest) Until @error Else ConsoleWriteError("!No data available. Error code: " & @error & @CRLF) MsgBox(48, "Failed," "No data available.",1) Return EndIf ; Clearing _WinHttpCloseHandle($hRequest) _WinHttpCloseHandle($hConnect) $sReturned = BinaryToString($sReturned, 4) ; Decode the JSON response to an AutoIt variable Local $oJsonResponse = Json_Decode($sReturned) ;~ ConsoleWrite("JSON-Returned: " & $sReturned) ; Verify that JSON decoding has been done correctly If Not Json_IsObject($oJsonResponse) Then ConsoleWrite(@CRLF & "Error: JSON response cannot be decoded." & @CRLF) _WinHttpCloseHandle($hOpen) sleep(10000) $hOpen = _WinHttpOpen() If Not $hOpen Then ConsoleWriteError("Error when calling _WinHttpOpen. Error code: " & @error & @CRLF) $bFunctieActief = False Return EndIf ; Remove the "choices" property from the JSON response Local $aChoices = Json_ObjGet($oJsonResponse, "choices") If @error Then ConsoleWrite(@CRLF & "Error: Cannot extract the choices from the JSON response." & @CRLF) EndIf ; Check for choices If UBound($aChoices) = 0 Then ConsoleWrite(@CRLF & "Error: No choices are present in the JSON response." & @CRLF) ConsoleWrite(@CRLF & "JSON-respons: " & $sReturned & @CRLF) $bFunctieActief = False Return EndIf ; Get the text from the "message" object of the first choice Local $oFirstChoiceMessage = Json_ObjGet($aChoices[0], "message") Global $sReturned = Json_ObjGet($oFirstChoiceMessage, "content") ; Implementing the answer Return $sReturned EndFunc Func StringreplacePrompt($sPromptx) $sPromptx = StringReplace($sPromptx, "[", " ") $sPromptx = StringReplace($sPromptx, "]", " ") $sPromptx = StringReplace($sPromptx, "mailto:", " ") $sPromptx = StringReplace($sPromptx, "±", " ") $sPromptx = StringReplace($sPromptx, '"', " ") $sPromptx = StringReplace($sPromptx, "'", " ") $sPromptx = StringReplace($sPromptx, "<", " ") $sPromptx = StringReplace($sPromptx, ">", " ") $sPromptx = StringReplace($sPromptx, "³", "3") $sPromptx = StringReplace($sPromptx, "²", "2") $sPromptx = StringReplace($sPromptx, "º", " ") $sPromptx = StringReplace($sPromptx, "%", " ") $sPromptx = StringReplace($sPromptx, "#", " ") $sPromptx = StringReplace($sPromptx, "ë", "e") $sPromptx = StringReplace($sPromptx, "é", "e") $sPromptx = StringReplace($sPromptx, "&", " ") $sPromptx = StringReplace($sPromptx, "|", " ") $sPromptx = StringReplace($sPromptx, "*", " ") $sPromptx = StringReplace($sPromptx, "à", "a") $sPromptx = StringReplace($sPromptx, "ç", "c") $sPromptx = StringReplace($sPromptx, "è", "e") $sPromptx = StringReplace($sPromptx, "ü", "u") $sPromptx = StringReplace($sPromptx, "ö", "o") $sPromptx = StringReplace($sPromptx, "ê", "e") $sPromptx = StringReplace($sPromptx, "ï", "i") $sPromptx = StringReplace($sPromptx, "î", "i") $sPromptx = StringReplace($sPromptx, "â", "a") $sPromptx = StringReplace($sPromptx, "ä", "a") $sPromptx = StringReplace($sPromptx, "ß", "ss") $sPromptx = StringReplace($sPromptx, "û", "u") $sPromptx = StringReplace($sPromptx, "×", "x") $sPromptx = StringReplace($sPromptx, "ù", "u") $sPromptx = StringReplace($sPromptx, "ô", "o") $sPromptx = StringReplace($sPromptx, "ÿ", "y") $sPromptx = StringReplace($sPromptx, "ý", "y") $sPromptx = StringReplace($sPromptx, "ò", "o") $sPromptx = StringReplace($sPromptx, "í", "i") $sPromptx = StringReplace($sPromptx, "õ", "o") $sPromptx = StringReplace($sPromptx, "ñ", "n") $sPromptx = StringReplace($sPromptx, "þ", "th") $sPromptx = StringReplace($sPromptx, "Ð", "D") $sPromptx = StringReplace($sPromptx, "Æ", "AE") $sPromptx = StringReplace($sPromptx, "Œ", "OE") $sPromptx = StringReplace($sPromptx, "ø", "o") $sPromptx = StringReplace($sPromptx, "å", "a") $sPromptx = StringReplace($sPromptx, "µ", "u") $sPromptx = StringReplace($sPromptx, "¿", " ") $sPromptx = StringReplace($sPromptx, "¡", " ") $sPromptx = StringReplace($sPromptx, "£", " ") $sPromptx = StringReplace($sPromptx, "€", " ") $sPromptx = StringReplace($sPromptx, "¥", " ") $sPromptx = StringReplace($sPromptx, "¢", " ") $sPromptx = StringReplace($sPromptx, "©", " ") $sPromptx = StringReplace($sPromptx, "®", " ") $sPromptx = StringReplace($sPromptx, "™", " ") $sPromptx = StringReplace($sPromptx, "§", " ") $sPromptx = StringReplace($sPromptx, "¶", " ") $sPromptx = StringReplace($sPromptx, "«", " ") $sPromptx = StringReplace($sPromptx, "»", " ") $sPromptx = StringReplace($sPromptx, "°", "y") $sPromptx = StringReplace($sPromptx, "~", " ") $sPromptx = StringReplace($sPromptx, "À", "A", 0, 1) $sPromptx = StringReplace($sPromptx, "Á", "A", 0, 1) $sPromptx = StringReplace($sPromptx, "Â", "A", 0, 1) $sPromptx = StringReplace($sPromptx, "Ã", "A", 0, 1) $sPromptx = StringReplace($sPromptx, "Ä", "A", 0, 1) $sPromptx = StringReplace($sPromptx, "Å", "A", 0, 1) $sPromptx = StringReplace($sPromptx, "Æ", "AE", 0, 1) $sPromptx = StringReplace($sPromptx, "Ç", "C", 0, 1) $sPromptx = StringReplace($sPromptx, "È", "E", 0, 1) $sPromptx = StringReplace($sPromptx, "É", "E", 0, 1) $sPromptx = StringReplace($sPromptx, "Ê", "E", 0, 1) $sPromptx = StringReplace($sPromptx, "Ë", "E", 0, 1) $sPromptx = StringReplace($sPromptx, "Ì", "I", 0, 1) $sPromptx = StringReplace($sPromptx, "Í", "I", 0, 1) $sPromptx = StringReplace($sPromptx, "Î", "I", 0, 1) $sPromptx = StringReplace($sPromptx, "Ï", "I", 0, 1) $sPromptx = StringReplace($sPromptx, "Ð", "D", 0, 1) $sPromptx = StringReplace($sPromptx, "Ñ", "N", 0, 1) $sPromptx = StringReplace($sPromptx, "Ò", "O", 0, 1) $sPromptx = StringReplace($sPromptx, "Ó", "O", 0, 1) $sPromptx = StringReplace($sPromptx, "Ô", "O", 0, 1) $sPromptx = StringReplace($sPromptx, "Õ", "O", 0, 1) $sPromptx = StringReplace($sPromptx, "Ö", "O", 0, 1) $sPromptx = StringReplace($sPromptx, "×", "x", 0, 1) $sPromptx = StringReplace($sPromptx, "Ø", "O", 0, 1) $sPromptx = StringReplace($sPromptx, "Ù", "U", 0, 1) $sPromptx = StringReplace($sPromptx, "Ú", "U", 0, 1) $sPromptx = StringReplace($sPromptx, "Û", "U", 0, 1) $sPromptx = StringReplace($sPromptx, "Ü", "U", 0, 1) $sPromptx = StringReplace($sPromptx, "Ý", "Y", 0, 1) $sPromptx = StringReplace($sPromptx, "Þ", " ", 0, 1) $sPromptx = StringReplace($sPromptx, "ß", "B", 0, 1) $sPromptx = StringReplace($sPromptx, "à", "a", 0, 1) $sPromptx = StringReplace($sPromptx, "á", "a", 0, 1) $sPromptx = StringReplace($sPromptx, "â", "a", 0, 1) $sPromptx = StringReplace($sPromptx, "ã", "a", 0, 1) $sPromptx = StringReplace($sPromptx, "ä", "a", 0, 1) $sPromptx = StringReplace($sPromptx, "å", "a", 0, 1) $sPromptx = StringReplace($sPromptx, "æ", "ae", 0, 1) $sPromptx = StringReplace($sPromptx, "ç", "c", 0, 1) $sPromptx = StringReplace($sPromptx, "è", "e", 0, 1) $sPromptx = StringReplace($sPromptx, "é", "e", 0, 1) $sPromptx = StringReplace($sPromptx, "ê", "e", 0, 1) $sPromptx = StringReplace($sPromptx, "ë", "e", 0, 1) $sPromptx = StringReplace($sPromptx, "ì", "i", 0, 1) $sPromptx = StringReplace($sPromptx, "í", "i", 0, 1) $sPromptx = StringReplace($sPromptx, "î", "i", 0, 1) $sPromptx = StringReplace($sPromptx, "ï", "i", 0, 1) $sPromptx = StringReplace($sPromptx, "ð", "o", 0, 1) $sPromptx = StringReplace($sPromptx, "ñ", "n", 0, 1) $sPromptx = StringReplace($sPromptx, "ò", "o", 0, 1) $sPromptx = StringReplace($sPromptx, "ó", "o", 0, 1) $sPromptx = StringReplace($sPromptx, "ô", "o", 0, 1) $sPromptx = StringReplace($sPromptx, "õ", "o", 0, 1) $sPromptx = StringReplace($sPromptx, "ö", "o", 0, 1) $sPromptx = StringReplace($sPromptx, "ø", "o", 0, 1) $sPromptx = StringReplace($sPromptx, "ù", "u", 0, 1) $sPromptx = StringReplace($sPromptx, "ú", "u", 0, 1) $sPromptx = StringReplace($sPromptx, "û", "u", 0, 1) $sPromptx = StringReplace($sPromptx, "ü", "u", 0, 1) $sPromptx = StringReplace($sPromptx, "ý", "y", 0, 1) $sPromptx = StringReplace($sPromptx, "þ", "", 0, 1) $sPromptx = StringReplace($sPromptx, "ÿ", "y", 0, 1) $sPromptx = StringReplace($sPromptx, Chr(0xA0), " ") Return $sPromptx EndFunc
    1 point
  10. Gianni

    Santa Claus

    This script makes Santa Claus "peep" from behind the active window and then disappear. Some Christmas decorations also appear. between one appearance and another there is a wait from 10 to 60 seconds (this delay can be varied by changing the $iDelay variable on line 35) ... I hope there are no bugs Have fun and happy holidays (...sorry for the delay...) ; This script uses some snippet published by @Zedna & @ProgAndy at the following link ; https://www.autoitscript.com/forum/topic/70925-add-picture-to-gui-picture-control-from-database-field ; ; Pictures has been embedded in the listing by using the 'File to Base64 String Code Generator' by @UEZ published at the following link: ; https://www.autoitscript.com/forum/topic/134350-file-to-base64-string-code-generator-v120-build-2020-06-05-embed-your-files-easily #include <WinAPI.au3> #include <GDIPlus.au3> #include <Memory.au3> #include <GUIConstants.au3> _GoSantaClaus() Func _GoSantaClaus() Local $AW_RANDOM = 0 Local $aPictures[][] = [ _ ['_Santa', $AW_RANDOM, $AW_RANDOM], _ ['_Garland', $AW_VER_POSITIVE, $AW_VER_NEGATIVE], _ ['_SantaUp', $AW_VER_NEGATIVE, $AW_VER_POSITIVE], _ ['_SantaLeft', $AW_HOR_POSITIVE, $AW_HOR_NEGATIVE], _ ['_SantaRight', $AW_HOR_NEGATIVE, $AW_HOR_POSITIVE], _ ['_christmastree', $AW_VER_NEGATIVE, $AW_VER_POSITIVE] _ ], $aParams[UBound($aPictures, 2)] Local $iTimer = TimerInit(), $iDelay = 0, $iPicture, $LOGO, $hGUI While 1 If TimerDiff($iTimer) >= $iDelay Then $iPicture = Random(0, UBound($aPictures) - 1, 1) $LOGO = Call($aPictures[$iPicture][0]) ; peek a picture For $i = 0 To UBound($aPictures, 2) - 1 $aParams[$i] = Execute($aPictures[$iPicture][$i]) Next $hGUI = _SetImageBinaryToCtrl($LOGO, $aParams) GUIDelete($hGUI) ; WinClose($hGUI) $iDelay = Random(10000, 60000, 1) ; wait from 10 to 60 seconds to show again $iTimer = TimerInit() EndIf $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit EndSelect WEnd EndFunc ;==>_GoSantaClaus ;Authors: Prog@ndy, based on code by Zedna Func _SetImageBinaryToCtrl(ByRef $Binary, ByRef $aParams) Local $picdata = Binary($Binary) ; Fetch the Data Local $piclength = BinaryLen($picdata) ; Get Length Local $picstruct = DllStructCreate("byte[" & $piclength & "]") DllStructSetData($picstruct, 1, $picdata) Local $picmemory = DllStructGetPtr($picstruct) Local $hGUI = _SetMemoryImageToCtrl($picmemory, $piclength, $aParams) DllStructSetData($picstruct, 1, 0) $picstruct = "" Return $hGUI EndFunc ;==>_SetImageBinaryToCtrl ; Authors: Zedna, based on code by Prog@ndy Func _SetMemoryImageToCtrl($Pointer, $nSize, ByRef $aParams) Local Static $aRandom[8] = [1, 2, 4, 5, 6, 8, 9, 10] Local $hData, $pData, $pStream, $pBitmap, $hBitmap, $hTempBmp, $iWidth, $iHeight, $iPosX, $iPosY, $AW_MotionIn, $AW_MotionOut ; use GDI+ for converting to bitmap first $hData = _MemGlobalAlloc($nSize, 2) $pData = _MemGlobalLock($hData) _MemMoveMemory($Pointer, $pData, $nSize) _MemGlobalUnlock($hData) $pStream = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "int", $hData, "long", 1, "Int*", 0) $pStream = $pStream[3] _GDIPlus_Startup() $pBitmap = DllCall($__g_hGDIPDll, "int", "GdipCreateBitmapFromStream", "ptr", $pStream, "int*", 0) $pBitmap = $pBitmap[2] $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($pBitmap) ; --- Get image dimensions --------------------------- $hTempBmp = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap) $iWidth = _GDIPlus_ImageGetWidth($hTempBmp) $iHeight = _GDIPlus_ImageGetHeight($hTempBmp) _GDIPlus_BitmapDispose($hTempBmp) ; --- Get active window informations ----------------------------- Local $aTargetWin = WinGetPos(WinGetHandle("[active]")) ; the active window #cs get a 4-element array containing the following information: $aTargetWin[0] = X position $aTargetWin[1] = Y position $aTargetWin[2] = Width $aTargetWin[3] = Height #ce $AW_MotionIn = $aParams[1] $AW_MotionOut = $aParams[2] ; --- create and position the "picture card" ------------------------------------------------------------- Switch $aParams[1] Case $AW_HOR_POSITIVE ; Animates the window from left to right. --> ; Align the picture to the LEFT of the targhet window $iPosX = $aTargetWin[0] $iPosY = Random($aTargetWin[1], $aTargetWin[1] + $aTargetWin[3] - $iHeight, 1) Case $AW_HOR_NEGATIVE ; Animates the window from right to left. <-- ; Align the picture to the RIGHT of the targhet window $iPosX = $aTargetWin[0] + $aTargetWin[2] - $iWidth $iPosY = Random($aTargetWin[1], $aTargetWin[1] + $aTargetWin[3] - $iHeight, 1) Case $AW_VER_POSITIVE ; Animates the window from top to bottom. v ; Align the picture to the TOP of the targhet window $iPosX = Random($aTargetWin[0], $aTargetWin[0] + $aTargetWin[2] - $iWidth, 1) $iPosY = $aTargetWin[1] Case $AW_VER_NEGATIVE ; Animates the window from bottom to top. ^ ; Align the picture to the BOTTOM of the targhet window $iPosX = Random($aTargetWin[0], $aTargetWin[0] + $aTargetWin[2] - $iWidth, 1) $iPosY = $aTargetWin[1] + $aTargetWin[3] - $iHeight Case Else ; Animates the window in random directions. ; Align the picture to a RANDOM position on the targhet window $iPosX = Random(0, @DesktopWidth - $iWidth, 1) $iPosY = Random(0, @DesktopHeight - $iHeight, 1) $AW_MotionIn = $aRandom[Random(0, 7, 1)] ; 2 ^ Random(0, 3, 1) $AW_MotionOut = $aRandom[Random(0, 7, 1)] ; 2 ^ Random(0, 3, 1) EndSwitch Local $hGUI = GUICreate('', $iWidth, $iHeight, $iPosX, $iPosY, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST)) Local $CtrlId = GUICtrlCreatePic("", 0, 0, $iWidth, $iHeight) _SetBitmapToCtrl($CtrlId, $hBitmap) If @error Then SetError(3, 0, 0) _GDIPlus_BitmapDispose($pBitmap) _GDIPlus_Shutdown() _WinAPI_DeleteObject($pStream) _MemGlobalFree($hData) _Animate($hGUI, $AW_MotionIn, $AW_MotionOut) Return $hGUI EndFunc ;==>_SetMemoryImageToCtrl ; internal helper function ; Out of resources.au3 :) Func _SetBitmapToCtrl($CtrlId, $hBitmap) Local Const $STM_SETIMAGE = 0x0172 Local Const $IMAGE_BITMAP = 0 Local Const $SS_BITMAP = 0xE Local Const $GWL_STYLE = -16 ; Local $hWnd Local $hWnd = GUICtrlGetHandle($CtrlId) If $hWnd = 0 Then Return SetError(1, 0, 0) ; set SS_BITMAP style to control Local $oldStyle = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $hWnd, "int", $GWL_STYLE) If @error Then Return SetError(2, 0, 0) DllCall("user32.dll", "long", "SetWindowLong", "hwnd", $hWnd, "int", $GWL_STYLE, "long", BitOR($oldStyle[0], $SS_BITMAP)) If @error Then Return SetError(3, 0, 0) Local $oldBmp = DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hWnd, "int", $STM_SETIMAGE, "int", $IMAGE_BITMAP, "int", $hBitmap) If @error Then Return SetError(4, 0, 0) If $oldBmp[0] <> 0 Then _WinAPI_DeleteObject($oldBmp[0]) Return 1 EndFunc ;==>_SetBitmapToCtrl Func _Animate($hGUI, $AW_MotionIn, $AW_MotionOut) ; --- Animate it --------------------------------- DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hGUI, "int", 500, "long", BitOR($AW_SLIDE, $AW_MotionIn)) ; show Sleep(1500) DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hGUI, "int", 500, "long", BitOR($AW_SLIDE, $AW_HIDE, $AW_MotionOut)) ; hide EndFunc ;==>_Animate ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05 Func _SantaUp($bSaveBinary = False, $sSavePath = @ScriptDir) Local $SantaUp $SantaUp &= 'R0lGODlh8gB7APcAADMAADMrADMrM2YAAGYrAGYrM2ZVM2ZVZpkAAJkAM5krAJkrM5krZplVM5lVZswAAMwAM8wrAMwrM/8AAP8AM/8rAP8rM8xVM/9VAP9VM8xVZv9VZplVmcxVmZmAM5mAZsyAM/+AM8yAZsyqZv+AZv+qZv/VZpmAmZmqmZmAzJmqzJnVmZnVzMyAmcyqmf+Amf+qmcyAzMyqzMyq//+qzMzVmf/VmczVzMzV/8z/zMz////VzP//zP7+/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' $SantaUp &= 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAA8gB7AAAI/wB9CBxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDiiy4Y4cMFy5aiFC5ciVKFzRujJxJs6bNkSZdOHDQYIGCBAiCCkXwc8GCBhociEC546bTp1CjCuQhQ4QDnwgeZH3wIEJXCF25euWqFeiCnS6aSl3Lti3FGy2uBhXLtcKDChAqWNC718KECH/vhtV6tIVMt4gTK+bRomdWr17z9u3Ll+9eCRMmPMgMmSuCBi3UKh5N2qZOoGQnULbA2vJky3bt/gX7letRF6Vz6+64o8WCoJAtRJg8GcPeDK/7Uvir2XNYrwgSiDi8u7r1hzccKHisunJr5LBZZ//Qi9wCBsHMEUTYWvfBURrX48s3uMMB8AcUvCcH3zo5X/RjzaXAA7R9htt8CFrnwm8Ehndcf32NZ0F5xMmmmV0QbLeAVg8MGAEFCCxwYIIkjibDb1lVoBdfxkHYond6tdgiYIAJptVcc9UVVAs8lOhjWy4M8BhrEPb1YpFEwrjZZrJ1KKBW29ElYg8/VvnUidy5WCGRLUooI2sf0jgBBIHdCFRWQpH1wAAu9GjlmyPJsB0CeEk4oWUtmpckcaxJUAFz7cmmnlBzRrdeV5olIAOcjH60QwMD1JVckTByedmfNua1ZFhDdZpVAmIRRV2jpF7UQFCa9TcjfxXwx58EYNr/BRgE63k1m11oAtfpgOplFqKbpQYr0QdA4RUjkRZIkMEFf1GaLHIXXKCBCBu00MIFoN4FFnQISBDUmUQReiNmCDhApbDoNuQCanftKW0LLmhwobLLajBtSjDdsAMON9wggwMSwCqBAhLQOqiunhpKFwI8puswQjKcKtiKFkgLgww3wBBwxRpYK0NM++57Qw/9yoDxS/BaK0JSDDQgwQLeCgWUkDdmZfCiD+c8lX1b5SeBtBjri4MLHYjwsb438HADDjuM' $SantaUp &= 'nAPJ/Jrs79RB9+vvSXFdsAC44qr5QAOj6ozugin+JYEGMPQrMslIC7000zos3TTTV6tg8t13U021TqcW/youYOWeK7awEWdlwQNnp8003SSvLTfSjN+gQ9P+qlC5vyhg3EMPGOM9Nc8hHpzjeiMOXuq/ZF1w8chy84vD06z3wAMOm+OgNNRz++uCDJlnbvkOOmx+g90u2O3vCSgmgO233S7ZgGimw1lyAw9YYDTrIwO/+Q6bd+997TfkMHfTMtiNce8y0N791MRb/q8CDnwgV7haRQABAqVHX2XjN2hwQQuaG1kPgvc99Q3weyQj2eT4hbmrncBkCLzB7jp3sgU8kGzdypFdFhA2/ZHIavwCINIQSMLvERB3/SKZySx3OQFuLm6V4x0FdydBoDSAA0Y5lP1E4MEfMXBxTdtXCf9r1z0Dfg92bDNZ5kqmue+ZhHdTi2LnTtAAFLTgA43RAG3A1sMPCq1pUDNh906IQDL2gF8KrFwLVCCykREweP1SQeYwhgPPdW6CV3MBokTURQTRjV8i2xcPhug9IyJwkEg7iQxH+LTvTQ14SLOc+fzFwKAtiCwOgF4fd6O02ElOey/0nhlFKbsDgg+N5Xtg+pyGQCCiUpEyqAHdglZHf2kAAWbD2SarU0dAPq6MJCTgIIfYNhW4AAVsROIY14dCu0lSBiXEWAsGxJUP7LI6amPl0oY4TB0MM5TgPKDT6uiCFNBxbofEGOz6VbwJNtKR0hSLBDJ5Td0EcICCJOUyCTn/uQKSr3wueNzkXEhE1u1LhuUjKBn75RuySCB/9USM1bwXPkKKEZ9qY+D2lnYSZMpgfGgEZwqXhrkUFO8khuzeHTXAlYdGdDQ6gKYL46ZPU5IwckFrHDlRcAK7OY6gpcQeycp5Uhmw4KOjjCk7NeAVer4UMTnd3O1sur3NNZKAGR1eT4WWg6jdYAYm6WrIWFlEdSbxBCgw6d2MB85hUlIEXdFAB58KFaoIsYhAXZ9QR2qy' $SantaUp &= 'B07Nly4caRK3KbyJWk2JMUDm8ALaRARKUwJf0yVdpRLVM4rPhJQjaQ/EFzU5Zk6lJ11fAPnayBxcDXvp4xzv1LpCF9SUczeA6wRcOlmp//QrpNs7IVZNZlKrOVBqZyTf7oB3UJKy7qjZi1rQ8ibadhqTjhftVweg07DaQsVfoFwg97bHr7TOcWRKpKEKFTlB8tLQZLujYR5P4gIYtHd3puSXCh64xBIqlaV4GYHgrHsT41LUlDnoK8awWjLjysC9CB4BDBTsAhLAoAQvgIF73zthlLygBCTIsINR0tiSzrG03aPKDT5AlhMAj79Ouafw1Dc73mVuu5STGt52Z4MDZ/gFGS4BDERAghFoWMPtPTCFG+zjDadwvGktXozLKgOWNnVkwEIxTT6qLwKGjJx2E6fuEHxgglKlwSVQ8IMl7GAF61gEF6OjvoQMgwvjeP91KpVBT9e4Qu01LV64RIAGTIYDKdeklgY0bPmgadqTwIAEL1AwNHW7tPY6WMI6HjOkIZ3oNAtycjLAMJpJgBIBYq6nzC3sicLigID2y880yebIFoe59OWkvYkmQYeTiOBIRxoGNpB0pEkAYR3jcagO1jCcVZiCNYZ2cyeDbFO/izFUi6SXs9sB7AZdMjLz+sJVy2OtJQwDE0jY2zrONa4f3N4SiODC7qUBxi6MaB1zOoAujoHdBhm89LXAoRxY4qmdLRJajvW5Qs7wCGwNL3XToL07boADzPxtbkPaBjo+8wfQVgIM99i9EPbxgsfsAtqdJAUo2J36lArXDfoVvCP/4zdIsBtDOWeuweieNLcZXoIPFODmBkCzuLvNc26bwAUfWAABDNAAhD+Y3RF3uKJV6ExoCs9kFwDLWUQOyX2r3CN9nS9PURCDE6jE1txOusMbUAACfIC9YOc2xCU8gpsHAIBovrXDww7p5fIOvsjugQsgW66Ov5Nt+716RpRmtwca3pgtuLUNRiACA4CA6AN/cNsLMIAD6CTcJch15iMN' $SantaUp &= 'cQ0Q4OYfGHGkwe2CpIO9BTEpmeUKC5cQldrpL2xxDgS/kcqVd76DdsGFS0/0MLNdBB9gcAM+//mik9sDDgDBB5YSaREUIAA3J4AGXOBtBEu49LleO7kheDVkf/oEDyxh/4ADT3uJtDqGc7ybo0tQALTRfcENQLMGCiCAsotAxwaIPtkJAAI0/5zsA1B/YjYCDdAAHuABZCcCYsZ271YD2dYDbLRaJ/V3tRNW5VcRAbZcBXYSxpQSJdAYDbBxarcDCadgBLhwEkZ28YdwBFgAYlYCDtB7EuZ8cfd7F6Bga7d7wHU1vpNYvVVCKXSBEwFbUZRIJ3NommZ83XYDNqAvNrAD8eIAM8cTZReCkrZgOIeCDvd4Sbd2O0CAC2huaVNg6Ad+iZVSrCeEEhFgvnVGeTQCOCZmCtdzPAADPNAmDyYC8QeAn2cAUihumpdwnwcABNAAJuiCaidhdQgDSXF/wf8GX60jQbyzRn4VTAelhhGRU6ukbbw2dmJmA1RRhyXBdmVXADlXemMWcXIHaY1HeQawAGgmYU+YFmkBf2jDYxsWQCIjZyrQAvW1T2OFiRChZkZYeiTQAqkIAw3wARJGgiWxA4HYeB8gdu7mYzzGYz4WeZDmADenYD8HhU+YNjqmAQ2AYTtWAlLjXzxoUnBTQCUjECQjjArxSKzDXu0mabmGgDBQA3Z4A5knizBohWN2jRpAAtMiAiBgLyRwjWCHiDAAjSWBhzNohRiGbSynU3VzZEHVRj5gTHMljwKBMW20ZQ4WaeUmYQWAZtDIbQinh/eXhwa5kBg2k+zGYwXJYxH/l3O4Bo1MSIKQJj+3Zo6mNlJOQ0EpxC9xQ2UU1GcgaRBqdlAnwWmPJncweIoN5216GH8LuZA4GWFzx209tgEiwGMp6AA6VgM+mX3wF4u2xmmQaDuVlG1q0zlTQzJs1JQFkUKcpTtutooRFmE8oRSMx3gxGH84RgIXQJZf6XA0AGmISZDL+JDjBmnxUnT/' $SantaUp &= 'WH2H5l459UUbKGMTNUBTg5cEYVgqNHBu9gKo6WB/2WZZGZgFKC281gJbeWvt1Zgw0JgkmGsNJgIXsJUFGHwPt2A8EYu6dnQjkI4JFIk/tGrd80QfKYyuxkASNINt5nARpprVyRJjmXiIxmvTkmHIuJgs/9lmGfadC0mOvwl8PBF/1emV1/dg7wZGS8NZYLRdrXQDR9WUwMI2Rphpj9ZmqNmeAkqVs0ktINCXEUZhCOZmPaYBIJBhZDkCGvABBahwHbOaL6B7uqaDr4ORwQNiZyQ8zqmGUTaaR2l7MAcDyAhhAnqdwXlmCymbCUmWZKlhFleRmhYC34mTkNYCL3Bu3OZmmRlhvpZhk+Q4YKQ+BFVJzxksUfakH4E9LbY7wSZhASqkQupw7oYS8LISibmVh+ZmiYdj3LkyB5l44blzf3mlLeqYE8RC+4JESWM7JyQ0vEN+C4Gn8qEDI8GU8HhkUfNyUumVGeqiAPlgGMZYM7Yyvf+Ji3DIaxl2aAYpAhngEmiXjKvZpkqXoZL4lJqFhoUmA7MXEcDiJnw6EN40ECUaFcHjA8nZjhnBNM1GJRqVnLmHYxb3lagYeUshU4d1NxKamNMilte4Mgk5o+XFTjEnpIjWZnKHipy2L0e6OLPzTS+UQlIzEacqTpRTSm4xOz6ASHQpY+nYZ3raEBv4maJlSR/oYDgJqe52aDBRWE+3AupnoA76mP7joNMCL27URO2ljdWpqWR2nLLDgTIwO0SZnBh5A5lTEYd1WnS5NK4KrjbhVbWEXlJ0VEcVNAaxqglBjEA1Up91Euzmrjt2aOe2O/QGexs4bSkxltOSmNcIL43/FUY4IJtXuHvumYoZWjv6BkSRiDuyajKnChHjlTd0aT605LFTdjWe01XGpWoOOGAEcbQM4S/21UY7iC+xxmsrqy8VSFGVdVjpdbbilUTM1ANQeJgCm3QKtpCu1T3ppzY0RZQK6y/22hCn6iZQ61vqyERQ67Qe0TTPxU4g' $SantaUp &= 'FESetDgmM6rwiLR1KUq50zkogEZIE2S7QwMUSFEpREYu6zkzUEucy0zBgxLt1okLxm4ZCntMF1BuCDUKG0gxBLLomri2s1eD5T7Z2hHDIzV/NEoDVK2A1LHpaH6RGzyy6zluY1ELxZyju7aBBVS45UIn8YFwiIuPOLfDhFCvY1AGxWqT/wQRxbVCAbQ4wUQynSS4GnFagnW+hTQ353U3LyYQWBuy58SfSWRMxkQye2lRmkVCGlk71kqv/9Wc3uN1YHZhLWCwnKt+JTNtUoQ3K8AQVKJ6sWQ+QzlEoySdu2sRZIiGIWpRUutbGGM3TNMQGUiGtjpHKTBSdHOUFgVP7mtEeRVSC9Ve1sJhEUQ7vnM1P8W0lpM5fjqPEms1d+u+hBSXTboQeQPCMWxVOpVZU+MCfHquJnpbkHRQ6LNKsgPCwPu8NjVMgzQ7tbO5FjXAeYta5GtYTMQC5eW4CZGRgrW8RfTE3rOLKWd+OTXARLRPpmRGsEM7aiw5tGsQQtOw6SiShP9lx/GVV3/svHVcQK9FTI3DO88lxCAlib27xD7AhkETSK5jn0j8RiQUqpxcEAmVV2Q0wF8cXEtzO2QIEV/VSJ9UMpULRmIlQATEYlQlVQoVQejrvPT2xGY0cnEqXxwYRUyzToMmqg6hQrelsNFWSLnlPXzcy0kExwthNaLcyi88ru0bXH90WlZMEIB3QEKURz8kn9kjVbRjO/vkxAkUvDOgNiFqrWQEvKtMUeTDtF+kUf7CApq0zY/0R9rzzpk1sWdUrUh8Wg3huwAMxUzEtLvjz010W97rseV8zmwryKwjR4QGNdgD0FWmwfokyPviAg/UTyTEx60MR8srQR5puWz/29HN1hBJS1JX5ml409MrVJfwDM+Y5S9Za8+kxMY/rUjPxINcLKKso1zO7AP1OxDS6T20XDIipy+wE21PfVet7EhsyzrIYxiCNHLUzLzcBXitxsW6LGqnHEfZlEaB5YCL5Uw1YDnl5bu5' $SantaUp &= 'E05Rc64qpFuVTK7OVNG6g16TNLGROJImoxBKA3snZLkmMUnjnJxkzMr7dELpzEAakAANQEcMLTwXBcX9BEl0M1DUNkJCjU+1tBDFNVIDFdZM1MyFvVab7Jl7HGKhiRDq+nRN11ooYUUnIALgdwLH1FEIlTeQA8vDA2UHgb/fM0h7eX5Cu1mv/M5SNUbX/L0mQT0JsGeM/1OnZOVPAJ3Jh9uhMwVjRK0QSZlVIj24HVs8vnhMwh3cCBxyz+XPdwWaN52XjZWUUvPbVrETRmEUCmAUL3MUOzGhu5N+eg1IyvWRlNRKIp1EAJW4jgzWCCRWrsNQG4IAF3B25PxCVzbM7szVcEM+3yWfaxs8UVPIzvm9Rmg3R6XS8sMTA07gA94ALbMTxH1SbEVAhXYQt6VX6LUTV5EAfpMwnbI1Cmffm+zCS3YQviS5MI5ezbxAUgtMk7Pl2sMDyDvlqIMm83QSldg9poU7myVORKs700rHGa45CKFUXPXNGBwXPYHkSu4pGoLgH1Be9pnbVN1Y6EVFRpEwvHIoUf+i5AlwFjYLXKbVRpbzsREee48Dl4a7SCMktiMVMvRpRl+0QDLgG1nBKwtwAVcBQFclMnkbxbfbWYPGVp+U2oWU3vSh12qM1/KDIgnDIbxSM52y6E3OZ6KVl4ElA0Gn608yFvazKYHRGesxFGeBAps8kppsyCMkRmPVXSJpuTpt0IujTF3c7WsmMWjCFdsiASLkQle211jM5rCk08trRuQz1VKN2MVFPPOTJp1xOF5BAXRhF4Ox5EXXRDkQ6QNx0Y3BNYOhGRPwJw0/MZvx8GXCLUQxfdQGXALRQSpkRGQE0EyHVIubxTA0zxM+p3YKV53hIZPxP7REUpwlPhXlNu7/DqcbDkkAnLCo6qo+MKc7n8johezPEfE18vCYIhs10hnQ7gCfOxBay+H6HhbMcfRLwvCAwvBG3xXf0uc+n8dSfu1A+Dgx5DbE1Toq7k3cDrshxCx9ghfd' $SantaUp &= '0RoPYKkhg8eCjELl811dnVGUQ8r+AkAKMbF2gwKnMjpWjx6E3yRGz/ChIhRFV4+Hwc3aERQeMvgXQiZRT/SbISaX3xzP7gAnwL5G9ZGNbdYRtO1tk1Cg7DbLvFnZrrB0dBKw0h+uYRc/E5sgLTcyVLeWnKyZzlF6ybZ1+i8XAFE9b3exxAFC4RWHTyYQX/Ufcvn+HhubwXdBISJtE5L8IgIogh9LgimA/wL9iM/wQ1/4mrEe0mE8vypZBOFV1x3G58TtSuT3pB/K7s9Y8RIWFLMXsh8BBZmgrQVqAIFChgwXKgQKHKhCxo0bOBre2IGDx0KHPRhK7GHxhgYEEmTw8BEy5I2FD0nKcKCg44MJDyhEaDkBZkyYLGtOqMBSZsucOWU+QIBggQyHMkbucLEgKEyYPiXQfEmhggULU6lOnfC0Zk+bQBWcGNgwIskbOkSe3VHyRka2bMlGzGFxLEMZKgq6kIFCLo4dOxjyKJq3rosWJERIkPBAcQTFiC/AgFHCBV6CdQkqxDwwYViIfD13Jstw7doefFFG6GjUB0gcJeVaVorgAVeeNv+rWphA9WrVBxZm26RZO2iDiDLMknSwNCbw2VZvP5/q3OpUlr8pKEbgIGxEvydBnr0hQgPFHTra4rBIVCxoi+1JKhSNI4fY1ncVyjjh4gXkyCJIaLhAA/9K4K+Fze7TzK7KThJtNInWymEsvzRjKKIeypNBBKAeUIAGkchyyKGTGpBNp9960k2651K8CgLaYIIANQRaIMuHG5KSbaetJGARg6syqApIC3ysAMjpfKtNgQXwgu+iGkVKSwKh8BoNsB540GghvxzSwS/AIDqJSrlmIAkFuxC8caDJ+GOTzckoc6HBMxNs0C/3HJQwsPhIoys51B4gzocewtLyPRdSeoD/KZ5YnM7IH4+8zaetsFsAIqNuaCHHmyLYzbkVVdwt1Ap2AmoBhBoa6EvVQkqKwweWLIkvkyiC0D1ZRXQhhYPyAgshCp1U' $SantaUp &= 'CK8WXIDBBQKLLXYyziySlaEaZGCBstG6ZMiisyyiNizP7NSBJA0iSEBGB0a6wYcJGQoWgQR8mi1UR6F7t8gVqfqNp6AWMipDBCKAAKfe5o3OggwCHphFUS3YVCgD4xTtLJFkaEGEFiYedq3yelhNo3JtNNe8kHDomNm0Wru1QYw41nhCv2gAc7RyXxbUY/TiykEijLo0S6Tv4iqPoS47hrLbiCkeoYUdzmqNroGSyzGn54gU2CofQ536CUirSJ0AAQVEaP/NRgcWm8BF6G57N+rdpi54YCBpAgqBD/Cd0GG556a7brvvxjtvvffmu24eRJNhBRlIlI3dUMc++FMhi6xAqt8Q0CAHo3rgaNR2hURbRVAjFXW2pxJToIXv+ia9dNNPRz11tJRiTEfEh9wt7ac7TfGpRBEQ4SwRFFDM6oOnEhJ2s6kqmHieZIIAgQZWVb1555+HPu8WVGIOJ6qmrnp4shGPN4LrZtQ9AZlWLB542iGFOlSYtEJtqOjfhz9+1Zm23enhIcU/RUfNx4ox90WaHkuiUz6B3aZqmDvcAG/zG99MSX4PhGAE59aDDyygd9UJmMHkRTapxY52VWkJAlygu33/ZcVgBQNVBuW1wecMzEWKUZIMciBBGtbwfRuh3gRkIh3ZNSpxRwqeC3NSqbPIIDHt8p3B0Ia4DE5NAlyBnF5sOEUqnu5GSqmXi4pHNQ0Oj4ABy8mrjgYlBzDlesQz4Bk5F68CWsVI1QHX23JWRTrW0W51UUr9OHW2UEkAe12EF71mI0K5JaVf7eJc4lgkO4QB6QJV8R5jpiSDMdrRkpe0EX4seJMMtrCNujlgkEQZHeQ1YGNoOcECGCOV2KkIhV1041RqkqgFgMU4mMRlHUlyKNls5YzAc+MnP3U4Ti2mAS2gG6ZUmajxBRKIzuEUkIrHtgU4gDKjy2U2aagDNTkg/wHMZMkTa1fAxGWPKk1pjANicEqH7dIBm+SJOFeUPRZO5YmMCSMEFmCg' $SantaUp &= 'kmjTnzW0zKGwuKntQc1I8bonTiCQqGPixW4nydACwrUcz1VgjxetikURlpvqvKoB9mHeP0Uav7/d51BSOlE4K8CjlVbliS9BWE/6hRoJNCA/CgHZQwPagncypnXVqQ2pkMSYRCWgmkzC10iV+sCTCIQw7yxRBHryE1KxK2w+TUADNMDPgcwQb3QJVl408M4FKCBGiWrMAxCDVqE0wAFvK0hlZLhUusJPaSbl6QIkKgF+9XUxZ0VNBKopscHYhZ152yWC8EKYEzjAARpowAJqClkHcGBYXK2l02HrutnmgfUylSHMBxx7Ab1qoJpudcDE5CrXhpjOIZRRrGZkO9uAYoYsGONsbp93gxqogEG0nS1lLHMf23oVdSL6bGEtgwKyCMS30IrTXHU7XeidJFrQ+qxzhUslvAiEIarDZki6RZbnRtcyMngWlTRLXfZ2li4F+a1vFRIt38qnhl8aL0Rq5oM5tte/8otQnRqCpf8W2MAHRnCCFbxgBjfYwQ+GcIQlzNmAAAA7' Local $bString = _WinAPI_Base64Decode($SantaUp) If @error Then Return SetError(1, 0, 0) Return Binary($bString) EndFunc ;==>_SantaUp ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05 Func _SantaLeft($bSaveBinary = False, $sSavePath = @ScriptDir) Local $SantaLeft $SantaLeft &= 'R0lGODlhfgAFAfcAAAAAADMAADMAMzMrADMrMzMrZjNVMzNVZmYAAGYAM2YrAGYrM2YrZmZVM2ZVZmZVmWaAZmaqZmaAmZkAAJkAM5krAJkrM5krZplVM5lVZswAAMwAM8wrAMwrM/8AAP8AM/8rAP8rM/8rZsxVAMxVM/9VM8xVZv9VZplVmcxVmZmAZpmqZsyAM/+AM8yAZsyqZv+AZv+qZpmAmZmqmZmqzJnVmZnVzMyAmcyqmf+Amf+qmcyqzMyq//+qzMzVmf/VmczVzMzV/8z/zMz////VzP/V////zP7+/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' $SantaLeft &= 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAfgAFAQAI/wCRCBxIsKDBgwgTKlzIEMmOhhAjSpxIseLAGTMOYpwBxKLHjyBDCpyxYwdHgiSBADEpsqXLlwU5qjS5MqXKmhuLwNzJcyGQIkCElLwJ1GZQnTNrCunJtCkQklBvIul482cRIUCOHPmpUobOpmBfrqxa9WoRrVqFnEUrZOvTGUvDyv049udUnWbbot3LdybJuYAp7qixEmtevogT++0YuPFCjjs6ms2auPLepI4za4ysEqhatZZDa32qufRUo1TNihY946vpxk85d/68drVllq8by1wp8Cdo26FrMs4tN3Jkz4eBi6ZJXO5Tqb6BKhctNGNzsHVnS58euuh1sDYnc/9fLfThd55FUE+dSnl8ZdLnd+6WTNW96PTW47uEDP1ue/t8qfWXfi3FRhRtAL6nUn4EhrTbZMkleBluDYKU0kNUrSeZhFoBNVOFIK0kG1B3qfXfarVVZlJcIFr0XFUaXjWVZSkmtpaJ8LXokYGclUgiZSdO1xGFOnpkVF7iJUhVjkVaNJ+P9SVookmuNUmRTT1G91uA1J1VFYNWTmSSbND9uJVykuFYUpg7jjmWhiWuBmSMNbHp4IGT3dXhf+0BleeCdipkREGDGjQDDyrBGQQRQxDxWYdnbmVEEJMySsRNYAZqUJUaqbQoV3AC0einZ/406qSTYqYpRUOMRCYQlTb/mmFHi55KKaXZtbbqQq0iJJNx2s16laWNyupQVUTuqpBrheIwAw5krreoELdaequnN5mUkrIJFYpErwWZYAEGLhg3hIdAMPpjtdm+xS1Fg+pERAYVWEBCBmTVdVUQby72FKfvEorQoDpgMEEFGow7VA9AQIvswxw5O1zABgVxUBFG7IABAhRwMIHHGNxwKQ4ZZKADWTjQwJmuFEcErg4ZTGCBBhV4zEEFE5BwgwsdkGCBCTgA0QMO5Tp8UssSGTGvAhUg' $SantaLeft &= 'jLDNE3RQQQcYdKABBx3cQHQGFuiABEbmIc3QV0RYUC8HNF+9gdMakNBBByF04IEGIGygQQcT5CB2RThY/0AB22xj/bbgIXhg+OFzk7D3RGXjjPbTH7f9ttsldIA1B4gbzkEPizdkRBEG1/xx5E5jHffbcMuN+AZzu9B5QzicfTXpaWswQs+Tvz135h50DfC3ryMB+gSj35y28VO/HffyHHyQuQZtE0GQt0gYAS7SRCgws800b2Az4W6/fTvcmGuAuAYmEFElp78re4PjxdMsOOqmhx/C7YUbDoLhVptAffACoRfe0Gaz3HWgcpUTXPg4EDfDmc+BG0if9AjSPmUNymDy+9gGUMdB1JEgBAxMHQhUlzkObIAEFUSaESxggcfJb4Ql4MAHcQdCEXYABM7jnQNDgIEeTLBzRSDCAv/iV4ETdhB1cQOB+R54OCZmjgRAMwiLAkaEpl2Nexy43AxJwEAn6nB3TfTACXQ2wRSu6gYImBngNjhDGZLvi3DUXwhOYALX/RBpfRMd9542P+V5gHVg9CLv6HaCEpggA3ekmBFccLDZ2cxpGxjB6RoYxzgWko4qWBzX4EdA2mnRdJgbJBw1UIISnGCMN/gc0gyWRdo9LW3JSyIg4+jED5jykukTGwZaWLzIqTFh0Mvi2yrnAbnRrZKkvCQdccCm613MbJEroOXoh7CoEU5u+cvc/hz4ARCcEpeus1OheuUtIywAeWmb5gfDNzjcpa58tJzjLU2JyIEMoVBmzAzA2If/BBwQL4uwxBo7Q8DOG7qTks87XAjm+U0SJNKe/yNORIVHkF16LJ1XS93pBOrOd4Zgf4J0oCkZajKBTLRBvzNCzF4JuD7aj3AhBGE34bjQU97SBCbwmo565Uzg9VNmUEPn0xLYgfHFUHcPDGkTa3rJFpjgBvkE0ecwMMQiQo6AGviYB09nv1F+caTfrGNBwHVSiQ5kJQ1YQL2g6ULHfa+dp8Nd80JZyT/eEpcLiSpg+EWS' $SantaLeft &= 'HaQsYyrIQB1x4LN6GbZjo7Nc+NwWVxA60Ktzu6QpcQqRnoIFYA3riPUIRQStEOEGJcvADV4gruNlNG4CdaNM66qBmt7VoQPRa2CowpEi/5yrVVUawl6McATeetYFZrOAzOTHwcYq0XAfUKoyR5rL6Y01Myx6ivpoM6iObKk2KSICyeq4y+P1jKMaPV8O9QfWsLqOerK97F8yZFuLxQtSltFtZ42AA7xJjWa5q2Hd9JdQpoLVBBjwnGNeBIRFTUtG1u3tEe4pX/jyRaXCDW7ytipDMD6vvLjUQZXKOpf0ZAlVQcAYpc4lPN0ixreIKcIPXICBOuogB26LMRKbZ+EdfvOWLBDrd4xAg3TxiwhBMBGIRTyoz3EHY1oxwg04CN4b6jCZDKUj9a5nWbAMQQZE6YyoSKSuEn8rMbqtUWKIYAIZp44EI0Ru5vzbUM5tav8gHIYJTS5lmKPA6lafo66Yp0MywZKgoEl0ovk6sFxUxnkuMtgNvzx1KQMTC2MCMXGCiKA0HZigqDW84XibGOUTYOChjtkNmS7lG0ZpSTXj2bNWXECCD8CNebX0AFPHSEcTULQ0WM4OkLFVYEeZyT6+RfFeyPzK5elwA5KFQa0pfTHnoGbU6RLCrv0jIUnzZWg3TCp/wVjoU2IAY1UGi2xeVeBy8ytVGuJQZYyQAxKeT3/JVGatdSqwsMxnLLIh9a6BfKkkqXsvRXAB3by4vxDMUd6XrOeAL5Qvck+KWrHqLID2zNseXBptTGztN2+sTBK4GTACIhNnXmVglfRbJf+xRouwj0CEH/RABycIARNLiWFcprIxuc7Ow8iy6yHAKuUo0oEGcqhxm0r2m+EMDH8eBu1ym9xTD95tfMdDZrpCeePKpieom4IlneO7Krs28MqnM3bEWPsISzZf3RhqyFKegMX1ZgpqyELufD+9wJMCtnKIwDOrtba8dz0BItP7kZyPXOfAype5G82hMIuGCD1Q9gE5fvRPA2bpdad7XRbt' $SantaLeft &= 'Y2mfSNX/jrwJjE56nH5cIDoJ/zdd7p34r2ue1CYPMujRkqKzc8fiMIiyKWFg+eqF5euvyvyr/GRyanXWxLZX8HhWzvfRd5qO9MbOs5OSlMzn68f8CiLQU6yVGxzd6GU+fVOGQv3Da97r2Np1tCmVZJbbZ/ZE2zhJo8916jcc/dW/Cez3danKJB/YZGYCubdx3vZDh/YRu7ER2YIRQVMSiQY2zhI0InIcVeFzBbZ9Y+YCo0cCkoVTE6R6IsERMyADxoERJDgaNOAD7aFdK5EBKnADKhCDMoADl1KDlnIEQTAaRyBms2d2uxVEMDB6pBdgTDExGNFjovI5KNcdOnADN6ADLnADOXADMKACLuADQ9Nr5f8GZKiSFUGSID3gAqTnaVsXEh5CgRhyFrZlGUQAeUTzhC+WAzHgAhqYARjgABiQAQ2gAjvQhn8iPNyxcsKmNGIogIV0SM0WEnVBLFzIGlqDAz3wcjigA5N4AymAAdDShkSwAyxGLn6lErHihcBRG5KWIgGngZcUhGW4IzASHSeGGHwHeZoYiTpABFBYi9Wzg72lYnaYAS6AAly4KDOyF3oBIEITA0KoMy4hFPpiIv+ncnyBAz/Qhj6kiTowA5Smiz9oBABWR9gojFGSckoDAxx4Apn0XBMhIiqhFnAicWzRfjtoZJsIiZooi9BiZJahNC3mAhmAAw4TjHmHXTTig2j/YXGnFEWKmC24Ui3PWAQ4MIM7ozXUWI+ZOIzCliI6QAJ0WEeBlSi2NV84OCj3FBr/x3enRAL0ZxHpcRN5x1tr6GCe5Y+yWI89YAQ9MI3aVT05qI1nx1tEQC4RaQIyID2Jciu9BYjK4VtngQNCaAJhQxfFAmS20VmZOJEzWY1Doz6UUYw2ggQo4AI5QIdR2G9qMSlIoC4juZPToV0aiAFFZlIV0RH89n/BhjGfRYPVWI8zOY8I0oPaBYdO6AIz6Bu3cpa4pXwLtneWZmshAWSf4Y6JYZMvKDKzKIs+' $SantaLeft &= 'VI19GDRclnwrtwO12ANUuDMycANqEYzrYT01UnaJQTQmQHgH/0EVk2KKu+VXkTiN1ehyLmeLM/mJn2FSMGlivEWPTRiWYakCNNgoZnEXudiDq/lUbyYRRJaDqik9KlCLOpCXlwl5n2mPPqY+jfJlvUUD0BKNeNmEUDiFMLgDlbIe96SW3EEyKel7IDgQIemeJ9ZP17mdbehyOtCfQ2OdQIBleMYsMyABcLEDEaCG9FWPlBiWMBCFLsCQlmKYMDmQoLWKEHEEW9J+1oYDN/BytZmdPpSf/XmdPYCNoFgr0kMDBrADDrASDjADaEGPkPcDO6MCdeQCKuBDA6oWuMWVj6cCDkA9B2gQIdkd/uifuXkpI/pyJXqTQyOBQMEovUEAAEAAEP8AFVjGcjS4iT7QhkoThnmoo3xILGc5jKOIA+cIElthn4gxiVCqAzuQm3HqpCWqXSNiIkABAABgACiQEUAAAekiNO5He2hBZhYAlioQHbSyfE/pEfEoGvkJorU4iySan57pjx46WvRIX3xKADFqEhIwJKHhk38WhThglmaBj2iCoQ1Bkh3yWUoKojN5nZCYnzlwAcQzAVmVVRSAUwEQrA7gABDwAA2QKBLHg571M03IFRnyjJYxMXApEfk4bDIwqdeJk9s5qSaAABNgN9DzQFjDQgsQrAawAAaQazOimr+FAWGpK9LWKNyRKPZkEdyXGP/pn7fahn14nZDXrTjDq6z/M3TmU1M4Va4A8KIq4QAy0LCSagEwQDRahqbAIa2Quhq85QO36qQv51e2mC6UiAAIE67Qo1A1BQMRe0ifGKNBgRHBgQEwADN9aCJIeR9HQAMuAY+JmRiU+KT+CYX9WI0Gs6slu0Sytns5UKIkQwQy0Ke5NqRSd6gQ24S1lSGPshrMJBIDeag72p+T6Ff+uANCGoMZkAA4Q7JMZHCnFLOXSYl6eKVZKgMOAGa91QMY0IQ/EBmO8ik1u25a4XNaixa2Z2JPqKmaqrfp' $SantaLeft &= '4gNg6629ukRLZHCm1J80WTDBCqoOIAGhwZRNKD0cIXb8sqF8YWKXMq32uhqfNZo70ANuuhc9/6AAxIO2hwMCc5QDSas+Z9mfOWABwdqnqtZZJkOJ0kMEgEqzzEmvISEnJJGNprsACdCrdrM7Q3dwSZudL0aFC5ABrQGP2dVDtphKNxssV8uDE+OaBFEZjEITZwGtlzFEvEqyc7M/bgcD05uf8mtpLvB4LtClm3sEQbNosQJ6FvsR79G/7GoZDhCwsGs+HzBH8pu0uOsCNTkvOBC6e7G0lxk0R8AZxDcVqDKSE5KzfUES8mobZ+cC3tq+JesBziO7hnQCKOvCp8RMfwmZSeaQiISTPfACZ8ERjoJ3vfadYoazLRHCosIo9tEDCyBcKByuuwO58mdIE6Q1ONh+NrykWf/pW53rY4w6Yn0BwqMxAz0wwvYxL4zrvojzUZC7UCJgSLj4AxkwKOrCtDtqlRNMezwMiqfWFwFcujtIEiYiIUKkxGhrtCqMQwbXWnNEjSZDKUXgAw5AmdhJg3sRGbLndL82Gq4aEWghoHknIUCARo3ExNr2vgrFQFJYMDQotteql5ooA3xxb6GCFh8CwjLRiNVqG0BALxSwxKL8WI9rORqGAwuQv3qJlW4ImcKrwXcHFOK5A/M5EVtRW6ALIJfSALvMqxhntClstHiTA0rWQyG6l5ooyXvBV8rcKFjxqDmbEsXyhVN8rzt7qDvQABVAAY2bwI4brhxwAiykAy4HpS3/Z8wigxg/IRNYMW2ZUiCRcZbgGB1lV8CJKTTW/Lpo+7waAK4kKzMWQKnhbI87sG4kgS6RcTQG8cwKQWo7QBsqnX3xypwqh1Zma8+DPNO9mjMkCqJfqonnVRlIuANIuMe+BxIWSBZ+UpqjwsE56M58Ibw3IAMHs8s0XdNZdTAOnJ81mp0yoJoNAzYRQb4DcSnAQm53ZgSmMrqlpqLV8ikR4wAi+7q8+tZSTTxdI4k/m5e2+NE2YtJi' $SantaLeft &= 'cX91ocEtrdKrGmKfMQMvyqTCLDMH49ZuLVx3a6c4bZlteL9/m2QmBxtgk3hi7XVcmBo4IgMEoAI5iNI40AAKkACI/TcTILII/6AAOeCkDgylNzmL2JjXQN0TM1EDG7ERQ9F6ikd3M2AAfCqjhzoTnJgBamW2C5CHJLOxJNqH2alddayNbrEegXEu7GhbReAhNJDbu90uxmESKmAAAvCpGDxs+teHtGkcavqxk6qb1ngDlSFipAYYZg0rY83In/IUztKwL9CwcnsA4s2nAk4ANBCtitcWROAA5QnZM7nTiEEt7KGecvGR3xliEuqjcVydkKgCAt7hAm4A/TseOKDgTIrD1PgDQxnfvjbLYMEX7OeFPkKzZPZyOZABAQAAu+vhBbCENkt7fmUyDK6blMgXXrJl2eJMXr0QNvvHXvhZ02vCCBDlUZ7jA/+gt+oLizQ4iVc5qamUmsNyLsbb4lRHBNXZny7QMXcDRQCWAAEgAEEjxihmPQPM3LYKeRob3TurJaM7F8CWArhqNXOzwPLUAQpwA+qp1JbB3C9ni5R4j3uG1rUNE+MRZmX+ciSwzbJ20RxgArMhJLT5s/kJ36FBs2Eu5u6hNSTqPUXrQOgTNHpiG/Lij5Rqi5A4dsK2JOrMFNTsAp+pAzAA6NqsARgwFEhQjJz5typxq7ZKiSoA634BGAmSAlqOuyTQMeDKARTQASrQaDdYoXvRKHD4gmHLqvFMjNkC7e7BW03YpU6qbH9mAiUQs4Y+qDRsvosyiSleqvDlrAvN5wn/4qH+SqlJO/CUmBJ4Rh5y3AOIWar8sh4pHRjTIWZKpjVYSanXmQMkcxOMrLNEni7q2R3f/oeNESnTYW09YJyTWKIlmgMvSGBTIWlnlxd4LSR5YhDoJekuXa3a9VT5O4X82KVGkHMbXxk4gug2UpayN/JAesuhwa9d6llgnhK7RuR/+yMzDxykTiIEwVM9oY0QDSB4pjLQ8WBAgSopjSZ5QSwPMVFF' $SantaLeft &= 'Sq2igoFEXim/UimhSyzZCxwRx3muXllsSpRwL8skQhOJ0h5eaPVXviclkh1CnBB6zRALxhVasbocUl1fo8ylgiRPEfG04d2wgnpNsRXpZhvCBplLH/nOyh+h/zIZDTMdgL2A0B5Ep2IfthfnozEoRzIrEW70xAghsdFjCcEiqhTUjU+fRVwsrA+NXeJzKzn4P+Ihwg2T2QXmMj82PLFgwVjvQBcrKZMlGgIEKgPr6Kz6JA3xjAirEhKdD2IipPb8+ehz6lL0O2AxQR13Wx8SUWmUCdKDROZXnHEtAAFkBpAjBQ0eNBIECRAkRYQUYQhE4g4fSCwOsWixSMaMGzVyBBlSpEUgDiEeRJlSJcohK4dARCJkoESaO2yuLDiEyEKHJR+WlEiDIcciRFRgyHCDyEYjI50+zRhxIU4jOK2u/Glzx0SJM6oiRBkk4kapQnbMwBFShwUNGzhMmP+gwiNUuiB9wiR49epXq0CM6Jy5VWAQq0ZMPhRydyJGkDoocNDgQcMJGBYa7HzatG5HxCYJ5r1ahKrVIESGnKU5Y4fKIAmPeObJ8+GMkRg6RPbAoQeSHhkYYG5o8W/HzSRhjzUouqByvctxmjatWuBqldCFlNapM/FCIgLnCneMm0MHzGtlFK97GG9PIc3ds4ReZIYM0AUfHgGiUyF0/UiIiOUqJBM0wE2yHjDDAQEigENPpLF+io2599777y8iUAKKp4ge9IyrHWoAiYgJOvCgxNxg8M+IHiy44SnGNsNrIRklco+vCYdIyLT61OtMNoggAkIwIGjYASQcCvTgA8n/dChCxQpM0OzFBqPyUar63pMwtIdsxM/HnzqjKUyKaAMpg8iQ1KCDHHpwwQILQvoOPR6PM+gvh1jDqSWcsuySQ4YO4yrI6UIiAgMNODDRxDRdMKECCxickiPF1PuzJYcuNMhSIUzL1CBMX8PwiOtMo3RGDTUMcwYaRCJChwkQlSxRDpgkwoQ3ndJss/wq1I8/IjYd' $SantaLeft &= 'S6eCfi2i14M2FPUg6Fpj1lcOIawJCBnQGikDtpAsUQMdiDCCUZGEiFSiZRPKsT/s+CtJJ4bAbfJchRRrtlf9EkLC3TADDWwgjozAoYJDNQAhUQ82CEGHHCzIIKNcIzVCMGbJjZdYaI8DMrsKjs+1OGKL1SU30CBVG8igQS1aq4JXCRQ427dyiHQkIT0rFWNfN24X4nJn9pVZiUrzeKsZVhLIoh4W8JeDDQrEdoNHhWs5IwDFfVhmK3+ceNN5Zb465xzvjbarKw06q9C3xgZYYNw0SMAwp6SEqmGavIwxXpvdhXssP03tWkiufsYJBwcoKPpkbE3sIOGPXoz/k64hAp2R0pvdtfkuaPFuHFqPp6UBB2m/VlYFC0yGzN+APRg91gl0EGnh4oCUiGIIo368XJjBrLJy1msSyj8aQ8Ph80OLHjzgCXZrGiQjAoWYJs8S2tDKeo+XsTON/8twQ5skwmEGTt/bAYMKgB88SQJvUL14wfS+t3K9KaYJ6+64FvQskOcDgtkJe7fg1ZNjFRgEDSpIyg820iQC7sSAdEnMVoKwFQYGinVCEgyYuvYf6ESrgamRiH9mNCH8HOVzkDlUylQGuAlYAAMwMAEJTLBCGOBgW0xJXEbQJyb4eUxQ8JuhDaNFH4forCETgogLMHCy0ikqWwT6l1v+hYEc/9jKURnAwU7Kt5C83dBDNzxfFbdChCxa8YofA8JSesS5q9TKd/xLlP8gA8IzZSsHRiBCmzqAATeZgFtIGI5FunO+PepQIj3oWddqKBhAAjKL0okXELbEwe75C41nkwyBimiiWRWhCD0gwYJ00CYMEI8jO9AcIHGQAaRAcCI4kIELNBdIKzbwfJu8gSp14MLszaR+OqrXfyZkBGtNoGxKMtEHQBiwAgGzRB3YFgxOsCCSkWACOGhSRnrQgAx40FEYMMEOuBgkHHjOTQ24gZi644IMQHGVNAHkDUhggQ60k51IyUAWfXWfCfXAe5BJGRLbaMRE' $SantaLeft &= 'RaYDG6gA6ga4Fgt4Ev8JOnCUyb43AUepEgc4WOf3FGoBF2wTlNb6nglvEEog6CCFRguhBkJAIBLgQEhXu9P93BRCWeWmLSLMVj+PeaCM5KCduVrLydb4Pzd9zneh4ykGbqACEwzRX/+7ZjUzQIKjwdQDc3wZhHR5vyGC8Ij/UpQxSzTJRCFzQUXQwf9QRzLf+cusSAWd/ioA1IR+b2xHVagvWeq/fGLABUHyUms4iAM6vio3LgUhrJwKU5LmQAcnOFoGNIPQ/x1Kp/8KHFCNBhn9sXWNSlRUZAR7TBOYNIyNc82EdpABRyFxjb4crFPRJEkNYMAjCGULB/zFFrOeLLKNNetp2drYAu0UkoX/A+SuYMdBfvWVA0ANaT5T2z/JcIAC5UmrZW3b2LFN96zX/Rcxc6NTyYy0A6vcSo7oeaMjjHatlZ3ABpxaOiWFz2xvKc9PK0td6qKXbGRba30J1N6d+hYD5+TPSThYECPcwFCzleRyE6VVfh5TQSR7TH2rOzb8/m7CEuauS3FL3Qr8dwfvMpWeBty7s6IWWyd2qlb/tbSDnjd0uv2XbZGb2+nKVgN+1awGYnuyDpRQc9DzS2lKM+CCWKu6aRqse2OaT0fFt8bWdeyEX3XhwPU4sASSrP5MSCR1yUivAy4CX+2rYDJTcgKGazF9IUvhGkdZp9b1JfCy/JYOu0AwjSOj/0qy1Ka0oqzMqUVUWyrggsWC719Ytu+GgXdbGlM5yhZQQZh4ROQjEIG0tJ1A6ZQsQvdCtkgku03wEH3cxwYusq9Kq5Xn+1YPi0s/J+HTQWKNn7LuT7l/VhQIAMrig75UuTA+q40l+78NMLSxDIVyBSjw39Z1pj2ULsINLMCB/CER15sm0PdMwBEddICrJVLvqP8lZTor+n/Ijq5jIb3F/vhEz3sh7bmPy+Cy4VoyatTAAgwa1k37FstRHjdkR4RsdON2ovSpXrGgPYPPIdvPhF0umkKHZlAr+EwgAKZp9Xeo' $SantaLeft &= 'YqcV3ei2sgIycEMZQYRLLsnJsFSwgGkT0d6EVeMEFP/Qg4XxW6ZkZiNkbgOXuPbc4SZj9rL4Q2kgGBgugiPzplWmbBKohUQv32o/z+1zqjN0ASZdHLlMwhL3xLHlRWMw1PHN0E/jkWRKv3nKgElnnn88rsi2wAJkYLVxHeTZKhGxp7yn0IeXGcVYBpwLRNIDJMeUrn8OtdsVD3eRb0Un3FkcqN7dNwyQcNxoXHLmzUa6cbsJUmcv0LcHB8nIELzqClXoAqAY5Aqp5+Qr+YqlG/69vkMdshRQQFpEspa/Qj10bfd41SfA7DBmLCE9dE5oGpYB/UUYMuzFfJL9l+0nOYWxbSS9pjkPWIAqPq75+74CHLCVGHHo9SgRjU52cBT/kxnbqkmGaaCPq2wMPGUttznu5QP9Vw584N/nRoDTkzmZSwAFWAAFwL0M8AF0OY6FEAuDeLaq0BMgaaSpI5vDaylOOyIQsoCZAwkpQahVszY2+jejSagcwAETaIDPUQALQICeygAXuAEd0IEe6IFZcgBXE6MGFLqUGpYEAgLPeZX8Qa/I0C7VOibISqiyGwmCsi+3eKz8Cx1lw4FcKQoiOJA7miIgWCUhy5GoGZcgeAghox6JMDDnoizQSZP3AzTA+hcFIB+iCAkcCAAE6AAXK7VjozM30b1IQbgwwZs5ATGdASUZWDljM5kdu7x6MyK6giyeQoA+3Be7AIAACACi/3mMRrOwc+ukpkGNC1IM25martAXJMABornDOHvEnYoVI8yx/sK9OKSLHQCASrREZfsegHIzagOgz9uMppgBG+CaUpGc8tsB+ggR0voeBBi2o3o+gDEtgbvDBWiRzcCBWsTGSkSABPgewNExZYPD1CEOuqilLgqj6WmNmliBkVCRFUQARJSw/wOhYIvFzKDEbLRFSwxAN1knDPDFSUQCtskIxJEOHGqfCgoKMnmKU/ye22i0ykKwsfkcfVOcT8JHbAyASqzEAXAAaBIJgUSP' $SantaLeft &= 'wIgfgyTFuWiK75iLF+DGNwO2R6Q/LSwOWrxIfCSAUiyOXJmijJgWktSbs2BCuigCFf8oIZYckfqqgA7owGpkx3GMipnExpo0oJ/8yEiZAVUxRwiqyqEIyOJgyIarsD1EgE5sGZm8yI50mgximqYRyCLwgaqcD1v6GNUonlFCwIySLcBhQSj6QOOBCh/AxwawyajYAcTZDJCkC4GYlp2cEl80irgLQG40QBUwKDixRgBoABTYipF4m9RJnBgqnpYBF1bBgaGKopEwzJCQkpc4zYDkws/8CNdUGNSEzZbJSZAgix0IzZZZTbWczaXszYz4Ca38zeEkzuKUEak0zuRUzgbZiaBZzueETnscAgBBzui0TuV8idbYJuG8zu5MzuRxTu8Uz+SEjsAcz/PszfoJkt1YRM/23Iz3oQlJdM/5bJDFIYk7o8/8LI7mhAiQ0c//rAuxWAja4E4ANdAQCZADVVAH+ZgFdVCOGAIcsIGzeNAKTVCR8MwK1dAN5dAO9dAPBdEQFdERHYmAAAA7' Local $bString = _WinAPI_Base64Decode($SantaLeft) If @error Then Return SetError(1, 0, 0) Return Binary($bString) EndFunc ;==>_SantaLeft ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05 Func _SantaRight($bSaveBinary = False, $sSavePath = @ScriptDir) Local $SantaRight $SantaRight &= 'R0lGODlhfgAFAfcAAAAAADMAADMAMzMrADMrMzMrZjNVMzNVZmYAAGYAM2YrAGYrM2YrZmZVM2ZVZmZVmWaAZmaqZmaAmZkAAJkAM5krAJkrM5krZplVM5lVZswAAMwAM8wrAMwrM/8AAP8AM/8rAP8rM/8rZsxVAMxVM/9VM8xVZv9VZplVmcxVmZmAZpmqZsyAM/+AM8yAZsyqZv+AZv+qZpmAmZmqmZmqzJnVmZnVzMyAmcyqmf+Amf+qmcyqzMyq//+qzMzVmf/VmczVzMzV/8z/zMz////VzP/V////zP7+/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' $SantaRight &= 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAfgAFAQAI/wCRCBxIsKDBgwgTItmhsKHDhxAjSpwYEciMiwcxUtzIsaPHhjN2AAGyYwZBiztKflzJsiXCIhcvihxJMiRKmiZd6tzJUYjNmUiKCKFZEkgRojuGHuXJtKnBIjJGHj1yBIiQIkdpIgGydWTIr1yditXpc8bII0KoUhWq9ojQrDSJhh1L12PJmW3ztr16NSjXrCLrCqZ4E4jew3n5HhUisgbDwZAfkjyLuDJVo30n54zMGaFZy6DfKiW6ubNpgTBBh77KNW7R06dDql791rVZ2JFvzqYddqZF3INR7lateLTIx8Dphkw73DLmpTjnJhdrtkhz0M9dS5/eNCXz685r1//kPvYz+Mojt3YdWbIIeaYXrZ93vtV93NLvWbb/Pj+v0dbriYRffh+ZRVl/eokG12sEtmQTgnoplp1XDbrkm3wQ2qcegMcNWOFGPu0QWnPZ1YfUdh9uZCBbbo2IGFesbXgfiilOFNJW/RlWVX0xslcTjTVKZCCOCD4nIXseBikRTCKxmCOP0OGkZIFxucXfYVeuJWFXM6k0ZUcpSZXZcIa1FqVtyH2pYpMA6qijZT1u2GFgano0ZHYYvlmVfNApKGWdKxkIBBFDEBGEEYe62SJaQhFq6IZd8eChEQVRCmhCkwFx6KaETlWmoYS2aaKhFCrk3qWmCioSoqwG4WgQkA7/Wmiitgk0BKoc2UTUVo4WWmicEx5X6kG34tpQTbpqOhKnsyIqxKOtEYXDDDgIZGlQxlJ0UaaDbmpmoTQVMcRxLmBggQnEDnRttg3B5BVQkwXBGrc0ZUCCBRVkQAS267IrkUU4WESvbyQF3ANJO5irQQUTYKADEv2q629E7pJEQ8Bx6ZBBBgETcQMGE3AQMgUIYLCDEacWBOvEkpm1Aw47uIDDwTiYYAEJHbhwAwkTVCAyBxVoYMEEGTxsK8sUlWSSDhZk' $SantaRight &= 'IPMNHXCgQQcYdFBBByGHvPDCFSigb8RIS5TDBB1osAEIGnjQQQgddEDC1hVsIHXQHOBrwb7Yhj3R2x70/+23B2xH3XbUcMNNgQXV6j1RDxz83TcHgpfgdttv/7y1yBXcrbhELqS9geNrDx460JdnDXTDRYCNdLEFFcG04x6kTfnsI2hQuOV1V5C44kOsuy4Rb6f99wccsG384EH7DPfPE6Cud8qoEVQEESYI33faxbc9wuAkBM7BzxvQrbUFCuC9+UFGVN9B3yD4zfYIgXcvuOikM4/5DedDjwQR1G9gvfBrg9zkItcByQ0Qd2TL1/meQgK5wU5tIAhdCIqHM9FZUG4hC1rDILbA/fUAAyGwHuw+EMEIsi17OAsBCTggORCQjm4WsIDqcCUEg9SMBA+MnePSpgETWpB74dMA8/8WQAT9+etUHiPBCXToNxHmUAMTTOEKoya1n82tAuYL275cYIIThKB9OQyjB1AIORV2IIjJExoC8Kc4ImTABCU4AdrEyEThfS5wg/te6X6Wud2FTQVdjCMdxRi6tY0AjfZb2ARcMMNLpW5nJzhBCUrgxL9VcownnOLchKg15mUuA3qjniQjWYIPWHKQZytkGjcpvu9tMGw1I6UkL/m3Oa6vgG3To9C2ZgFO2s8CGNAbF0cZSRB8wHpgdFwI1OY9rC1MgPNDYOaMWBDW5edURmCdG4kZxxCKEXuFxBk03WZGyBXOZwu4lqWK1UjcZBMhwIskN5d5vQeGswMR5B4exbn/SpFNoFr6MyI1yWMpjXFzlk/0AAgmWMjJibNtx5Na2TRYt2AOhJrtfI8OTNDFeYbRmNmboPfiR7800k2RGQDbQD9UhBuYoAXzpGU9dZhLA24PciVg5TNNN7TEWfNoSPipOwfy02HKsgQJzSFJ11bBqE1AiL5cWPgmsAAMpK5GKxVIIOVZgs8NcozEG+DocmnFnpUuc/haQAPoxEHuCBUhHB1lHIUnU+FlD6IDnKLpKJC5' $SantaRight &= 'vt4MB1zMgApOdrGUmGVlFUpZPI/qTToSj20rfOgJoRq0c73gBhvLwA2IQBUi9Kt3WwnYUzrz035RL45xHOUTTRm7hQ4Oj1Gr7ATs5gLO/1LFCEfArVqs6Z4hiOsotwFSZ6BHKaMeNZkeOObfjjc5DoiTlxgILA5suxa1YEgo6kGZYohwG4HUEDIZRQIGtpraEizTiWBMJQrbljysdQAHuOXsECzDJw4GwbeQas901uW6rR71kmlboRlF59fZpvQw8pFvNnOLFvXwBVRBiA6BuMgCWUaysU1M7l0d6rYc6ICL0f0BhvKi27zgV1ysKsKmjBAt/UbGmtZMn4VRe8l8Nld0N9Atyq5z1RSvGDOu0hQRgECD8LrkWtTsgRJnTE+/sRafKZwdCUxA3cpYZ756udWJC1WfIfzny0CQwVtNYwRIlvcE6xNhDxvqtilvDP8HCEqdglrFYqH8ZyhDvlFyiIABrpKykiTMZQi2ZwIdeLbK82GnuF5FKlItCycywI174rpkSS6TtdcLKds+QAIXWPk8CmLNr7IyZLkMaywYpV4XYYDaE3hVmWujLJUPo+MnYcbRERayqSNNWpT1ecZLZCIY6RrBmSEGyzmCjqueNSjtkEa4OgHbRjvKzR7OFHQ5KDGE9NKmREX423HxEXtMs83UWjgEy0RuazXgghFvWy3ZAZWum+0jgv2mM0o+qjzliWHbQc4EPWBwghD0KmfRytnaYRB4XUrMo06yiSE4gQ568ANEa/vdUqG3q3JtaoLtJzIu8HOrLyy8Y+rA3e+UrgyLvRzkcNtb3GGOTLlPAIN909hvHJj1dZCtF21fPNelVha96+3ye4ulX9GVZAngyM2zxa4DNzCxai7eHESRquVETziSIDO9DNicsbZrW22HQ/XdeIveQX/5y0kDGT7L1cKS7ADNe4DogfN8PhG+erjl4vFM+YbXO7mV/noQ14an1gQwCHjKEewfIggB67kWFsI7bv90p1iKzzU/syRh' $SantaRight &= 'AHAE8RzlCXp80Jutdm5JXsKC2ejXR2mCsbel7FM/DJbnayhm/wcuWZ/8ZIQ1GCX79+1RX9Ti81JEXXNc97un/LNT73XNR1Jm9J0PZ3Usr1IH+fjKd3aXkHL0gbh935vnqGcXf3d41x4uaaeX1veeqSS5pFiqbrUSW1/34VMl114OF8JmMi2YxUQGYTItyRITf1IXv2ZuiFdE2lZ+0ZcX1qEjQXAEjjJkFIgDMqACGHgDKpABIjFd8OYDNKAjOyADMkESJFh5YvF9xOQCipdyZdIqQ5Z3ETYzPuACKgADN5ADN+ACOnADN3By2GEU2TQSNKARAgH/bUtyEG8UR5x3ArXlcyTGYxvyFvyzAyrQABmAAQ6AAW/kAi4QAzngYT0oM3RXf1ThW27BFWwyE1nlEdSTeSfQeu3WFhiCbKB3GGXSLCMBM+USXTvAP0TwMhiQAj+IAzpgiD3QAziAAzcwA6Bhdb5SamzFE5AUhzFwMBByJVxhKFaHAi6QhRkgYrhlHZRCBB9maBNXhkRAd673eqF3JunxEUKlApFEAjAwfsMHIKAyAyBmAihzcaTIXYYGiGX4A3DmipbhZeJxHN/FErEUhy14BOV3h8JnHSsWZC+DA05jAhiAi4iROi+zioC4ijDDWXJ2W1RxJfsCIHaGMEgIETqw/2StKHUqdyuIwmCd0hWCxUVeSAI6QIfIuInhSIz8w4g6Y4E4QI3NEmGIQjD60VEmAGfyAXvfCDFHsCldsT8yYAI7uIPdKHC7VV0XSSnTRQQ/0ANGoIr8Q3eLiGh1SIojiRNtmBCWQilGMF4yY4aWEYHZtGhIcCi14TFe6AI54AIoEBRwchnTMzMr2ZTiWIVwppNt4Sq+8o4QwVGGNhzINopBtS+bwhoWqDM/2IMeGH2iUY5OOY7iyIielTroKHugoh4fUQStd4yxR4egxRWcIhQ3IAM6g4N0pwMigowmto5HMV1/KI50t5jj6IMqgJKW4XhC4SoUYUQu' $SantaRight &= 'ZZfDQYp+Ef8UV+EoOKACREmUP0iOAvd5t+VddoaWgbmKJ1lx4niSingyAGldiSKXD2GPB6ExmNkch3Irm3goVuiDRdmDE0cEi5gXL1NkZ7g/viVv08WYxcmYK4mKKrA/iIFbKzaTDuFGUUeNs8llvcKJQaAzLgADRGmI4whf1lEEEZAUMyABM4BkrRJmQICKM6MD+ElxBDlxh2iRlbEpR7ARvuMAKiCVidFbbwGDPQCaXASaN3CSK2mXM+AAIkGhBkADzMmJI8FdiYif+WlojElxHdoDN4CZ8wWMacESKpCQJLI/XVkoVgiaWciCh0YEPpCYHhhmXwEBBAAABBAW4JIViyiiHsr/n6s4KKzZA/i5iN55j/pBkf8JJUCgAkV5LtQ1Ypx1MEMGAVwxAyhgAAAAALc3LwVjikWqpCLKmjswcSd5iKARYQH6EUPGY9rlHodikCRAAtNnGQwBBPBZEg7QowAAX+R4WSW6iILJnx+qkvyJpv9oGTs2ERGjJ7vhm11xFD9oM7aFcgnWFQ3wABDgAA4QAKTKURTwVKjaPBfgYWh6n02Jpm3ag0V0hpbBEdZ0ILvhKDUEE0QZXVKJW9EiAwawAAZAqgsQQ1FzPbZjNhOAAABnpKtpko6qpDJQZRTZEpSqGmYyEjIDAxbwqJUhA+LqADThAAAQAAsQV+YVO8rlP81T/wHOupiGlpgTd59LGo2z2RYuQQPCR188EohFAwMYkK1tcRFDMaFAADNvhAMwkHno1kTLajvwip71aZxrqqSNigM+AJK16oyzwRdTaBE/6K3W+nrkGmZgWq0c46E54LA6xEMa0DzN043k6DSKirGHCK70KHAsAQRYBqVuwSvVRxI/8IMYAJkM6AAkyKMAgIWIuIo6UHNe1GQRG7MVkACCpQIEmo0wk7MTV6D5qhceYSmDQqvfOBScEmEm4TEbtZt5IQGiSgCk6jCMqgOW5k22EzsxG7MIsIg74AMUWDCLOLg9aLZtwXPY' $SantaRight &= 'SrAOyCNdui/GiZ8ZIIHfCKakagFiuC/To/8DYehFyVS1zaMA+JoXQdADO9CXmzUbHgE9RjFwjKIU88KvZQaiH2ldbwkTGbAAOOhhiqm5F6ZcPOSuGpAARDQbRhCI5tGx2GpleqgsUTmaxjmPh8FFmgsDjTq9SqdQMLuszbMAiptlaRgShYIYFkKp2cQq2woYVcGUdMcxh5sX2uhZPUCULNuyXmRK2Ws77+oA4IEoCau4+5ogGcqQEcZsjlgEL1CMbpSQVOcx04UEOBBJNdewcWhe7cNaEds8COBp7TsbhFIUYpu8h8u/tXF9FnFbxlmGFMcxMHmRR8CIAnFa5na3L+u5s7UAoVupoXK8VOESuGoltcFizTYDI1b/kiisAtXqk0YQivuzUSUgAuZlXl/UZMqqvQigLwQ3BD2gwy4xp/BmIsoymSTRFidMkB7jAD6QOkGgMWU4tVAUAiRkwXp7wTVsoNoqFO2hFjqBF5cRK/eRF9WqlvyjAxf4hzjgMDooUn4zR3UUx4q0Rt07HN4iA3isE+OCAyFIahlXE1U2xiisloC1AAmpA2XEQ4tctfjLVxnwyIRJay3niHHKEyLxLMqIJJpCfCU5josJmx+UY2OTZnVEyssqNc1DAQ1Qtu9WG5/RFCaha0NhEVNBfJuFwhUnohTHNBZwAlITsXrLyNqrAXy1Vohmh4cRgXhYlSXxyraKEAJzISUB/3vhKM0jOnEx9FRV6z+x4z80TMyYyICrrBZ1mh5xORkrMUM0QQMzwa+0hgS1BYg+4Kj8yTN7a8oS7c1Xu1ZAALR4KZmaUhyiMRNZVJkRoTQBc53VmsuBibM5wDCoGtESPQF8NQEy0Ih0XBUx+ZOOUhu4RxNj5hRoeBhrisuKiohM0zx7u9JG3TMI4AABYxYQBomg0iOdctEHp3Ui8dF0UWq6hWwLzZgNraj8CTJDE7NE/a6zRVUz02wOMAOKAZQcfRWjJm7bt3e50dPENwOqCJuxKoY9' $SantaRight &= 'kAMKgADw2jOnOjQJoAANADMbepEqQABRUSJSPXrqR3mG1V2CES20SxUtqf+Ygbio9coxWbgAV1sBC+A0YWLMVDEDYWoAycJ+RXccShMTM+AYsVgXGwqUiOG8gQy1SlqxK3ocsRmIQYdoCSuoAmAAKhASwuIbrO3aIWgUv8WZ4iIYRgAU8pLQW/2qpsiSDsBZzbx3lUEDghqmADDcB6C04voC4kotBmIoaGy+QMwrgsGGz3KHRCADEPqUJzkoOKDU4DGDYAre/h2mj2mIBbpoviXL4qliGYpfPKE/4xIu+devLYyKBBmYHLMDI+ad8AYEBfDf5xoA55oBrEplUNIjNH2P+irbRjFqwFhm09qUh2icM324Q7YDAxCmpIoAOJ7jLKi5m1Ume5IWGB7/HJLJGobbwhrLkhjbqiMteyVWYqGCAwIQAAkwXiaAM0JEATyInwUa43kRHFRpKAgW3YiKitPqttoa3TegAAU0tb7bAayqAymA0eI72WaSJXnxg0men4bdHPNiAhzgP+elrP6IsSpwZeAxGPDSz7mliGRerw2M4dbVGjWTtzP85x/KiP0xGLoC6UewooeY5Bjzs7KnFjWEMBiQt8DcAdQbmNDbHIhOE3b+eWLOiCqAn5vFz8L3KoOiAh1AAdksNxRAApd7iCmAIMHBhjoykaAx3y/uKhxMeiO7dHlKc/lZkD/Isa4+GIyxIYdCvEewoNVq5yTmLSVhiB527o0KtSUK/yGcUefiErY994erS2trwb8jwTE5kOeJGKE+SHWcPskuQVwHkR3gkRRvsbNeth5moYFiWKSH+JnRiOvogc51MZl1eh3hIu5uYe9hVrzG6TQ5CFiXuaf9YR1NUSw/9R88ch2BkeIiCW/YWB3hK4EWyz93SRwUzxJgQyk7EIkSMhyMYb5u2RbRYjGtYn/+XF2yWBEYI2TNkpkzEIl3x4kzMQOc+O/94WU53xE7LRDLPRk98u8NbiI0vcc40afPjPR7zFli' $SantaRight &= 'gU3JJyYHPxzV8fNlAhjL7J/2R87/MV+afiHF0RwYUxuxIiAZR84RIsaK/iIbsvUOwU6ocS3NaBBEVhRHIf8aZAIvIbt1LPaW2C6N8+HUJr/gDmHwrLFoYTtiK7KtCn8UBX7zGg+XVcn4YyEwRtIps7EDy83HuI8DT6/2ncUssh8Rb7XzAhEEfr9oPovR6T0hFpGd2ybx4Rn8D5EyAkUQrHOjWvEc6tHt6GEgZ/cyJ0PbDdgfzEIo0RYUHpOFA14QRJZxtREjhMKno30fpf7uo+6Cgr8TRaACzfPnAKHBgg4kBQ3imLFDCBIgDJEUaQgkyBGKFI1UtDgDCJAdG3d8BFJECEaSJU2SvHgyokODLV26NPLSJZEGFmCc0OBBAwcKBF0O6RhSCMShRYukPBlEI8eNM4gMMQLkJEakU63/HokoEqJMrg8NQi1YxCARBhl6IOnBwYPODhi4ztDacKvQIkeCGJlYcsdSIAmHEMl7sirJulexYtVqtOvirjIGFiTSQa3OnjFbFtFIJKKQp52DcP57ci/HGX9DnyxsmGJq1ivpNmQcGzIRBDgg98i5VoMGEy+ZbgxCBElw08KJSxVJEogMuJ2HqIZOUgiQoVkVyy44ZPENCz2MCIcxeW2HCcJb1ugYlG51hlndk3yKl0h0+qsfWp+Lvat2JEZMVPCuCB1y+mAt3WxraQcaNvoNorgeMsoojID4667n6jtisKk2csg1sfS77CULLHChhxw6yE03nTJ4aQYf1GNwvfXm/0JJq+hSo89D9mADkSsiLKjABBdQNNBADjTAwLwENQoqKMVe67AkHEu60KTAMBoKqorwi/BD7CzjygITiBBQPJ3W4mACHZRsiQa+NporPy6LqHAkqTBKbT6KqvxrqCOqPIIIP4cQa0Yoe0RioZeE/G7AInUTiEWZEJLhtzkjcg4wvOQ7jSI7I8IIsKdE0nNUTEHzLL7jEIXJoAwsyEGHEDZ4FISdNKgABzAZSqgpj2IE' $SantaRight &= 'zrPhOBW1QrygJE5TsRYCwtTiKhzOs02T5ZBVmXKY4MhHIU2zgscKGm3LhHr9FYhNm31W2mSLu2tdOPHjUt1pj+VoV1Yt+5HWIlPUYIMjK2tY4CwkNDqJSQaDAgw4YtNld9676MyUYcAYSszB6jwCkT+ZjkogtxTXsjVNkZNMSCW+YIxR03VVjpjlPuOsTs5M25UvxiB69FI7LzPoYFtus8WVAgdwsMrgGJtksEOKd4T5wWRptlDlDiuOyP8je7+USYcJzgQZZFx3msBbFfRUqVIc3Ky0XHiVdm3puBxO1VhDO/xNY2tb6mFrELa9tYJ/LcBhSpM2Eg4IGlCGcm1DtTL2aYfdhpdBL+8uyIgbdiuQ774rwGAH+v6aAQePgppaopnxSqxDvNjmUKKo4lL4rnKvfkk424/C/aEfbsigAg32fjQnsNMckejo2l1uhnF7RZzwdIOQPHKPdmwP2HJ36Oqoh4jQAQcYTACfBBNgwMCCsCnQ1ucjd/IWAxXujG6lwvs6min1UlVbRkvVg+i39DiCXkcU1Soi4OBV3jJBDjBwKw5s4Fa78di2QjYBDLggJPQpVLuqU6nmNc//UsCCkQc/CMKWgOU7JhgRBjpAIiIYIQcRhOCRjgS8fekEgWSLH4S0ohly/a9+/tOMD9WDNPt9UIgxekkPyueCNRGBBD0oQpl8ZqvdcI1fNuxcfYwgEgqpjDT+A0IPwpg/6w3xYBsRYxl/RQSkKWmLOJgACXxCBCKcAAbc65mBMncmKnJgjx4okK0mYIEMaMgqwblZF6HXlNB1r3suuAETkeZDMKoNBy6QAQ6IyJEMYCADohOjJvE2Ih2IRSw6qMAGevYxrqkIgqzUCQc414P6kKo4/stAJ1fYAV5agAQ3GGOMcGDADFiQjTG6QU1GpAJNcoSNJihf+1SQgQYIrD+8/8zBWHqQx4/B0kAOVIuZPHCk4tVnKO16ysFwQILdhCAnR/KX+HQwRhzcIJre+mR6iOAC' $SantaRight &= 'IIWtAt4iwTAv2c9/hg1IPkECKjVQSjrqII9TfNQH+LU+j4ENA8Y7XuFgxxEV+kw3GyBBBqZ5z91UgIImUIE9gfS1v3lrRL6TIdi+ZYQM9OsEOsgBO73p0SKtT4bjHOcgL6rFzzyoIy5YIN+At76wha2kIvunt3wHU5OKzJ9T/dpUv1WEBVKxmzwFqwaARlEgZcBz9HmY/DiCAxM8FE06mai/2MfSbE1gJ3KFKdBgykC94mqO6MsJDcFqIFi+s6Q7Id5FDWkVuA0BjTyzIv8DCZtVusoQq3n9F9iwagFckbMCcwTaYM+0R8E+agN1hapZ/4QhUskuKDhAkTvHOTw+9o2ylx1eXzGLVat+FjIIcKs3/yhaKnLWdxi4wWINE5JbbgQHC2RgdAG5m77Kcni5tWpmtYtaXH3rR7cq0nBrOF7C6sSuWsVofbTTtiDs4Ll+u+1uJiND7mI2W/DFbHbru5OeQGalPtupiniKItQSEkMUEZXsGBIVHJgPRSITyE7OlKbOVharLM0rXy07PN8WJAPZEm2IH6XfiwpONavDFFBoUL79+lS+EyDPdkWmXwjztrqD9IkRXJDKd4o4xNTtFokIEz85cQSpVa2ubZ3/ilns2nbG931gZjuMhB3s1aMBBrCBQODUsuKQPl2KkQosUGPsQpnJe8UtjWO45in/KJW28nHwANyt7sJvyFOpS0iotVYM+G2sqIVxXf1c4yQ/eX2lhWsHEIqE//gOy1gGMHXHbIEbmBg6YAbCcymQ5qZmdQIbQHPfpHxdtXjTgYvuwQJuBec4ey2iHKBzBQp5FROzh1o7EPOfu9VU3E4V0BCm7/o8oC8JKtolvQNveQf7aLGa1FtwOfCf4rQRxzj7sk1tKnn2GlNgv/KnPN3Noo3QAwUAjdWtnuLwLLCAse3J3YZ5Hd06kgEFpKkDzub1BAT96SNxt4qAhDOkx7Po/4KQYNPpC6uIX6xv5Nr5c3HTzHOdmm9849uuD46hj7u5' $SantaRight &= '0MoZpMp2nSG6ffaBf2WLhdAB1BG0ci6g4GABFac4xf/dNZEPXCY7Bqzw5NzqkvozSVSaykgqsjBByWAB5jNpzC1e1bWIV8A/Jrh/x7zqVu786SqK6fmGimfUYOUvDUnnDuiNdH3DHOa7ceuP95YiFFnTJThQwKaTXXNIFRSfelJujYwiH9kZ8OX+VDq2TXqmCFq9SDQMd1caDcFzLxuQWmYgBepq1i0apjBFRWdzJR74fScdpnRXy7e4goGDa0ucygZ338ruvh08ReXwfpCHOOIABZDdpLZXulxLvXbIW/+R8H4toUvIzdkHXr2nSuXwkjsHJ3enROhYgd7UqlMcH9CbAgpYgAISUO5ymz1sCHDqA0kO1B5z+0grjLpLqgykvXIz4WsH9CCJ9z4B4nAoxSqc2+7/dSAMTQc96AEd0IFIepURQQALUABvaQATwIEckCrdeyUJW7PeirrJsRwFiK5w+rGdeLBO4wkOaLhgQSSRyDyV4Tu+cy4eaYmY+A4i6AE68hIjwIFN2zZuyxZ/ATRSapWXwIED5C3h4b3DM6x+I6clmwB2y6SOaBeHCIKKoZ6qiREZuJsG6ycK+8HsqoAOQIAAQBDGuEDA4jad4D3hialQC5t7WwAE6YulkJP/2IOcX+mIhLgbJXIqWQq2qeIJgAmAAAAAFWSMG3g5bYuu3bCVkDks7UKAqMoANmEIGegI6Ys9qgEWG5iB/rAWIuidMasvUKuATdtDPgQA7FnB7Yi7UYuyFxs1kzrAaqIdJFgB9SA6dDoj0ggd2YhBmbiBuPOWoPmnBNhCAADGYOxCJLAbrkg1b4Ew46IxrLo3gBnGt1gQ50kYMjoYuPgKruCPVhyL8iGBl9rCTwzGYPTDxWBBIiC9H2QyYAubBHgBg5gcsQATzDgZ6ymioKjEuynGsMABBxgAPvTHcAxHUXRHg9BGJMhFC7i3voqxPzMfFZic2NiLEKLGvpDCrgCT/4KUib4gAIDkyFCcQwzw' $SantaRight &= 'wRsLMmfUD41ZQzO6Hje5xx7Jx5doPSQgghnYyI4ExnHcwWtsCQNKQCA5OPa7vk+inL0gl6ZgDuXxgYckRsoBE+CoiH2kSYFkDKTEGxXIvgpIgApAgKMbG5lgRNmgyBlgDpuMjZbcmK/oiJLoiwYASB8IPtkgywJKKRzoyoIYIMqxS69wCe3JyI1QiR1AAbVEEIy8y8XIR8EEEalEFNFJOZIgFLKMDcPEx8F8CceUDSE4S0urCMnUzM3kzPZIDqvozNAUTVbBHocridFEzdRcDI2ASdBUzdeEzaAIgucwJNi0zdT0iBZqwsW8zd4UzaWgmWzT9M3h3My+6AyTIM7klEygkAjTVM7ntEvRSZnMhM7qRJRfKQgKoQjr5E4QGZeQALsj6M7x9MqBiYiJIM/0ZIzfmA/1dM+3CArxfM/5NIiEsAEcoEz69E3EZAjS0c//BNAAFdABJdACNVDiDAgAOw==' Local $bString = _WinAPI_Base64Decode($SantaRight) If @error Then Return SetError(1, 0, 0) Return Binary($bString) EndFunc ;==>_SantaRight ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05 Func _Santa($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Santa $Santa &= 'R0lGODlhyADIAPcAAAAAAAArAAArMzMAADMAMzMrADMrMwArZjMrZgBVAABVMzNVADNVMwBVZjNVZmYAAGYAM2YrAGYrM2ZVAGZVM2ZVZgBVmTNVmWZVmTOAADOAMwCAZjOAZjOqZmaAAGaAM2aqM2aAZmaqZjOAmTOqmTOAzGaAmWaqmWaAzGaqzGbVmZkAAJkAM5krAJkrM5krZplVAJlVM5lVZswAAMwAM8wrAMwrM/8rM8wrZsxVAMxVM/9VM8xVZv9VZplVmZmAM5mqM5mAZpmqZpnVZsyAAMyAM8yqM/+AM/+qM8yAZsyqZv+AZv+qZszVZv/VZpmAmZmqmZmAzJmqzJmq/5nVmZnVzJnV/8yAmcyqmf+Amf+qmcyqzMyq//+qzMzVmcz/mf/Vmf//mczVzMzV/8z/zMz////VzP/V////zP7+/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' $Santa &= 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAyADIAAAI/wDVCBxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq00/fMDKteBWh0AYdB2rhsLDDwzEkn2q1WuIrw0ZLFjQNiGDDyHWAsUL921ag3AJ+p07+CAFDVoD6815mMIHISLS/vUqRDBfx3PlaihIQcQCuW8TCqm8GKaGzELQLihgViAUIELuCgERAgQDCrYpCCkgV+5ArSAo9J5sMDXp0i0/UCigPLFkgbPfav0hQvjnDxM+eFGdFu7d4HM/0P81rBh5yuohFni+LXdBCBFCoHwAj7eJeAqfhXxBs/1zWgp+3fUZfneJsNVoIqiB13HmofSWBsJRQYEHhxkwIBRepMZAdqlp8B1+Qmyn2mck+reAcOyFMNp8QWglxHsNaqSiGpAVV50GE8g1gRdhxEaiXNrBpxxd+GV2l3ipOXZkWgtYeJt4JCbWnItBhABgjBZJR5tyeQlk4HzdCUGGGfwBQeBnCWzX4YdyBcBAArwNyUBwGRTJQAADnjlnELOdSJuBamFZ0V3ShZDBY1NKJxcFYXyBxZp1MhBbjhQcysBpDPAGIGZIXpdpAAUYQMEPFCgJXHxSxhYoQQYI6pAQdEn/J9+RiN0X2WNepHepcOIhdhpavRWggIkJACnkegYUIMEDMmShxQRhaSUdcI65aRADXbq6kKpbVqdVd2hh6h6BE1g5V2aHhdcbqCHcWaCeGxqQhBYy6BBDDBD8+BkILc55Z2iCLaDtQl9el9h1vkLonxdQSCDBvfeW2l5vSn4WAKhu7vvtXMrykAQPD7DwwAMFFDBgYnXeJ1y2ChrA4MAFWanBl4gJeBqKd6WlRBAx2OuzCxJ/ZnK6nmLMbs5pFTCAC0w/' $Santa &= '4EISLoTK5K/YgUAXhHcJ1C5xMBfUHQhftgfhBwlclxpr9ybRwxI82OtCBKWe+G1acBabgIUXZ4anySOP/+wxDyXfVatWdDG5wGYD9db1QWTfpoGHBosnGRRoWElBDD0wkQQTbfcQQwv4hQ6liW7ieSfGvAWw3AAPsD5ypkc+dmjRn3mNraDv4WW74apRbdsCqotghhBPuBAD21pggUTbTMNtIYS2Jf2puxgrcDGAaU1QausFmD6nfGiF75/X48UorYYCAdu9m72Z7ZzpIYRwrw469KDEEpvrYIMLD+hZ4geQWw6oBNA93khqQ1ZCiwF5E6uwgEArCluVGhQXo+4wiT0Ww9jhPDW3z6gILRNwQduSsIQl6IAHNthf//yTgQuqRzhiCMH6SleAKnjhLsUiULGGgxcgaAU/kEvciP8SVBAiksUvLZzAidiDMdgNSTkKS4BqShUBF5ywBzr4mA1WwAK4LfFqwGuP6i42nM6QSWYTuNlwgAQb8fywhbWTTPaMKAQf6gVYdsoRiQIgANOVLWc/4g4FJOCCFKYQhU0rQI6USCC0XKyP/iEjsIRAhfY5jgEWOkz4wPeBDFAoU5lZTW8+AIXRWGkx7YLjcpZzuu4toI8FEIB/UtceTU3Aafvb3wpcsIL+4UcCJ9JNEEpWslcaQDIUkNBtJHapuaznM76SUnN+8IMTBS4BwhnbBwwkML0MqDdKZJIB+FjAi4GKmCUzwA6D+YAW7JJ/rZPApAwQARhETAYxeMITxJD/BjSk4Z9kEINkIGdJuggBP4n5gRB+8AEP/AAISYiBEigwrFEeyTGtocpoRlOQ2YwoXhazzpvupCylZWoADCRRqSQQAdatoFQxMEMMWGq8+iUhCV3wZxrG8E8zpOEMaRCDSI0kNxHwJ3xAEMEPsjMBJSDBCEeIwQ9KVtEW1sqgqUEPwJYCxfnAZ6NvEYEe9Zipkk3gmLxhDQ+WBTWUMhCjFKLi5QYZA6YZkgcxuIIZyrDT' $Santa &= 'f/a1DGjgKxpUZbj2/CAM21nUBx76mCY4wakxmEAxn+SYDDlmbhp4CxSaAoXgNOdID5RSQUUVgQIUy0pYWALTsGCDATgptINDSwSWFQEW/7Qgl1bEgk/T4NMy7PanwOUrFEJ5wQNmBgiMVYJjmfDUIsTgggAEwn68AITBOOYtLzsKFkoJGcKFh2bZYU9ZIzBKAwVBByKrq/Zy5hzxKCsCI2MBF2fAAuN14Z885StQ+cpPMuwUDUCFAuxMJKko/QAERVCCEZzghCY8VQctCK9/Krux7njoSksRgRjik9QpicBMFJrd4cQjgHJZp2SEXEEvB1AqxAyILmGJAHx7uct3XiGo//TnGfzLW78CNQ18JcMZHOBCdWLyOj9IMIOXq4Qi5AAG2mEvAzIQG7LxJjfuYZl2Q+AFPqWmNjRzYwcX8GUAuqtkWriCC1gwAAb48P95cxICnwgJAdeNTAZbEIMZgMpTnv6Ur30O7BkA/E8xmDOMovwMNY3wVOY6tQhFsKcS0DAEx6gSa4gJwnVEoGWjvKcCUIjfaErVnFqV8lyPeWDS0ioBLKCwdRSowALqlhrsRKAFIhvZACqwBTTsFrA59i2w87yFLehWDHz9pwm6l6wfYatUOoB0EYwAaSLkIAYRCIIXHOOju6SrAi9SbKeLgqJtxi8IIqjk4Q4TBDRU7jYGEs62JdM9iJHsi70JDtRWEIN4BkEMAB9DGcQA1DOUYQw/7m1PzaBnLZiBp2JYHwBYKgHeMKwA9yJCEYigAyLcq7TMiZWRVJOaUqaFy5v/TYqV7lQB3FwQN2aGQjZrLYQ0jEhTBYhnZyzJHHxyUQcDkMAT8iyFMYhhDEYfOMCPXgaD+5OvZoi6nn06BlAlIOgxIGa7SmbPrttTxuO8EwChWbgdQkHA7smup7kpmc84oAMOcIACGOCA0rlnm4QtFuGSRTH1pMdkE+Di/ghwhSpsQQpHT7ziowDw3QJ1rwyPutTR8MgCzDZUQrtY0Cdg' $Santa &= 'zwmcdX1GAtIFeaOwEIShlEzZmijpLoIRnGAEJriAAgiIp7l7aol4KdHERpMpCNS2BjKIwHalgHijI14Mxn7CFbBQbObzU7++jnzUZWh11wLPnOtLp/ZfSUsPWDTRo8SQ/xCUwFUoUkDuF0iB+kMwAgs4QAACsL3o217h4cxyABFYAQ1cIIMrQIH4VSAFh2cFWCAFTwAFXQAGywcGWpA8WEBoYzImDJcGFNU9BFRMtJcpffQp5/Qpf+QflgQnmrFQchYDSTAQDOMFRBECFRVDIzACKWAFKYACL1gCDeAAToIXmpEZZuZCw6E09bUCOiADwwcFh2d4RigCzqIEDagFW2AGYGAGTshPZkAGOcVjW3AxFmIiTmJJpcMAAkZGPlhWsHMbtFEqE9BFP1BKKhIfQiEG8kEBUEAGHIACJZACiGcFJTACF3AB8McepxFI4cMd6wKENcACM9B/JnCAUmCEjZ5ohEnAhMkziWaABWAgBgxYhVGXU37mAEKjL2E1G0wiSzlTTgxEXrEEKp8BAM1hJRMQAzAQAmZiGyHyE6XEhh4ChgxgATA4BVYgBSlQAhfwfg6AFhlAYAD0LcASKavhUiywRTwABQcYBVBgAmcnBZUYiVjQgNs4iVEYhZI3df9UBkGgihUVJT8ELPS2QyQVKl40QKsIAIZDAXBzWY/hhv89MRsvEmrKwQAVoAAjsIcyqH4O0AAHIAAMACjWQQFpVCm1MVqswwI0gGsrwANBcIAhoE8CSHAyoATzggVMwARKwATcCAZdoGdTx3BesAU2t0ZRIovgonseJARuUkUuUHEXBAA6qZMDxlBCsF1eIAZY0BNnBx/vET+5GHcpEJDBeAEG+X5ydB9HskftkS5K004S2QJPs4hPIANBUIBHZwZBcAX3ozlJcAXJw4DfKHXSJwbvhiIguE1YkIttV1yxoTSExEqIppPHxIN8AgVUwDBf4BMvchnfgh9xx4cW4JR82AB/qEkIkxYDZDJp4SFu' $Santa &= 'EjJcdIg84JX4lE+HF5YfkwT/WBAEMoBPQcAEYLCNXnCSkudwUShU/9F2rEEFK+JsDIQXZAAFLWd5oecm8tgbBpBGo4EFYhAGD8gTKhI/mjEx/nEADXCDDeCUBnlMAnIpE2AbH4B9/+Eh3QNftiVfNmCCMhACpel8YnAFQcADSrB8PDAALPYEStCNYACOYjCJlnhDVsIBFRA/IiAFPUUF3GFa3XNyQbAkXahScnE3PAgf+4EGYqCCOFFK1VFYCzAsKpIW8CcABXkAHGoAGzhKZJc0ZASCAeA6KjYDTKMDPpCe6Xl2ZiADbdOEqSmN8ZmalDh1WJCjUbgFIVABIxBr8dNyIcBXhRksBuCeKYUtkQQq/5ZENxYkBGHwoAyTBjcRHwCCFi+yck2iIhdjgQJwAB76h5e0K1oRAGQTAONElcoSkRKgf/yXBOOZPFcgBVcQA/XSA90ohTmqW9v4ja75lVrAgFDAafETpCYAavs0pic1W62zebAjUt5DXG6kIhkSIl6QIWRAEw7QGPzpGICSGXGSLGgqADyKTBOTne6SLH/kJrzhnk6jYohop09Amsx3djIgQifEA/gDBluQllCYmh7JfGYQUUEAhdL4BCZQJftZqKDGql1aMngFT61TWsUCTYUFOXdHF/dIgrRJnDNhQRCSO8LBaXLULtfjn2SgaSJ1OuM0Q9IzoHY2MrtkAzLAlf9BUGxQEK1twwM9cFOVGKh6hgVJEAQACwZH+pVmMKuhZgLWaAIYEAKbKgIjKj0eI1915QKuRTEeQlAEclUr4iLGsU000S6fwQGmQigoEgL8UQFk5AUseykUM05NVFalg03LMjIQEF9cRIQCmGdjcHgwmkInNIQS1QVm0AVjwoRoKXlBUKxg8H/SKI0hYAJTGwIGkEDqqDQDAKsfcwXFBE0VJoihBQKDoyE/WRPCAQAGRD1kVAAVgAZQoE7dEwLX4z0klQAEJAJYUFbMJkN900u1xW88WwXIF1CHlwQV' $Santa &= 'MIRDaAPRqFtpsAWmeZaW6GtbEIVQK40ngKxBQLWFyh2fIQH/FNBFFakFMyVHabRYaMiQywRz0xFa25RyNEGdruQmNFlAp9WuASCP7JNBMzSgMnQbBkCdrON7D5Cz8RUDh7cFhIt0UmB4zIcFy3df4whkaRAEEpBF8xKwRluA/9eIIYC5T1ABX/I+GMdLNFBfbnUkSsWQ98ID+2ovr0gq26Qc8DGUNiFz1GOPreSbXbpDA5pWNARLTSIxABICrdNLD0Bj9SUByGd4Rod8xJds08tTg/ZTZIAFT6CeS7u0ZiAF3Et81RgEoYYFZCBnJMuqbeoCKGoyI8q+McADR5AEO8ADM4xXMXA5PvQB1QW7NXGhTmJK30JOCwAAr8Sqb4JoCtC7/2jaPaBLtdYYr8bLRRSQvMsrcI3os/xUwQBncH7FcE9AnFGnBXq2BZf7iNb4BCJQoOvCAAV6S9/JUu0anDHAuEP7vvRDP6PiQyJAfjRRJVhaARQjBINzG7NETCgiLKaFpvlxJ6uxpj1ajU9gADi7AvA1MsaTZ1XABYpnfMubeFvwBAUgA3v1Y371T08QA2NZq2TciI2IrG+BIl36JsrCRSuwXkoTAfpDP0JrA/pjSPsTAUlwjxAaE7F2Oj+wYfgRAPEGIZhSWnBTccB0JkYMgspiALz0UqH2BEJQAQ9QySGDs/dKfMprdOR8dFjMV1sQBEG3BYDVdP61Y2eQnqIpBv/EJ4CXi5GRkTqo06ZcJAEG4DCF5MsC7cu89ADUBAR8IhOSAW5egAZhUDlyAy4bMlt2+sLnNVMmc0x2tze34U4QwAL5dHbUGK998wACaHhVQM4Hx0995VeUq7VTPIHUmwZXQIRLR88ezMrHqpxJs4EJ3KYRcC92NdA0cL42cL701UuXJYs83BJ+nBYbdam5gykM+TChyQNFYEJJcELYRl4gmDQusH8rIAEykLmPKAFbW2fd/AAMTM8Bl3hoIHD91M5cvAVJwDruaQBE' $Santa &= '+HC79YTmDHCHp9Nnt4gTyh7KEjKH+AItQAMrYAPP+Iw0UAOR3dhchGtsLSW4gQVAMMwrMaj/JscX2FExi9IzbXNCM1zHQws3rGEdE5B/LHCIEhC1/7cFFGBnA1BnxEl85Yx0PAVgTfdTT0cvMoDXMQVk/DQGOqV0bo2EOq3Nh8oBQ5rOy7ICECDZu8TYW7R/NODY8jWRjP1SpHIuAoJdnI0SUECc2yUE3ocWH8gaD9M2dEzH+8rLzFNxXoAFMtSmLGBbXqnTdJpz+Mc6BlCAhjcFbv3ALU29v52NESUDWiDBR5cGVQBcQWV0yhvY/3eADLtPY9CI083dh9jY9YWi9FUDlF3Q90JclCIpo1HeJoEFIoAh25FK7XNMVTTQOG5IOmBFaPAFE1VbHn2N/4cFAeiqeB0C/8mLeIY3cHLNW77VY4A1BmZQ06L5TztWaBQMaEFFzz8LwqwswlBg4TKAmQ/g2JTN2Nod1s/IRSyA1l/2gSSyUaV0qSkhH9glAuAhPQEgY72USzku0EyTV/TIz2s2p0N+fBCQc426ym5ddEZ3BsjtZ9NLyry1W+/cdL/95IT2wIRrz/93AtKIzhTQN90d4irMS0l9iPyTLAVMYj/CZWmAIJSEBimRQE/CAU1SMiV6s93d2EdtAzOw3b8u7CnkAi3gMBTARbx03gJIfABXAa7qtv/X4YYnBWRAzkJWaP/ldPkFZAb3YzrFY94ObBZe7az8BBvJW1s7Mrh2zWv+2rZFA/9Ok7NNwgAPWobXEVMbJosq0tQkcRgvJxdKEwOsM928tEXy5evbPQPA/usML1+3lfAQ4H/NS3RwiNcDIANQAHDNXnSJ52eS7u1dDNzB9u09htx+5Wc3bYTXGOFpAO0620vylcC0LF+21chsjAZk8Bb+oT26QYKjQTkqUVyf0VLuuywLsCw2v0VHrWLmS8sMj931xdgtkLMF2HQ3vQUo5Z4F2OEV38kHF1j+hNxA5V/djunf/nQiv+39' $Santa &= 'hHQ4jeHsHOFPQOoUyT/19dNKHSp8lClVQFgqJQMIQud0nhKglynWvEuqFc3whephjWtNvz/bvWYivgL0RZHMsl2Kx5Jo7Z7/J4DJSb4FSLdXCEfhyQZUvr1bye1TFfzkfCXBys3cicdbNxtff0vLXNTNAoQuC+mPpIYdtdgSGphWBFvQrbMAgCyvEEBfZq7CEK9/i70Ci838KsbWQ8fkEY4FW18BR9eI9Ey4H/98cQ1gQhblKd9X+7X2TUdoWfxPFz7bAsd0c0/SOWv3I0NeckGK+BEZHnKpkpIGABHigxA1BQ0eRJhQ4UKGakKEYEBhAYMCMa7EYOHiwYMCDDQUWDBgBYsWK2jUYGFjhQ0aKUfaYGHSxQqNDwYEgTJGp5g0ZqRAGRBUjBgpW6oUlTJGjNIxZM6kSVMG6tQ0aM6UQVM1DZk0Z6xi/x2TNepUNGPSDCWKpQpTnmkqcGSxMcKKjXUlUJgwseOCECA+LBhIBuIHKBRAhGiYWLHiDwwCMHDMYAGFGC908HAxIALkAAYKUHgwsgWLGSRjolS5guZI1qEliCljZuiToFhoD6ggxosYKEalEB1T5gzPsE/DmjUrPA1yqFKhPl3+9epUpUWPLl1e1cwAmw/ibqQ7V7KBiQkCVPAr5C8FIZIpUGEghOBi+vULeqTgeMFjihK0JJnJgA9CKCCAAgqQYAHvRKNhJdYcZAGlB1qAYCMJoFIKqKAMQKOCASRQAgwwsIACCyl+Gyq4paRqayozohLLqp5iYxFDqLLyyqyl0v8SY4syeJJqi424q6vCDztKQDKKNGjsgyYjgmwBJhmwr0rFQsgPMskWmCiCIHiIYYCJtNyvgA9DmymmmChcAQLVYqppoyDOUmoL7riLIYkYtAAjxD57O0pFnZ6LygwaCU1uLEILhYq4sdDYgqgttpDBDKW6igqLArqLYMggotSywACcBOzJBTpi4AMNrGRVoQ9EiNLJLCei4AMKUIXCC8kEeGyyBVeQ' $Santa &= 'gK6YVmMhgpjqGmCLq5QS406bYlDCCyemnVYIEyNlqiw0sIKOuq2getGrq7Z9sTmyumKxRywk2IJOrKCi7QECunsCDYm2dAxVLUMtr9YBWwVYDSgqoMADyQb/HBNfMhvr6LECD/zVtAXrqisuCgqtM6juBsCCiSSMUIKJJmSAogqjmBq0uTOciu054aSSyqynaswxOxyH2gKLCJ6wVDnlNuUut62gALVfDSZaIMkCDAiAvwHnC9hKEWpVEoQoJ5pAg/y45Mxhxx4LotNg4xJto+/osumJRstQSrPuHtBBiQgKSIIJLCYoMamlmiquZarOurErq7J6d2abbWR7KCxccEG2prxq9EO0dCJj64k+sLqxUw2IQIIIPOMyBCAQixpgBkQAIj8qsE7VA7yUfIxoA1Ol4AcJKm5howo73X0AF6LacQwzDOhuXgp0gEGCJPSkYIsTfzsuOJVZ/zYU8W2jemrcp7JCTqyVI72Cpi7oxB7eAXoLXowoQRChMQ0mUODAJLCQ4XNb8wMCitJbFUIgBqAQAgUiAAQlFCEIQHDSwR7SmFE5CQo/oJh3wAOeO4mBe1cRw3Y2JhcXxCACcyMRFE6ULaaUC3A3MouMnlIup4zFLFQ51FAABIEkWOpSJ6SAACK1ozSYQEkhOBqpOBcDHoDBBUngwV0+EAT5eGF/VRJC+z5ABih8AAlMQIISgPCDH2hNSflpmgBSFcDbRfABFVrBndolHDIw6wp3igCRIOAs7kjBRL0ZQ1J+lLjlvAw6LxsLIHsySBplD1xbMIMMZlIp2LwQe2aggP8DrMOFpSCNVqezVQRcoEgX6EALMZjABH4gHyHo74n0CUII2oeXICChCU4wwg9stYAMKEkvSkogBTgXmgpNaI42wYJzltPGRL6tTRG80/lE+BuTLQVbPFkK4co1uO3NKJDQIVdOmteFmYxEC+0KXvXSEAIRGmUpJtgLAxLgJFJJoAUzcQFmKEOB/MkHDadcDJYuRwEj' $Santa &= 'iGxaShCCB35wrygFAGkDkkwIwvSATmnMJjJ4ThtXuIU4xtGMvewlBX6CFOgRZW8/whQgYXYV6IirKn5MJBbOmISRLLIsfFMRpoiCFN1o6TEf8IAIJvCBTclAJQyNwQdkiTkomBKfDWkalAj/aAQnhAEMr1SCUGPAJS7x6qZ/+R8a4kUk7hjgRVzBoFlkEIMzcgcCnSoW2tAGgYERRYQmY1tRUgQbwBnKpNKEWfmysgUdzGSCNGHBFdgSG538iHLMIkMF8MVOWUlAB1gATQGwNKDDCMGJR2UIqkJAniL0059OUIIRjFCEqRoAMn+5qZaICYVfmqkA7cKUU4RnBsZN0LZnpFgMJHCTn/QGRVIwGVv6OJWYYQpcggtSGgDUktGwZiYx2AJblGJY4uxIfQsQwAL88oGdWusBHVxaR9g3Si9QAbOJoQAUIFK7zirhiu5FQhFgAAOKMMAvirVlBZbDrCC8ZQAykBFXVFSG/4t8p0i6Cw9d3ITbIERhmUnZAhQ8iq2z1OxF12PZWJ6yFB6w5KfFUhMLkrBD6Uo3KSE4aK3oyZ5bBeVAP3zVeRVTGC9giQJEMEIWrzha+QqwI+7LUn5gkz4pDIAC01HOjs6gyDa1aS4XpRgEXHC7ChTVNzMVgxX0xkd3GbJlhloKFGhrgxn8NDSr0Qj6pDsUK/SIN/tykutEGQMBekZJWqIA6WTMkGXKCgY6GK1ojYA8GGymQCIQAdIoIoLg/WYLFOCYVCAX1jHToFMI3khNRvLdM29aAlcopxRMcCLnWVcnY8iJVvzmHFSb4Qo1oAFL4NmalmLBeR193omgwAFb/f9lAgxwHRBk8AMPeiYB9/LXnhNTVPlQ5AcwiAERdJCDHEB7Arcq0OUUPdehSIE2UCDuMM8gvC3AKTRRjmDuzNam0UDAABR4Qm9MIMJlRndHIlyR4cTVoy1ogQWxLvOxzvggFkDA1sD5Db3VKxEmleoDRRCCDi7jgs8tIIDKps8T1LNe' $Santa &= 'JQRhvtCGgY8pgiq+SCYAT0jcrYmmXzaKi29mEEJGSsPL0HSKLseU4AqaS6wHSEAGQfhJhPHNlBA8QSkrAxfMtvAEANkA1h52QVxyBwEKleQBMjARqXUtBRTPsmB5UoISeCBxxpEnCCDAuGK2oAGC1UoIaACDbj8ogQnQvQD/ClgAeb62tDLc2mRSqIDa3tUcmNKWBi6ggVx0t3ibVyw0ZMsITc4ogQrI4AnxRpEYJPCEjmanK2LgJA1ET2YyN6guwsL5p6twRxGiWDI7rZ0QkqCFJSShBzZwQQs+0760NwQiDBBICIRABjB8AQ0BnMwtSe4YABhABjN1XjPfder0iQELEJiBC7J/TGGBB6N10Yhp6AKTjAj8Qz7ozRYU+wRsMYUMPYqBDVgC6xbEOtYawXmm0faAGHC+9SrGGiKKm9rbgSSwAR0oFn+Bmt5DiHwBiYjwgjAwgypamrw7FZMLoHwxANjINexYDtgwlEtRCtrKiJaQELm4udNjqGE5/5bIi5AXRDy/Ahasu4LbAboUWY5EiomTsD/So4EZ6CUo2wgDuLwnSBiKiAABrL3L6Csb4Ah/ET4GTAjOyJcAoADdaAzISIAD0aXNUK9T6QwxGI6mGKbpGrfgYZYnOI0X3L/UUzCzGY0JGZY0QYkVmIH6gwm/ygiYYCiScTMziIHDKzOAm7/DW4FLCz8VHBKsIhMG0KRO0oEe0AEDnIkEQSgguCwpNIgKKBNeWTQKSK/xgAwBupXImB0JQ5mlGMM2qj4hQTw2rAkDoxi1UhO6SJPsaxCYaBDtS4kXrL84qbIt6AIeoAE8xEVZO4m4kEWaQxbO4BL+oAAJ6CTck7/aev8AUKSCEPACNCADTTQIyGAaA2ma/HAANPi9BegcinuYx+CPyUkfZmGLHom6mYCJ5sIdstkdNyEJNzEW59o+mEANl1AJQexF8CMixMNDQhxEJ3QWhuKOTbGJjjiQztiPydgUamQc1bjG9mEATASDTJTC' $Santa &= 'D2ia82gapmGACsCCNKCCTwmAuYsACnAY/gC+HdqRZuK2SQmCxxtIl+il/bOtJnsQNxkJ0kBI0oAQlvjF0mAJ76g/k1iJmPDB+cuIIXmbO4GAyVCnVKEI05qM3bqdmtCMBfiBqRkIL1jA3ssziICVLDm2VBEDiDCoiMi7F6svyZAsraOpKfAoO3oCCYATmVj/jY2gELtYPDmUPJIAFp1zSqJ8ie3LRZfAP0Gkw8MjjQjpwSGJo1+6E+ADDNo5kLurFbpzlvxoElkZCOvzRjWAktNZzZOkCP6YiABIgA2sIoaJHXoDLkdDiqUDDzWpw5kIwiazLTT6FX1sMnp8SpVgTKkkM/xjAR1YgiUwCdLzMB6sv2SyKDORS60MiQfgnP3ID8lKkCxhgFpiEichJ7M0L29cr/jIFw3IF3yZCBNAAyrIQiWpso36jec5ChnouZigujehtbi4NN15MsPsx26CSplokGI8PELkwVekiUlkAgRcCYWMwcNLJjNxsS8yk+8aKzu7swhINKziGidpAgDK/5XUdAgwEsfXzC67NJACWLijycqiyrUTIYonsCjB3DT8qwm/GrgJ6qVaFE56hBNcTMrqtD+UyB0WiAEYSAIdeMqFFD36awkOHQACmEhF4w4o5YEkmJ0xoQD4ZLhauZyswhIhEANvrICHgNF0+gzOCMeIsNExUdEHsyNImyAAZY1aHJYFY6jgRLAE/dOmhAkHsb8yY1SpHJaxA8gm5UEPS4khcS19IR7w2BMZKBAtGRCz9Iu8wCU2RQMvAKA21UTgC8dOjU2+EMfZSRWugZLGcACFe4JMjSDE5LRDjIlgcbxzKyNeVQ2hRM4XPMZJ7cFJ5VXvsEzSSwkehDWUyIygoNgIvPMMI+MB/8wIMTGoAkiAhxAD9JSSy4miXDFXkOy9wnCMOmXHEFAfWC1POHsfLSGnJwgBjZEjdTPOP9XIIFy8tTo3xIyL0jjKlRjEp8u+QYw1NUnYqOvBgKvOGcAI' $Santa &= 'MdmXBAgJFtACKj0iTq3L5DvPqbkcERCCIKiCINCNNPDGgWkavSBTKkgDohkTzZmIWiqaNzUAfMWt03tSY9nZurCoQ5xF/VPGCJDMx7xQmChEpLROOIk1gy29QoQ1xnEBf9kaBrjWBdCII/okPHOSw9iuUXSS/lGPUjL/Kin8mvzIoc8wqBCoHIOCzzGBTw7gDFYdubfJnTcsztZgATrCLSfrSaoblgcgyEhFPKdNiRl42EQdSKdEvKhskHcKKix5W/KYS9caK7zgkoaLCCDYEinxiAHJjyhkT88QCFCcm30hmtOaCPhkTfgUI5LrjIfM2XPTPzTZPzgikuE8M8BdDYBMUsST1JlIxkSli2J8zqZs3NJ4J6BKIEXTwpGTgM9AlV6TjCS5pH2ClQoQARZ1gMeQAVAUIMjAuzyzpYYLPhJwgAZQAKs9kLybgIbkJd6hGHy0icyE392hxcd7E0RtCZXQPtILuMZ9SpqQWB5gghgojaejiallD3ai/x34RJX15ZoH/IBayoAmmVlc0pyy1cQ8q7Ig8LkfuLPyTBgHeBUOOAESGIH0dYCRI4/46U6Huq0KiUOOqEqHPBvcMtSIaS5EfdaWSlgHTZM2uQwl6IH6M40aYJxaEQgqEIL0gAhL2hpeKYB5PZVEm5o70xzg07PU1LiiG9kF4MQH7BUK4AAROOMTUIET6IALaIDsAsXoPZCbnRfZ7SX8MyO+zd2+XTemBLE6/LfRcFCacFCXMOR+bAEdKIIiIMqTWOLJkAj28Ij2MJAsVBX5tK9aQQNbsVhbUpKzTE0oeIITCIEK0Br+SCcOcIAOMIETcGUS4AA3PgDP8Jy8M6juBP8am/DJ7xuAApgj+2Uo2s3ZnQtUxSRKpTRK323YBklMFyAtglziX7sXWYXJJPkLEJCILKza9wgDLzDRVGmMh2BRhFCvIMjC/XCMMm0MBYjlEIDlEYhlB1AAA8iuz2THax0AI8lZGg4NzQgKnDUrxqPd7lNG' $Santa &= '53IQlbCB0XhBQ3zQfmRBpUxCUJyMO1WYWtGaRLsXTGyfpKGAGnNeMbBP9hjngygqMx6TV32VD3AADuCADVhhlh6BBjgAARCACmyaidwt3J3hjfnQ+iWSBPu+mRiNkkjMWkzUXJSJGYCQOnyAehTil1yACTCAo3G9BVhfLaZow8CCiZ4IbG5e4MuP7R3/aYMAI9i1aslKIAZoAAdwgA1I3wPoXgO4atOqUwaIXr6NgF66Ey3N5dz1V7Tx04Imm9FQUqgkCeNlw4I23kME3zGZgPYoE1mlqtiUzQKAlcloDMNAGEsW57H+RrXNl/UtgA+AD49Y69NWAAeg6Vf9mo7dre7IZRvu5S390Hnx6ZtDowINTL9S6E0z3u0rjRdEjQRTThvoHKykFSggA0oGiahOa6qqL8DQgLdVFcOIkjxbUc9uQFFBEuHLbMegaXpebVERxzFRNL345w1K7/T+0Hx2myLJPxZkDTYpiWOWOeFlDT4cCSd9STTlkg8YApibDAOAlgL6ga+lV4roTE/F/2j4lDCo0O6EMK3ydhIbhQyaft0AqOnZ6ZVs07sDkQAGMDIXy2fXmu2gAA1nIc66UDdO21V99OME3sHRGG4ESwndMu9YZbGOABkmMIItkiXuPJoj5JIJsBrSzBWqiHCE6NQCUQBb8eR1zDZeGRB9UZIHRFtOvFktzekUf+0NGtQDOz1+XQ2D/m38jjrwWIEkMKBfawyzdI/9gBYnaILQ4i4rRpoyLUXJ4DVV4QsogBQxRNklPwiYrOe+GLlE35XYvDtPHeHTiggheLdo7OUIUALO0aUY+IzdsqifHtJ9zh09ZDeCYxAC/o7OiYAfSAJsppUttsDQUoJpaQJz5i4GyP+aLJmAz0yn1TWMG3QOQv/GrznCF+vQD+DEr3mMEDi+iMjs0v0AMWgPUEQiLEgCJRg2LymAl6RK+Q3mc6NF1chaAf0uYnEQqsNMukPuOxuTApgA96JzEYElIIiBH/g1q/lQ' $Santa &= 'uQPn0xI+EciVcgF21bxpKgaVArEJOWZ2A+GSCtAVyPg1W9cuKoAU2VsCzEjoCCjiIKAMZ6njt8nHwvyVJhubm2vBN3GBIFCCKxioX6tiWZVLA5BSpqJzOi8gIwg5UOTQTUqCW5HNO8Pu3RAOYN87/fAIvUAQGeABm+jlxjAA6wW+Lc4Pg6kVMVD1vuqk0mAuKK3Qu1Dva9wI0ECbFjf/m0w7o5KAAB2YgDI/oiW4jB0I0wRx3okgGnbPMXeHL9KCgVBiAF12AS24As8wLS0JgvZh226J8Ap4UcfA+C0GCf9IArPp5Sk3b8zGAs4tlSAIgiasTpQoDSCMgSWYMo7oZUi7nduRI7PRpLoAJXfquRjoAhkY1uh0Afk7wLFTgu0cE56YmuMpAh/HIh4rgrrbFAk4+hXQgTCpSAFRbi+gABHwAi/wkUEfa/JQLNNiYldnmgmKfRfYSqR5DDcXAuOTlYhoOkmVtexTk0lEegkA4VuJo4Uysu4gK2yPRs/ZEzDQAsZZAtnX/7H7Xq4BiAUMFoRAE6JAgRg/ihQxwrAI/4wWFCIMeBAjywMWMmIUMFBgIAMNFD58EIGlTJqUalaybOnyJcyYMl0yYEBBRIgQJEV80DBQggQXLlYsSRJDwseaNQV+oCBEDJYPAylQ4GHDRg0aWW2scEHDxQwXLCKsiJHEwICCQSIwCEJhwIACAyQMmCghgtsJEhZEoEtBSQweOrxeLWyjhw4eR5cyCMAgROOPP3LA0EFEBwwYFBBWlJHEIo+zSW32HPlBiJc0Y2aybu06JhQhFBhMqElhwe0YWnTI4KGFB9sCTEni/rBAiNTGVGNcpWHDOQutLMKyWLGiugslP6CgwSIE9W24A2RQiDFxNhCdswtEiKAjCVjCzv8PX01sHqTwmkkXLJgQA8YEmU3kkQF8weVbBR95sZMGP4jw3WsRSugaFlBQAMJAAg1kAAVBJEHBAwUIsIAAs9nEAAgBJKChcQwAAJcOhc1g' $Santa &= 'Q1gzsGDDdBKsAMF1DzzAQxBYzEaBFwMYEEABBQlhwAR6/VAABWIYd1dv161AI5aFISZYgY0lcCRTCwTAJAV6RXCbQAKNyV5dHyU32wchCDEhnXXCpJMXFaQJElUTGMAAQgEIBEKcIFSgwUf86SfmAC7Q6Bx0OLbwlZUtVOcjD0IU0NRACDmQ2oJUUcXAB2LkBt91kz63qmE92MDDD0oVsCKpOC0g0g8/4DZkTY4tUGD/XAskyl+cYth57LEheIGGF0KkKZCJwn4UAJJIDoSkAhoqCmhQNuhAw4w21hDdpCu0wGNGPloUxARqAlAAAMq6tQBJtlElgw4PpEoDC1ltZVhiOmyG5JfULoAhvcidRpJOGSSq35EgxSkEFFAge/GEspUqm1IGiJCfAQko1diR1Brwbnmj1raZBM3J59WkYnWVqr4PDBCDhcL62qFxN906QUI/uKAvC5P2e2O/810lGHCCAppAAb7ihgUIN30HUsiz3XreSKTKiQUaGIvtGqkUUBFniwVV4JjWSlErYtQ3K2bEfQK595y/RdNwJXY8spCuug9EkASgJ2pQ7wcTkBRD/xAx+Pi3WON+NaPS3r6qgwSbiYxfSEKEsWCa1CJ5q1RStZA5qSR9Z+zYrcuEkxBBQNbYAlCIiaJSaYKJpAs8FMGDEjL8UGZ5zFG+KtLjWkezjxCoG4HGJBFnXBAgbKRuddVdxxWOWimNww2vUhAABR4lJ7EYQhSOpACzkkrqDxO4IFGstX0ABHeu6y+TEJB1BKigdLIAL1DAAYEaUwRkcIQeKGEJgClCmYTiKKHU6GipQtffVlAz5w0ggcMrT1OcEoMYUCRw55rZja4EqRjVBwc6iAFkfDI7kDDAWY2p1rB0EqfynCkEQIheECy2vyG65CDU0s+IpCICgyTAWgkJTP8SloCFJSxBMUVzVBS1wIQYzK86NiBaV9QlAXVVxGYxkEELYlAW88hFXTsCY1doYDR/zQcHS4tBU46DhttI' $Santa &= 'hT+bUcDDRrYA2IXwVnISggiCECciMnIlFYhMtRqjsf5FDUlA0YEOesCELETxhcDhARiwELwkaEELWOAKj4ZmJR9p8G82e6ULWMjFMlbEeW4cynRgBikasVAw5pmACLaQBiiEYE8gWYACMiS92EABC2QQwiNJwh0xVGxOjSRiCAQgOgAGQGH1ah+gIsC0JPwuRhLUggxsVhG46AYMXLQO5DRoyxC9siI2sKNgfFRGVj5gKDy6Dlhu5D3DXE5rHzhbhvb/pDM3KRIKYYCCF8Qg0ag8xgtnSAMa0MC6a+4PgB5xjLV68p1KMqAvjsqk73jgqAcYBQD11OdclIBOxwWOLA/gES1v5CgbDM1mEbClLVOlN6+okKCYNI+JYpUohBQAkIASiBfIEASKeUEKKZGoEBwQAiikoQxmKANHiciA3UUNgAw4FBSeSswICGUwLtjBBH+0zpfC5ZUXMcpN5alPu+orjjtapwZt2s+MWIl7XrzKSRVjnjDdSlZMpU2pwiCCkciJqxlNn7IuqpKw7k8E1RKA2zbVK8cIgVkTEQpPh6LBB4xxnSU0wF7X6QJSJkEGqrTIe5KQr8CR0WbzZOXQUlid/xjxwIFZ0EIVFQNaE2UIUAVAikdq8kMaPiaIWKBmVLtqhjRwVn/lC0D7BFLMGSKprKZqY19dYMu6zrW9dPVRLLOYBB7YVp8QmGtoJuA8DbbycS1IIw+YoAVOcjECrP2BFrbAAwYIQJsaYo8B2OqCCLSLAhXQyVSkchMoiCENHdZsdzta1iLa7obv2lAA6lrPX8mlAA8gQGwpct9X8rbGvXVxRXrHBCXUlr65ZQIpX+gC8dRTPBLAggkc0L72OVGCLaDNQHCiQ52IAApP4HBKyHCGEHu3MTZ5iexI9jaDjWgATy3ZAogslxLO1cX9vakb1xsDIfwgc7yVoA24KJTWvv+0yHKBSwWS3OBqlTcCPG1BdOOkBDFsFaJbmKZqLsrlIT4GJiLoFLUAMKa3' $Santa &= 'Ra2STmSvb/sMZzc+joxzNoofaWrj3r53nXX9cwiUXMmIdaQ9VGERMcngBSynBCVoAOukQxwE/ShgAKIrqzbhRq0REYDNL/1pjXFK4yAUIQhAgBZuYrDP1a7WvfWUsYHXKQEElKysb9NLAWrz1IFAJSW9lnSwJy2EZI4ZADe8ja/gBiUZYCEJrh3AjB8XAVfiOEQx4DEMlJqm5cx1nu5ttntBjQXvkGcvgUxKvRRAAQ6EoMNj4G68Qx6C9YjZWpNFiEcK8IMgAca9BW+1zZKQBCQsgW7//DGASCosg/uW0Kf/rueMaQnfGOhAlEkQggxqU5v81EQqIhFBhzcbcnn3D1qB6sgHTGsTJUw8Cc5+8bfZW/CKCEEJTmgCE4owPHVLpT0jbIGrwU7jn3cQ4C7mbVdkoAQeDxtaJRl5W57iYZBPXd7FvIlbyvSBImBhxzLFa8SdXZG7zzUCjQcDGJxgBCTo4EmHh3NdGleRnvsIxpTfK/b0xaPfZkc7VKlsbGqy1agXPthiIBVu9s71HQO5ceqE+eQDHpcX90UJTMB8E5yg+SLkAIZtjOVEIjDCgEO7edYf9WrTBU8rVScGTEAOxaDiBRFUgGJfJXztQzxZUfXlvz2d/+t7YRvxoLNWwGZPvhOUcIQikLCELJgtDxAIBUDEqNWMAbaAj5wLYamWjvyNpcCTCzhQ+KEBFTyBCUBa+gXbE2gA+dXZPgGOuthSuOnTT0WcRWhBEyABE+CfEiCBQ8BAT4FGF8SAsNAGBXgGAu6IgQEV95mL3/STlQDUCuhIPxWFGVDBGTCLFIiBVaFfBnJWxcjOB1RAGf1WuthUwK0XjeFYDIiSDhiBETBBGG4eROiAgamUvgzZkSSKdgAGTWnQA57QCaWKzABhQHXP/2GBFlwBFnxcamyXEz4hR20BGcTe2iAFK6FLCBogb0meDISBEJwJQyDBQzBfDCCgC2hBDP/834cw3UeUxw+Q0xhlD/cRDVmQS/bgCFfI' $Santa &= 'EVdcCRYAomp0VSAKIkcN01Y1hgY8UuaM3htl300hoCsFXQyYgRd0RIBUBkNgBgxShATwQD8lQRYoQdWlDkkAQREoQRF43VAM1sx4hXCp4grI0VfszTgWHRqMARq4Gy0GG1eZiAwcjk6QR08p4MDVWGANQBCAgVuMDgVkBgxQxn9EQIG0kQQYhRmEgal8QNWgiJyAAY8xAQ88IHYczbhwD99U5EWyAHMIWFedgZatY7DlxJA0GhaEwBN0QT9digP+DQQgIAeBEhQEijY1xQSUiQTUJG7oB0JQABiQARigQf9QgAY8S87/lJ0WAMYEVAe/hMXeqCLlSBBqTZAMaEHUzSJIhtUT5AQUVEDFSMErykwQak+PsJISmIGmiEmnIYdN1iRV3J5jKUsYHEQg0YsI/MpN9BtywUcLEBWOHM9XLIEpaQEYdIGHKAYWgEEsXmWweaUUXNngpUEQjMX/PYCl1OM2Cs5hxiSLFchNEIkQgMAPhADC0JCvXM0NMQZpNIUQpIdTlFIR8FQM+GVWtMBJ9Jq7XRUWSJ1ihhiHSVTUnUESeNFEbt/faKQWmEExcdN+HI760I5t1IQNbYoRXYtQDoSc5EScAN4C8JsW8ZSMFAYPpMEZlMFFfRw6AttuBptqUEFKfFwS/0gA0hiNpYgFWawABZhBKFGSYzDApZ2ZQEzLQJSOc54IknDA+IwKdIaAFPpP2bwiEwyGYeDAMJIBRlllek5aSlyUGdiWHOXSCtgIV2BHEhykGHhBEKxN1FxYvYgO+TgXSWiA+jhGNBXTfn4Ax5VOCFRZ/0AG+VQZd3QBGDxofdzTFYgnel5o4SWhV9nWpMQMDYxjZXbhT3YYGkgBjdpGrCnb7ABSjjJoAfBE7DGFA8RJ7DkFMeWJQDhAM2WZRoGBYLhQYugmkk5dSsAHWEBKk/ZLPx0cfuZme0LBB/xJTUyWcynFkGjAyDWneGllBayNTmwVGWillaFBVo4PxTBAhp2mgRmQgRlk' $Santa &= 'QcDoQFfNafqRARaMEGx+hQ3s5V4GwXFqwa5x2MfZYiAVzmMUgGxYKRZ42VmNXMWsRI5+BFdSQElWzK4xWk4YgJzsGkrEKhmEwW4oxnaJau2ZAX6awRQVxXxN0XFinommD5V2lez8iYV9RAhUQHJAARVAlAmMz2N8gBTAhJ7wZwhIgRAQYm5KQcVkpRg8wbu+BBpwamLkpqa01p52UetggkG1kgEacJi1pgEWvMTsBGqcBIEIrASjUVMaXBiHMIAQxcRjQJRG4WtKPIFEPUEabIFMHKQZBIEwDSzBpgGFokR7iqdEWZUXIEsaPAFOcGwFcFZ33KzLpp94iuc5VmjQHi3SJq3SLi3TNq3TPi3URq3UTi3VVq3VXi3WZq3Wbi3Xdq3Xfi3Yhq3Yji3Zlq3Zni3apq3ari3btm3SBgQAOw==' Local $bString = _WinAPI_Base64Decode($Santa) If @error Then Return SetError(1, 0, 0) Return Binary($bString) EndFunc ;==>_Santa ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05 Func _christmastree($bSaveBinary = False, $sSavePath = @ScriptDir) Local $christmastree $christmastree &= 'R0lGODlh0gANAfcAAAAAAAAAMwAAZgAAmQAAzAAA/wArAAArMwArZgArmQArzAAr/wBVAABVMwBVZgBVmQBVzABV/wCAAACAMwCAZgCAmQCAzACA/wCqAACqMwCqZgCqmQCqzACq/wDVAADVMwDVZgDVmQDVzADV/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMrADMrMzMrZjMrmTMrzDMr/zNVADNVMzNVZjNVmTNVzDNV/zOAADOAMzOAZjOAmTOAzDOA/zOqADOqMzOqZjOqmTOqzDOq/zPVADPVMzPVZjPVmTPVzDPV/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YrAGYrM2YrZmYrmWYrzGYr/2ZVAGZVM2ZVZmZVmWZVzGZV/2aAAGaAM2aAZmaAmWaAzGaA/2aqAGaqM2aqZmaqmWaqzGaq/2bVAGbVM2bVZmbVmWbVzGbV/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5krAJkrM5krZpkrmZkrzJkr/5lVAJlVM5lVZplVmZlVzJlV/5mAAJmAM5mAZpmAmZmAzJmA/5mqAJmqM5mqZpmqmZmqzJmq/5nVAJnVM5nVZpnVmZnVzJnV/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wrAMwrM8wrZswrmcwrzMwr/8xVAMxVM8xVZsxVmcxVzMxV/8yAAMyAM8yAZsyAmcyAzMyA/8yqAMyqM8yqZsyqmcyqzMyq/8zVAMzVM8zVZszVmczVzMzV/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8rAP8rM/8rZv8rmf8rzP8r//9VAP9VM/9VZv9Vmf9VzP9V//+AAP+AM/+AZv+Amf+AzP+A//+qAP+qM/+qZv+qmf+qzP+q///VAP/VM//VZv/Vmf/VzP/V' $christmastree &= '////AP//M///Zv//mf//zP///wAAAAAAAAAAAAAAACH5BAEAAPwALAAAAADSAA0BAAj/APcJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGB/Si5axo8ePIEOKZDhs2MiTKFOqXLkvk0mWMGPKnGmQXiRh+mjq3Mnz47BIkpT1HEq0KElhwuYZXcq0qLBLSZtKnRpTn7BdSOlR3cr1Y85k7aDKE9q1rNmFykoKw4Q0GVJ57ILNCyYs2bxhdpVB03q2L9e0w54KyxfsJjJhhwsjFSZpmL56fiNThbY4njB5dOEGC5ZM3jx5SHNKHi1VmV3MyNh5RgZ1HjLPyciSnr1Un1ukiSXVndeWL+3fRZUhTiosUqRk+ngnA8586Ty7a2/mS4a8ufWe+obxvhQ40rB8wq6L/9dJzzXd4sEuPRc9vv1KZaDpXroJNZ9v9/hHWkVqvP9N2fkF6JNxwgSGyTyYLBLJfQI2aJE+mEjCV2P7QLgIJuw5qGFE9GTCC0EUCpQJIy9taKJDaUFDUCYAKgPgiTA+xGJBGcZo40KZEHPjjhHNyOOPJJUI5JAGuUTkkQVh4p0+NSLJ4zAKCtMOPU06GeNPigQDCWdW8qjMLpHsso4ui7DT5Y7FrRPMLsHoIgyDZ2pIjzDs7KKILrtgVWWcAULDi4K76BIJnm/yaeIwWihSS5hs8kIlQ3saOpowiyjCaDDywGmQMhFyJClww+QJ5ppmLpQMJmFgAtmnv81jHCR50v+FFiZoYPIiqzNlIkZsFikTpjBZ0qWpQNBI0gOGuPakDBpi2GoRlLtckqVSxL7IKSaaJDuUPpnUGtuwC0EYyZrr5COQMpKgQRY0mGDihpDa8tQhGmG4sZxEyfBySZ682DbMGWgMNIwbqaoYrjKZSJJJpPFeVOwZYaCxsD4I33qQTePSyRvEyLp7SRif4JhJt2HcIImnDYeEMCYQn5HJJSZbbNBVscYVCVQUS9KGJJ/UqAw90LikTBhhKCx0' $christmastree &= 'yidRzHIYZzTdtI8JQRmJIrSMuhYmlzSNCUEuckovxDfYyjDSH5l2Rg9nsIy2swd9VWnV6yhiKSRan/FJbCs7TbTRZMv/pLS7TbdxQ9rEsEdPWu3wIreY7CSa9RmSnHFqJm4AbMPgLn1icN8zcQrGGWYMzrQk3tEzZ6WK7LIIIaprAQYYYVzCMtZogBHDGTekWiHnyrLs9BmRhAGD64skqogWhBCSqBbMMw1800SjMYyKFPNe1KmgNw0GDCqAQfwidjJfiPc2gEG3GUxjQszm1hvVre+vl+96GJayIwkhsGtBNNOyZwJu+ztZRg4ekIZ2gY5oMEjg/CLxukWEAXY3i9C9AGgUfSxjDAlIQA4moSQzGGd7MADDFrynAhg80GRoYEQaJkEJHQkELwpJC3IOR0GQUCkTDsiBDnKABmRsxjhncOD+G4SXwKAoYww4GIMjciCAZexDGVkThsygURJ6UP+nhhnJiRVLkgZNaMIlm9GFIhTUrmHQqmSwI8sYWtCFGTiiC2PoViSOgbO2IScfjsEiRvDSDrvgTRnuCEY52LQLMMBrH4sIm0DqQYYrjOEdvxDDGFJ1iWA0AxkTJIhtbIOJ/+mxIaf5zDzuchWqrcNO/SqS7gTSBS40wh29EAMj6nKJYzgjH8g4SD3wMpZPXiQ5zxnlKIOxCFoogh1kstjQtiaQXthiEbzIU1JYcwZkTOeQ+0CQdnxpESvOgx3B/KYwakELdkQilQahlSQEQg9z7KIcg8SKMILxOdkBzGJ18SQ3E5KcYciDOq6x5jwKSYtF9OIgyQiDDcKwnKuUYx3/8IRoccBQPqYNw2JWodY+IxINP7LDj6NkR/Es1Y6BoCsnw3ggGnJSC3JAlBzlYIdMIwEDk2XSIMm4xE036hAqJScpTMpXJJK3iELZxjt2aQMYAqaPXbADouugxTrYYcagmIodBdInTxFCMb4Ehhe8aF6/+hmJeWTHBlv7EjvgqYuqYRVcP5OhWaezVYpk' $christmastree &= 'aB68iIQWFrE9SegjH3fJB5OKtg9JLGKQtPhGOWrBi5ImhB6YqE5y9GHFul4kMLV43QPDANib4EQf6ZLEJEJVi1rsohaLwGZB7JId7SQDhpatyJcoNcYQOoY7l5BEMhImGyryYhiONVUyTEfZtWh1q6tC/wg9GDFGvmqhrPloBzKGsdCRVWRO96LSRWObkHoQoxcyExHRjmfI5IAnH3tzoUT0QcXjxpYejYiFIWJxC4UMgxdEK2ow6/Iv6W0uGfRyg29oWJB6zIN93O2uL2IRi1UAwhCNsO9vHThC2IHBd5goSV7BR6DlLLcQjHBHgRPcEHrcQhyrWIU4YsEIYoT3hQ9knmYlEVlUJWoRlbSUlIq3iB47Ci2feLH1umaxYrwjHQ0+sSHCMIlbKYM9r2UEGILXrtcysHyRMMPn/OPAcy6CEU2ix91ohQZ1+VIfkwCYG9QFIHq4Y8WqkO8WtiCGlZr0jE8WiD6Q0S4l0ThBJrQBDP9sYJyPtSt4xIuEC5VWOTS0wQ22EjLvqHhGpumFLL1ohCEA8YcqiIFoN8jEIiHNMns9mVNrSRfRGFPT3C3UDE67HJZzGwlIo8EGZ7CBrou2U25ij2gAGwYxJMGIKqygClsAtQ0Wxq6wYaINTGuD784wvexkAhOMKJkNekBRXXu7ZGlTUq69DQYzwHo+jsnJ2KwHjVO1oQ0Q6wG4xeASSYjhBroe2STQEDk0/C50PJCcSdMFhhsM+gaPzjW+zxY6b+tab2B4inF2wQuk9PFRWGz3s6utDIK1GhPdugEDbICGT5QsE+3Oxycw0QN8eztt0FAawPB9g0t4whkr74GsDcD/gJE/PAzoY2CYKrUIPGlJShqlIChw3QNPyGZlNzBAq21ggFrlTi+7ZdcZKnc2b9+A5jeQd7hlp9MzGMAAl8Mdrj2RjDO8LnWmlVvqxFQLXQhr3fFqe+DQ4IZ1cf3rNIcGvUCBsDAYQNtbPwO0XQ4DtDce1+3KWhuE0YNB' $christmastree &= 'o0F2LGvDMxJ6E9ed9ngcDsaYFhEMvMdrGVhjGUVT9Ylh+PvrBW8avWqVCYihHe0Gx7W0+2x4QeOa7JjHxMOdBu8zZK1WYFDQJV5nvjzlYxeQKFQNbQK8d8MbbTrX+eV4oO3Gl2xwaMC389DmBk88GxPmR8OgaXyJNtjcE22o6eMu4YY2/5ih8gtNlXEwMWhg7YIwtcAZ7oUrnjNl09Y0g5N4Z0Nzjed9qMJ3Z0N88NYuCaNQfVZrbXBruAduigdvDGArbodrgvZccjNVVYMVWGRGsHYGAZc7uRZ7agd4X0d1B4c7aANvxVc5wHYDt9M03sYAZ1dTuIY7CBhq3GJCZjdoY5Q6YyJTzFRDCPM4bpA1N9BwugaEVMcANQU2g2MAgyNt0nYJ3IZvQZg7QihorSZ+gKdrbsAi0KAXmUB1hDZP8yQqwTCA8cIuu/c7YudoBnd2h/d3JOcu0yZruWNw92ZCYRADMjh1g1Z1yKEMTrQP0ZAJMKA1UFEYxBQeZ6Z2uBY5Tf9TfplgflxXcAp1cDqYa+PmciXjhTFQU6doADFQMib0iofnYj9DENDwhbGzZViDExT0hsrwCeFHdYyYOU1jfhNYOfXnb1QXdZejUDcADWewhV9XU4wodV/3iowYA1KHjQujDMTgXUIRDfpwa8yna7BWa73GKtBQDxZEMdBADK93jWEjG/qQawY0hY4WCS2TO9JocNLDJG6QdgXZigawK5JQU2cHAIMWA4KGBquSI8QwiZgwZRDjQbD2ORkmaU7SIZMwMunCb+H3dQCDCZMoMG43OH1GiPzoPCajKyCHMHUmfGHQBjRoMqCVQAlkA7NYMmHAIo8hbHm2D5QiCYXBQJD/EFnPgAk+sE7aIkMIMzLXdm0u8kQuIhr68Akv6AaYtHJE6HKX4z/7MI85gnLTowwQEwYroAVUUAg9VghboAVbcAOw0zIZFht4AxmQ1WORwFdYUTTQAArWhUVpMTJlJhTdQh0Z1pRuIJaX' $christmastree &= 'AwOitg8udjguMpmSYADJVwivUAiu8AeoBZcO9DvDkDClGYn6gF+KkHyqw2oN4ANvYAq+xC6G1wCgAAppID1xKDmZ0AY90ACXY5c3UDjEUBKa0DW75SswsAWv8ArfkA2vkA3QWVq/oiS1cpKZMFxuwWOpww55BQMH4ABGsAFGgDIAdDiYEHY+4AAOgADuyYMO+TnaF3a4/5MqHCEUTuRiy5AJiwgDi2AL4KAN0pkN4AAOtsBYSuKP3cY0kZBhhgUGcldUDmQADlAETTAFTGAHWPQJ+NYDPpADFRAEFqADD4AAByBoDJBrDHADPOByMTCZAqEjyqAJFBMGKhAGtsAL4PAN0Smd5mAOeQUmEONwCRQGDLSEx2Na0ugAG7ABKYCh5mk9ZjQyRWAEd3ABFxAEOeAAMQCRZmADPACmClUyAACjxECR+7AMJrEIW9BY7VALqRCd33AO7ZCj0bGSX4prSKEgS1hUSHEDDcCkIvCkIpCS1kMP6kGJmtAHfcABEAABQYAAOLBwNpCilYNv3mgS+pAGLnKcvv9BNLZwDufAowM6p6bVR8LQNLAGdJfBKMfDCy70dThAARvAASmQAk0gm9ajD+1QHMexD6BwB3fAAQ8ABEAgAwfgiVWXnrgji5y6n5kQkiNDnFsATeZQoKiQDalAoOBQcVUVeUBnKZdgTKjFiQJhAAfQAA9QBByAoUxgqEjTT6BRJ0CRCW9wBEAAASV6AK62UEO4aywCNMOAAwpTD8tCb4xgQv9JqtnanKi1CJ44OBR1BmtyJ5CQWlxzdg3wAxvABEbwAzAar6OED/JQslcRCWgwCT/gngfAr/cWnAk4lgWhMCpCDN8HlItQCHGaCn7gB69ACMXjdfg2cjCgCMhgJ2z/In0DcQMt2wA48AMr1GJIYxrPAVjz0A6aQU9BoQlpkAaTKm8GFzYAdnIFsSyT0HbgN6ZhsFduSQVUUK20SHOyFkI3ISbBoBp58TO6ogUwwIhF0wvs0Aum' $christmastree &= 'ZyVikG6AdRrzlJT4yJ8mSRYso0i6GDnMeKkNGAYOJAl95A7JIAkKhX39aQOkFyvlgCnCQDTqkyAqMGdVgKPtUKdIgwnPwCRM8hztcLeYYaQ3VZSUmJ5Xdy4kw3fTZo+6FjbqRg+5xnMzmECw41SBgiclOx/3IgklhGygCQ7mUAt4eCS6S1mvMRfy8TlOBm1Ud3aXky6PZ5C6J7c0V5+0EnUi14AmlHzB/3AndmK7o8Ra0pu6b5kK31ALtsA7lAUedBgtbmdVBJEMPxiEsja3I7c2f9cAZ/hwX4d2wLmBzCd3RndKW4IUvKECHuy2hFAIhZC9VqIV2eFD6fGXEwsgbfduZsADYYp7Czy8obOAM/iHjedqYCd+kgA7cgM+tbA4a5Inv5JXHqwCVOAHhKBeKaNuwBQXgvI6wqlelOEJz9AJbcAGHggDOje0PtcDLdqThyjDCwyLNXUTYXKxMSU37JB8kAChxHFM+OWWhfAhZEMMBZIcJbsmDBQ/fbswT4QJ1vQMzcAGQtAJczC82/ZybkAwNHhwitwDIweEaGcD+qM6kcAOQfxOq//zQd4TBvOAR4RguX+pBbxgVvHqj3JxGCdbPCZkcDAAAPBpA8jwDPngCWegxe0HyZdTfrjccuCZwytaqSw6g8IzXmESxIqQPM1lpAp1YferDzRVQhBaC1IyuEOyW7tlpGYAFRJnHINWMt4oPACAdlbsDJ3ABjxwf4J2ADncfo8raF4Ytg6nfc5DP6/DC3VyPMvMPENqQnUBWEFleCE0ZcZREp+QnR55I/pADBECitIIa+gDMXX5srdzA5NqANXkCVnjbY3njZeoPWAamYw4OCI3cqxouXwagMZUPFQAO0wjjZGADGY1XDmRCbEHa+UTprv2hFailr+jdto3boMWzMAzKZm7BYE6rWuAOHV2uWvyXNTy9nKSQGM9TD+KEE1UIGNGOqTGPFftILtqCcYMAMMvZ38B/3MjHMEey0AxnNLIOPhsLNjF' $christmastree &= 'LSN1gOiNMQAARRMUCBIDWhjLwgzSXtgDZwfLsINjzMdXYUAWK4DEyoOk4Dxo23ZrZyBYrlU40BAGk8yiulZPeXQjF4WLpnFtmMDTPdADvjnS3qZzuMOTIN23NdUYnBt13viNZAjLPul7RjpPN7GafLUFMSAGaZADN7ACMEAFKrBXpKxQFOxykgANwoQXtnE5p93Z8yEdO9Ih12bVI6M9POBzqn2FMPDXVFfOAAAAKmDXJSQ8BlDOglbOQgi/C8VXU0YnUyM33qMFXeqeD/AAXHoDzOM6sCOHPHd7qYIXybAkaLCiisd9HlQY6zAPJP98HXmmDAZLMS08biPXbcYHdJ8DPKSjwifEt8NTUeF8l9uja1pgWJZSKVihOpbywyWTAxZwARYQBB+LA0NENGiIe1E3aGyxfBFyvjeJCd0MfXcLjEdiFeWmZcxnBopwGT5Eh/KQD/kgD0e7L1kGKMqHY3RoTmPkPakDPsSkOidIC+SkCGjgA3BwBFjaAXdgBAdweAgkdSfKr9CohVPmPCJYqUNYaEy4C6plIvcRGJfwxpBwpFOzx7sADJuxDpoRKBVbKZfCJne7GTZzPISgKKJSdxGaJWAiCUVwB03wqHBuBA4gy2gIAw0wwWXoe7t2fzCz2hQVCZAACVmCVdjsHur/pQ8lO1CrSUiQIFWnlCfrMFXyoCbGXkhLCLTQFyt4ElVyE8SMVQ7LjKSbHgntACZugANwAAT+/QA/8AMNMOcxcKIQXM4U/IwzrHt+bpI8UG62nrRJByPZIRq9euz7nDqDRDVyI1XmIHp1Eivh0+zIkzqCFCvTrihys+lIqzp8atDp6QPjngNFgAMO0Oo30GhoIMnxrb4+qHi8t20dWm7BEuE2IhRCQQ+BIVNrog7BgOaKsulUg+anpCj3vYR7tek9ttWLEHdyx88Hf1qiglWKcD6w9m58lwmfYH6eUH9g3IHtUpBnB4Tq63K2shEtcZ2/Byt2hwy73hwIUyJWpBrH' $christmastree &= '/37slhLEWoAncREXwT41UzNlDdRjMI5aVGMnEHqkAThPfIXG5dOBxZf0WDOF7+bnPPBuU8h1Bze0471sUWowbjcuoocpNkIxxcskbR83irAOegUGmxEMPiR0UHEJWQN0z6xZFKc4m34VCkJMWg4+i1DQE/tuZzAEDxeGnQDPvtnA9xdwfTZuMfh1nVQQfNF243LsmGIfNrIRQFMhwrAO+DC/aKxjy6eR5WZPCqVrRQ3Yys08PfY6Qhc83tNtqw1vPFDdzsbRHO1+hT/SLKh4iedyX4c2PrB1QcYkenE3bncGbILsACFP3z6CBQ0eRJhQ4UKGDR0+JFgvmT5lmQbOy/8nDJmwSG06nmlzxoZIGyVvnOlx5mTIGzcY2IBhAAYMLTNngulhowcYGCpk2gBzoySPM0XN5Bx5CdOlNkxD9uDBYyQPM0A9npFkw4DJljZCgnTjJuTIM2AiCZO3LlgwZPQgvoUbV65DZcMGDlO2L1myS8I8XQpjRqpJGwwMnCwJw6sbTG5QnrwREwaAyQa26ixpWbFQBj3aiEVJeGSbpiDPRBUZlShZTJjawGjJYDOPkESp5uSR0iw7fOyC6WI3ce5w4sUX1vVEDJq+TJg+YToTJnTJwi9fej7z8mRRldSFygRA2YZQzOR74C56ifvgktqlm1Z9evxpMNDPYCqpsiX/UdKko5JOzAZIgkFLHnmOYcc4BRccLpkzGAurNe5Eo26+nLorqTYbpDJsKxgYiOEwldoYAqUeXtrwDE9IO8MMkrSCoYHLPixKKpBQWw2TfIbZC6bChLqhvxaloqqNqiARRq115pGHwIEYhDJKhZo7gw3uTCPppJxycok20m7gcDWdwhgCDJ1Qum+s60pCajTuqtLJsA8l++myksy4pCqRYMAkmXxai6w9BqwkjY0hNmSzxWDUgoSW32jZxS0pJ53Uvtqa8qiql0DCrTAseQDtPBT5q40HNkKCEykiyWsDEzgrZOAAGGUtjEY3pMI0' $christmastree &= 'pfsWsQsTYTD5Ticz2rCSjZSQ/wIDjEV30WUdZ4Ph5UlKp11QmaUYQwM6TIgSabuUwDytjahscO5W6m7lND8Wz+shjM+OGuIo74bizKSYZLIzyJCaWuoSpWAIo7Vk3IiJumHNEEIwkbYyY5dl5WGnnF0iGYZaixeEhkdolEkmk2H6xEQ6x4pqQ1/SBGMMWFBXFGso2lyD84aUMllxuq1usAzMRLs9DMUtWwOjRU+SwWSykiSJDADDRhq2xXipCyMSApllR61deJH0Yq0n/UQZZdCA7KT/oMKpJDc8waQHY1/6jCn1YBTxGcfYLPgyMNETqoGCMTNAJcWS1fEMFQBwEACZcIaBZH9ZdCOSSCbeZR1ddv8pJ5jgtsa8obwoUoYerz/XJxppDTpjq61SctEk2TzDxNgNGQDV7RW/A2A8qGClk4GWjkodZ+1MMsDwMCQR6T4YsiJevBjGs8HF1kY+QxiOFNmlakXYiWSezLdPqKJMMpEkWzTOQEM6NCR5A5NMlBF9H2gikynbs7/SKqmcjmpjMaVqTsxww9uDUf1koh3+FMYGtEJcDFQAA0YMYx6Ak8Re5oEJy4QoNuoKjVl2UQtFKCJJkRNGMrg3woKETBLq+1UY0BAJN6ChfFq5gQrFN56TJOMZrclfuz6kJZwcpQdu2J96eBBDrfzPJeT5Tt0MwAB3ycc6MQhPDCajAi0sYhH/KuDFPCJBmU/oAyYtMZyd2mUjYSyKFrpY1i5GR0Lu2WUf+qgHNDqmCYp0LFsogU5XbiC/oqREfcqARhhG4hWUMIABbfgLyUrGAPHEiDAtiQzOviNGl+hNJj2hIiE0qYVdCCMMC5wM+dCQiTCEEXc2iAQ7qkc9Va5DGO1gYywdQpFMnOETKlHJt8IgszNYhCDAQkpRtHKzokhHkPeaE2wOCD8Pjadg5BlP8BQ4Ey0oghC0qAU5IqcFFdggRIrRyb100oacbAUMfVnHLqi3FifJ0p0IWUYyrBUdQZpk' $christmastree &= 'lyoZIiYKkonD1E+QW5GNAcIwj2fUUjM3myQMoGg42NxsTm26/4H/VAAGWlS0ouRwFiRiEpkDWKaj5vQMnKr0uHTqAo3sEIYiLmGXvBBEGWt859ashZiSgA2JuTQTGjZGwZt5x0NQDAMx2qGPUppSKPeyTBhjwEwYjC8zOAOAAqvoLG94gxbkiEfVtAAAn3R0oeOxzWnwFIxIDGgXZ4UEMvIBiZFgQhKZINpbB6KPZcA0plHqmFF2aYNM7CMTzuzpVqInia2EoQcuUcw/KRODKmzBsStgqFBUcoDJhAcAB/AJ/ABwg2ckAw0xiWLwtNCsdZCDFt7AaDrBEDzKqoCRPxEWVfwltbOWYx1S40hZ3mODgLXmEnAVWEvvqiDhVoQ743NDGv/Wl4kDoOET0OilSjAxQcAwTzY3iEQYFBoDRjDCEH+oQnipoAJZJdEAPmEoZcJzgwh6bh7DkER4DsBVGChiHeUwLWrVUQ5dLMKb94IivqCJJ0h0cJ3B6OQlSlKfuLZqKemR7HAX1A5GSKIg9MjjGXyQhjSogQxwSAMO+tqcTCBDH/mQh/TOoBjYREISM+HuLW4RC0PEAhaGEMMKlGmDKFJmMpKhjD71IU9JDQOKUIQBIShn1dPytxbZzcyHzhsehZYkDJeIRAe1oGRerKUsOsGEPobMlxu4CAxEMYMboiFh4tCDEYUghB+GUQ+COKglafgBHNQABDXEAQcBiOENwoz/4mSwAxmRgMlWQqaFGGyhF+8QRzhioYpYxOIWhVgegGVyAI6GIXh99dxLKTKQTFBZBSroYEVrQYtv1EILPOlnDHsghuBJZiZYNvAiLJeRMAyRZDaEzmjUJVw2x8UdtnjFN17xCiowYiDRUMkb7KCJUNzBAjqIwyZyAGgDhFkf8yCQMC6xPBWEYRiL4OYk0JEOcVR6FdvghqS3sMAOWYbHNgAbAMIg5rzQQx/0ADhBInrenlBBC1smRCFqstkLSkezlTFLMAhRC5Qa' $christmastree &= 'OhJYiQSQzOaG7ajHDM4p9lz00YtvnAMc4HiFH6gwCYKALRPROMUd4hCECujACGnwqrdTLG7//04mDJ7kZiPeMQ5x4EIVhlgFN8Rxiy2EqKPjEcMNcLBLmYAaGvS4euc2tg8xqJe+3IQBFWgCSps0gLdIyVkYfr4LJaNUIyKJhDI88SJEecUTnuhayIdji3O04xzfWEQhxuuWgcEhGjCPAxAe8AAdqKHrBkBDPvQhPWEsgic2UMENKt+TW6SD3TQGxCoqfYgtVBmhNJRJDCzib6+Fuh5uKTVlxKDdnkwGyQaIwWv72VOgJCvLnIQcdK68lzzlhyRXeqne4+Jmc5jj5MzuSSYy9gZqw/wIFngAEH6AA8SdYSIbgYQg0WvuTzLQF+IwxHe3UIX0z1smepNirVPf7X10jv8i9EgG6/fBCK6iIRmExRcgmwnLwBfZQJHeKzBWUgTHeY8W6QtkwAQz0RKTKAo3kCflewtecL5aCDwqmLelwr03gLlQAAIIyAEgyAEZkKLcCxi+OCbwgIFhiISeEANJ6IVbkIQKC4NFkIRFIA/LkA3/CSN9e6PW45FkIIb667rNirrgiYwYCBHLaIAQiQHKIiIzMYszyLLrSbFIwEIwMANISKt8yIdP4Ik2CJju0BVBSz4MZIheWARkEzwVQLKZcANQCIXEA4IdsIAUPAAoNECgoD2Fkgw3yIqZYARfwQRkgMClcA2RYKQb+CbDiEIAWD2Owb/kIyz1gsGDwizKyhn/gAEas9AIRagmRQgGedCiywPDS5AHZMAIfcCPopCfxgCNXuoaYnPDg3gzQrAFXji1GCAf9QEFUNgEIAACHcgBBDiAAAAYmdGuKIOhwoqOwhget2qKxVGPsciZ8TAs5gEAMMgEepiH/EsGu8gEJOsoGKAsJHNGyjCAdYwBFxOGXQADLcielNqydVpFGPA9ApE8MXuG6CCKtFGRxniKosAEXdxFgtAHRtgCgCu3YYCGPNojOIADFHwA' $christmastree &= 'GZgvGIi6XboBnlAMyiIMkgAYpgAJYsGU2hDJAboBxzgJNCiJ3xKGYeCRJbwBypIVnQwerjKAACC4iZIeRVgEUzTFfSQE6uEI/5gAgzBYwFSMRTHrlvtwjQu5H//oJbvaxWHwnPBxkNM4LAYQsRxwgAPgvqVqQnuTk5vhATNhHrMRNyNByQnZJfHgLaYBiaWQjsSYCXhcnm/6y8GprMTSIA4yRXQzOCpYhF3QNZ5wTDCAhE6qScmTPDcwgDPLy6rAkdSQCjVryIOQxT7Jlkw4rKLIyQbgvpxsCdigLLOLQpdgGvagDu4QpBYppwXDvJmAJp25j7IQHMvCvfgLwJ7kqnKbHkWIzHUwxaSsoqKsHrJyS38MA4exnGTACDIUCcdgESwplKgwAyvRyuESHa+Zq9aQDmUoKFxCg8M6jCk8DFr7S3szO6EwrP/UGKQD5AwYSIn6+aLDOBz+zI+UEAMeA8xQDJ5Lkk4wWIR5SClmWSUqIErIoU5Pqp2j0iC0YAdVzAdkiI5LuCNFEot9GZbcWMiQ45znaSELdIOg8D5MMAxIoqEhjCHcS6rD6Ir8GAydEY3zYiKcecszEE5lAqelgSSfqEJvKiLFWISysKKiXIR1YAddoJ5VGq3qiYRFkB4vhKFAeTVMyFADwQcIxAmC5I6QQMn+EAzBQAOGlKXQIRpbdI38cBBySQbY2KMjgiQx8IGlagk0eDyNq5cbnReFAo+ezIxdGsBvgqHNoLLwkD/JgAkkOatdOEWihFJ1qgV54CDpYQczEbf/ggFJmPBHJGGSjQgGPUHUM3GXkWEK1zgZHvAlNnoSuuKYYUCbpgCN3LgEtGkNYegWSHrJ9ZSZqDuDJFQGSToR7aAT2HgJxcAXsmvKskiWywOtmUiMY7KskGQomIgaMHCYSeWgs4pQRfBWLdICjlgEfywatvSbSwoDUswutxSJnICN4rm4tnGwVpG+WPIauCIapWgVI2mR/LCBlCGafSgaSDKN/dSd' $christmastree &= '8YCGX/ofAwooELSMmng1MEDOxSwjy0EwslqEd+0JMOjBZFkxgNE3tbOJRXAcBDsrKTVMXlAnlt2FedCiiUoaQetGG009UX3Xd60QoNhN7sCEi0vJ1gjPrRkG/7iikqL4CLGqDZCYO8d4Hg8NC5T4EpnAAWIjLOtiTcvirQU8C99QC3aomshJp8hEMF6wPCxd2wikw3OVBJBVgUjIB1UiK8bsIOfspIqznHl4sSEMA00IAz4VINiwCcEUVAOKpIDxmoLyLXcRIXd6korYi1s9lTMQApDoBNdomdHAj5BcjcEwgIoxCM+KiSiUFa7awccJhsrxjcjZhXhwmBSbnGCoBZZNKS1TUHRrSiflhcMUBuxhzg5KpbPiWHYashdjrRWIARaQARVcqs04KOWBjV26LtjABLDBAerTBIccn2HomqyJKeYQIjTbFzbgFsYIiaB5iqMwTTRAiGFAg/9v0gyh0DV1khyqgVKIsZwMXQdI0AVIkVJFWDW1Lcoqukd0W0x1elJxJdcFJFt5wF98CDcGxTwfAwDn7QIvcIQxaLqeWs0VZEfm2YyTyIQ3OAAHQAAEcIC+igasG9p9lTB6uCVF8g+p8AzGqMCO+YyvENCHLQjm0K5HVdcy0gWJmRyJgVIEO+JgULVmMQdd4KDF7C91OjhyTcoOqoXgLTDLkVCrcZiMiAT1iCjD+cMAkIEW4OBKoAQcyLyb2StrDZTluaSWEAMcyIEZWLwEyDNN+ASEdTCvkTCKuKH+MBIwc9WiIJpPWORuGY/RGYboWDiAMYOzSBKyNSlaUIQB3gX/SCFga1IETVYnAyNg5wQDxWzSKcbbiSGQ/jqpXWiSs0CGS1it+pmMP0zjDX6EShCDpTKJIRJVJM09O40hHDgABMgBCNABZQ4CI/ABHwhR6GgDNn0nZRALV/EKTCgFTwgaTEhPiyCaF4GB9dkHeviYj/3Yg9sIZOiNZQngyUm1SYXZoiRKdjCwfWTgpLzSe3wcorQF' $christmastree &= 'a+IFDVTlSDADD4oELXARumuJ4FkBGWABGqABRyCDLiBcPWEm5omhTDifTEiDG0AAHdgBCICACLgA7fOB+zmuyB1kjpk7Fems9IDA2qQS9YgEX5EEHhkGYeCFLGPgqcnQST1iWoBSS2VgU6QJ/05SJXOwYisiBH5WWzBANUngpkKgaluwakZo0nsEGDCoUEQpkW+JCRZggRnoAhqg6AEdU6K4hKNinhgIA48BHzRg4WUe6ZG2gB/wAXI6De7oq/HVRQ7FBDlaCjyJQN3Cwp/TiBSrnuB1YE1mB03uoMiBGLtNKSzNsnTFpG6VTEJQTFOkonfVQqjOLhVgP0uztFuwhS2oCWu9p15DCRdZjZb4wzGYgefl0x6A7d9SaHxLWj/NSQRgPAWAgJDWgTRAAyC6lqIAYnfqnHzIGvL1E77QQkjwvSvjCceRGpi97E/moFpYtVpQJ0Kooi8VVy/EWMvDF80IA06C2WTZPG6aKLhXEQlJ2AIqMARxwO9tEAd0wAUxAKXIwKU2sYF4OQ+UgAEcEAPoFagWeW0LzN44Hg8XUqGcPOYEeACRfoAceAOF7BO0+ePxtc42fKNyFLcxLiupWUAGRjctuN0NogVNImBNluIXXwQOwsdwgwQzMJOEFlXNmIkFGtkt2LdhAKXL0K3JWIHOEwdZYAVcEId3uIUqqLIG8BYAmk3jo0Jf9pSnaI038CxvBJSeqkIESAAyz4HuDRl/aY1Y/40p69SeIE4GjpAasiowxrTzUTYwSNGkLNYkDjxKy1PQS1AEHdeVnOg1hyPASwqPUxMGc27U6jWMwamCW0AHcRC9WBCHdJgEKBzAKo8ZNgESLum1zMiPkXmDT0CuMGCA9TmDqNtSs0SANHBIB7GPPqFmEsK/N3dIcYOEvkCwLXRQ2KUcawrvapqYJlWE9a4vQYKE/AGX2zmTsNAjWxtA+Z0H7eIqofA6AKiCRsCFWAgEVQgEGYPIKISN8zCS89gQmZGsDanPO0GJ' $christmastree &= 'reA4y3hrecofQOkOh1uqlyuIaPgY38IE0m3zCyyIdkCLjSUQiLGvqiHbRXkUZnmcTmJAKupBsv9wETOA7de5DhahIR8A8L04oWEAgJv2PqJK9PNqNEMAhJUHBEPggirwMUgaU6gAVP4UCjgxs3vrCsuQhOc47k/Q6GAzTRUi54igq47Rllvnnn+Do4KIcwNxpeBVxaqBUrE13mBAknBLFkEKMsAgGXnhEubRFZSYz+6oHbiqLMoIg/+jd2JWgRVYP/BaPynfrAMijNo4FBTRDHtqS7JAnEuqukygT1p0jaDJSmthuTcyiJfqGPHl1zBbjiCeh2MwkFdkByZJMf4lkLWQ82AYWi2diV36jBbRkHkdjNxgEQ4Bq2ECgF7qywg6A8rQkm+JjBV4e9JeINnH6Os4FmDOidr/qVfe6vuysD1JHCU6ywRXF6h2ycsSCoN26IUk1LuKDBi8aKlvM5B8YNCDN5Bk2DnPh4QzCP+LC4rEuIFE+oqimHmS2BTSOJSdESYDuIRkkIm1H4Yd2w5higybkIzlAYgbNgT2sDGQRxseZ3gYvGHgoY0zYWyEMQMGTJgbMCShkbTvI8hkmZSdORMxTLKPyhipoELF1jCQMmfSrGnzJk6ZyjC5keQmU6ZhyuYJmzcvnz6j+YJFEhYpUjJhZy6eMVN1okEDBjG1qXqmoMGwDBjAsNGmKw8zPc60CcP27RmuKDFleobVAAOzbcBqPXBD4421JRka7MHjRteuPSYCeHhj/2KYS5giYQqDUZk+ZTeVJdvppt5HFS39FPJTK2bO1KpX14SWqWRHTJKEIdW3T58+YRdhwIg7NSJFGwZ6CNTK1qqZhDx4FAQMg8EZxJcQnu3BZi12g2ciRUSWDJNJrYHdCtz6dWDJrmILt7n0NfxAAzAEwtgSiVekRU8jobZpe2YMLf3hByqvfHMaawkqiJM+bqzlhn7I4DYhUZeEwdtA5UkUlg09aIVQVeqt1VBjwoVFXVVqVWUD' $christmastree &= 'Ycm9ZYZeZ0WXYUNrtQFeRF91lRxY2u0onGPGwQAAb2FoAcYiitiQyX81LTOTMi0VMuAr2YBjzjkLarmlMsq4EVhJZxQ1YVROLf9iAwwqnKRRGxoZUB52yV3SRo6PhfEQXgZBd9ZyBh2GJg9u3NgGGJeApVBJHdIXUVclFSSYGy922MOjJTkE0ZvhAaACDDEciVEmxLA2iYAFovLNN+DUsiWrCb7GlltoRHJGMvnkM488yOxiEZoGxCAcDAZUhml5bCzUpnCWAYAmAwLlZV1BhDGkUA9tINOGoNhOdINay5VnolsLbRhmpDKmFdZbwsXAQAw3MBAGvMDON2QYmGi2WiYqDPgHKthkgyovrQqcGlduOGgpDJHYimswwVjGW1nyaZVMvMuWx1xEBblB1w0AaJSVjdKGFUZ7N0qGiXsmQWbVQvP5qRYYYN3/IFFXc3pF2EkSPyfcVxllFZYbygh17z7Q0GNTlFsUgkoqqEiTTS22DDy1TEZ7eYOgbIEFQ722ChMMJBfJZ0MMWgGA0msf/zVQQ4FBEw00aLz5V156rTVtXjxINmcnnrCsEZE2gMEW2x1GhPOy0Q16iVVtwBhRcWtDhEmNBWmFhjKfSNIlPdHQI7Q+n9O0RRWkoTINKqjUcjTVA2fGk0lsoWUSYm5dIgwyT4HBIVkGAFASJmAQWWJWeDXgQBFF+NCAx+5q1SyLd9+gECaeIOPJJZLZYBUYBqiwrEEwH2aGVYQBNtVxl7hxibFpmUSWQ2VB94xJhRE33J0wDDOSUGUK/yMMZmQSDUmUbmmvgEV/WselZLwhOsm5EUPU0wY0REpwgrsImtwCrzANwwD1QgMmMOGmGDyHAkWQwhI2UIEJNKABa7NB3WYGlnp5IoSXQIYwOjGrC8WgRBXpgRkEwiM27I4i4tEKRc4wJ5SpLzy/kg9ZLpEb4eQFOj0IlnwA4BFlaAEGi/gfUYbRpH3QYxKL+EMhGDFGBSqoS5PABBrO4IYaCiE9' $christmastree &= 'dOoBV4gThjhOpHsNsYEPOsMYrjEJE75rDAAaYAQmSGEEIpCCETbQgANAxyEn8llJwDCZ7M2qiMECgMfCsjuFRHAtDCCSBnNkkeydxVDPCZYNwHOJfDxDGOA5z/+f/uKQGOgjX7wRhjzYIY//sY6NClQGNDiDGU8kREcZqZ4IbfCTEBosPHV7k1sOGYZMoAGUiDTAD6QwhRSkQAQiYEIRKOAAPOHJZbyRzw1CaBnL3G4YwxiSeGCEKJPgDE1ueAY0KCe4RNkge+XZWSxriQ92XOIoz/CEdkbYwwsBQAtfZMcx2BGPohizozJJhrgahYlkRGpmyfiEG+JYrscsRjgAqMyQ4kKkIcHgAA1gwhTGmQJHRlJ5B2gMTf9ygIc0JgxnugFGwlAUdswDDBgSCEE6xM+GGMANw3gGMpAYnBwZClgmyl4wkMEOpICHUn+Rz3w6liYtXGIXwdBFMNj/gQ95rNGjVCOpXiiIzFvK8RMixFqkyvUeuUUHdnci20MOQAE+kLOcHNjABoqwAQr0EAA99NWQvscbwM1UEbXYxSIIQQgtaIFDzQkihyBSGIOUZXdlYYuz2FaWYAAzGfKIBAMaQCnm4VMFN1CBAS4ijEXsYhfAAMY6OGpXNnIzhDxJhj4COjNMQAMabmBUtO6Wo1hmAjzVy5/EKMDIKTDhsRU4LwVwwLxDfhOUBghAsL6nAiTtghb2rYUiRgvLgkAPSHmbFhu4MrgzaGVbMJxeecwgDH0wVCoGaIAPiDBJzHrMMk1hByQUsQtdbHgXKVmuAqO7kx5ANxrP8C5uSCq7//OI6zw2+MQZYImGNjznrIqcghREoEIK+ECd61yBe/GJyLKBkqZuLUc5akEOctBCEYrAEAzLcqnX0kkI7XGGMzyRjEjAs24c0g4tL9GUNhyACEVgAhN8MNSJ/g+YwXCyLhYBDNrOYzPFBDFr9AHjJaV4Y9Htrg0dpzWpBhENWCxLYWB7gwaYkAOPpYCPXehNX5Xt' $christmastree &= 'TWW7Qdniuwh5yGMd6iBHOZbM4S7Cciw/awMzl8MGOTgjH8gAzzulzKJJRcQuYGiPG3xwQhFMwQjrJRIvglFc/Hq2uMm9BNFkQo9aCKMdeHZVmGyABkB7IqDlSkhY6DTrmXG7OPDcSxiIw+gK6P/6BxRo4VB/Cs+BzCc6GfkkDISJj3XoYsnkUMc63vxUrWTaLJ7oBBuEYAY2jKLVl2BWuwozval4DBONgVEbfFCBFEyhCU3Age+6qIg37yLDhNAPbSPBtQ+DZBiKWERy6/zs1HgpEl3hmnsk06gX1u0rZgUSeuB0EIOk+3jpvcFQG4MnqbKtPAf94lzXsQtv1NvT61jEO1nrZb21gQ1mEMIlOuEMUiCDtb56yAbR4JBLOesGE5DsCKTAhMdUBgwnd7Jn3a6I/zl1IEH7yDC04OR1cJrkK6+JPmSJCZZJBIjR48G2tCYQ8ujSRDO7Uf3AcoCaHqDS6273jtbyuLBoBAz/wFzHOpjOdHwrXQtaJQsMWcSG1Q+cDX1zxiXKAmREGgReNC1RtIjggw2gkwgzmwc74B6MWpD25EcKF+3OAI1hLCJJtABGPOSh8r/XZBjb4WRJyDdrtXA/PfXrULjDDUvYVQWIUK0pO124GILYsfwCaUDEuLYL0Nvb3viGxGYz9MrwseEsnGhDJ/SNSYiBDRAJCQUOFvkO2xSED0yAA1AAEbhBJFxCMMldcSkCaRWRj6zFHsXYx20Y3/kd9YFENEzGZGxHoYRU9iHKEKhFWPRAzPzMm7RFpWzLc5CQY4QJ7XQLo3ifnvwKFSwCktWfOqhDOeyCU0lZcQwE6rXHKARg/yfMCUZgwpD8lFo5BJHAE0GY1ZugAe4M0y5YVPMJgyQ8zAahx3tQhFO5VTBw2p2NYMnJhpiJWVs0DuMA0QM5zvY1h56UxYgQVFZgkcfIESAeh+M4TtZAFZpwDS3sQqgNodIpQt39UbBEDIuYQdbZTO2hQQ/R1EPgYNm0i7tATrJE' $christmastree &= 'QsN02i68nX6IXEMEkc0lRibBwMnRGRzaRFRIwmREglvYCzIch1rwCYssBFKZj558mSJmmsVEW+Sxxfo0ymDcRZqAAS3Ugi6UQzWWAwYGy9oc2teNDYsUkW9lhAEOFTyFImb9DJqoQFOAni5kGAZexIVoVeq9h43MzFPczvTVIv9NCI0kSIIY2MtHQMPB5SEPgAFDPA7imV90uEmeNMdfdAoarkiHEIbsnIWMiEt8eI8WEMLJ0UKSaAGnzA2wSAxDSgyeDM/3NMZv+U6nAFd8PcZALUIY7EItfJZ9pSJpTYSsrc3CxRMIbYwtzQM06GNOdMkY0UO52IwZuM9SPpC4KERXREqidJtAxMCA+cmXKaR7nIUdUo73bAoVgKRouNe65AVQAQYJCaLEtEuR+Q4WdiMJAVe9uMX/8MIucGTD7AI7iJxrsQ0D9IBUKsYnfIIPYIJfiSBRroaXIINfuYGLIMdxPGNXcEVcfMlgRYdxwMUCGt0vpsecnIVGTN4BjuX/kMTACqBVFs1NWkkMkYgmDlpWN2oW1zzMIjBFm+WX3n1WKs6TrDVEXMBOD9TBGxDBG5hCYmpJMuCiPnwHLB5iVaSFQsgc7LhBGORSdMha9v1RbMFQZAyeWaCMVQCOadaUWrbmfDwEcBEPmnyTkKkbe9rAKs4hO/yPPLyZk+GX2xkJGHAbjUDVxhjKDRBBHfCBKXwCKByngujigvlVzZiByz2mWSzRWdzSYiiE4USkiyFYr8gH4WgH8EhEaRrACgAXcPmO9zzEO3nTZr3mpgxVAABVFqrJKoYVbXFafdYCGBBCcTWZZXRREkXet5SEWxDHG0RDNITCgSJoatDDMAiD/yQGA8qMFGVa3SX2QPYwU80MhiIWTnSqh6IchFZoYzTJE3Q4XJHFwAGi54lWIlG1KW9MXnsZ4PAQiSRcAkO1YTDMmTCsQySAgd5xmLBdCHD9BX+hhw3gYhg8C6UUqZGagiZM2zSNhJKCBD38T3Fx' $christmastree &= '2C5EgkcIZEIAUQRxxWfK3LdwC6mih1QaY0bcQCZohT7YBXSdQZFV4pniYCVWoi5N3iel5ml2IiLxhlOBATvEFb29WcNwmJMliSLQwv9owVm2TUOgxDO4QY0FaHFGwymYghvoVoeAULIhqG1xGjumYiTYBlcMnEmUzFm43EWiR0bUzz5tyJoaURgkE+YoQybsw/8nfNLwwBdQQQxvNAATIlXbdAxLiiZ8+Y6a7MfX7KkwbNje2acimGLD6g4okc2/PgacoIHYPYRuEYEdmEIomIId1MEn9NInINOkgsRR4EM8xIM1NpkWxMQwNAqjzAkrqQ/LCMZOogtmqmXZBIBmdBcapEQmTMIkECwoBR1m0apj7J+sBRlQxUBkSEJTfE2+uZUucBgtJFcqElebOUVmiad4OGRYPESzOICZwUER2MEbvAFipuw+zMNcxQPoecM0xuw+kATjMETBqM8leILf1AiwYEWpslaQ+cpfjESo9NI27UMmTNpltQtmmaTTkgVvxOqawgB05UNTMIWwZW0tBEP/ObADcbHDLhTFPCzCkZgo00IkVC0kVLXQBGiABhTBgKIUCA0l3IIEMoCrNZJDLdCCRXHG3xok8ERplinG98FSRgQRjFwnUYHSDdyGGIiBvRKDMmjC5nSTZc3pWfEG6nnVmxSRZSjYU4TB98wG3wUr1r4VXHHtyfGCLRCCH7xCLZCmfKwZPInH4bBIYOiWD/RY8ujee2BCXSmpRtGbLtitNxAfL7zOQmiHc4WQueAM/MxMdbpFV+xSTW0KMQBFZoSBGNwrUBhNN/nKsoQBrR4ahvBGU0RCrrQhMA0XAChCMAUrLXDYOigCoAqTMJDWRv6BgdiCLWzBkHgMFilijS1G/+QxwAS8Qe2+QYRRSvkA5O7uqafZm31pwb0kAxg0RQgpQzREV5jshW+KgUBYSghNGzc5xE+FQRoAhVBsTi9lgiZoBjTgAD5h2khyzQ7tjgpsx//gab4FA65AghZE' $christmastree &= 'QrBe7Y5qmJPRxjCAgUv4gSsYCDiwgy0sAgkxgK/Ex7zMx43wIaUYTNsazMbADhigwSe84XHOw/ytAznAMi2kkUygzP+IkUr4SY8EhsZmRL1kwidMm0gEiIh6Tt4CxeYQg1AEhRgU2QFYrHxYWOfijpjpBzAVFzsssulqWH3SgrCVQ1ylopOFAS+QYUtQQf1WyZWYA9TxsQt1SqfET2eYCKVQiv9hnlgNadmrSSAmiArctoPoghotEIIkjBHzPYUkHI0yQBVzEIYGokFGcGKqil3ZfE8MoMEkoHGXjHCXjMQk0BSnoAlF4FCmsmHDOgUY7EJb4SlNCltxzd+wAWrXnpztCQghMI2VXIktQMzamOdfoMFyDoMkMLGN8ATghnGrDkNn6C7cVipN7gIug4Q+2CcSCsM+JEOOpIVh0AeGvNshHSBKSm9H32syTMK0hbAWaEQXGVVDZaqGCRtTQILpRoKGCYMuOJnecaR9mW7Wwl1TPMwRj4YfpAI2TIOVfIMtXAjGqtV8xEAm0MPn2IYwNGe13Egm1EY9MPXupoYw4NcFgoH/UYRJPxmE54WBLnLN7c0Up2wKdHUXUEzCYytD8zXfycmk24GcOKeibjfMnoqVJDrZaDmZN9dXbao0SrPkpsSAS6ROKjxNNtjC/Z7NJ4jBvGhEGIiRMkT2PlhfXAiaHAFkZ2z2agxDx+XXye2CPMwhGMDIRQzOPQoDJERGFyWhFmCCU1yIJtXL5/DPbajuyYWlkyHJscJ1ht11JLDhLuTDMC0CL+jH29G1k8XVJWBQrxiglKTCK0jDNGD4KyzC96hqGBggGEitUPxHZA/DJ3iCjlCnGySDi7OyeNdEVJguXrqVW024mAmOKUK4KULCIrT3FwlDOQ8XksCAFtBD4ImR/yTwwjzwQo46WRAi60VErCJwrZNqgSO6lTAhIRg4OZIIuJPFtwZ6XacoNxW8QipgOIYXgmaRJFoZVWxrBmQj+XK2RV2clIVcwtvG' $christmastree &= 'uLL9jzAtwtZebSTowgQyxYGD1l1v3Evnx4FXLWidHJIwWBgwAj3Mtl0eK3AHd+g2jOfKQ31pWDZDQlNQhWVQhClSLZRpKH0EiAqUDr+UBpuLxtellQrDiyR0BpJDdmcoNTQkwzN8QneFyYLdBp9DyTCEkDAMg4KvQ7DVFyRAwl1DgsOKcyM2mSlu2CJkWC3Q9ZdbVC2EVm2bNwbiNW1zpCLHla7EVcMkCTBZGGQkoRo+jG+uFv/ZFGCatEQVuARpGiC/zQe8MEImdIY+DANkgwcIJQM0wNhh2LcJBny3KmlmJAMxfMIwUGef2kAw6EM+BKuGXTvYQAIwvPRLw504w53c+enbuZ1FmXdwd3ym0hZOKgJDBVPDJBfpXsSPI1pwsJPUBQt0MIdVAEuAEAmnrHaaDA88Y9YW3ICmBoXQKLUkiEdlgke9zMNUrPcZnGxTx1FhLQbJWMYZIEM+HEMkPHvDXEIwXAJc1fy0h/OB//jJ5YcZWEbzbWRtA/EsBiuj22UkbDoMI0PDPAUMOFXU7ueMsJsHXYpjSGXPUi5q9hZQwZMKx/MeQf0ZWF/RfbckIMmQc8f/Up4Bk0wqjIEHoggGyjiOe5gBJCiRmKn+JVhCMMSDsB24D2eqkyLJ3Oe+aR9J8/mp3iXJthN6n86d5yrsJSzCVKRJFsHSY6DBH+GcVhTYjNDH18XA5JFjm6IkRIpip+zRrcsGX71HH4UBqHPaZ27Mk3RUl2g20gTUhJoxhwB9QSyl1SWHRdRM2j8Fpz9Fhn0xQIABc2YgjxsCw4SJdEYLmIRaIu2KpEhRpEhgJAm7FMYGGDNnbHQMSRAGAAAlAfQIA+OGDQMGDti4wcCljR4uYcAwYFJnDAM+WcKwESPnSwMwiAoNcyNGjDBiJEk6c+YGGqo3dHZUtGgdO3b5kF26//Qp2T6zZ9GmVbv2rDI0mDBlUsZ2H7RMbc5I4NEGb5seZ9yc+SiYR+EzhXn04Ht4oBmBAgmCEakl' $christmastree &= 'p1AeIUNSzikTBpgtCiNeDAMAzKWpNUfanHoJU0nXQg2sPGrghgEGN1pKugGAtk4ATX8evaFSpcujMbEG5a0iZ0vcIWvjvhFGi6Jg5XatmycP05lLdMGz1RdNX91MPW628TRsbtpMmHicEWID8dS/f8+0ib/fDN6PbWwySCbMhCqwQANQM0g2oWpjKQYbYAjjNI4wC+OykC4rDDNkkhEGDABs4I2ol1SYDbqBMLnENaCOimEm+k47zLnpQuKopZdOes6GpYYaKpOMLSLcZRddumInmLjKg6a88NZSBi5M3IAyk2T4GuKyHjBRBpqz9FFmMb4Wo4/CkNow7aP/wMzQhqlAaunB52pD0DmZwjCDzjkhZGBEohiAQU+ZBKQvPjvNKLSNYPLBpMQYeANABZ5m4+kMZFrzraeXEroJQzOuHJBCpZjydECsIJzuBhWqW0TIdTSKpI3ubjgjSyb/0xomyig/Yc2T/AC7qQc00Mgkk0+U8cSNS8DsDyQMR5pqiMN4HQxDxc64CUEIIUSQQTNibQkn3JaCUybpZHrQphvM6IFTNKH9CJl88hktRKNMOinYlWxYBBNhbCixwB69BeOmK8EQkCroSr3TW45oc6mlyiiS6KKbluJBMh5mpbWuYeDadTE3/MIrDDfCoGm4/DDhK93DLlyTV//6SzdD/UDKT9MBG/DTT5lWhq5P4QI7jELhWFoz1tPS/U+sQs2I5JJ59MlHkqP0LMq3MJJJRpJLLBKGo0dBbPBk6Lg16KYbFBR7KnB3xLNPh5LLSaBCeY3Pv/zao9UufaDBZBhj/+H6pCX8qrVhZbym6hltaL3jlQ3BprLbBpoBHJBAzNg8eFSibECjr7WFImq6asfEjOk2zICkzEiEgRcTOcd1qVEVMJmna9ajwkSSlXQ6yFtAMUPXW/xeDWxlxi0cCXGCOnLsv6k8Qn2qsjRGCxotlUmmvDZiBRnkal9N+aObp2pjoTJRRz0xNvWjD6/C1L3sxaNB' $christmastree &= '0pRBrHBj0D6QXoKhgapKZzgenEkwYrkEMoTxLtu9xAYmK0q9bCAJiwQjEvvSHiZKBZtr3cxby2LAGTKxKx6E4WyHOwMbwMQm1qCuYD0wDGASl5+xVI8t2fPSGTzxDErZ4BKBQd9i/rKmVyHLVf+QEwyMDJOu98GoB78byc1c0qfoNNAya+LMT3YEICe2hG6FEksC4QWWM+ikTyYzzklA1CqJCINfj3LQbK5FH8ys6SZC8c8cTbcY78BsNf4ZIackAY1kAMY0ssoYDbnUN7i86mOX6IHAkiamy8jqc3Sb5F6qdZj3LUtDlmvgHHXCkunYyCYI241wLOdE0zXNgJcQxjzmgUGfQecnLNlJGDARDI0IIxJgcw1vjoIwPKqLitWCpLcQJMO+mOESH0Eh+gSzvPLAJWvQCEOwtIfIfdjwE905lnfMlB//4EdTZYKcadY0vvwk7XNXio+3XjRHq/xlcJmrH0d8Q5PTHASKpgP/JyaQMQ9nXAIMcbyJyXZTEhXoi41s/BBKDrCTHMFzWiEJ4nRu0qYBvcyLyILcYFwlFr7MShln+ISSlNHNuGRiGEuilTLekwlkBMaje+wLI/uivEK+7GD2QRNfIHkzmggTbRyxZyZTqRPhaMggLUuMAMFQJgM6DVtPJdBOjgIDv0XCBpFAIKTqxRuh4BFthhsMfqAzMklYpYCM9M5HIvGRQiJLLIE0y3swUZYu6Q4ucqGhX/WRjBS1gQ0p6uOXGCfDQh7tk3j5y6vyA6PCFQZt1NLUOve4LJsIDGFjLSV9WmIyQi1rIIL5CBhMlhgBMaBFALiBMMbIHEnoYzSMEhFK/4omE5pYaHFnCAM6ryUGNNBPpKozE17gEsPwKaM8+nhL3rLHsWEIS5tm8cQQ0fcXCbXhGZh4rHegdJpxveQGegwaSOwWnzXt5zB22kt3EDdCegbKOZGTjE3stEE6ciokkFiNZisbElSqYEcSBQDWGGESfy0nOOSNohxlJF7cXCsM' $christmastree &= 'lQRvGyTRHdYQsXFueEsmoEEPlqZlS8kYBjFcWj19ZOJ5beBIfKLU3fjA14hsEjCWVCjDR1YuQCyT42A8ymMx4WcgAjvNhThrG4s+0or45dXODAfF/hknWwA4gyRec5JF+SYGwGoJCTE3QLyAAZ5/KVRUU9ax7sTlSXC5xHTiYv8WJFWXLpnw7RmEkQlHygQTn3DDwECGl+7Zh5YSagkMu5Ma97FMMC7sj0ebuazhwNNiTOwUk4eKIAodTDIfCQmDLsOAxJCqjDcQLlZi88tQNiWhONhHNIZLvjYYGSRSxMx+spbXbgarzXNRBsfcQCzBYqJLdGbLXc5AvWG8JdifUBfhyhfepZiRJnLyLToFOJghrHeAdoMmrygaqyYfUV38dJPDqLxeo2KlASEZ6l8MUhvddqtBOJpNiX5jgADcAAc4AJevAvSR1X4yJCDtMyaC1TdJuCET1svEW8YIBoDSw9hqwcQ1W0qPKw+jm26wgQ/paQOEm9I5O9mo5XiVn/r/7EeqfVmIp0c1kqQdBkYCM2pNjILV5DXZky07w88Q9JI+DeUoJ8lqSWJwAAAEAAEyQMABcIAZxLnwXJxJWEK2IIlly+o9UWo4WpLhpMZ45BLUq7hZorILWxSiEFSAAZvC28PJFa6B5T0bqvl9TTSEhMxkcqFhBlizHhLxVZLoLrrnND7QrokjPHIJVYCZTMy55E00SUwPlPpJB+YMKbLDykmUjoAc7AAIOniA0g3gHSEIPD9LQUpQHMKIWzCCEWslYXdAmOJ9wFYgkDjgPBCoe21CIyq9MAc4CkEILVgIxNN1sRCJWrLOgRAae2duGBpGJtRx6ohijhKYKmga7DdH/0I1qnR543Kw4e3d5F++EkgILDoMLYuBvckZ0U+CmRHBBAelh8ADni4mhIhubIYoVGAFtuAzGCEWYuEWbkG4ZCUwoiQa0gITeu8SggEf4IUdzM7YMKEd2uEczKEWCmERziASMqG5MiFWyq5mHu5G' $christmastree &= 'YsAN+AYTsGIuhsu39IkvCoMvKAZx8MI0zAcGtEAFVCAGVIBGqM45xAAUNOEHkm5hmEKsdIRNyIu8HE9nqOjTZMLaVIJBsuUADsABHCAHHOAAHqRO3mcIuCV/VqAQDMEQCgEQYCEWtuEW1uoGogRKMIHi0CIMBMJpAiqMssnY6kEYzgEEz8EWCCEMduHi2iIC8//BxTDBLtqE+sKgy4gBGqYLEyZhuOgn8CwwmWQoRQppERhhCwyhCqqgJA7Com7gAG6g6QIwonpDRDhHTvApDJRB3j6NtWpiZx5GThyLTtSPtcDQAXAAFnEjkoZxC1agCgwBEP4gGmOhGmLBFnph2Z4kDEDMevwQEiBhF4RBHuRhHvChHYQPkXqBF8zh+F4h+RZhJfImEzIsUZIte/buBt4gGYar4brk1x4OVpoFvWrjNmTFNEgxEhahEKbxDbnAC2kjBhBgIh3gAXLgBxCg6GBgBYLiZxhEJ85gGCLBllhiqHbGs55oji6Dv8aFAQ6AAf6niQImPkjnBp7REFQBEFb/QRWogQ4PoRd+DaamKxPqIS3CIByDQZfYSB7wIRn4kM70gRfAwR1fwRX8QAuWDy26RHsEiw9pMK/c4Aa+LsSuZxg4RgzO4CV4BY9QZiqcRhJMMRpVARZScQVoCeoeQAcSIC+PAAgcIAAOoDKsxkFyggipQAsKoSEK5DaqDZQeiweGSo6giDGDTkfEbXTQQAy2oApiQRVWoRpWYRW24RqJgVYiARKCgR2WshzLMR1pqBdqARyyYTZTwRXYjhHUQh/oIR+gK0tWEA3Koz1sSBMRDiStAjfO5r9YhxeYEw4BQRU8sxBEBzcQ4AGAAAL20gKCAAhyABabAgYCwDUQJDBX/wBVku8dLzErcMPWrkVmLM8l1qdwbqQl2u3Q3kJ3pgINdicGoDEWVqEaRzMWSvOlIiEYyPFAybED6awdZHM2HZTthqF6qs8Avm4fdFMZfq1LMmESdoNHCmdgtCsM' $christmastree &= 'hKEXbMEWquA5PRMWVLFUXhECguD/IAACLMACHqBBgsI7wRMptIAKCiEVvuEbzIEXtKBUVILUoAxDAoU+XAieaOI2rAg4Xy17EA5YEpARDgEW/pMBe0HFhsFAEVQenPLszKIXYCEbZBMcSHBLq2cFb4B6tuTXzDLszFIMeCPmmKVGeuEWYGEuUXQnuUALQEQmxvACIuACLOACtrMMH6R3Po8oiP9iC/4gFVABG8DhG9B0M1qCOYoGdpK0JtBKU5wjLDEhLZQhw2QFDWIAFRsBFmZvQGloGFYTGYYhH8TULOihHWzhFWwBFmwhbzTGDVjiE7YJQ1kqGYgBTu0MlTRF1FTLIfJ0DkPzM2MBFhjBXJhiDI3gAjrgAi7ACB7AAbIQQnLmJy5xCwrBD15BGl4hG76hFhZBC8QNVajDk5bMOUiIhGjOir4MEygQLWDq18AFDYahHuihKKEyawKqVtNCHwjWNcPjPLgRpehBGY51YrHnEl2COORoL2qEEcLhFqwRNEfzFj5jjvjtB4AACPoSCHDgf3xmJkJpJbRgC15hXafBFbL/gQQFAvO04A8WYQuKMJUGBFMnifv8wl591VbrYuEkoUIV9mmfdsXOADiXwdcYlrmUQcRuRCaIKb1qxBRvYRvEdjSpVQwqZlxwgAJ+oALW1gFcNuZQLShQZV3X9RteoRYIwbMIoRBeQfkSAn+mgmFYYiCWJzDu087Q4CnBTi6SFmod9+w+oR+baxnoARpKs0vQ4FoMIl14Jl8TgvYcMHQZwWwTB22cAwd6AAd8QDrgjSpkEluwIiFqoRbudiHBQCnCYBFsk+0MbZSGq/Ps8xI8hyoyxs7EwGEfN3lr1c6mA7CigeLsIh+rxXQ77X1iRSVij/YYIR4zRXOG41yaqAfy/3CeBsNN8scGEnARbEFnx2QRSPBuSxAqwkXvSHdqu0NCEqJC9YEY3EASlPd/H9ct0GApgoVi7UI3hOMmkoZi8qNgBK4VXa9bMKOJ' $christmastree &= 'Rsgg2ERgMTR7IgdyxEUp/GbZLCQhHMJ9XwH5FkEu6BFYiPJ6iCEZHu4MxMDU9HNLzkLElgGAcVhhjbWboGK4LhFHyosq1Mtl1maA4udC3s1OnHRwQlhYfBUfuW+EJm06JEETfM1JJOQEw2B2a8EWTJFYhcWvzCIafs0NYjhcpgMNtCSH2Vh5M8FsccNF1gYkXOxC1jJaXIiUfqfvlmJqu7FJMGEh5via/rgtugMMFiESunjtFv9hGCz2WJOWH8PlXoarc6irjTH5aZXheZ8XQ7tDXTLJnpZnhKaX5AAjLjAUeS3Xw7JYjNeiHgTLIhiBBBdBE84ixNQCpsBlaj3sfqfCDQw2k4UZamFqavHCiuANX/nJxnwHhDAUkUrVj2mlaodBEhghE1AsPIgBJPAVf9fmV95imMUZagVrrXxrRxovlKuCKgTmuYztehRXY5CXS1bQm1c3MA5tSpThhse5n89uGa4nE6IEDRgugzN4GFyYpZ7Znx92jvXzPtmqG+eZoSkaPBi2X19NLcijomllf/UZexDuguOZo0m6pDN5o/ehHqSWTYTVpF36pU8a2HwrQmG6pm0W+n/p8ZBueqd5+uyup6eBOqiFmkkCAgA7' Local $bString = _WinAPI_Base64Decode($christmastree) If @error Then Return SetError(1, 0, 0) Return Binary($bString) EndFunc ;==>_christmastree ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2020-06-05 Func _Garland($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Garland $Garland &= 'R0lGODlhKgLWAPcAAAAAAAAAMwAAZgAAmQAAzAAA/wArAAArMwArZgArmQArzAAr/wBVAABVMwBVZgBVmQBVzABV/wCAAACAMwCAZgCAmQCAzACA/wCqAACqMwCqZgCqmQCqzACq/wDVAADVMwDVZgDVmQDVzADV/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMrADMrMzMrZjMrmTMrzDMr/zNVADNVMzNVZjNVmTNVzDNV/zOAADOAMzOAZjOAmTOAzDOA/zOqADOqMzOqZjOqmTOqzDOq/zPVADPVMzPVZjPVmTPVzDPV/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YrAGYrM2YrZmYrmWYrzGYr/2ZVAGZVM2ZVZmZVmWZVzGZV/2aAAGaAM2aAZmaAmWaAzGaA/2aqAGaqM2aqZmaqmWaqzGaq/2bVAGbVM2bVZmbVmWbVzGbV/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5krAJkrM5krZpkrmZkrzJkr/5lVAJlVM5lVZplVmZlVzJlV/5mAAJmAM5mAZpmAmZmAzJmA/5mqAJmqM5mqZpmqmZmqzJmq/5nVAJnVM5nVZpnVmZnVzJnV/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wrAMwrM8wrZswrmcwrzMwr/8xVAMxVM8xVZsxVmcxVzMxV/8yAAMyAM8yAZsyAmcyAzMyA/8yqAMyqM8yqZsyqmcyqzMyq/8zVAMzVM8zVZszVmczVzMzV/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8rAP8rM/8rZv8rmf8rzP8r//9VAP9VM/9VZv9Vmf9VzP9V//+AAP+AM/+AZv+Amf+AzP+A//+qAP+qM/+qZv+qmf+qzP+q///VAP/VM//VZv/Vmf/VzP/V' $Garland &= '////AP//M///Zv//mf//zP///wAAAAAAAAAAAAAAACH5BAEAAPwALAAAAAAqAtYAAAj/APcJHEiwoMGDCAmiQaMsocOHECNKnEixosWLGDNq3Mixo8ePIEOKHHkw05lMJFM6FINyICY0J1XKnEkzoY8bOJLV3MmzJpobN1r2HEpUozKYDAnGaFiUI72gAzMtPIMmE9OmWLOWvIHGB46kRDGJwaQVoT6YV3tm8iHGBxocacvK3amPoLKXU6+GQTMXo7IYwwRKXYh0oRuYQvsqTpnpq1scN94QG0oVjc7FhMmqFcPVrY8wcReL/iiG8MK9pukJFINjdMVMUKVWJjybr+vbHZV13uvjDI4zb0IjjJYsDdiKRw/b7jvMNEapViVCI7bwxuOfb3Fr1whtqmnaYqDt/+NcdzvETDEySaIaRjkavAvNKytvXiLb618hv60aGpoyqaz1ANlFgy2kmVzJwSRJNBY1BtlXDIWmzH9otOVVV2F4Fl99Ek24HT1IuVdYVT8Jx+ENYgwkCVdouIGaaVSluN0wiXHokBu/5XiGZxlW+BNkOKGIQ1ti9NBWVRbRtlCNTUXzkiQtohFYRUUuZCRbQT7IVX5vUdUZdjgwaaNB9GBC322fmIZJZbXdMNk+ysAgpnbDoDiQiCxiAiVhcy6GyZRjJpTJkRf+9phvGvrgQw+93dQlDmH0iZAytS1ZlpIGWvQVTmB25SlbRob61n0ZtnVDoA9hool53pFYXYtUaf8GW2uowhYDNCAS5oYYlR02m4mKKSOJeKgeVM+Ve22531dGcsUVa/sp+1VF8KFxyVSSzgQNlLNVBixC1hVJZA/YOeupY+Ii69apxZZ0IG4F4iDJYZ+NyBBsYnyrHRo92suiJBAipe8+0WGVybvtCgQNoToaKu511i30sG9UUXQUpqYR29PFVO2JLUX6cKpjacuW2ykOV75lZMIF3TWwTAU7RBi5N7ixZ8CzcfYybt+ZVu+rC7lFTyZ9rmjQ' $Garland &= 'zholI5QkCCfM72frkoqfb9gRFu59SFer62wxz3RUpRVyPVFjFHOZBsWO3gdqp1tmyyE0f7qEdEZxDbOUoP+xeJoYh93/UKm3rp01aUFnFeYeiy8SJhAakwwUlxgyCoSieP+dd9FdU+ojyWUs7/MGl5tGe/KFC+V3JUsSDVZZ4iNiYtXcE01YYM+FAR4RZ1K3V6FXOxpa6k1t9Yjym50zLZDmTUc055ktwSaUbjVehcZkF1ttPSY2m8bkmY67LVI9dhp0Q2jfMb3rV1SXLlRpAnk4UMgyvlGqejgMo4xxyykUOUXDxE0wJrBzjUl89xlIQQw7GQrDG6wUPEdB5D9/a5W9FgIoj6iudrA6TZSQ4jbdgMpUPhjMlqgWOhRdiWrj69w+MAFAgbAwgOATzpCs8hOpCKkh4NsfwQYyveP9JkosQlH2/7RnkEEd7QaSKApQihgD1RCkcFRxC5S2pDvDKKRx+5BEWqCHr5uojVdhOshTvEc4Fn5CMMkLVGPuMyrrZKgzP9zTzQS0LBPJDkaECVhhuMWnkPBKTT0z0neU07WCiO43pVEOl6AWPBzgpyspZNlRmKInzlGEKwj5HZF4VJXwDWQSTLkBFuH0ndIAZYOVSWJB7BaXv5CRJGKIQRGBsr+1EKZHrAmDvAg5n4FMazxMmRBrcMKW0pUtfwVBT/si9bK7+E8SqkwYbMAkSNwFTxKZEMYw5nEwKJ2uWex6IqZ6dRqqpNINIjpDAB9ywVh9R4hsalWkDEIMc+XHLZOACcoeBv9GN0INhetUDIg085I0GmQY0ACAQCYRzqPtM1SlKRKXlEEsJO0DiQMhxlkUNUXOSExvoMkoig7QygBUUCbKAEBoYqkxgaQBJ7RaIa/c8pNk/WSBCxFPPVoSspYodBlACWLVQAUhh9xAlvvgFyYsmRBhuUEnynDDSQOVhpR1Bie69M2fhMGOeSRjHs3ZnS5LVhDq0K42JDMQ7URCqUFWqzbKIScydTOqN/Ir' $Garland &= 'SlxyFpY2uZ9mtRRVMHGh8ZSHCRgsA05QSUhniNS3EuJkPDKKgYwqR7C9HIYzpkyrpQgGlBhwbxgqNQgaVpASNMTgOKtxU/vqwq8bhLR65PoJioBiM7f/CMV+cEqPQGAQLfQNSayIlJQybCCjvbSQIP0zCAs3t4/mMHVMxkRXVziDomHIox1fncc82vESiZrMk4trg3cq5bfC4IVNr6QIxs77E5KZs2eJUYZ3pbWkVymLulCz51tW1S49NcQkxx3I0D6LCYxeNAwPUVmOTgOhYZYGwZAVDKA8BSXI6JJFsbVNJi6ciWgQgymTMEDdYqBbkGwRJwsiCGympAwaVSgM4ztKWt1C3dIYpzQt7I5VYNO4aMwWQpBClunytQ99jHIgzYGKJowbF9cV8SXzgfJDklEPQQmEHtzzyZAh2iw0eFW780CGV4eBwtBtCi6Oa5WvkHIkA8mG/6Y+mGpH3FOZ2elNV0ipWFTCRUd/oqHCp8vvkKgmNa0ORR9OdN9BeukQkzRETwGOSlyS4SJauRYN3FPGm2BD1L3g4IfUlJHf/LOhxpgGsyjy2V6gwVBaqqch0YBxlR13gwA0VNEbwfVLI0WfekZOH8nAC1fItaO0Uvc95BLkf8IgiWEkmS/tFWJbIIM7Rp5qGSVu33v4hZK7mqkgrhvGmTARCQDeRRJZTma6s5iMYWgzGVjeCV0Xy0ZHhiEM2/RqO7TbDmGs6FE/QuH0GtKzdL4IL2lV50gmURkWueElXvLOEPv4H2uOMD97Mc4ZLFQqoCAqXRYyFU8Q3W5hJEObk//SVzL+DI3mOLl7L08zeZLanpcUhH31HHZp7M2pt7g2TAsLQxoGwxLZ7mdXMHavHmVbmmEwCE5iCMPT97EwEgMqGrj9SIuvogxqP8+1UycY2GZTQDG8oTTrCgNediyJnZuLX0DqctgwGaeC6YaFMKkLZyTxBie2j4Xvust7lLHyaMLpaDxNCz2E0Q4xa1fOJFkjdkK1YK5k' $Garland &= 'V7tfFYa/P+2bBe8TZV+BoGnmlcc8GYfYfQxJ4ay3baC9Z17xzJt+UAQ8rxjpKxX2PE5YQ8J1Yecmh6UJPbLb72Ek40zBfO7htY1u9bQhMfogN8JWfoYwrGrDL9lL+5QBY8Tm9TO7j63/R1FUpUxQh0ippulLlw4TGt+QIPWU+pXTEAMYhAfJhbyIKNOSiSMzFFLRIV89FBVh8Ed64x4w1jMeBR2ZsCtuRG0+p0uahU+YhB4ApBro8R56Ih6XhjAFlRjYEwlatHIHEmkC0W7t43fAxm9f5kR+RxJmdh/5gSj49njzIA/W1T+oVldDQkeQYRVLh3cR92eHMVaFIRLREDS3xDincYA98wbJMCRbMl9ggiI38yhZ5UggJzXskxL6wBT5BmZdRRDwJhizpmKZsxBKMy/NNhDbImVpth/7QILVoRrCdAP0EGvjk2FWs3sVAlPhwhC74oCeYho/dBh44hshFRWSNR/1D4QDMHAD/LUPT0E8lBgDDf81EfXUiG6IOst0Sk5kElKiDPTQHWGwcYRRTJPgBi/1HQdjhVKhS7KoI+31MxKzF6DAKwQXFB5SUy+BEn8RKwShdnqyNGsCZb/4dy/oQsEkYNuVXdclbgQTUMqzG1CTLFLzJze4TZrHDphwYW9RKrfnGz0QFCEjQUTncD4nIjiwbhkxDL0xFY4CRHmyJ7OBTaGWI1ooILpEiLuHVdcYkMviG+7IES00fPr2VV9VHpomEMZnEEozELxCI22wHjFHejHRPhvnWgLBNNWnWqT4E5PBGebHJRWyKR41ez5HbUfhWoOBU5eGU2h3YUflBhNCHQZwf4gVAwaQP9m2D5MQAwD/MAkF+RBHAQDZtmFMsXi8gBiI9o1oAA36UA/6IBsw8UfTVR184yOxyBWDwiJakks/lyVegURP4jowplGZUDhqZzy+9me09h5twGJ4dwlatCZTMgw2KVoN0XID8WWYNw/CYIcGdWXrRFeeRzt0pHmC2W/aJAkJ' $Garland &= 'mCM3sSls8WkokWHx2HqpppVr9RHdIUEJ+FFECDRuYZO0d5qPEiQ3wAjC4CVnJjILkQbKsYXZcRGQ1z0C0Zhgtm/z4BInyCTCUh5LoicwoSflsSZQAmFwwh7jsy1XOXjdFgMncUpJloVBcmE5IiRauTBWuB9TETAvAmNJ5z7yBRXyFQNqByhtF0xh/wAAB2B4FFFIYmAA6PkmYqBFXyYM8HEwFeI6RCMWldEoO/cTNNUDp8ifnKEfFQJOP9YvRdISwlKR2MMv/zU7L7FyHUiAeHcZ3WQtUnIYl8FCR4MJVVYw2ZUM+8YOJseMDgENa1kR+kCZ4tIiaYAJNWoa6al5Orp5AFl5PQgZygA+OLpLrheaM7NZHVEaUZSKqXYGqcaK6TMVadCSjVSLptRsXzUMyYlVXdIiTFOjysE7OVKYk0Kmx+Vu2qUM+aBdTpRiR3E0WrQ47dGA7lQeUDJFs0Yp1GU/MDEbqkJzf7gXTkd18lNMrAEps4U7nuZGeuM3fMN5bHSNp5EJyaAJG/92aT+BiZIwD/RAD2DlieiBlDXyYRQxNBpFEC9lAKLkosIAZoIJmff2BjSyF2y4K07qIzQTjnnFEt0lIKb0ILJIKgqaeBDHNGjRXOuxEJGgmaghnO40JZlwLWcJJUwxL8t4MHXRQiwomMnADpmDbg7hbBYDKcxyJFJxp/gjVmigo7zgbwBDSwVUe1syPpoQRQ2XVqGpoJ3JEef4HTGCOHoDKRJ0FAJyJadZL5gAZlzVHDBmQJpFGOmaV2lALd+SXAKhTeyADPuWpVXZECDCPdtyRitkIMlqLW8CcT9xGTKWdMl6BtxCZHiRgNhEioKhTwKycQV0nTQFgeqBihAiJOL/qCRuoB78IgagIF8WxgvIMAz54KnGJ18GAACq1T35JxHE8Dp7RmKt+lXYpXkR9R4NuBCT8J9KSGPRdh8UwzdnQ20OSK6mYR1BIYrYlAznpiDEWRdRVRlPAhOY6pB2K1UuBHE2' $Garland &= 'kz12CowHQjRwAkDbpLGMp3mAgrhNhQnBpy9SgS6OQiTGRF3URqs7mnQ9So64E3q0016cSbqpuCMWxRHL0H4hUjrP0nP3loocdJI/Aia61KqAKWbDILDkCrQ+Ml03u4+otWgOWZjbwhT6oKPbtE3wllxnwWKBISyywivnNS9T4h3aByf3dkpr8mf8Qi51MSg1lRlEIywFeHamy2Cu/2VKnOJiDZSg5RU0f4RNVxs2JAIUW7Cu+1aKYCUJ9LmIX3i11PhEmmY/dohvl+etmqc0MIYiRLMXTBGLNHVZpyQtzuJgWNVg1pYJ9CA/sTIhy3USxJkJuJIJy3oGbnAG54VEliF4CvJU+1AP0rcQbIgGh/WGVfmtOtE/7ca4O+qGkfAt2SQY7lhPUfM72Ymo1DaWKFKAksALYpHBWOJzAPcd8aigS1xea0YYf2UUo2t0AjsqeVaIafBGlAkZbqFNgbmx8EtLQaWa/MRIA5IQdFtkw5tMibGjXHVyB0NwJegfeiIYtaG3Hbk6VTE0NrWE7IESywCgUmGrEWJDLIGh3v/lKT8mJK7VG57nG5u5OwsRTC75lZjIwe5mcpw6D5pDZARztacaEtNBNB+mDIG5o8O3YdXXelXhYhJDU1oZkNiJyWjcIyZUJfWLGpsjO9iDd1ACQADqvd4bBj0wL5TKLcSZDNEgeCjssh2Dt80GNywWpyykTew6mMjlBqqhD8EnTg1BWQeBIfexhZcMv70rnswmDFG3xFP8Iz/TG5rlpF8Bzaa7J24RBl28EVKRYcJmSoGqhFbcgxiCSPKCu8kgD/npuTVGrjS4NtboiYgXvskTTMOCXMLQruLcP4ERyIJBt1AiENSBGsv6Z2RBD7sCE+2BUACCimcwGwVItwwbtz//oUVfCJmu9QYFQksbp0v82LvwC0KYtUH1UhrEsHJRd2NAEVKLp3n79oWl+B+SoAmMphITsszDgF2O6W/aFMLe6zFCeFeEkaA/QkVAIi6QMQkr' $Garland &= '57B7QTT8QqsMUSZMA3F6SxvrkcIahE3dhMLLGhjQEAlucMJ81D7N5jInaBkvYXKaR9LL+B6Jm2XR6kKQ5wa0F8cPQ1RvATmJSm1nAMXbi35s4dn6DCMaAmO319Q45RZnMIkgsSs0hVNLbHQk80++13P3hEQa63hgxrBSyBqY9c6MRFTrYiItdBRTFZxZVCNX7bjzALZS8XSuI3h4u3Fs8keLwx4GsnKeZk56fWmv/7iZMIYSZnVKf0a0WcU3USWF5AqOugR6tVs6vzuhD5bX7u1skqCjCqmlLGGJHvEfXr0PYQd/aCCC7vpnTKNNOuha0fzTE1Iu6SKj+ZElQLFgabByv4cY9KJLbuE6BpJ93nvLqTTGBYUXy5qMIF4ZL41pBCNVkE0wfc1c9NBiKFfO/1VBJu1kmlPQ9WAyDdNe4yiZRDLPAb4iP4odxjFCnvy760JdWDVEVPMRnZpor0J62NnUqFdK/Ggl+pGe7ICiJyoW9qYowpxfdcVGQDEnB9ORzJwWLfQS3DPS9lMXi71c5UEjd3F/uoEa3r0QXxg21Gvi33GKLZKA2NPA6ptEmf9goE9N1K/CKzv2NA2bwZB0Hz2HIk6aQuVZHdRWyv2zImPBC9DEbCYSDTuuHhixDCsCAwCAlLCIay2NiSQWBosQ4O22InrtZs1xJVJYgOI5ltgBG0GFr3L8NE0YJbHLQtUXT96xrHuCF3inICdxFHYJHzktBgxSjP1DSZeACRV5FQEeF+rxhQHWP5/gX3ACn3bBZ/ekSQLyQThBg9TWrg2cS7hHxRzjFsn2UZDiUatYiAMsYItQCAxfCIEhCbwsbJ6rN4nCH7RnPVaIDFxlcmfeDgDzcfSuMtMmcODVMkEsdt10FXMO3avUC5xzjGvCFCt3FwpHV+9lGjJ2yxrowKf/8SIduJFNzKVKUzLFBDU/cRI9+5xdGdf3dm9RJ69WcTZR94eaOnxaur1HhZ5x6ob1ewMqUOu1LnQdseN/uAL0' $Garland &= 'eQCpRjQA4lo3AAPE6Lh6cooKXWRLzi+M8Aq1UAuFMFY9JzFg5CNcKEjvkT3GytYoi4p7EU8b5zov3uCHcad/fcIKEt6fMOcxrIF2SSzJywtpcRYooZd+B3g2pzmSIjoXJ2SxkpyTSV0BzgsHixrnYxul1BUbmaCW1Xae0hGS8AeF8Aq+/wquYAsCbYiJSvtK6iPr7EY240gFjwkbPwxn7o0SNV9cCDUyKrIH4flwUm4sxDlaSnVwSRCY0K5RoYFS/6JtyQAl1BO7hZ6cd3UD5PIk8iIbVULTD3eSSWcklVEcFAOvABHGh0AxPdBgQogGzRk0biRhWojjjBgxYRi9YrRoEY6CEjPtG3ZDjA80N8JEkiRsGCZJJW/gECnGTSZimdCIiQFAhYEVMcRkUrZP6FCiRY0eRRptWCYxN2I8xRFGZBiFCsM8HLYSk9QwTcMQcyMwDA6N4GyB00jV65moCqf2ELNwZMmRElm6wWQT4sIwZxw+VMiQKtWqYvIqbLkQE0M0fQ8urkpV3z5JkjKxnKyvMiaH9IQqE4bJ89BMkZTpQzhUGUKEw/atDooUpI+6BUc2ReNx3rxkyVreQAPXpP+kYZJuAMeBA80kt2KGuonbsGpukSLRpFE4MLZs7kMZqdBS6FUtQq/MF1okZqIb6FFhoiEpPXuyz++Zl6SeUth+lcJKcuxBuRtowwEuH5CDCy40tjsKM8oeQ2MoetygryUGhwlNtUggeugzyyQ54yNlmvJhIjQkCYstqkxSCCKZbFIxsDAcCs42BU2UqzrlxKINuIMuAxEilhZya8dCavkGHLQEAk6MNDIR6YwwrsJEmWRWqsgkmKSq7qkYRAKqOzHHFFMfZe4bcsrjfDqRuP0eAkoZZVCUJKOzxoNlES4jayywqGiDbySxlLvJRIdo5JCxS1paUS6GGLuMSBMjCSz/rr0YU2ifaEC87KPXWLrkoKH2w2SyoSCiRxlRhYoUxaAuMxUpZURKUEAfJBpm' $Garland &= 'N12TEWYsHAbCIRJheGlKIuXcuOlAohSKC9kcm5IJIpJuIJM7MWDYYgvxzHuFkFrGSw+x/6xrFruSPN0Hk/eQFaNAaIflDyKCFFTONgFzYys3NKDhbpgF98mEIZb43QcaywBe9TNehBlNGYFXNZizMD5KhsU+mQVuUD7dYK4rGaWTqqLoGmvrpQF91Pcl+MLIC0RxI3k0xzAWecUWW2quJdyD5LSpsjc/hMnkrroSQxJiCK42aaWP0ofX0CqLyytJUNovq+1UPUOSb78dDz181XN0/7CSuipRueTy/Q8uqvBCg9ITH3WWLRyJbLFQSQNrMbGYgxJyVWUcgkwoet4kSlVM9vlEku0QaqOyfTRD9zMGk6HNwLFuwkRX3tqZB8OIgp4kNKrsUwgmYlSDDzFn3QtjEjckugnppV9TIYYtYiDkSFe45Tbnym6a8lgaq1r2cr2T6ypeRgmdbjqG/jT2hnqIcq1wNERkLC/SqkwmU9Uw2e+zE2kc6iHoRByLIZRtowu4Ni7+LTqGUAzeR7Uvbuw23NSDaaD4UGzbQRgTM9ssYluv+MYrLNOVwiVjHsKoTCS4cpPKYCUZsZpdBpFipqXcxCvE2BU79tOzCA4rJVOLlf8y/MULmnHLFYtgRMx4NJYE2YY2/hvLXNriLsNIRxLJmJNCIuGskBFmOpcCWwAJsxe1MCQoLRrGaeiBiSFOLUIgCc3hhuKvYaDmX68BTBs+4q/IAQyDuQFWVdyQq9048IEPlMSgpqQSqejLRT24QeSgpMbftMVZ8KGWBvexBS1sQQXa4taReGeeReQsPV3BhLmCg4PtROMlJGkJ8noQhmFVhGTxuV4obfKG5kVPdkAsykMmQxVJLIo0IdrHQkbzuJTwIhqvyVqKPMPBxoyRXCjL2IFwkz/5VGU9IAJQVYBiE+BkIhPQCRBbkEMu/7UklwMkkjUb08JELqIl9LilUIj/EQlGVIYXFWzJQ/bDuXnQgx5o2IJT4kITBgmS' $Garland &= 'TMPQRE1qkolJZI4382DHlYaFEpZYU003iOI+6gHEzkWiENtCj3okOhGKOiouwEHZyqYCk7hw9ERo0ISHjGlM69CteY3BVNbE5Sg0uAYTbHQghu7SEn5hyHGnOoMyluEgkBykJfSBCH0kdEWhQOOioESDA924OWS0IzS5aVcMWiqMpsDFde16CVHeCcOruI5kYTAXocqYNGUc0nZVKM94xlOLQuyOa13bGgyz0xjquaswAcLBQ+JYEeXQ6aR/zU0PJlG4Mi7mdIFBVmwClokptpQo6vSMqqzy0tPUQx/6GAZ9oITD/4YQZkswaQtSRyovk1JlKEVTRsCgRR2K/Ek6tHmYSrMmGLlYxYDcWsQw6GGmWU7CJL9lZUEX5tR/YvZ6S9FEVsJkT+YqI4T8uRKImhKDAxiAKnFajTol0Uj0eBNHtBVLY0rEv8KYDLQCcQtdZBIbVTmGgKLF5k1eMre9BGa8IaLHP3WFoSqeyEz7uV75FqKPZ0piKGdYDETMdCIGZaJ6QkkZtPK433m0AxkYGpZChMOylYgElBhF1zC6W4gpnWhdIznDDTGYtGxRYQtUCI9axwMOru2OW9kwTzZqITbvCQW0DIHOgKgyrLGINjdjIYhIQGuy3GCwSkSxyUf20pLqqf9KcTYJQzhjqZ/XUIVSkciVPnZbD2h4Rr04ik6xjpNRbKbUeX1ibFHbO52XjOU4HI1LvmJGN8IwhjAaeSgMhVEaMSRjGXIy2QHq3CZ6YFgYFc7vbpk7aaTkdx7ycOoI9zHLzKSWM3rFG0VnVtqbuIFnRBpM5ZJjOQn7aEZ+fakzIzNRkwLWKrBjiEwSU6iBEGdXunraEBks0x+SRjGL8ZRmAmhgh7mhKElVjcoGZBthJMPCFh6GCJ9aundB8Dgf9dUNgiLibz1UCyvQwkVHVhXazE4f2XpKeMRDnlrQuBa04B2+zWPjcJEEB+UTMvNUdMJFE4gjt8rXgCRyw5EAB8r/D8al4lSlHgQL' $Garland &= 'RTMP+2K6NsQwZVDlUdXe7S49U7G4CIcu1GEd86YTnz9SSjAYvZ4yNCHfiaBsyXQp0LQVxFJimIlReLuJBNVUR8K06yf1/Ax/hCEPpVLa6UZxblaG0Q5MZElkiKlgqOmmN4rueVmFmYiBjnwg6uQwUI+CSD9R1LeTNg5ZAhkgSQYSJVpTlFD+tPS1kQFBxSAYwxDZjssgxapQLcSlCduHb7Ts4Y40xU0PFIa2ecELLrElKsSp+s5BW5Gb7W53hTBrIX0EyoG8YXaTQDchV9BWtdbCFuXonY1foW8dw9By/EpDnd+Tm8tDkEffro6EOaIjtggnxJhA/5o+FJIMaKCUwa/ROrqYAr5hfGJkHJ5HZTPjmfTZxsNaMll8UkwksP0xbvgJb2O4VCy3aElf/rvNQEw0katZR2xGJIlw5n6GqQBPwl9ihKxoh2RwpxV7uqe7rBTKLsA5CBpxuYUQPCkplD0zsKFIhiyRCuVQESMLmuaoDvwAusZ5nz8aH2IaqWkBwXrJtWSYHueytn8ShkwbEggkFZSIDeWrCkpZo2T4Czc4g56DCIi7jNEwFiRjsnXaO6VjiUF5iTfZPQEhCwNyhSMxN0O6nXhSo6oICsvatC70wqNYBEKKgSqQt9Yzi1pAQxnbGn6jCoOolz85GWaBCwAjkXZpC/+ECDKveAnhgMOQgr7TGQrE2BQjQj6WwJQTMbYzUAnIoKiUYIdcCTkxI4o3yCHdMxm0WTn0Gp4907qTCi8dOSljeR6uiAsGyR8VEZqooBWvGL4jOy8cAAoyGwpJPMBa5A5i+ITMUobdWgZ6AJK8UC4XmZ+/eJvlkJNDg5LjGKbsGBnvQ7L+kSOT6Ir5GanpsAmyUwjo0DB9kRv0mhiiaCN2eCAM44VhcBYQ0Y8EC4oRIcG6cRkQkZOGYJCD2QdoCRBgCRmE6I+V8JnfUZMAFIZ8Oa+ZcSFueTHbKSSpQgNSGomgMJXRiAZ9mB6JnIxZIoYwqAIx3JZG' $Garland &= 'Mg80dD0aewV2t+KdnGEEf+O/O3tG1gIf4+Co4zgD3XKnRstA1hEmjuKX1YicxFiNPGub+robZwMYKVlEwhgIB6ua7NutyiKKqlKz+FuI/2kM4PBJNTpEhBiiDaGUl2g4jlKQ6FAO2li/bzvG1xCUtri19XAwWdPCyeAZm1gOW/+ESzI5jaGISCvJRZ1KIa2Ak1b5KKCoiah8jxLbigMJmqYMOFqRC8L8KLo5xINovxIElBKpHIkSNwlRoaUbBmTQttAYhj3rj3SakzYjklCBDIWAhuIgKuijj4hIo2mrM3RUv6uIhIVhFJahIwMRiRaSvXLbAmxZgWzZghMhiUwwFS58nIksqum5Jc8YBkLKFhUohNxBoHmzBSSxhQTKsTTEsUWgs+ToiIDDDzpyjyjRLTFLwJAoiQO5IeA4kKBoiVhxSznhsU+rNYXooBOxqYn6CaVjo12kB9mBkld8ShzZi2+byj2DG5dzmVsLPh0xL7n5DxXhiEmQk7/sE1iUrKj/WS5N8cVMkIQ3AETVgLi4JFGmOTR+ZBcaWUaSYRFGWbMlQhFo4RKP4oiDw6hXrCEtCZ7GzDUDWbdhgogUkwnvs42PuKXUejSl2w/aLE2G6I/GtDWFKLzr8UE0iBVzJAbqCCwAMZtn9NLheJNIWIRFPC+O5BZvCcnorAJsgYE17Sg3mEguhAYu1IdlkMjH6UKJlIQYoAI+RaTxsAUb2x1w2AWuoYUaG49yAqToaRdfURsMwY3jSJ42kkRwooseObjLccztwLI1MgigMyko7YuhJMyJQImF4Q82woSe+4ymWDOVOxbm8KjpCIOdqwqXoRSIGCLBCBA1Qx5bwY3C/D5M/1TFLXEKkzGZL/mSuEgDGY2KsSrREs3SuCCaKpoIkTlWSV2T31JFSS0acQlSQkmOFyW7G8UoX/URioKtqFCp6VCPPUkyjiClLMSP6iAGnhmyJM00ePkdBe0PhXif+rwbxvRKooCI7xMUYVK4W7mV' $Garland &= 'WsGqmRkW8HlE4+gK3VwrGXsFLagChMyWigCKzMhTL8wMLvQMaGAEbLkd6RSPb1iE3QQH7DSPb3irxBCQSFXP6sA8O1NGlZAHSNy0yxqGlpwWs/GRB5Os6dBAUIVSxugP2+iLE+IPEdqNlRiLe02tX82obJSEuSs5Vy2pR0mM4XGb8QE/rawVBGnUmxuXGW21lv/Uw2x1ChgIPrjAAQAAgBWICYpAumg9wExAJbLap13Dm76RplQssRWxWSOqM5KIC7AMkPUDuj/iEmW0mOmADv9BI4qosxtQJ/CZBHQUhmCIIPV4qYQA1Shlt5hBnd+7jSKMCuHAqo6wM6qYvGqjKo0YSZntyPIohBfbgt/UguPwlHqIyMex08eJrMcpXn0gBjF4TkQqD9fjFnxLw5CsN67RsUzilwO4leBzDzQIDT2siJTITM7ZRTHzRZiDRndhiGURTcAiwbF9qe6ZkqmBIAhKp0X8jTXT0luh14bQXDWro2w8KSkpMWosHSarivdY3PSh3M071ztTL7BypntdhqT/ITDD4NsNlp3CqVBnYg6K4KsSMyii479isbMjw4u+wYQ30MoFRuE1uwEV4R+p8ItqXMjyQtaisy/ZnZISU8WhIYyTeAheYAmCwuHmQVCgk7sAE4qgFQgu1T9j+ZVfYRJGldSsaYd24IVtcYVa2J2z2JpyK4Q1JaSMpApl4BeJnNOK5FAp2jSHPNkWi85XOJJvaKsDWqQ03B3urMx9eEa6fdyV1BKOAp8HCqjdSBXl05HLcZcAWZboaGLG+NSROkSw3Yo2gaBIqIihMYksiYpOHproKR2oCpr3aBYAupvGHIxu1dHkoDMxmFd2Wy1Xbcnhk+Eg9laKWA4Hk5NUSYoN/y5ROVEhZ2oJV/WSY/WYwLAMFZrBw3iJV7QOlZGwNIa+oHngN5S17mMRxjiUY+baUMYq82oXFWEE12OrDEQykIpHT8oKIxbcaoTS+BC/qoALdLmJWvEVEnldaGFg' $Garland &= 'G33YMOAFrnmr8fiGgV6rtCqk30TZr6DIx5ETfYiGpJSTTYMGYvCMiyTDLTCPtHor2dM3JNmaV0gPoIwlrTSvq4BU3bsK/hRHVd3DkTiQ+YqK7aCbJPqrSv6ruJGEhcGSZuKZJYsKA7KZHbsNuv2tEx4ICRsZiCDBmMmaZYqJJcvApvAUpkDWOxta8Eujm1AIZ+In9gOeY30Kp4gBj5kEZxqGe/8VZlss5rSmp4ouk0MzE57ZtWIBFgc1y5C5gRBVhh6JXWX8IuUjjHZEWqW23MiYO2UMg490vR9+DwZBlryKrlBDFhI0opueq+AwJpv+6q1dkbmDKiGryU0aVzFAj31T7ZAGyZoJSTvego3W2DDQhMmY0zh+aIhm1YjWB0Z4MfEQD1eoTtZT7X37BlvIhj5OD5te3/CkKgc9g0XABFTlj56tOmnDjctQD3yei0nODh4FunZljIe4kv+IHFAgOtS+zjNUk8IEJRLsKP4r4LGeEnSZuQ3zTmWM5PwxOpR0292jCwoFJ2iQ6+6oy9TCDsvY0LZmcFlJrYLA7h6pxA+UiXv/BQWtKAryWjSYGKxEfMBau2QCXuAPVAiNqE610hOOKiNN8ArHPEQAwpQSUWKSaExQEiqsWUeMKRA4ZL+AU5vG7shFWis0rM4v/hbeXehsYYSKnMvRoEjLShUpio1hsJ08nkIksePZ02ODjiv1gLI7O5mJEZ3APJHp5o9rC98AUZkeuOr2hTA3m6sQx5fEVmIdT83HqZtduFgaYwT5UcXUUYh51elDPD/iWUrreN3hi5wsXRA19hes+mfkcEXBvtdZavBLt0VoeOFM3L1ovjOM+0GCkayTpGaHGwpNcBmPUyZipuU/ug0fMReKUKRuqqoQjWMQdJ5znErrmBtmSR3x/6MN9ooLodgLdnlcK1bYHc9N1c4GfPviGRtp87iZ1y4EFysk4iSzYeDCylrjW+KtgomsLeBdbpl22dOd2WvtVwie7SgWtnC8K+m+' $Garland &= 'DTkhdfo7Fv0JZnkVqrjgfbjcGqHxdWO3fG4ehIgvOqNQLQMYKnIDbkLxrK2hnD46OTFsItkOo5pmrowLLcsfB/2tWhZs+fiVQML0kbfFcnaXxfaoav4oA14PqwUSHV8zMVjH1VAdvImco125QLns7ACO28ItgggwZagHOfEXWwMywKCb0TtEGc+1ep7yrMGloN9DRu1V5CDIkewdGjvxKTRyOwbuPt2CVHGn0zjeka3UJkde1P/+A65fqwOawt6p3lqoC6JC1vdwKuMo88lDCTV512IJEKCEQOgLA4Lx6pNCqk99FJRBMLf8qxtWiF3UqVSxicbZrkRS919plvvQl7/KBKR5p/cdhoish0zA5urQvZ5bBqzOagdt3M31ThwiCZKXfUqbFWMhEDsbz4jYJIcgTmeaiby4V6ZwDIInjDWTNYGhIvB5KUuPBhiBj/HL7LI8suBGD74GDquVOQ9FFriB0rwgwYwqkT/KP6+elthoEZo/A1PRXDgklF1rJBzDtwRi7W+QPWkH4zTt3TCI8tfA0ycHCH3R9O0jqKxgPYK8Crkq9KpQLVuvJtJ6ONHVq1rgMr7/WiTmBpob+/Ypu9FDTA8cYYQNE7YIEy9eiwpp2RKGEZqQYU6evJFp5LAzYjAlQxPm5z5JOdH4OOOD6ZmcbpZSBbkUUxpMS6eicRM1Z1Q3mYgpK5sJkyRMaGe+argojA+4N8Q8XXryqQ+6aIiN7KsMbZgwNwRHlZTJDQ6TdAXnFAxSGbFMVDOV/WjZ6kccKgfj+JgXB5q+okeTLm36NOrUqlezZo0mMY4zm2/cSPzxhg+QYjq7oTcS2rBhaM8ItmHVTaScStFqRSPpuaRIaIWxlDcM2siDyiRTzZnXB47cu3viWMRopsemYnJiyqTpbHeuS7+iwTRJ6dLBYLt3f/r1/8ZB+4RRnySF/TaXePWhIZkbSklSy0QTfROhK9/YYguEGBGSEYSFOESITfSURZA+y5RIEDQJ1ZOi' $Garland &= 'PgcJ5NswhaTSkCu1ZOjQKxtG+A2EHS2CQ0piCBSGZrWFgUlLzy0CBhVUbFHFFjWFgZ9mKWHSF0hnaHUGUpOApN5S63W1X0ghrRcWJm/ghwZ9S63ZnnuZLMcmJpEsMhMjluWWGEjhoUFXVPQFuEx2yswTnDD3GWWUGEKBRZdnt8VgXBhiiKHUMH1lAuR6KnlKJG24ocSnGAG2diqqqaq6Kml/9vAnU5f1SeRur90wCTTEYEJdMuy0JEwk0DWIxiUKOpiWWtRRN/8MMr9mMswyytQDGXdsNioGXNny6emrmYGUJVWSDLvfGUq1uRV8YMHmnXJTwcUmXjnhkAxJdLKJRoAlgZRGJmlQ5a8Yi7TVI48c2cgRwj029BAjZdFzYkIF7eMbQRRPfLE+MW7oEIY4tlXIhjWC06NHlbpB1m6cgdSSTGE0uQXMUUIJs5hm1jNSGl8pJcZIbzjF7lOvKshUTj1Z5ZxkzfEX1rnOuTmsGynnVNtcVce2GHv3oqFJWdq11FKzyQxzqDBoFRiGo2icZOZgjEgiTDLzKEMPWpTpY1lsQKqU11ydrT01UqwKPjjhrPK3npFT6+3YbmHEQNQ8kVvHUtmXIJv/rHBlK/v1rmnxIsxzY1E7zFSB8v0d1ZvZpneW63ElX1fJ8ecVmUodlt9gcU02ppiNqp1TJtBIUtfvfWkWeCa7ffTnIgrbmE2EE9WycI6vdFw9IYy0qE/ELEbsm28sij/txg0VPJGHfhg8YUZK9UDZplbPBfoiW7wssxaFRPlH/jZRjVRJiGYUZQgPNI2514C64i+t8ekqapLPV9rAH2JRZSqSkGCgjKIZ5fWANrAhUlxiwyZxsYcsxIjMJGBSp+eUbRjtEBvnkCQnBKZlbPOgx8O4pwzHGcmDnrKKkYjHFBwUrohGPKJplPGanNClNrJRHJGAl4lMfIIYNoxc3ORB/x1e7GpXwvicsjQ3HEcFKxIsSdoUudOozuAGVHmTyw8/NZ/6FAZ2' $Garland &= 'TpOg1ibYIKXFpTY1c05zXvUUA+blUU8UA1K0Mpo0qIw2ENnRwW50kejxSEcQ8Y0yTkQxekSDHtB4EfdCSTF3OGRhGHqIhnDkio1kZBGyMxps5hKYJ9UEf/rTQhVoAiUpWQo7+/DOGplYl3jVxQ0phBWbNnOVoVGFPlHBoJuUozMybatvRCISeYp0pnvxa4qY+mKBhDKgKb3Ni1+jXA2ZNYxkPIxi+hDRMKa4QFFZhW8IWs96kKjPfRJOGU3MjRvl1afQFIoeYoucDX+lLC7y4lnDSEt0ooOG5P+IC6KgQwsgYZU7uIgphB70Vkg8+BN96GNNpWsmBOdDO/oYhoR/GsyXlvIGPtqFTXc6z3mWcpDIjGYYW7jBFrgQBpt47BUjawuFBFY9G0mkIRBxxycjpp2LgW8f0OAk9z65jxih8mAOAVkpOTQR86hMM28cqv2iBDMn6c9JWwBRFUDEv0IQaSSZAMmd8vqWqTHxNQ1yQ3OiYk8xYWJcEzzXSb/ClTNMJROYxA/Vgki1bTZGjr2rj5xAJ4lxXiswgamh2JD0q3bckEQJmdt2JhGg5CUuJD98zRP5KdvZtiYaT/RUSJ7INoKOpEXKksc84hY5dnyROkjyjV/+8tfhBAv/dMkBbLHo0hkDrglUVXtpZhApJ8r8BQ14VM5+fKcUO+oxLflJTBSVAx9AgeYmHrJIRyoVmu30hR6ZgNnMYgBUgfWoFgWbnkV6JL0OfSxT4QNfxbDjSRW9syAmogdDHnKwGr3iD4TAUX/fEkvbDCYGW4hBLWm5VpgRAkpsraWHwlAvMZxHqQ/ZK9FepRWsCLCPRzMmefMIu8Dwh4SYgsZ2krEdUC2PbbbZStESU8ioVCpYvEjOGb6VkzeURTT0eA7ZxjY3TR4KE3wRDWhqI8wB4RYktD0zmklDjLiweWookVduvjwaYZA2csENI+iMtcdMJEMtFZ0STDbboGIZ5SSy/0mbrT5FyOuKRokOcg4eYScbxiSw' $Garland &= 'mXlE8p8EoxKiGROi7GILh065iJBkYhIEVUZaa4LLmG0hrEZl30U2ZEnrfYMhf3AFLyCmjxRdFWOnnVgnH7ZVh/gBIgQmxIWl9wrovcVIHwQq/kwcs/6tun8l3kKxO4IDyQRMYBc6WHyXiDTDyMvIhO1PBqkiGMJYmnb7oY2Q+gKNH3aqalIzIGjC3Ji1ReUSvCjQmP6EibLEs1pHGgY74lYxkm65NLKZi+LE4Aa56CXNFkdz8nIj7ny7GUClUYY8kvFChM7ji8NB4BwZNaC3RQIkmGByFDUjmz05Eb3r8lY0RvPyexVGj0wMFf+RmjbBn9OGUZHA6U0CUwsc2QIcTYfQXmszjEm8dQt/SOv+1gqhrR9VYR7DiH/hy4h27lpFLNKOQd6JnYPQY2NifUgh1IewjDDCjdd0XLXVmmppVx3rF/7qj9Bwp1d8AxyGtwWOCrGIMzDi6OYpWUhbO/SawlSEswPv1OBtquxQrSue8pZ4PCibIidzQNOJaH70ezWhOGqdqCXIPhKS89K8RuP6jlWZRHLx3fOTKRwVWu7ZfAYXXSxFIrfzPJDRDuOaZYb3kgS2slUfXhCHjiEBz6GrtDxNE/kkU6mNJEhT5X0kwzBbUhqm1bYtTbO+O06JStXutHWDLT3CTAUHL0b/VotOzdJJNQFRIfhfWqlSRkwIRkyErEHIhkSEhiwCVK1IQlwVST1YiQgb+KQIV22IRHwIyEzS9ARLSnDGUM0MLpXgzKTaW5mY/pTYezVEpdwAI0SE02FIjyjeI9FfLQQGbvEH8JFHqFzaUrSBueTEMDiHL/lSozXOz3HYRwRdvt3FcbzURKlQgVThGVzhVXAX3YwNxhSEb8yeaJRJ3mzczCXG5vEeGg6OMtyFtkBKIQGW+T2ag6jFOrUERjkKmYmT4DEHdATLgADWEo1heBDZZFlNeonZaSjDMBCQ8+XEdwHha1yTB/nR34TJFrgY4UWPjuhIRjQdLNTCqKlELlmbi7TV' $Garland &= 'UglqgbL9V4Qk20Uswsh8VS+0k4KRREJg0sOgXSYNW4TcSNwVVUeY1zXBQBXAQFq5lSlWQYgZY6vhktu92IDwl9MJGEYcIEfA2kNcU9GghKxEFjJNXncQRYvMjWksg2tNDd+wkbfcRuPwTZkYhUWVUwv5mXk9WrkcVybFU6Ws22bwn771yW05Shr/BuTgTAJouIEmxJPavJmLREvXNOQiPssnCIdaZBCZAdKuKNTndI5kQNYSOdFl7GNufMvVsCOhJFf5tQdaeMVJjZdiORNVYEvVGOKs8JcMXsiEEBiFZMRRecQZzISTOElcLWNcnSAV3KCN3OTGFBtGOEREKKAtLNj2HFgnZRIFLkM7cdUjeQhYRUhF1IJavNyH7ZLeyQwK2g9NpGAAYptWZoSHeETAZIMtmIOAWYSOaITTRaOPdNxt7CPETR5jac13OQq5edkZDoPM/cnn0ZMhYl+Y5YWMdYVwfE5waBk9BEefFVYkQJPpwc8UDQMokEVZEMMnzA2vEUMgtscncIfu/wkka6IKkJEGa52haYRjwaGf9InWoZTc8oHRciyiMkSN7rxkJCZOZsAFhyWGY0kLZKTk5aRFJPyV+6UcmcSKt9gdW0SEOcRl00lEyEyS9WzEnWBLIfwBTazgiMGMqskMJ1oPuD3E3x2gjXzIMHjSw5iIONJnJmHSO5lILxQCKhgbyBDCrUXYQ3DRZm0BMZZgDCDjCuQd39WEWP4dhr3Cf9ad4HUi+0wj+miELeRf/klEfEWWCILGH6UcS3XFVxDHbKCNfkyVEnHG9VEcEOFWiWpjJqxIPHkRnbFTDhWEIhYWRmmN7ZAFa9wVvpCGJrSmkhLOFJ1Gi7iekKmFVzRKYP9AnG9ikXVMDnUYBieJiFZEYZJxxpu5lhv9DBpkCklsx1deEKStabq123SeywvuI4ZF43bKJV0qWyQ9x1eV2Kr5gVBCKNblD0dkw4TlCHmqD9OhzyLgUCeFUiYp59w86ohcGYYl' $Garland &= 'agfuoiuhARjEDBV4WFlCqKq1FXqSJ3kuVf292Hr0yFGxJSpZT1weZayizzVxnKVpjdBZWqVNEGH60pasjtVEjWshyATJGHJtRx3ikAQ22kNpiZa4CZx4U5OehmMtqbXOFm2Spo/Cxzhp0Jn60jsZip0hnLLQiz6chVqwSyAKhW38TW2kRDvSy298JXPWh581RzJUiyN6Y10IHbb/8Jd29teFVI9FYAQrLcJzbEGHjGfVGePVgUi0oaKATU+PvCeGOcQfzOf2sN2jisg7tYjH0gPiLWBDJJvA1Ih5hIEwwoAKqAAVCGMtIWNZIuMuWRhYUY8C5kiKuUEMKpt3QoQtwBpTgeheEc+bDl1Y8FxOnOt+rKlz0MeNagpfLY4YvAFHwVttfEesDKG86sMLsdM7RcPNkEYR5oTsIM2kkkRkoMEkDAMYXivcIpEiPksu+oWc8FgzBU69SMINiUjkLJ8w+Mo6IYtzTFxixOhx+tVllKNoZIJ0/FVyIImUFgiaFoV3WZpLvk59TMVU1AUjfEhEXATX5ezC2J+lDB4q/+nSCoqlzNbST85feyJqthlb9eAQSdBnlzrMVDoMPVzneAqoqzECL7DsCtiE27DYFrSsWs2MzDoJIcxuTjalhzQEKMoXqFXPh7DnXHKoRZRoYwEiuURnwEkCdugDJvgOZgUWm0QFmpIE1fSRATXhuuTNpNUFwIVBWQTXw9wMiZDEUSAh3YyQu0DcGQJHTqhW3CYwqwiZbNbDJ2zJV5yFuCyiX+zcGcANSb1T3CifcV0CWgjhV9xFvVlGJXpGbQROUKiFdFgOn6ErWnxCbzkt0koFssCHvjIPJlJj9GAvUi0d2gSMhyysh1TbWaoazaqVhUUPgCFg3NUlhPiBJNDnxP882FU5TH7e41pe2IVRo+KtwIDE02ROZiYwgoilZ7FtCCYu4CkxBFMiHkeFQfNEGAfuMFL57Fv4x5jIiTGliUuhKNIiktQKhUH2WRUWzZGOBGKG' $Garland &= 'FFiwI23c1hK9aRhEAmpZTF+UFKPoraOJhVY4xg1Igmxux7QqsCijSovAx3JwlyKOX0GkC9LEjUHRww0hXDKUTVoAlnAAYmPmjq3sRlRkV1ysHb0ulzJcZt34BYFsiR8HXFfYB46tyUuhVxgQaPQc4FJ+jFMpXspEs4QtZS8CJczwT6uRpcz6Yg2CjM0iTCFo7BWH65ZNi8MMwwL+7qk6xE21LRhD5CLW4Rjb0lr/IhUhbB0NWkSEdYzdvVcz0khG6HDqqmM3dkVa6PHl3Ut73EuA2NeiEKbSCrJv3NWe/OHeQNwG8cS9SFwjRgIOkdTYTkyu3E4Cbd52kAWQcdtgIJJsjrJNq4aXMsfAVXTXNBoyHxdw8BksYxHZWI5a/OhXGsVTcBRoCIWo/JxrxZNRvxyS3ONXZgLs/cVD5yv6kUmDJE13DEjVCMYlviqFJR5SfRXc/VRtzMTC5KyHgIifoucRJ6MWzKWGxvUfSJiETTJVguyIOIw+IJ573izd2cIkPEtnOlRkDAMxJMNjK0MvtBp88bCNNCX6YO/C2l00lw/B1jFHUA9dRRZjdEca/+yxiU6GcLBJ4CjRovyEMuwMky3IXflN/IbQARErbzjNOv1JubAT8QGFGxiYZBAGZVSyIhLDsSbPNQHyTT/3aRTcIgJwT8ubcJzyQax0MpCIocRN2dDhMKMrt35GG9VFnwhSePDyVyJHe3ASV9eHqRDzOqUrJDJTd0wWR8UFqPVpHeuIhqqqSrxXEFcs3IFMWpHgk2Cd8ybMxwjohalPh/ACJpGmiGxZ/s6NwDy4HC9Chy52cCi22EB2iBMDSQ2DUlHvZWNIq25x9k7vaHeGNsOXKikVi0eI4nXGw81GiSpzfEh0ZEDfIW/V7xypa7/Ku2jj4V6fSrxB7Y2KmboUd/+BxTBwT0/lxJfFdpFtXq4QqV9MgqX4BHSHuWgMxGjoQ2SLxrlKQrEQRV/oCibA3kgkg9h8941Cw2VKpFaARpsZ' $Garland &= '0Gu4oVhbBmDtUYAIh5a077lqBfykpDCMydH2B6UJ0Fecx8K4woVs4NaBmxyTmVsPKIegtVYWMYLLLJRc2NJRs86eceLNZ4XXwy1aMRYnJT13+GJ7+DAc5EFSBgX7xjnQJFPV4Megj1Nhr4dwCltEWFfOpS30Qoe4BbzsR14IBb8tzUkhDdosyANHReCc6w8jRRHqRgdhzXdwlLw8kZgdDX6IAb28aFqIjUuHRIAAx20cxWiAsviltJjfe3ZweV//EPJXi4ZEzvtXWs6Uk59auDAEd8Yg3UVCsmFTSMUKvbufYTJzyHm6oul+LJauCpCzE01gfEgv9BaIsiewM6pgcPjSwZ1R2Uh3svHvyix6vvyCR89XmXMHFoItTPkw42er41B/vsLsLsItlFqpJYpwgDEYs7vr9S89KPtGSCP2luxDpEKyFRtdaQYcX4THtOoitK/ApNhh3bd0ut9PRMOieHImJJBoaIL0+ar0FV3NteMgOYUbptvOiMHaYctrz/t6IKESNRBsTgK+B/5oAMcZanV9yGt2qPkZujlzrBa9+tlXsNcTBY2fW6QKo/AHt+9WzRhwDEe+5Gqb4PGQH86d/xQCnCuDsR1VNTsVkWyB9binzmrEyUsz3PFPFbjVT+IXoZ5sWpvz3z1lhYtI8DsMI2ixhyT7dhlGL3j4WMSTFdEtpHqhLaynWrNxZsuaWlepGFi/6DZdW9iCaJDSnYTJ+y2FEInvuSDX2Z8EAY3T5rlWqWRH/S4Pm/WJYzZRmfAb+n4fmnI0QIS5IQbaPoMGM8VAcxAhjhgDlTHclymTRIsXMWbUuJFjR48fQWasR09iMkyRMA2TqA+TpIgMlWGS2TKZwWSSZsqUdOYSJjQ3fIjxcQbHTx9hfPw8gwbNTEluJEU7iAkqJoYsoQqLKQlNxX36Mi1lOpZsWbNH0QxNyv9UDCOG7Ra9qgXO1iu7dwstEnNjUaFa314VCuxKri1wtewWcqVYbuBChahs0bIl' $Garland &= 'xuTJkQXXEqy40B9ChQgF5qVM2TBo9JTRQ516mOM/iyT1wjRpGG2KvTLhHpZpd7JhpPXtU6ZPanB9wwSHDr2YcHLOj+XW8vMYx40wgl8RvmsYMaPgBpWFEZOW/NikYsmiL9tm7A2VBtHsrcg0DCiYSMNoOqhMTI/+OJASCimiguohLaH6QyOMsRZkaiCp9onPP/csQiMGr/bbCyKJXgrJww9BDFFEEE3CSRkIDyIGEwz3m8mNYSDMJCefaJTJLEySyWSsonA4Y6am3tuHHhpZjIb/K0mSicmnl5Y5CQ03mBILPbEMRGNKs8QQa0XhlhkmrrlqQQyx0B4TqBA/AntFucD+iM4WMe/Kzi7NHovMzi0kq+Izxuwi7I/OPhsGNdT0SW1QXjzLq5dJZsuE0Uky4YWi3SglhrTh6ilUSH0yzbSuxNJUc7DNCKvFlufCADCuwBCL7rBaFiEmGnqiGaYssZJqkLwz1hpLyvR+WgihYMFSkMUI9xL2qzSIShW/oJISww0dxUAqvl2zVJC+G7xSBg0cku3woA0lmuSGgY4dUd112W2XI5lMs0jJeiSCZpiTZCJJOJ1sbKkNmTKJ6F6ZSFuR3kyA8hGTNnBiKJmq9AXv/ylMCmXKKvAuaSpKs9Qzb0emDOyx164oyqQtxMyx5c04FxHvBucCI5O5zEwNM8zG4nSuCi123nkFLR5jLDnH/FiknUHpGUbpdrwUjJFGGZUNUtx4481SfU77Sjh6oMk0GuPq4YUzwsgUtRBUNsNuz0LCMFPUwgxbmZFpNZERSjT8G3kt9X691cooi3rJ2xvQIO0nSSQymdx9iDHKuqJuCM7kwh1Eo6DGq8xSjPEEIgihvQBMN5MFLyLmhgvdTV311UeMmCF7cZRXJjcweek4TBRuCqeZ3oNGxoB/PygZbVuq/SCwJJHk2JjQUEnHSIgRfid/OSZrqI3/zt6sN9hiK/8MV8E5zGxnoVuT1M3uqgWWMN+8GU7E+goDz/kn' $Garland &= 'I2QL9Dl75TVBh+Gl/ZULIQle0EZ5kyggpX5DKJKQpFCoyZTWOFUQerQKO89ZjJo4Q6ZUBI18czIMXQ7TMsKNhStlsdZSglIev2kvSuNZ3OhwMIwmges7B/kJtxhislQBRQwdGo8mGre575gMPTcgCui8ApbqgOsi8rnIcFgXRSlO0SMxSdc+7oWSTOiLeT/KifIOci9JnKYlHdKRF2FCI3Fh8QwuActSGIKJLEGFdth70h3PwpS1BIVXZiEPDnqAA0Ygpn1zYlt1xACazSjnfMzpU5wa8z5b8KIXA5yNJCaBBkb/iGERnYTO2YJWi14gRjulskWjlFe13ySDHpxypXBcSZpWfmUZr+QUPSQhmJmNajMbDE2YQPMnZ31vTjZ7hV5GCC3r9VGP2BPLCNHAPV8xBUoLmhCGlGGdTERjdD5YY0IGApOfCOQGMTzI6LaJsB6CJ1hokERRnBVO8GhonRIZBoBQREV97pOfWDSeRTBxCdqJqyU9KZ7d/gmNllSEPxjShztjwjBxZYIrF8shRPWRhjA4VEFnqGMy6uGTrtRwIguCkoH4VpYqkWctAxlIX+KSl0N2sGxtMh9eFjM2XR5TgErzqdImFdRJTIIXklgEI/qiSJxpxy6TtFoCh0OSiAyH/6pCgoalWjkrrUnwa/oYZdoA5ZlEkSlMf8JgIR4Xhr4YUoSgW8qVPJat8oxHRzcQlzLC0pV9vMGIPcIB4mx4A6tks54HiYaGJooDHGDCdGI4CDT2YpBknVM8K2pndZQ1kXOhrkIwuGI/QRvaENGDdvTiEMAwYVqDQGN37kyGSVqyHxPBp0O2soo+kpdP3GHCdQbB3UIga9cMLYUrkZCKjs6wRtMJqx5uEAp9ypPCby1Fc4Hcoapg2rYlyk+R3xgT+tYUmj5lJjG88KkqS7Yb3AzVUVDrhQAHiZ30uUJMCTzNaQqlj1ZGhFarwaorGfhAsB0nmISYzp4+kyZC/Ekxmv/50xZSBaAwGKKT' $Garland &= 'hhCPYgnHK3AlBVpEwdU00fAJg9BjICTV7DrVSRTCMWQSCvnKQIKUoRvUJIw43Me5GCIJx04kBmL4zuAk0aVzOREm0upx6R4iWiUv2UP6iJ5FWPtkgNooE/r4xFOkfJLPOpe/03odV9YInzBMYh+QDYM4xQOVM/jWShZJSIzLnK21yHlHROmKgnwAFJeCzlnVUWtnBGOLmLriDxfMX9lEtYhenLc0mkBg1XQjidpAClJQa9U3aJE+ubSjgV1LjTLqIcsklSY1+CUOrYLTNVfWQ4KLGOuZYD0dtIFGTSojRE5dhuFyCgRAEyqKjrSlnvNYaS0WEUPwDNYYHmQLJ0AaclgMcGCQVF0xDStmiDxb/NkbHMCMqYqIUfKDETEAACNkZvK50R0SVj+xJVAZDkUtitt/SoQe8QmOMtxw152EOUJ65U9mw0O4nQhLxxY9iLn47a0ojcxaMALPdsEVyHKWc7v3+8xn0PRJUclMlxU0xyqJ4RveUCo3JaNa1GYjKUZlYpDe7dNc5EIMfSxjUND49M0VqDX+fkXAX9MaamI6NEXuKU1+scWCFclr0C0xzxgO1n6Y0qOx5I0pgLWIG4QrzhtELzw9EkN1OpTNGIiZ3+basQ13TFiMZEIFGCJGD8JtOsxihN/p/7b73T90LyDta0vn/KytupUJ1QqHKSaGT/OYndnGihRxD9WrRKqtEW+NrCiFO94NhUK4cgbSPxLfS/n8oqZUfMbQb5OZXcxbGmLsZvUkp5SkKRp7SqeXGMJIxc20w752pCa/qsHvfl1Zy/4Gp5Wq7tTMiX/07KQNbQpWJGIU+RgII3IgR0GkfxRbnUwU5CvAHhlTNEIMc0rk2F75VtSzbpDTBafaV1QGgO6a9chihLOSJdzX4nMuKeOd//3/EFiKpx6i4SbmzSAMb1hegjfsqSkwIj5ewsbAQyFEyivGg8YYwlYkj1ryRixIYxje4OsGApBAcC++js8A5H5grTBAb//0zsQxQoUQ' $Garland &= 'RiPkhiEZQo43HI3kqoY2bMOnlGEeSq0dCuEb6uJMwKQWVuPTWE2qhMOqFmhWTs3njAOCMoUYaqFNhoZMQmM69CcwtBA0tgB0ygkMj8IHrm8E0UATSENHAsRACIc0MiKbLsINYiANCI9w1In8dsxc4GyePOcg6iHc9kHH6s7NxENgNOSz/C8RFbFFuILGbGvwNIIrhuibIFAiFCTsLCINhkcMVCIaFmQQM8K5qgNaIqz6Ju7rfE3zyNDzhszi0sYuEgzjFOnAOGMRVIMGh4EYPiEXZ7BqSk6VZtBSqEqqnExM+uKXaoER3EG/cK7UVGPV8EtIvmKBlrD/v2CJHhiBMAxtg3IqZoYuMDaobUhwyDTv+pZIxaqj+gQkzwoEXEBx7UhnHzYHDYghXTrEXK4ouPZvIt7j36poLxIQkQ5wEQkS7/TOK1gLDSyQI7YujAix7uKD+zSCKWoCGuJR3cppujDLryYE3KTrW/bMpfwsaPzAVHLKprxxrBLlD3hBSEjDN4ZBE3IEgYIxSbhmU/QrCU8jNY6uLhZsEepCUKLq5pRBGC+F92opIpAPgqbR5lqJCjFo4wqBBUPDM/QHVpIOJF2K4gIkhbKk8gAJcjZMFSHnDT5E7SKkEtdu2S7iJ/ZRGfQDPs5uI6LhJ+hQOEDnHQtyL0PLVs7g/8ck0SOgYez2o0LSL3EOswEB0cU+xGQ67+t+IvOeqyzu5vz0TENSJZHW5k1obW0SBdYWLFCU8iteUhgJpZa2yvdCrffuK2nIpAW/YRGE8kS4ppVU49MGBTgYaJaM71IsRUi8JONK7zN86TE+wxZyqhBcyPpcqhTHYyyggiwGQuK+BQesby8g8SPkyUIQMYwMoO4wof4MkCEa5yMQ5swMwnRiYB/5sj1Fa96Gx+A4IjvJ7wZ665wAgD4Thy09K0Ss8+vy7CdEcCwwIQ18QhLeQMfOhfroyc8szjNMJWa4UZFKDzQYYb+kkSm/g/hSo1Pwi79AVDWG' $Garland &= 'Qfmm4zFk8zYNpf/U9MvUeA75UJOBjrKV9GsfTgUWRwULY6YwQpNtnnPX0nEvrospMslAmyINGCRATfEn9DIjOAsgOSIh7hMhAGBJq+gAIucgwsAN3HNL0Q3w3EUSEpMhyI0jNAEGXkIMunMj+AMpCGcjSShBy6KcgkIkfZSH1grpwEvjUJJMbEGqbpIaAWwJU41r9MsJo+pDlUFsjFMwqgAGGIEoB0VTuCbU/nQaBTVTZgnV3CEuyibjRs8bX4Ezg2YLoMkErytVVEy6jJRGdoQjhaI6RGQ94YMwN8JkMoIYptRdTodKubRXo0hH9nBEiEEiQUQZzHRdICuQ+mNZgcJalpUtrG+HxlH/WnctkfwCNGjxRqMybYShUy4lCklCgiKIHjpl+JKSHpZBlpzs6ADNfqggBhZhEubhCNWVv4jPRaNwNCNISHihbHB0T9DGZv5kOrRrPCQhz0AQQH4UQOZ0IK4FQcYwVQpEQMxyXTZHXdzQXSyEPX21Y6cIzPxPDOJSXd4pQEXQOsux+paonAgEDE2QHRkhDKYD+jajRDNO6AijF2D0CFHt+L4mU5DvQ3MSGnxwNZJmUe0nT7SAE1kJUkuN1QRs+HTu54RhKpePl9LEmLwxDLjAWYwUz7ZyHCmuTXtg4qiv6YJlIxvSYgfy3BAmTT02bkcEsjJLbhsQcr4FKfwKQQLJ//rSNmxdSgaolSn64k++i+OeY0JlUx/yNVLX7ZaQD1OhNr+KEjeP4xilDzLmJzIYQWlyU5Y+rYHKLFNq6YFssxdgcWi0EBkFjWjYZodGCBMwbARPkRz3NmS+hRTJsE3JlmPtNkVuwNx+d3hHBK+I94kAVGL1NjI5T0DCsk5NUCTD0mCjbwgfo0QJLYMSYxiOD2hpyTjCdVOmakVHQhmaNjfF5jNcEU8mY34gLPVs0ylT41yjkPiS5lTE6zWPqTBotkR59BTR4Gv1VsWY9Ud3jQzZlHkZ9j/StgcmgViPFy8jeIIp' $Garland &= 'uFj/o2WVtW9TRYEj83E8GAR3qIOrzlpnVjMuKP8W06TQCmEYjONnl7JQoRFTq/FSBsUmhwEFo+8zeMYyCgFo8CQMJI0YVEMKeU41kmYYkKrQQIVVImmRom+mFFbgQBIMqS9v/WxhQ9gUl5Ud/yMoAqaCwTiMxZhDvAWRdHcNIw5vwYUcobdOxTKQqKlaiC5CFUOFN0ipFK2Vju/ntIoYMdVQe48Zh4MYkgrBgqYQJKMQqgBPdmYLCGFnqOCoKIkXh2HR/IdUQEV7GemQb1a7rsthJ8G5gGJvh2xlNQRAzDYz4dg6M7NlBbScvniMZXmW4zabztEHxrBNx9CvXvlcJm4gdijCbqjP/Mph5Yi7no8zvbFCW9I4do6BYIn/56AB+RYoNYSDhvljUQ95T3gmkX1YfYOGCqhAC8a5Z6ggweRk43jpMVLBFT714vLi60YRVXHgbqhPBE/R1/rMgwFYFZdX86JOxeSJlgm6oAmSh86PYXmEQDaYQUNyL3qMZRHpbDcPs6Luz+44VKHPMd65EPq0j2MUOEiXcWUYU3bSHajqJ5IKabf5fvCkhxUZpu9npZMqqdJZvDhjQpNz1i50IhzHZS+aHdc4ijcMdqkVSCEudwNELFs2z+DWoKE6qvlpOnnZr4iCl2tXJOMJ4v7DlxU2QBBaQOWnL7RQa13wMYwQXHl2Umd0OJIylsz3NiMzh7c5aPTEkasAph/Z/wsROWgMuXxCBSWnMoM6KRK0AiFcigwJhD4U61lQmaqt+BSbLpi3K29UEWKXt2KlerM5u58S2jJ19+u2WlqJes+SYo3HESSbboSumrvgOTDaB1aWrxa4t2sKAnylUII2JQlx03B2DXPr2jH6GpHth7iHG56fOH8qaDgDQ9GKpylqB+sQliujTqhTuYqnOGyt+Ksb268mdpfdsrPFe7yjKJvwhoHbVEKecyzWceI6BygcREMSOySrE3SUVRIEjcGIDn3UpBfAtUX7OJaoGTVs0l5A' $Garland &= 'cCA+aWacg6+lD5wvDodxeG0wSMLzopOSRxIKJSeaggRFkIvTyqohJ7HHw84WdP+HyNCPumeATxyOybvFXZxdqlMjzeIpSmhZlVUk81aPxhFyUDHE8VmbDoIROjW8BMMWpbEgdHtfVU18Q5cezIVwRHsRkPsxcuozeIERIpmvi1sL9HvoWHouBM1/1Cp5rGR4tgh3cAInVAx21/hbOG+JJtqlAlhAd9xZ/FZjcCI91PjxXrzP/fwjhgG+oYlGQjmTvoWBH5thN5ixbTdizXiHKOIuwUMyVPgVuhCDzqFFo9ZSJ3Unn5YexEALFiQdt6DopFLBdHYyClmb1+aQoaMv9IXM9KGyRucMZKR2ZCJ3fAI96spHI3MM6Skj2QKOdy0Eecg/xoJIERRa8SOf/vyD2aFdIqyzKNLADTLJ0M9bZASkdqFFiq2rDOU0ZS0P/A5iGcKgF4B7VAJjC9xhH6CQi763zNAVwG5YBVQ5ytfZMZJzHybhM1zNkXGY1b1cMxYBPJYhQpJCGYhLR3ijJRSGYaJzRfDKKEDH+qa7+sIATnk8itfwVf8TDUJZEtLgKc5vLqP//eShHZqg1Yo1spiR2vqQnXtcFoHndC+OIg0+wVx6TBm4bzgUJHkw1/kWYUYf94GU0mv2C4kno22SQvPup7kTzQUXQ7/y2pO8fG0oPDMKoRdyqA1LiABhC0h0gmHOoI0owrt57Yig945svoBFnHAc+1pSKCi0FOXt/tmZhZWR9EDy5j8oG/uwz53S4rH/o4tJUCsVqyuEUUFoxzcUDbghYzQ0nTjA5jRQA4nnpwruvbE7s+h2iRCiJ5eutdW12a+VSjMixsx4fkFkpCtyYheporWsBEoO+I1HMEAzaR3XWKuhhUc6LyyDZW3vfvhd3A2KArO/u+1tN1Usmyyuy626/5vYHTb/ejQMeEev1Apz+6Jzg2PdyLWBSkMSGGELsnzpT/soBiKTK3T5WpIeUFAzHDm5dyltNKMWGCI+' $Garland &= 'KmJBXKIpZGR3AAITJkluJEkaiCYSGjQ3cNw44xANjjANw+BYiMaNmBsSw/i4sXHiRB8ePYrxIUaiyo/K9rl8CTOmzJk0a9q8iTOnzp08e/r8CTSo0KFEi8rMZLEHQzQom5q8ccMiSKhiLnK8iGnh1B4XI974GBKjQ6kU3QzMlBWasjCLthAqBJfQlkWMhiVzR4/YsF6SGBVaVEVLoS2Dt4RBI4brGR845r4q5KrQ41eEKE9e5JIX3FqF3sKN+xl05UK1OP/3eqkMx5l9a9Eoy5qM4KWsAiVdyogpE5oziHtU9f11Y0iOkhY2xTF8Y0WnKBWTRHnDqPTp1Ktbv449u3bpmbr6YPj8KkSQI6eSxEEyY5qqDMlf5diQo+6xJHsURzPQLBpJ+8KwhbtIZ6EN1laAbrlVxWBwbaHFIoldpFJUj7myCGW1VFZhZI8Ns089hJEm2mRvTSYZZKRxps9LFLn0UCbK4DfQQLPhV5BCuenWEHDQfTRSSm8g1hBEFlkk0nJdQaQSeh9tx2STTj4JZZRS8pTJVyU1dVKWFaGnnEjn+XDfeCMlVRVKmWSiHEQbhRHjQQe5pk8YoHEGWiGCxeXWgnL/+RHgYId1tZtDYlT4ymQiiljLFpnsI8lmdH7mGYVvRQbXK6U99lKVLWEihiTQFJdJQfpdYhuM+2HySVY4+LZqVcI1VJBWEp0X1UXAjdmUbz74BlFLU/4KbLDCDkvsPmh+d6RqrTZ0Em9bPpeYGLFO5SWZN/xI1UlQ0RhJVpdkUhyjAoL4lmef3QkXFeP+5VYYjPjAm3FjFVpZZK5Mdq8ihS5ywzDKfFZaZ5Z9RuLAr9jyDSHEuKTMDZPsE81hyrwoEBqkCuQtQQrth6O22jrUHBq6SQTccAydRGSWumbpw5LFvgxzzDLPbBMmz3mEZFe1enQRWVY1RdCsUi2FHGMU/4H0EUVnmEUbbWhwONdmfUI67lt5KthgIX8YttBFbogVxiuEjn0vZ4U+' $Garland &= 'RlEmjLy1yKOVShYpiK+4UostnL20kUsMLRqGm6IeJNAZtEkSr8eKTcRsRmhYlHOtC60MlUVYKnWVrzRfjnnmmme30pG0nsTUYW4gbpXHGPHsXn0iHUYVcRhnJXhW+wwDF4WceWbugLiHJpeDKC00CUNjZSiZhhPSaykxDLUlmd0mTlqihiZKVss3hXBobHSsHbYPKGGgJTjgBB0kOH7OZqnzz2gE3xR8ghoXLWPwEc0UQ5Zvjn/++u9PExq+/S8RlI0JPfuRiHk+opKvoYdMrHqQAXEwkf/9FKQ2TssEPSq0GRJRTUC5y1OfDJMYNKQBE18TXtiKd7ZX0KJQkilULTiElD5Zik6PkQwGDRaZWoCjNPRwSQwWtQ/77UMMFSMIBdswvoR8LVo34EpJWnU6ZXUEJIrj2eIccpGmQAuI/OuiF78oMwJ2hXJBYoxEeIMti3SkOSnpjZceJCRBcWQhsaPNGQ4iBmX4JYe2GFcN68RBgMFFC2FIyXey0sakkeYxtbDMY1Z4r8csoofECMMfCLEI51mGEI00G2kwxEhwXI9FYXAJmtxgLDFk4jaAaxMm7liQxfRogUfKiLZIVhWQuCENEXIKSA7HFKWAcZjELOaToAEfeJX/bmXPuUhxTCZFCCFQULd6oG92gx83IfEMoZLEMGhoN+gFEpDjmloYeCMtjHxHOISamwtTaDbOhGFh++hT3SRZotLYq0Rnu1QteqiMA+BNe997ZdPcEIm/xQs8G6HV+/xXNDVSBT+hYyN0ABUcMRhzoxztKFGOtZKGMMckSikh0ngGLcSQxH3hEc5CDlPH4mQFXJNgxIScV6KcApJtm/nMFgyJkaCOpZEsbGRl3InURVBEEy7JJ2f2eTCzuXM0lhIl9mAADZdg4gYLm2lxZDq+22SFcEA6DpK+gxg40jIlJiXZGaHz1mYtw6N0ratdZ5ISZQnpZi1z4Prc4BGkoWxH/ww9KWMauhsx8KZp5kNDMsSgGT4uIjKV' $Garland &= 'gd5oQkOn0nhmEYtZCei0MqhCrBCplkrhaBmxEf7w4i2laSQ/7VYofS2SbjN8hd4eto9lcG+Iw1AijCSBRIRarKIPktxUiAstBEqCl9Bi5l5DiAMu3nW61CVmNDiCpaswZbC3FJmy+NoqsBzucEhinG4AV0DX9AWDdXNtDf9ImecZtRB9/EMhFNHGRC50LC0s6tyKR1RLLaI7MXhaicJpmbaBY7KFuhc/A8aODmkviDeoRxDRIkH01uZrCvllmdSoszMukCTS4iXRkHSVZqpEmNVtsYv3hyYAYncpzznjZ7ebYpXFr6GSM//JyZjGTSXeERqDulBUN2miffa0bo76zCLICq/fKQ6CbCFqIyOZQiwrVRmZOEDUqurJe+2Qn5CZWyPH7EPU3GBRL+ptASlYm9vISllPzBlcuwKhxU1uxTpe2f1eDOhAwyw4WKqxFLErRRpHi5nKydLJViof2OWmgGdQRiXZGzCxafAxnMxsPJ18mK4ZB3jtuUELsdzI0eJLbDHAxD7iRBhGuhcy94Skey0EjlfAMBkqwoHekgE7UO0mNwhJaFARuRgBovg58WIMRJKdXJOELLqCrra1g0UMjoTQ0Gc9iVVUojJAgYxML1XpkN4wjCKihaxo0IcYnnrk0ibZRJayBSf/bSHrEvWthPVbiEkn0rZ+krYWZXPhMCzskmEsojLtdWQhviFVyaj6FRDHTD3QgBoDpIgYZ7rPb2G0bmwGVSw5ox8ElzK/716pojVO0bVfDvPtKMWMqmlKhPzn1ppH89lWmeNSQAuVTKQ7lphIBjYlkQl9OGaGnAmY9CZzzxlSDzR9S+zvLjIJjVSEevfCMmkjWQuZDAPqEactaRvswkb2EOMv+aFWleGGO+IHfIDD8H08fp9Ff5sjwPy2NHX8O6MxNeaEL7xR5jPnYG7kVg1Jkp1JuhGMiKFTb0gONHSTFYW8hk0L0cckwlYo2OrQUBjKYS3ahu8TlWgRFA1qvBAZwLmlv9Ps' $Garland &= 'AbbUn/fRRzAz/J2ljWQ7G2mLfQyeYTEwJZfLh3Q3zwYTduENb5CeFQn2Jn7i5nmp48MVpnR2xobvvvd9Uj/sJqbxb8gEMUCRDI77j/qPl/JGXPRAh30KLdEfBpFjmXTH0M3KtshhC3cfehcScJ2xCJw1MjWWEcVBLYt0dmYWSfcSfGJHPVa2ScgDb2ZnPfuQFzBRfKyxMIfxSp5CVhiTdMURL+bnBrrUNXw1PzbnIhMjdJXHLDbnELf3ff83iIN6MyvQ4SI0AQ1aYSUjhRJfs2b6kBpRcQMx0BJ5pAykwhv7EIJfMzG/10mwZRnSAyJ1UxmwJRn+ITKLgxG8kXXCExWyR3BmBk+8wAgxQE8xQSiXUlq114CFkg2E0EOfABPKoFHGYizfsxDK8AkjmAxnog9owhtssgz0gAYFFig3xyVUgUo0AXfb0gPfYYM5iImGp4fXlFUzoQ/Kc06u8SJ+J2I3IAnRQA9dAhKsASd0BCcpcV5DBGD4ZinWoyFmIz2tlW9o42/1g1b6QTr+USiqRlRlc3oPs4i31wtnYzf7B2ACN1orBHysERN7mHT1wCacsigYMRuFuCj6QEf/iqUMqCg84bVob8BlUFFgl8gaPJiJ75iDLjcTw/A1S4M9hdiIY6RKpoRFULEwL6IMRvdK+6EP3uMGa9ESAWJldGOFLORgZ1g91GNvYuMgPtdZCzEyQ1IR7fSALuQgE7EomaAC0RAT+tBCcAiHc5MhKUSHfbQP0IBwDOMrTLUQbkYPyrBY+KEM6dYSveUsYTCO9KAR4bFd+9ghVRIDHNGG8MiUTQkTNzlWmKAMLsdl2MQ6P5dVaAIVDZEGr7YQgygjfxhEYnB5GKdwV+ZaRFUZ+uJgGhJwTPcKf1ALvTBHSIIYCWhAIREGS0dU0liA2EQSi0KSMsEIxhh61sOSLgR2/6XFMDGBPWwWBp+AFLx2dGbhL67BGsHjLJPQEkjhFKpRKz3IGkgJEtLllKf5fdCQbiTk' $Garland &= 'L3kIO85nHFaklVBxEQCFkWG5G/yxFnwTkr+XmCnEdS4kkSzECw3Tb/0WKouzJuSxksRYSPWjgKb5EvVwVKK3Q7RVNosZSYXQQzUxlUEkCS+iUe62WAnFfLmRIi/COmHgBjGmLLSpHBLzEkaokZyJmvdJePXgL3+mD+mGEUjHMfRQlnllETGQR3pDRAghVvLJKdCQbS5BD2g5jA4ocWVmQ/2Eb6NBDyMzarwRK3lJFe7CkqeHEUqBkZNgijQRYP5Ei6V1NqhWKN15E8RQaf+ZUGl9+DW0wTSiCQp6Vki/A4PKgSYOARLDxzCxiJ9J2n0YxhvDQJV5+DFJ6SvRkBIIQVHRx3adAp4MI3DAqULw5E4E93CnVyiMoIjxEmoYuRBiQBFA0jMrShc4N2qukQlJORPusEg7dDAQV2ZhqpiW4gruoBOqRGRstxDFcTGn8jSZcgZMhJkMQ0/KgKJbKZ1Kaqkw9xrjY0GSGJ/++BLDYIoa4VghyClnYGFIoRYxMJi8kGVodzaQwWD9VW9n+GSSYHP9xm/x0R4psZKnlxLNtlBsloQy+hJl5k96Godz+AryeBNIAYW+hqP3IZVGVBzyWCUp0RCnSBPEsBExEAP/b3Cp4fpyytAtRVcTjxUGwMFV87kRbjAJvFGINrJVQMRNQcR2uHcvR7WiZ9d1RgZxUBc8rphYWFoyQKJtlxKn34FWKWGieHMAfzYM+mo9EHdlYPqld7MTrqFbQIQYA4FEyaAMBmEWRmlKrQMS7JgMOAAAHSiuLWt4OHIyPXA/3UFEiJF0mRBcw6BYDHMDLdGzL0GBkUSM7rRIJ2mFhdAOL6JOGCGqVxRq24IGBWgpvxqG/UayxuJ2L0EP/URUufaiFQtPPLEfQVRK29OeEgSyYzUyxKqV8cmOLgu3MYePjdqoj8owi5icjvUa9QdYgxculaS1Z7iYaHeLSGWY94IZ//vwBmk6cga7sFBrC0rFGws7cpGYh6v4EqxaKOBgjJ00' $Garland &= 'opGEPTqhDziQIkqIoMNggsxXlaZimupJpDegCcwat7N7bYbYRsMwmC8hCTgAoBKTqcOmh/eqPT/rEvWwrxbrqvEEh6PEioBZogzBuBMlCQ7ynIA5ubxRqfuAWy7hDhniT9/gql33CtkQoz1xoIvjEveHk8XRBk46MkhXHH/GZcrhqbRrv4JGDx7amjGBJmigCVnBnhOTHwrBcUBpShpFZDFRseJ7hoDqomFqhYQwn3O6UAYUVJGDlxFxnEIVujZhZeBLcfuaDSvqE4/FIp2IFNHgkwTBIeC4H5IpCQcaE//KgwMxEAa5e785fFev8TSdGBNrIQaaELJ7o4EhW0KYAA3foyJZhXQx0aUsiWX54kL/Ojencbcjh1YUwVYvBSFvcjLY1FlKLEQ30aL+NKHiS1vt8BPas1wusQxrtg/xgnTK0EM2KjIO+oQzkQlpcANbYKQ6DMjG9Ik1ETEPuw9GBxXpmSr70agOegODWQ/as4cw0X+GK6EUmELN+BjymBrxUsERgaVE6m/34XNiMVBvq4HHC8IWWwhAMQlAxLKZAAPbszSVBrLbsxBZBarZyxquFsi/PF1iAADYs7scYUoIUX/9wUWYSQzgqsBP/KKGe7EgXAi8ABN27Hrtcagl1Kb/h/ojsgLGaODDi7iUMqEP/US+nZSdgiuoQMHGXATHnFIcZiF0L3kYBrwP9QvM+0xd9YAJBXa3UUGvByEq3POgLqEPHbioMYFv3uBO6/xOK6qn98Ksd/k4a+pzoUxFC1ExjftSMCEGDdDBMmGFcDjCXtdIQnEDPZTADGMA9RANHC2vQKSAbEcPUIHK/KzTXZSOZOkS2ZYSLbEWmdd6PstFaYA99woTvQCjUIx2BDd6oRcTHn1N/hawi1PKWOrJXWPML/HPvKwM41twqHYv5DvSPcGtxoc3GIcUmJAGi9XEqYQYnagMBsprO43XX6S0YiCj2vzTscPRaOJqDQMT2pMJ89sLE+0woa4qjQ/8Ctd5' $Garland &= 'IcRqr2DMsBhBQmJRyui1wY3qMNecoioKT+nsdcs6FB3IcS8BDTGwdurF0fCqN4XERXoYXTGZ17V9OSp8qDKabSerVVUrlei7D6abcL6SCT78lAHW2NF8L9K4yhEIEyInsLihmS9VyngZ3SYkXdmm1JT8Cg4Nwlg2WmcNfsQNE8HThy7ifAbxqLqxWwzDpjJs2/FdLPgoMlNNEV3ZvARxGHk0DAashzCB30NUE4BKvmfs2CHcYCNdqB59KvwGJNft4NjUj0uphxOW2BY7wv1kFNpDDPejPRJBn6Ncry/ZEdL1g+8n3/8p/iviiQmS3TC8bSzPdwah5qQL4RIAkIe+spM1EbSJSXsVWwu0vQ/KE87Y1J5h8jilXMHRfQZwTLzFCxVCvg+chFSj5Qoj3M5EMcnShSa4bK9pekeDOQwRJBPcagCTrOJpvh16MRN83NVBJHd2WUrZ1pNc/hLbzdBgW+Uj+g2RZM0/zOCKOnJset3XLQY/socq8Gc4YAAyEWCr7ELOTRRclnAxwR9DpD2wuTH4vA9EKt6iqeah7iQvfgPFgNC8ezpmMbxsJ1Aw0YZoLnbo7LlnHNWWIuUcWrkltNVN1LgVHC8FETFsh+M4MXYdiWWyOxSTbKSasCipzR+a8DQp0Qb/BcRFWhngoo7tUFIl7f0iQYMRu7k9Qn0/xECVvKyBi0C+aHx2+tRJeuyKcWfdlbvRGfHrIxcvLUFtwY3KW5sNo1UL6fzn3OFyppnUN5AiuVx1z8dFRBYVOZ3tDz/pwmE5usHeM6W0LtHeNQHrM/GbmExx/ZTlMDHPgb7Vi1PyruihQcUhazF4K30TfdrAYUcdyvDHM3EDXcnynW6lvWU5mgAViA3xQX94FhHbybcbHZdKAHUDc3UTl+7BT13WQltbliKJrOFmIrfkGeER9s712ARE4K69OEzSB17ORiHe/GvYBuy/95EMk9DBbu7wQi/3NZHaNw/SmqCa4kgMqAT2/xdhFMtIVAVe' $Garland &= 'jJZS4LqWE4EeVIrVi4vvbyOjEV+PA9hz9i7RDh1ZCwEvJUqcz2znIkjhGtFQzxDqEEA/96WPE3rIyczMEROzhynxEgCA7EBBD17HwBFdKDrBH8nAb8bmoUqO8rsBQ2vWMG14A6CAE/TAgFQPLFXixtzDZfrg82LAa6f9EsTg9KaP/Ttx2FplzC9SssS98UJBGv3+wGVT4K5gDjrhKx43cuyW8o0rBilCERMzYQ2T05KBDWoXLPUgw5oCEPuUZRJ4Q4yyfdAkRdvX0OFDiBElTqRY0eJFjBk1buTY0eNHkCFFjiRJ8mBDN2LCNBTTUFkYgg0BlHTI6//VzZuuXtW6yZMnoXocielDcwZNUTdHjR5lahRTUagsb+zLFMMhvRsIK/K82YtmyEySHOJYSTXmjawNJcX82tbtW7hx5c6lW/djJraTDDZEo49lS5do2tJ7pRNnNp21shV+xasjwqNJJTFl2gYqpjBoJh+9QRDaXq0uAVMcltjuxWWCXXZumInYPn1ktS5beNr2bdy5de/m/ZBYaL2T+AalegOaQzF+275ajK1W4p456X2EqhSNm8yaKT+VZNRoGITKbqh+qIy8xHY3p/d2OCl0JhxaJ8VEc+O1y9Ds9e/n39//bTFuGIYvrcQTziG2vrKJK5xc8WknkGBSZinrrmv/KpOjNisquX00sS8iZfKDiJhX2ukvxIcyQ/C++u7770UYY5RxRooMOm4fNEILEKJl3tKnkJy44kknV9wBKSuiJEmKMjQwwWSzYZoSY8PW0tJIH0b+W080toiJKRPWaBRzTDLLpAuaMMRgaJ+TqjzNFsMKY5CnkG6g56XqjEoKk3rccCqTMzY7Q4wzDtRLRDMlAvOhTLQiZrxEI5V0UkojEgMH5CAKsy7C5MSJOVe8AsmqaLJTUjvNoKFnyjPMs04MH2BiyapKI1JxxYagiWHAWnv19df/OERuNLseXCw65T6aSryBvDsKE2UGfCozVyfzDodkGrqB' $Garland &= '1l+XiSG/RoEVq3dccnGT5EaXwkDXrk4NM8yWkLDaR16FmiwKE7z0KfWoZJQRI436CEVDjBvREjeTshBEtFyGG3a4o0x6fEiMBN90ZTGeFuP1I2haEk8tppTE9zVAp1SmO2txQONWNsf9FqIDH5Z5ZpoxWpjTnXKCMCR/96lnKqq0a0MSJ/vCceVMoply4KVUbvjmmqOWeurcbMKpFhN5FuvjoNG4pEkn8Z13Q4TGQwMHPVmmev9tttt226NanuNpy7sIerQ1MZJ5NplJMCGYKlhXEm9piuuL+W3EE1ecbXd6glck9wQqC2Fo0IjEDWWefJKvQQkCM8CBzZN1cdJLN73c0l6BWqOTQAHM35MD7dfe8FZOSy8fQMcRh4pP9/134Gm0pRaS1BVItbuXzISooqusjy+D6iNIpdWDt/567E9zMSQcghomJn/1AbTJaGlvKI0zyJIKBzG+1efS6rOXf376e1MNr9WoCmOyZOrFsKH3pc8zKsldVkr1t/olUIELtI1YqFIgHOjjJUNLWpSeBD60pUUZOLhBGMiyjNi0iYEjJGEJQTKQhkxCOfTA1DB6oKRM0CP/GkYJi1Y+pxplxGBgkNKHQdZkQiAGUYgPoQd9JFYqyWkGWvsYhhjwhQmH1OdW4eGgcJbRwfgNUYtbDJ4mtOJAbQnkDG5Q0jCOY5QouShAvGPUDdi4DzfSjYtzpOPvwtWyhvxMW5MgIyYGlAknmschsQmDlapkJbRksY6LZGTNYsiXiUkuE09xUjT0QS3NOEQ8HKSbXkazo0aGUpRTSxokMwXHTAxjjGspzvIMuUGDPaQ+mJKKIkd5S1xGamOHA0xnzHOGpzRkUNDQI4LcCDTk3CBmKsllM51Zq9BsDEcNkVCGIuE5WfmtjXuR5QE2lgZkPlOc45TUgVgzKDKqZmUMbjHkPiYRA1rKklvzImc97TmmA8lqQ1/LFiBVY6eHSCKcmrxnQQ0qI+Ww8ShicEMkVHMGoMEHIqA8' $Garland &= 'aEUtGiN9dkczrdoHKNIEsokO9KIjJaluMoowzTiwPloRYR5L+lKY2uZDk8iRE40SnjCUhVkx/+VpT+kCnqCxSXnQkw+xfHpUpIpEgwTDy2QkER5u4sioSaVqVS9Cq5fc6VRiw9GmbgBFq4ZVrBHhVlrQQAztjCVh+zCAJsb6VrGWdUBoqBwavlclttQDALaEa18PikzW/AZheGFpOHPIV78mlpyfvN8+wvAGeqRhNQlCmGItW1K2PG8fC0FYNIbB0viU57KjteiWKrsPYkDjJZABoDJJ+9qX3m0fnpWqQO5TlWTBVrcG5RpViuMXttxAsrsl7j31cYD13Ic10DgQPWZSXOiS87kCgQxgUuuS6Gb3mS/DLj24uz3thveW3EXtHvEjXvSOcnQCYUgOCZpe+C4yDWy5UyNDDIDY+OZXgSh0yG3Xql8A0zFbPgtAgA1Mx2Xg98ALpp+CGRH8YAhHWMITpnCFLXxhDLMtIAA7' Local $bString = _WinAPI_Base64Decode($Garland) If @error Then Return SetError(1, 0, 0) Return Binary($bString) EndFunc ;==>_Garland 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
    1 point
  11. Surprisingly hard to find and not in the wiki but after your comment I pursued and I finally found a sample that spewed errors but I finally realized the code had to be updated. For anyone who search and want this headless, use the following: $sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"chromeOptions": {"w3c": true, "args": ["--headless", "--allow-running-insecure-content"] }}}}' One thing I also noticed is that there is no confirmation in the ChromeDriver whe the session is closed when using: _WD_DeleteSession($sSession); I'm not sure if that is normal or whether my sessions are not closing. I have a loop where the session has to close at the end but since I don't see a confirmation I'm not sure.
    1 point
  12. 1,980 downloads

    Name/Title: Winamp Automation Library (Winamp 2.x +). Description: 34 Functions to handle Winamp Media Player (http://winamp.com). This library written base on the SDK that provided at Wanamp's home page: http://www.winamp.com/development/sdk Version: 1.3 Requirements: AutoIt 3.2.10.0 or higher, Winamp 2.x or higher. Note: This UDF Library tested on Winamp v5.x.
    1 point
×
×
  • Create New...