PC SOFT

ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Home | Sign in | English EN
New WEBDEV 26 feature!
  • Overview
  • New WLanguage functions
  • Improved WLanguage functions
  • New WLanguage properties
  • Improved WLanguage properties
  • New advanced types of WLanguage
  • Improved advanced WLanguage types
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Others
Stored procedures
Overview
In version 26, new functions, new properties and new data types have been introduced and some of them have been improved.
New WLanguage functions
WEBDEV - Server codeWindows The new WLanguage functions in server code are as follows:
AJAXCallInProgressUsed to determine if the request being processed is an AJAX request.
ArrayDistinctReturns an array without duplicates.
ArrayIntersectReturns an array corresponding to the intersection of two arrays.
ArrayUnionReturns an array corresponding to the union of two arrays.
ArrayUnionAllReturns an array corresponding to the union of two arrays (without deleting duplicates).
AuthRefreshTokenRefreshes a user's OAuth2 token when it expires.
BufferToPhraseConverts a buffer to a mnemonic phrase using the BIP39 algorithm.
CertificateExtractExtensionValueReturns the value of a certificate extension.
CookieDeleteDeletes a cookie on the user's computer.
CoordinateImageControlToImageConverts the coordinates of a rectangle in the Image control to the corresponding coordinates in the image displayed in the control.
CoordinateImageToImageControlConverts the coordinates of a rectangle in the image to the corresponding coordinates in the Image control.
DateTimeToStringConverts a DateTime to string in the specified format.
ErrorResetResets the detection of non-fatal errors:
fInsertTextAtBeginningInserts text at the beginning of a file without overwriting the existing text.
GenerateLoremGenerates a "Lorem ipsum" text.
geoGetAreaRetrieves the coordinates of the geographic area that corresponds to a given description.
grAddTimeDataAdds data at a precise moment in a time chart.
HJSONToRecordImports JSON data into the current record.
HRecordToStringConverts the content of the current record to string (in a data file, HFSQL view, query, etc.).
HSuggestKeyReturns a list of keys to add to data files to improve query performance.
HSuggestKeyEndFinishes collecting information on executed queries.
HSuggestKeyStartStarts collecting information on executed queries.
HTMLBuildStringGenerates a UTF-8 string containing an HTML document.
HTMLFindElementByClassSearches for elements whose "class" attribute matches a specific value in an HTML document (or in an HTML node).
HTMLFindElementByIdSearches for the element whose "Id" attribute matches a specific value in an HTML document (or in an HTML node).
HTMLFindElementByNameSearches for elements whose "name" attribute matches a specific value in an HTML document (or in an HTML node).
HTMLFindElementByTagSearches for elements that correspond to a tag in an HTML document (or an HTML node).
HTMLOpenCreates an htmlDocument variable from an HTML document.
HTMLSaveSaves the content of an htmlDocument variable to an HTML file.
HTransactionInProgressUsed to find out whether a transaction is in progress.
HTriggerRecordBeforeRetrieves the value of the current record before the trigger(s) are executed.
InWebSocketServerGlobalServiceModeIndicates if the current code is being executed on the global service of the WebSocket server.
InWebSocketServerModeIndicates if the current code is being executed on the WebSocket server.
LastDayOfYearReturns the date of the last day of the year.
LooperSelectCountReturns the number of selected rows in a Looper control.
LooperSelectMinusDeselects a row in a Looper control.
LooperSelectPlusSelects a row in a Looper control.
MapAddImageAdds a new image to the map displayed in a Map control.
MapAddShapeAdds a new shape (polygon, line, circle) to the map displayed in a Map control.
MapDeleteImageDeletes an image drawn on the map displayed in a Map control.
MapDeleteShapeDeletes a shape drawn on the map displayed in an Map control.
MapModifyImageModifies an image drawn on the map displayed in a Map control.
MapModifyShapeModifies a shape drawn on the map displayed in a Map control.
OCRDetectTextAreaReturns all text areas of an image without reading the text.
OCRLoadLanguageAdds a language to the native OCR system.
OCRParameterInitializes the general options of the native OCR (Optical Character Recognition) system.
PDFExtractPageReturns an Image type variable containing a page from a PDF file.
PhraseToBufferReturns the buffer encoded in a BIP39 mnemonic phrase.
PopupCloseHides a popup displayed in the page via PopupDisplay.
PopupClosePageHides a page displayed as a popup via PopupDisplayPage.
PopupDisplayPageDisplays a WEBDEV page as a popup in the current page with a DDW (Dim Disabled Windows) effect.
RegexMatchChecks whether a string follows a format defined by a regular expression.
SessionHeartBeatEnableEnables or disables the "heartbeat" of the current session.
SessionPrologueEnables or disables a WLanguage procedure called on each request in a session.
sListPortReturns the list of serial and parallel ports on the computer.
TwoFactorAuthenticationCheckCodeVerifies the code given by an authentication application.
TwoFactorAuthenticationGenerateLinkGenerates a link to register an account in an authentication application. When associated with a Bar Code control, this link will show a QR code that can be scanned in the authentication app installed on the phone.
TwoFactorAuthenticationGenerateTOTPKeyGenerates a TOTP Key for an application user.
WebSocketDisconnectDisconnects a client from a WebSocket server.
WebSocketExecuteRuns a global Procedure in the context of a client connected to the WebSocket server.
WebSocketExecuteGlobalServiceExecutes a global Procedure in the context of the global service of the WebSocket server.
WebSocketListConnectedUserLists the clients connected to the WebSocket server.
WebSocketSendSends a message from the WebSocket server to the client.
zipExtractDirectoryAutomatically extracts and decompresses files from a directory in the file tree of an archive to a physical location.
zipFilterReturns the list of archive formats supported by the current platform, in the format expected by the filter of fSelect.
zipSelectFileSelects files from an archive.
The new WLanguage functions (prefix syntax) in Server code are as follows:
<Array>.DistinctReturns an array without duplicates.
<Array>.IntersectReturns an array corresponding to the intersection of two arrays.
<Array>.UnionReturns an array corresponding to the union of two arrays.
<Array>.UnionAllReturns an array corresponding to the union of two arrays (without deleting duplicates).
<AuthToken>.RenouvelleTokenRenouvelle un token OAuth2 d’un utilisateur si ce token est expiré.
<Certificate variable>.ExtractExtensionValueReturns the value of a certificate extension.
<Chart>.AddTimeDataAdds data at a precise moment in a time chart.
<Looper>.SelectCountReturns the number of selected rows in a Looper control.
<Looper>.SelectMinusDeselects a row in a Looper control.
<Looper>.SelectPlusSelects a row in a Looper control.
<Map>.AddImageAdds a new image to the map displayed in a Map control.
<Map>.AddShapeAdds a new shape (polygon, line, circle) to the map displayed in a Map control.
<Map>.DeleteImageDeletes an image drawn on the map displayed in a Map control.
<Map>.DeleteShapeDeletes a shape drawn on the map displayed in an Map control.
<Map>.ModifyImageModifies an image drawn on the map displayed in a Map control.
<Map>.ModifyShapeModifies a shape drawn on the map displayed in a Map control.
<Page>.ClosePopupHides a page displayed as a popup via PopupDisplayPage.
<Page>.PopupDisplayDisplays a WEBDEV page as a popup in the current page with an DDW (Dim Disabled Windows) effect.
<Source>.JSONToRecordImports JSON data into the current record.
<Source>.RecordToStringConverts the content of the current record to string (in a data file, HFSQL view, query, etc.).
<websocketClient variable>.DisconnectDisconnects a client from a WebSocket server.
<websocketClient variable>.ExecuteRuns a global Procedure in the context of a client connected to the WebSocket server.
<websocketClient variable>.SendSends a message from the WebSocket server to the client.
<zipArchive variable>.ExtractDirectoryAutomatically extracts and decompresses files from a directory in the file tree of an archive to a physical location.
<zipArchive>.SelectFileSelects files from an archive.
WEBDEV - Server codeLinux The new WLanguage functions for WEBDEV in Linux are as follows:
AJAXCallInProgressUsed to determine if the request being processed is an AJAX request.
ArrayDistinctReturns an array without duplicates.
ArrayIntersectReturns an array corresponding to the intersection of two arrays.
ArrayUnionReturns an array corresponding to the union of two arrays.
ArrayUnionAllReturns an array corresponding to the union of two arrays (without deleting duplicates).
AuthRefreshTokenRefreshes a user's OAuth2 token when it expires.
BufferToPhraseConverts a buffer to a mnemonic phrase using the BIP39 algorithm.
CookieDeleteDeletes a cookie on the user's computer.
CoordinateImageControlToImageConverts the coordinates of a rectangle in the Image control to the corresponding coordinates in the image displayed in the control.
CoordinateImageToImageControlConverts the coordinates of a rectangle in the image to the corresponding coordinates in the Image control.
DateTimeToStringConverts a DateTime to string in the specified format.
ErrorResetResets the detection of non-fatal errors:
fInsertTextAtBeginningInserts text at the beginning of a file without overwriting the existing text.
GenerateLoremGenerates a "Lorem ipsum" text.
geoGetAreaRetrieves the coordinates of the geographic area that corresponds to a given description.
grAddTimeDataAdds data at a precise moment in a time chart.
HJSONToRecordImports JSON data into the current record.
HRecordToStringConverts the content of the current record to string (in a data file, HFSQL view, query, etc.).
HSuggestKeyReturns a list of keys to add to data files to improve query performance.
HSuggestKeyEndFinishes collecting information on executed queries.
HSuggestKeyStartStarts collecting information on executed queries.
HTMLBuildStringGenerates a UTF-8 string containing an HTML document.
HTMLFindElementByClassSearches for elements whose "class" attribute matches a specific value in an HTML document (or in an HTML node).
HTMLFindElementByIdSearches for the element whose "Id" attribute matches a specific value in an HTML document (or in an HTML node).
HTMLFindElementByNameSearches for elements whose "name" attribute matches a specific value in an HTML document (or in an HTML node).
HTMLFindElementByTagSearches for elements that correspond to a tag in an HTML document (or an HTML node).
HTMLOpenCreates an htmlDocument variable from an HTML document.
HTMLSaveSaves the content of an htmlDocument variable to an HTML file.
HTransactionInProgressUsed to find out whether a transaction is in progress.
HTriggerRecordBeforeRetrieves the value of the current record before the trigger(s) are executed.
InWebSocketServerGlobalServiceModeIndicates if the current code is being executed on the global service of the WebSocket server.
InWebSocketServerModeIndicates if the current code is being executed on the WebSocket server.
LastDayOfYearReturns the date of the last day of the year.
LooperSelectCountReturns the number of selected rows in a Looper control.
LooperSelectMinusDeselects a row in a Looper control.
LooperSelectPlusSelects a row in a Looper control.
MapAddImageAdds a new image to the map displayed in a Map control.
MapAddShapeAdds a new shape (polygon, line, circle) to the map displayed in a Map control.
MapDeleteImageDeletes an image drawn on the map displayed in a Map control.
MapDeleteShapeDeletes a shape drawn on the map displayed in an Map control.
MapModifyImageModifies an image drawn on the map displayed in a Map control.
OCRDetectTextAreaReturns all text areas of an image without reading the text.
OCRLoadLanguageAdds a language to the native OCR system.
OCRParameterInitializes the general options of the native OCR (Optical Character Recognition) system.
PhraseToBufferReturns the buffer encoded in a BIP39 mnemonic phrase.
PopupCloseHides a popup displayed in the page via PopupDisplay.
PopupClosePageHides a page displayed as a popup via PopupDisplayPage.
PopupDisplayPageDisplays a WEBDEV page as a popup in the current page with a DDW (Dim Disabled Windows) effect.
RegexMatchChecks whether a string follows a format defined by a regular expression.
SessionHeartBeatEnableEnables or disables the "heartbeat" of the current session.
sListPortReturns the list of serial and parallel ports on the computer.
TwoFactorAuthenticationCheckCodeVerifies the code given by an authentication application.
TwoFactorAuthenticationGenerateLinkGenerates a link to register an account in an authentication application. When associated with a Bar Code control, this link will show a QR code that can be scanned in the authentication app installed on the phone.
TwoFactorAuthenticationGenerateTOTPKeyGenerates a TOTP Key for an application user.
WebSocketDisconnectDisconnects a client from a WebSocket server.
WebSocketExecuteRuns a global Procedure in the context of a client connected to the WebSocket server.
WebSocketExecuteGlobalServiceExecutes a global Procedure in the context of the global service of the WebSocket server.
WebSocketListConnectedUserLists the clients connected to the WebSocket server.
WebSocketSendSends a message from the WebSocket server to the client.
zipExtractDirectoryAutomatically extracts and decompresses files from a directory in the file tree of an archive to a physical location.
zipFilterReturns the list of archive formats supported by the current platform, in the format expected by the filter of fSelect.
zipSelectFileSelects files from an archive.
The new WLanguage functions (prefix syntax) for WEBDEV in Linux are as follows:
<Array>.DistinctReturns an array without duplicates.
<Array>.IntersectReturns an array corresponding to the intersection of two arrays.
<Array>.UnionReturns an array corresponding to the union of two arrays.
<Array>.UnionAllReturns an array corresponding to the union of two arrays (without deleting duplicates).
<AuthToken>.RenouvelleTokenRenouvelle un token OAuth2 d’un utilisateur si ce token est expiré.
<Chart>.AddTimeDataAdds data at a precise moment in a time chart.
<Looper>.SelectCountReturns the number of selected rows in a Looper control.
<Looper>.SelectMinusDeselects a row in a Looper control.
<Looper>.SelectPlusSelects a row in a Looper control.
<Map>.AddImageAdds a new image to the map displayed in a Map control.
<Map>.AddShapeAdds a new shape (polygon, line, circle) to the map displayed in a Map control.
<Map>.DeleteImageDeletes an image drawn on the map displayed in a Map control.
<Map>.DeleteShapeDeletes a shape drawn on the map displayed in an Map control.
<Map>.ModifyImageModifies an image drawn on the map displayed in a Map control.
<Page>.ClosePopupHides a page displayed as a popup via PopupDisplayPage.
<Page>.PopupDisplayDisplays a WEBDEV page as a popup in the current page with an DDW (Dim Disabled Windows) effect.
<Source>.JSONToRecordImports JSON data into the current record.
<Source>.RecordToStringConverts the content of the current record to string (in a data file, HFSQL view, query, etc.).
<websocketClient variable>.DisconnectDisconnects a client from a WebSocket server.
<websocketClient variable>.ExecuteRuns a global Procedure in the context of a client connected to the WebSocket server.
<websocketClient variable>.SendSends a message from the WebSocket server to the client.
<zipArchive variable>.ExtractDirectoryAutomatically extracts and decompresses files from a directory in the file tree of an archive to a physical location.
<zipArchive>.SelectFileSelects files from an archive.
PHP The new WLanguage functions for PHP are as follows:
AJAXCallInProgressUsed to determine if the request being processed is an AJAX request.
DecodeDecodes a character string that was encoded by Encode.
EncodeEncodes a character string or a buffer. To decode the result, simply use Decode.
InWebSocketServerGlobalServiceModeIndicates if the current code is being executed on the global service of the WebSocket server.
InWebSocketServerModeIndicates if the current code is being executed on the WebSocket server.
WEBDEV - Browser code The new WLanguage functions for WEBDEV in browser code are as follows:
CookieDeleteDeletes a cookie on the user's computer.
DateTimeToStringConverts a DateTime to string in the specified format.
GalleryPopupDisplayedIndicates whether the automatic zoom popup of the Image Gallery control is displayed.
geoGetAreaRetrieves the coordinates of the geographic area that corresponds to a given description.
HexaToBufferConverts a string with hexadecimal bytes to a binary buffer.
InWebSocketServerGlobalServiceModeIndicates if the current code is being executed on the global service of the WebSocket server.
InWebSocketServerModeIndicates if the current code is being executed on the WebSocket server.
LooperDeleteSelectDeletes the selected rows from a browsing or memory Looper control.
LooperSelectReturns the subscript of selected element in a Looper control.
LooperSelectCountReturns the number of selected rows in a Looper control.
LooperSelectMinusDeselects a row in a Looper control.
LooperSelectPlusSelects a row in a Looper control.
MapAddImageAdds a new image to the map displayed in a Map control.
MapAddShapeAdds a new shape (polygon, line, circle) to the map displayed in a Map control.
MapChangeStyleChanges the style of the map displayed in the Map control.
MapClosePopupCloses the popup of a marker displayed in the Map control.
MapDeleteImageDeletes an image drawn on the map displayed in a Map control.
MapDeleteShapeDeletes a shape drawn on the map displayed in an Map control.
MapDisplayAreaMoves the map displayed in the Map control so that the specified geographic area can be seen in its entirety.
MapDisplayPopupOpens the popup of a marker displayed in a Map control.
MapGetStyleReturns the style used by the map displayed in the Map control.
MapLimitAreaLimits the geographic area displayed in the Map control.
MapModifyImageModifies an image drawn on the map displayed in a Map control.
MapModifyShapeModifies a shape drawn on the map displayed in a Map control.
MapPopupDisplayedIndicates whether the popup of a marker in a Map control is displayed.
PopupClosePageHides a page displayed as a popup via PopupDisplayPage.
PopupDisplayPageDisplays a WEBDEV page as a popup in the current page with a DDW (Dim Disabled Windows) effect.
SelectColorOpens the standard window for color selection and selects the specified color.
The new WLanguage functions (prefix syntax) for WEBDEV in browser code are as follows:
<Looper>.DeleteSelectDeletes the selected rows from a browsing or memory Looper control.
<Looper>.SelectReturns the subscript of selected element in a Looper control.
<Looper>.SelectCountReturns the number of selected rows in a Looper control.
<Looper>.SelectMinusDeselects a row in a Looper control.
<Looper>.SelectPlusSelects a row in a Looper control.
<Map>.AddImageAdds a new image to the map displayed in a Map control.
<Map>.AddShapeAdds a new shape (polygon, line, circle) to the map displayed in a Map control.
<Map>.ChangeStyleChanges the style of the map displayed in the Map control.
<Map>.ClosePopupCloses the popup of a marker displayed in the Map control.
<Map>.DeleteImageDeletes an image drawn on the map displayed in a Map control.
<Map>.DeleteShapeDeletes a shape drawn on the map displayed in an Map control.
<Map>.DisplayAreaMoves the map displayed in the Map control so that the specified geographic area can be seen in its entirety.
<Map>.DisplayPopupOpens the popup of a marker displayed in a Map control.
<Map>.GetStyleReturns the style used by the map displayed in the Map control.
<Map>.LimitAreaLimits the geographic area displayed in the Map control.
<Map>.ModifyImageModifies an image drawn on the map displayed in a Map control.
<Map>.ModifyShapeModifies a shape drawn on the map displayed in a Map control.
<Map>.PopupDisplayedIndicates whether the popup of a marker in a Map control is displayed.
<Page>.ClosePopupHides a page displayed as a popup via PopupDisplayPage.
<Page>.PopupDisplayDisplays a WEBDEV page as a popup in the current page with an DDW (Dim Disabled Windows) effect.
Improved WLanguage functions
WEBDEV - Server codeWindowsLinux The following functions have been modified in this version:
dPolygonNew syntax used to handle Polygon variables.
dPolylineNew syntax used to handle Polygon variables.
ErrorPropagateNew syntax to change the error number.
ExceptionChangeParameterNew constant used to launch a procedure regardless of the level in which the exception is raised.
FTPParameterNew constant used to modify FTPES encryption.
HErrorInfoNew constant used to get the number of the last error triggered by the HFSQL engine.
PopupDisplayNew constant.
PHP The following functions have been modified in this version:
ErrorPropagateNew syntax to change the error number.
New WLanguage properties
WEBDEV - Server codeWindows The new WLanguage properties for WEBDEV applications are as follows:
BearingThe Bearing property is used to determine or modify the bearing of the map displayed in a Map control.
GDPRThe GDPR property is used to:
  • find out if the GDPR applies to an item from a data file.
  • define whether the GDPR should apply to an item (in the item description in the code only).
