Jump to content

Report Help File Issues Here


guinness
 Share

Recommended Posts

Here goes nothing:

The BitShift function seems under-documented. The bounds for shift values should be indicated (they appear to be -99999 to 99999 Hmm??? maybe not - I just don't know). I also think that it should be stated that this is an arithmetic shift, as opposed to a logical shift which is the most intuitive however false assumption which anyone might make.

Edited by czardas
Link to comment
Share on other sites

Here goes nothing:

The BitShift function seems under-documented. The bounds for shift values should be indicated (they appear to be -99999 to 99999 Hmm??? maybe not). I also think that it should be stated that this is an arithmetic shift, as opposed to a logical shift which is the most intuitive however false assumption which anyone might make.

Examples!

Bit operations are performed as 32-bit integers.

$b = BitShift(1, -31)

ConsoleWrite($b & @CRLF)

What's wrong?

Link to comment
Share on other sites

If the shift limits are +/- 31 then it should be stated. Otherwise I'm just confused about it. If it was logical shift then I understand that there should be no limit to the shift value.

ConsoleWrite("Test 1"   & @LF)
For $i = 1 To 63
    ConsoleWrite(BitShift(1, $i) & @LF & _
    BitShift(1, -$i)  & @LF  & @LF)
Next


ConsoleWrite("Test 2"   & @LF)
For $i = 99999 To 100005
    ConsoleWrite(BitShift(-4, $i) & @LF & _
    BitShift(1, -$i)  & @LF  & @LF)
Next
Edited by czardas
Link to comment
Share on other sites

If the shift limits are +/- 31 then it should be stated. Otherwise I'm just confused about it. If it was logical shift then I understand that there should be no limit to the shift value.

ConsoleWrite("Test 1" & @LF)
For $i = 1 To 63
ConsoleWrite(BitShift(1, $i) & @LF & _
BitShift(1, -$i) & @LF & @LF)
Next


ConsoleWrite("Test 2" & @LF)
For $i = 99999 To 100005
ConsoleWrite(BitShift(-4, $i) & @LF & _
BitShift(1, -$i) & @LF & @LF)
Next

It's a 32 bit number. If you shift by 32, you end up where you begun. If you shift by more, you end up wherever you'd get when you shift by Mod(your_number, 32). It wraps in the 32 bits.
Link to comment
Share on other sites

So it appears. I think I just got a bit confused about this since there was no mention of the type of shift. From the perspective of a non-programmer, the word shift and wrap are in no way related to each other. Perhaps types of algorithms used in such functions should be stated so users like me can search these terms on google instead of having to ask.

Thanks for another easy to understand explanation. :)

Edit

Another thing I noticed is that floats seem to be rounded down when passed to (at least some) bitwise functions, and non numeric values appear to be ignored with BitAND, BitOR and BitXOR. Probably nothing to be concerned about, although this also doesn't appear to be documented.

Edited by czardas
Link to comment
Share on other sites

The example script for the function IniRenameSection is missing a backslash before the file name.

Local $res = IniRenameSection(@ScriptDir & "My.ini", "MySection", "MyNewSection") ; there should be a backslash before the My.ini, ("My.ini")

These functions were rewritten and appear in the latest beta. Thanks for reporting.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

  • Moderators

Hi,

The Help file example for StringStripCR is not very helpful as the final result does not really show what has happened. Something like this might be better:

Local $sString = "I am" & Chr(13) & " a string"
MsgBox(4096, "Original string", $sString)
$sStripped_String = StringStripCR($sString)
MsgBox(4096, "String stripped of CR characters", $sStripped_String)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Local $sString = "I am" & @CR & " a string"

StringRegExpReplace (compact example)

$sInput = "This example demonstrates a basic replacement.  It replaces the vowels aeiou"
$sOutput = StringRegExpReplace($sInput, "[aeiou]", "-")
MsgBox(0, "Result before and after", $sInput & @LF & $sOutput)

; The following example demonstrates using back-references to change the date
$sInput = 'Date: 12/31/2009 01:02:03'
$sOutput = StringRegExpReplace($sInput, '(d{2})/(d{2})/(d{4})', ' $2.$1.$3 ')
MsgBox(0, "Result before and after", $sInput & @LF & $sOutput)

$sInput = 'Removes the <i>tags</i> in html'
$sOutput = StringRegExpReplace($sInput, '<i>(.*?)</i>', '1')
MsgBox(0, "Result before and after", $sInput & @LF & $sOutput)

$sInput = 'Remove' & @LF & @LF & @LF & 'unnecessary blank lines'
$sOutput = StringRegExpReplace($sInput, '(rn|r|n){2,}', '1')
MsgBox(0, "Result before and after", $sInput & @LF & '--------------' & @LF & $sOutput)