InternalPagePopupThe InternalPagePopup property is used to get and modify the name of the internal page used to customize the content of marker popups in a Map control.
TiltThe Tilt property is used to determine or modify the tilt of the map displayed in a Map control.
TrafficInfoThe TrafficInfo property is used to:
  • determine whether traffic information is displayed in the Map control.
  • display or hide traffic information in the Map control.
WEBDEV - Server codeLinux The new WLanguage properties for WEBDEV applications on Linux are as follows:
BearingThe Bearing property is used to determine or modify the bearing of the map displayed in a Map control.
TiltThe Tilt property is used to determine or modify the tilt of the map displayed in a Map control.
TrafficInfoThe TrafficInfo property is used to:
  • determine whether traffic information is displayed in the Map control.
  • display or hide traffic information in the Map control.
WEBDEV - Browser code The new WLanguage properties in browser code are as follows:
TiltThe Tilt property is used to determine or modify the tilt of the map displayed in a Map control.
TrafficInfoThe TrafficInfo property is used to:
  • determine whether traffic information is displayed in the Map control.
  • display or hide traffic information in the Map control.
Improved WLanguage properties
WEBDEV - Server codeWindowsLinux The following properties have been modified in this version:
GrayedThis property is now available on Rich Text Area controls.
WEBDEV - Browser code The following properties have been modified in this version:
GrayedThis property is now available on Rich Text Area controls.
New advanced types of WLanguage
WEBDEV - Server codeWindows The new WLanguage types for WEBDEV applications are as follows:
gglAttachmentClass representing an attachment
gglNotificationThe gglNotification type is used to define information about event notifications in a calendar.
gglOverrideThe gglOverride type is used to define information about event notification overrides.
htmlAttributeThe htmlAttribute type is used to define all the advanced characteristics of an attribute of an element in an HTML document.
htmlDocumentThe htmlDocument type is used to define all the advanced characteristics of an HTML document.
htmlNodeThe htmlNode type is used to define all the advanced characteristics of a node of an HTML document.
MapCircleThe MapCircle type is used to define the characteristics of a circle to be drawn on the map displayed in a Map control.
MapImageThe MapImage type is used to define the characteristics of an image to be drawn on the map displayed in a Map control.
MapPolygonThe MapPolygon type is used to define the characteristics of a polygon to be drawn on the map displayed in a Map control.
MapPolylineThe MapPolyline type is used to define the characteristics of a line composed of several segments to be drawn on the map displayed in a Map control.
MarkerImageThe MarkerImage type is used to customize the image associated with a marker or a marker cluster displayed in a Map control.
ocrOptionThe ocrOption type is used to define all the general options of the native OCR (Optical Character Recognition) system.
ocrTextBlockThe ocrTextBlock type is used to define and identify all the advanced characteristics of a text block read by the native OCR system.
PolygonThe Polygon type is used to define the points of a polygon.
websocketClientThe websocketClient type is used to identify and define all the advanced characteristics of a client connected to a WebSocket server.
WEBDEV - Server codeLinux The new WLanguage types for WEBDEV applications on Linux are as follows:
htmlAttributeThe htmlAttribute type is used to define all the advanced characteristics of an attribute of an element in an HTML document.
htmlDocumentThe htmlDocument type is used to define all the advanced characteristics of an HTML document.
htmlNodeThe htmlNode type is used to define all the advanced characteristics of a node of an HTML document.
MapCircleThe MapCircle type is used to define the characteristics of a circle to be drawn on the map displayed in a Map control.
MapImageThe MapImage type is used to define the characteristics of an image to be drawn on the map displayed in a Map control.
MapPolygonThe MapPolygon type is used to define the characteristics of a polygon to be drawn on the map displayed in a Map control.
MapPolylineThe MapPolyline type is used to define the characteristics of a line composed of several segments to be drawn on the map displayed in a Map control.
MarkerImageThe MarkerImage type is used to customize the image associated with a marker or a marker cluster displayed in a Map control.
ocrOptionThe ocrOption type is used to define all the general options of the native OCR (Optical Character Recognition) system.
ocrTextBlockThe ocrTextBlock type is used to define and identify all the advanced characteristics of a text block read by the native OCR system.
PolygonThe Polygon type is used to define the points of a polygon.
websocketClientThe websocketClient type is used to identify and define all the advanced characteristics of a client connected to a WebSocket server.
Improved advanced WLanguage types
WEBDEV - Server codeWindowsLinux The following advanced types have been improved for WEBDEV applications:
AuthTokenNew properties.
CertificateNew properties.
gglEventNew properties.
httpRequestNew properties.
MarkerNew properties.
ThreadNew property: Returned value.
Minimum version required
  • Version 26
Comments
Click [Add] to post a comment