; Splits into groups of three characters
$sInput = '56868797689645'
$sOutput = StringRegExpReplace($sInput, '(Ad{1,3}(?=(d{3})+z)|d{3}(?=d))', '1 ')
MsgBox(0, "Result before and after", $sInput & @LF & $sOutput)

; Gets the file name without extension
$sInput = 'D:DocumFile.au3'
$sOutput = StringRegExpReplace($sInput, '^(?:.*)([^]*?)(?:.[^.]+)?$', '1')
MsgBox(0, "Result before and after", $sInput & @LF & $sOutput)

StringStripWS

$sText = _
    '   The beginning    and   end of the string in this   context    ' & @CRLF & _
    '   means       all the ' & @TAB & 'text,   ' & @CRLF & _
    @TAB & '  not for each line   of the multiline    text.   ' & @TAB & @TAB

MsgBox(0, 'Original string', $sText)
For $i = 1 To 8
    MsgBox(0, 'flag = ' & $i, StringStripWS($sText, $i))
Next
Edited by AZJIO
Link to comment
Share on other sites

I have an idea

Do helpfile can contain information about abbreviations

for example help documentation for

If...ElseIf...Else...EndIf

now contain

If...ElseIf...Else...EndIf

Conditionally run statements.

If <expression> Then

statements

...

[ElseIf expression-n Then

[elseif statements ... ]]

...

[Else

[else statements]

...

EndIf

Parameters

expression If the expression is true, the first statement block is executed. If not, the first true ElseIf block is executed. Otherwise, the "Else" block is executed.

Remarks

If statements may be nested.

The expression can contain the boolean operators of AND, OR, and NOT as well as the logical operators <, <=, >, >=, =, ==, and <> grouped with parentheses as needed.

Related

If...Then, Select...Case...EndSelect, Switch...EndSwitch

and finaly i propose something like that

au3abbrev.properties

ifthen=If | Then\nEndIf

I think if this information can be placed in help file

then this be very much easy to remember abbreviations

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

If...Then

To add this example

If MsgBox(1, 'Condition 1', 'Want "Condition 2"?') = 1 And MsgBox(4, 'Condition 2', 'Want to look result?') = 6 Then MsgBox(4096, 'Result', '<img src='http://www.autoitscript.com/forum/public/style_emoticons/<#EMO_DIR#>/wink.png' class='bbc_emoticon' alt=';)' />')

If...ElseIf...Else...EndIf

To add this example

If MsgBox(1, 'Offer 1', 'Exit?') = 1 Or MsgBox(4, 'Offer 2', 'can still exit?') = 6 Then
    MsgBox(4096, 'Result', 'You agree to exit')
    Exit
Else
    MsgBox(4096, 'Result', 'Do you want to continue')
EndIf
Edited by AZJIO
Link to comment
Share on other sites

I have an idea

Do helpfile can contain information about abbreviations

for example help documentation for

If...ElseIf...Else...EndIf

now contain

and finaly i propose something like that

I think if this information can be placed in help file

then this be very much easy to remember abbreviations

So you want us to document 3rd party programs in our documentation?
Link to comment
Share on other sites

AZIJO, I like the regexp examples. I'm not sure about the If...ElseIf...Else...EndIf examples though. Although I like them too, I think that they could be a little simpler. For something so basic as this, it doesn't make sense to have more advanced stuff mixed in like logical operators and expressions such as MsgBox() = value.

$Hour = @HOUR

If $Hour < 12 Then
    MsgBox(0, "Time", "It's morning")
ElseIf $Hour < 18 Then
    MsgBox(0, "Time", "It's afternoon")
Else
    MsgBox(0, "Time", "It's evening")
EndIf
Edited by czardas
Link to comment
Share on other sites

I believe MsgBox is in almost every case. It is this example demonstrates the operators "And" and "Or", and how it works. I very often use these code constructs, to ask the user to make a choice. I'm for practicality.

Frequently used functions must have at least three examples showing that a beginner can not even imagine. A beginner should not restrict themselves only "If $a = 3 Then".

Link to comment
Share on other sites

Thanks. I will update the appropriate sections soon. Plus the Inet examples are on my to do list.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

A beginner should not restrict themselves only "If $a = 3 Then".

True, but examples of more advanced conditional statements occur throughout the help file. An absolute beginner wondering what 'And' and 'Or' might imply, and why does MsgBox have a numerical value is likely to take longer to grasp If...ElseIf...Else...EndIf. I have seen many examples in the help file that are 99 percent about a different (often much more advanced) subject. If I didn't find myself so busy I would devote more time to looking into this. There are also many examples that appear to not do anything (if at all apparent) different from similar examples - especially in the UDF examples.

Edited by czardas
Link to comment
Share on other sites

Examples should demonstrate functionality and not confuse the user. I have to say that MsgBox would confuse me and raise questions in the forum.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...