Commit graph

335 commits

Author SHA1 Message Date
Fabio Alessandrelli
9de4ffde61 Refactor RPCMode enum and checks 2018-05-26 10:43:43 +02:00
karroffel
70866bbafd changed GDNative API json format 2018-05-10 22:03:06 +02:00
Pedro J. Estébanez
474eda9e30 Fix Variant leak in call_native 2018-05-08 21:27:33 +02:00
Hein-Pieter van Braam
cee5117d3b Fix lto builds on clang compilers
The --no-lto option only works on GCC compilers. This breaks LTO builds
on MacOS and iPhone when building the gdnative wrappers.

-fno-lto works on both brands of compilers.
2018-04-30 12:59:08 +02:00
Rémi Verschelde
df79cc86a5
Merge pull request #18119 from sheepandshepherd/nativescript_property_list
Fix NativeScript property list order
2018-04-19 21:37:46 +02:00
Pedro J. Estébanez
00e98458ba Revert "Unify http- and percent- encode/decode"
This reverts commit b76ee30917.
2018-04-12 21:12:34 +02:00
sheepandshepherd
bc110b3771 Fix NativeScript property list 2018-04-11 09:43:07 +02:00
Rémi Verschelde
cb7fe2c793 doc: Sync classref with current source 2018-04-10 10:12:42 +02:00
Juan Linietsky
cd7e9d9642
Merge pull request #17583 from RandomShaper/enhance-uri-utils
Enhance uri utils
2018-04-07 17:07:29 -03:00
Emmanuel Leblond
adecd6f66f
Correct profiling_frame naming in pluginscript 2018-04-07 00:11:26 +02:00
Emmanuel Leblond
e97336a557
Fix Pluginscript add_global_constant mandatory value check 2018-04-06 19:20:12 +02:00
karroffel
2e1f239fe6 [NativeScript] replace error macros by simple returns 2018-04-06 01:40:26 +02:00
Thomas Herzog
eaa5dfbdbd
Merge pull request #17980 from karroffel/nativescript-1.1-global-type-tags
[NativeScript] added global type tag system
2018-04-05 15:09:35 +02:00
karroffel
ad93d3e277 [NativeScript] added global type tag system 2018-04-05 00:06:33 +02:00
karroffel
f29139f3cf [GDNative] enable saving GDNativeLibrary as sub resource 2018-04-04 13:07:43 +02:00
karroffel
57c0339d9f [GDNative] easier GDNativeLib handling 2018-04-04 12:24:10 +02:00
karroffel
0b92aded23 [GDNative] fixed issue with library unloading order 2018-03-31 01:45:18 +02:00
karroffel
ce36ecda4c [GDNative] added GDCALLINGCONV to instance binding functions 2018-03-31 01:44:50 +02:00
Pedro J. Estébanez
b76ee30917 Unify http- and percent- encode/decode
There was a percent-prefixed version, which was exposed, and a http-prefixed version which was not (only to GDNative).
This commit keeps the percent-prefixed versions, but with the http-prefixed implementations.
2018-03-27 19:18:30 +02:00
Rémi Verschelde
08cadc3d87 NativeScript: Fix initialization in wrong scope
Regression from d702d7b335 which broke javascript build.
2018-03-02 02:07:37 +01:00
Hein-Pieter van Braam
d702d7b335 Fix various valgrind reported uninitialized variable uses 2018-02-28 21:55:13 +01:00
Rémi Verschelde
3fa77b3172 doc: Remove status from hardcoded version string
It has no practical use case and just generates noise for each alpha, beta, etc.
2018-02-27 13:40:49 +01:00
luz.paz
612ab4bbc6 Fix typos with codespell
Found via `codespell -q 3 --skip="./thirdparty,./editor/translations" -I ../godot-word-whitelist.txt`
Whitelist consists of:
```
ang
doubleclick
lod
nd
que
te
unselect
```
2018-02-21 19:46:06 +01:00
Rémi Verschelde
3c7a39b40c doc: Update version string in header 2018-02-19 10:46:33 +01:00
tilpner
a75a7e594e
gdnative_api.json: Change argument name to r_dest
This reflects its usage as an output argument,
consistent with the other godot_variant_new functions
2018-02-11 17:19:17 +01:00
Thomas Herzog
31dd21a8d9
Merge pull request #16539 from eska014/gdnative-macwarn
Fix GDNATIVE_API_INIT() warning about sign mismatch
2018-02-10 17:36:57 +01:00
Leon Krause
8e39cdd5d5 Fix GDNATIVE_API_INIT() warning about sign mismatch 2018-02-10 17:19:16 +01:00
karroffel
0b2afa24b8 add initial NativeScript 1.1 extension
This commit adds new functionality to NativeScript, namely:

 - ability to set and get documentation for classes, methods,
   signals and properties

 - ability to set names and type information to method arguments

 - ability to set and get type tags for nativescripts

 - ability to register instance binding data management functions

 - ability to use instance binding data
2018-02-09 15:04:41 +01:00
karroffel
2fb66df669 generate proper API structs for GDNative extension extensions
The GDNative C API gets passed to libraries in a struct of function
pointers. To provide stable binary compatibility, each extension not
part of the core API is separated into its own sub-struct.

These structs aren't meant to be changed in order to keep binary
compatibility.

In case of an API extension, the structs include a `next` pointer
which can point to a new struct with additional function pointers.

Godot's build system generates the API structs automatically at
build time, but so far there has no support for the mentioned `next`
pointers.

This commit changes the API struct generation in such a way that code
that used previous headers will compile without problem with the new
headers.

The new extension-extensions (weird name, but that's what it is) get
generated recursively and include the version in the struct-name.
2018-02-09 11:44:54 +01:00
Paolo Perkovic
08d4bfacaf Fix inconsistencies and typos in argument names 2018-02-01 16:47:20 +01:00
Rémi Verschelde
d516aab8fa doc: Sync with current source
Also enhance RigidBody docs as per https://github.com/godotengine/godot-docs/pull/1018
and fix the version tag in all files (not really stable yet, but it makes no sense
to hardcode rc3 at this stage).
2018-01-25 08:50:56 +01:00
Rémi Verschelde
9f479f096c Fix typos in code and docs with codespell
Using v1.11.0 from https://github.com/lucasdemarchi/codespell
2018-01-18 22:01:42 +01:00
karroffel
69f33a9313 [GDNative] fix NativeScript false negative error 2018-01-18 16:00:38 +01:00
karroffel
9b96f87377 [GDNative] fix #15723 2018-01-18 12:04:34 +01:00
Marc Gilleron
a3937e1220 Added GDNative copy constructor for PoolVectors Read and Write 2018-01-18 02:44:37 +01:00
Rémi Verschelde
1699978e24
Merge pull request #15761 from touilleMan/pluginscript-improve-inheritance
[GDnative] Improve inheritance system in gdnative pluginscript
2018-01-17 14:53:30 +01:00
Emmanuel Leblond
0de61998e4
Improve inheritance system in gdnative pluginscript 2018-01-16 00:23:27 +01:00
karroffel
d56bcc38ac [GDNative] fix two crashes with NativeScript 2018-01-14 23:39:10 +01:00
karroffel
567d20fe5f [GDNative] fix editor crash with NativeScript 2018-01-14 01:01:35 +01:00
karroffel
ee8ee463c3 [GDNative] cache API hashes 2018-01-13 21:21:05 +01:00
Rémi Verschelde
e28cdc4654 doc: Update version string in XML 2018-01-13 11:43:42 +01:00
Ruslan Mustakov
a5e98c5e33 Fix GDNative procedures returning godot_char_string 2018-01-12 22:35:41 +07:00
Rémi Verschelde
9135e61512
Merge pull request #15580 from karroffel/gdnative-api-fixes
[GDNative] updates to string API and const fixes
2018-01-11 15:43:33 +01:00
karroffel
9ece961abe [GDNative] updates to string API and const fixes 2018-01-11 00:17:43 +01:00
Emmanuel Leblond
58f3ad69c7
Fix warning when editor resource preview try to read pluginscript resource 2018-01-09 23:12:39 +01:00
Emmanuel Leblond
72d50b4185
Fix crash in pluginscript complete_code 2018-01-09 21:12:24 +01:00
Rémi Verschelde
29e68aa40e doc: Sync classref with current source 2018-01-07 01:37:45 +01:00
karroffel
66eed7b859 [GDNative] fix reloading of non-reloadable libraries 2018-01-06 21:10:01 +01:00
Juan Linietsky
50b975548d Removed PBM bitmap loader, added abiliy to importi mages as bitmap. Fixes #14828 2018-01-06 16:38:36 -03:00
karroffel
34cdcf5cd0 [GDNative] added reload property 2018-01-06 12:31:30 +01:00
Rémi Verschelde
e4213e66b2 Add missing copyright headers and fix formatting
Using `misc/scripts/fix_headers.py` on all Godot files.
Some missing header guards were added, and the header inclusion order
was fixed in the Bullet module.
2018-01-05 01:22:23 +01:00
Emmanuel Leblond
c1eba93cae
Disable lto for gdnative wrapper 2018-01-04 20:29:47 +01:00
George Marques
c9005ca7fd
Merge pull request #15246 from vnen/uwp-gdnative
Make GDNative DLLs work on UWP
2018-01-01 22:47:22 -02:00
George Marques
2a023a425d
Make GDNative DLLs work on UWP 2018-01-01 13:59:14 -02:00
Rémi Verschelde
b50a9114b1 Update copyright statements to 2018
Happy new year to the wonderful Godot community!
2018-01-01 14:40:47 +01:00
geequlim
13bd5c22c6 Add plugin to edit GDNativeLibrary
Rename GDNativeLibraryEditor to GDNativeLibrarySingletonEditor
2017-12-18 23:23:29 +08:00
Ruslan Mustakov
9d6d20e67c Remove get_stack_bottom
It's not used in godot-nim any longer and there were no other uses for
it.
2017-12-16 13:10:26 +07:00
Emmanuel Leblond
29df438f9a
Add missing godot_get_stack_bottom and godot_get_global_constants in gdnative_api.json 2017-12-15 00:37:46 +01:00
Rémi Verschelde
aeae05a2f4 Fix missing parenthesis 2017-12-09 23:36:41 +01:00
Rémi Verschelde
2b91a2059b GDNative: Fix warning when gdnative/singletons is missing 2017-12-09 23:32:40 +01:00
Rémi Verschelde
13c2ff9320 Style: Apply new clang-format 5.0 style to all files 2017-12-07 08:02:00 +01:00
Rémi Verschelde
d5ca9e2f6f Style: Apply clang-format again on all files
Fixes issues introduced by newer clang-format versions or commits
pushed directly without using the clang-format pre-commit hook.
2017-12-07 08:02:00 +01:00
Unknown
fd1b94e307 Improve slang, especially in user-visible parts 2017-12-05 15:41:38 +01:00
Rémi Verschelde
c7f9d8a059
Merge pull request #13992 from ISylvox/substract-to-subtract
Fix Typo: Substract to Subtract
2017-12-05 09:16:10 +01:00
Indah Sylvia
3996a05324 Fixed typo: substract to subtract 2017-12-05 11:34:46 +07:00
George Marques
6af42c536a
GDNative: Save singletons only if there's a change
Ensures that the Project Settings are saved only if the list of
singletons actually changed.
2017-12-05 00:25:29 -02:00
Juan Linietsky
9678231b10 Changed the dynamic library open function to allow setting the path of the library to open extra libraries. 2017-11-30 10:00:55 -03:00
Rhody Lugo
a65c0939fd disable caching for targets using helper functions 2017-11-28 23:24:12 -04:00
Bastiaan Olij
f00b60860c Set real world position, not virtual world position! 2017-11-28 23:28:35 +11:00
Rhody Lugo
a4a222d62d use the same cache for all branches for appveyor 2017-11-28 03:23:33 -04:00
Emmanuel Leblond
6e3d78c94c
[GDNative] disable -fPIC flag with msvc compiler 2017-11-25 20:26:42 +01:00
Rémi Verschelde
92f07fefcd doc: Remove setters and getters now exposed via properties/members 2017-11-24 18:10:32 +01:00
Rémi Verschelde
bc75fae579 doc: Update header version for 3.0-beta 2017-11-24 09:16:52 +01:00
Rémi Verschelde
15ada56d73 doc: Sync classref with current source 2017-11-24 09:16:27 +01:00
Rémi Verschelde
bedcbdd420
Merge pull request #13130 from endragor/gdnative-android-export
Proper GDNative export on Android
2017-11-21 23:59:01 +01:00
Rémi Verschelde
613d374bc5
Merge pull request #12284 from bojidar-bg/allow-subproperty-set
Allow for getting/setting "dotted" properties of objects
2017-11-21 22:44:14 +01:00
Emmanuel Leblond
b075f13988
Fix&prettify gdnative_api_struct.gen.h GDNATIVE_API_INIT macro generation 2017-11-21 20:09:08 +01:00
Bojidar Marinov
0cf9597758
Allow for getting/setting indexed properties of objects using get/set_indexed
Performance is around the same as using pure set() through GDScript.
2017-11-21 20:58:21 +02:00
Ruslan Mustakov
ebf9b80a47 Proper GDNative export on Android 2017-11-21 20:40:31 +07:00
Rémi Verschelde
1c2782a7c7
Merge pull request #12590 from poke1024/bsearch
Add bsearch and bsearch_custom to Array
2017-11-21 13:14:08 +01:00
Bastiaan Olij
1955fecb2d Revert this change, we need to export symbols on the library side 2017-11-21 21:32:05 +11:00
poke1024
d6e54de502 Add bsearch and bsearch_custom to Array 2017-11-21 08:50:31 +01:00
Ruslan Mustakov
8f0f327f02 Allow configuring iOS export
- EditorExportPlugin's _export_begin accepts all the arguments related
   to the current export (is_debug, path, flags).

 - EditorExportPlugin API is extended with methods allowing to configure
   iOS export: add_ios_framework, add_ios_plist_content,
   add_ios_linker_flags, add_ios_bundle_file.

 - iOS export template now contains Godot as a static library so that
   it can be linked with third-party Frameworks and GDNative static
   libraries.

 - Adds method to DirAccess for recursive copying of a directory.

 - Fixes iOS export to work with Xcode 9 (released recently).
2017-11-21 01:16:49 +07:00
Thomas Herzog
30a82e5e00
Merge pull request #13094 from karroffel/gdnative-api-register-nativecall
[GDNative] add a way to register call types
2017-11-20 15:43:36 +01:00
Karroffel
5d666319e3 [GDNative] add a way to register call types 2017-11-20 14:49:22 +01:00
Karroffel
7388a1e115 [GDNative] removed static linking fields 2017-11-20 14:28:52 +01:00
Karroffel
33ffdba553 [GDNative] removed godot_string_c_str 2017-11-20 11:10:05 +01:00
Karroffel
0865365e21 [GDNative] loading error and version error procs 2017-11-20 11:09:55 +01:00
Ferenc Arn
d28763a4c1 Rename Rect3 to AABB.
Fixes #12973.
2017-11-17 11:01:41 -05:00
Karroffel
b13bfac9e3 [GDNative] fix wrapper code generation 2017-11-16 22:05:47 +01:00
Rémi Verschelde
11e07d18bd doc: Sync classref with current source 2017-11-15 21:29:34 +01:00
Rémi Verschelde
677e95d8d1 doc: Make all module docs self-contained 2017-11-15 21:29:33 +01:00
Rémi Verschelde
967bfb0c4a doc: Remove revision.module_config from version string
It is now "3.0-alpha" instead of "3.0.alpha.custom_build{,.mono}",
limits unnecessary diffs.
2017-11-15 20:41:16 +01:00
Juan Linietsky
9543801d51
Merge pull request #12949 from karroffel/gdnative-export
[GDNative] export plugin
2017-11-15 14:05:21 -03:00
Karroffel
f1099c7221 [GDNative] export plugin 2017-11-15 17:24:32 +01:00
Rémi Verschelde
61a693cf78
Merge pull request #12922 from eska014/engine-singletons
Singleton management changes
2017-11-14 20:44:55 +01:00
Thomas Herzog
bd2b1a62d9
Merge pull request #12586 from karroffel/gdnative-gdnlibrary-changes
[GDNative] use feature tags, added load once option
2017-11-14 15:34:07 +01:00
Leon Krause
9b7b46143d Move singleton management from ProjectSettings to Engine 2017-11-14 15:15:13 +01:00
Evrey
af6f096427 fix auto-generated GDN API header for C compilers (#12891)
* fix auto-generated GDN API header for C compilers
2017-11-13 23:35:03 +01:00
BastiaanOlij
9d3f8418ca Removed add/remove interface bindings and added get_interfaces 2017-11-13 22:08:43 +11:00
Karroffel
6d6208c63d [GDNative] renamed nativearvr to arvr in api.json 2017-11-10 13:08:19 +01:00
Karroffel
79285b084d [GDNative] rename nativearvr extension to arvr 2017-11-10 12:36:50 +01:00
Karroffel
7ae2de8997 [GDNative] better API struct versioning 2017-11-10 12:08:09 +01:00
Karroffel
983404e0ce [GDNative] refactored API struct into core and extensions 2017-11-09 18:39:28 +01:00
Karroffel
a2e09a5d41 [GDNative] even more API fixes 2017-11-07 18:17:11 +01:00
Thomas Herzog
3cbcf5c2dd
Merge pull request #12612 from karroffel/gdnative-poolarray-accessors
[GDNative] added Read and Write accessors to pool arrays
2017-11-04 14:22:25 +01:00
Bastiaan Olij
25c38c7542
Merge pull request #12557 from BastiaanOlij/arvr_add_rumble_support
Adding rumble support to ARVR controllers
2017-11-04 08:57:25 +11:00
Karroffel
af5c6be074 [GDNative] added Read and Write accessors to pool arrays 2017-11-03 18:17:58 +01:00
Karroffel
8b11e17f70 [GDNative] small API bug fixes 2017-11-03 16:05:21 +01:00
Karroffel
d82942e1c5 [GDNative] removed anchors 2017-11-03 15:17:50 +01:00
Karroffel
ffc2669298 [GDNative] use feature tags, added load once option 2017-11-03 15:17:44 +01:00
Bastiaan Olij
167b7b5533 Adding rumble support to ARVR controllers (if implemented on the ARVR interface) 2017-11-01 23:59:14 +11:00
Jerome67000
2609cc9ef4 Removes Script::get_node_type()
used before GDScript, with squirrel apparently
2017-10-25 20:11:30 +02:00
Ignacio Etcheverry
e218a13a64 Add ScriptLanguage::supports_builtin_mode and improve ScriptCreateDialog
- Make ScriptCreateDialog disable the built-in script checked button if the language does not support it.
- ScriptLanguage's get_template and make_template now receive the script path as class name if the the script language does not have named classes.
2017-10-24 15:48:58 +02:00
Rémi Verschelde
6361e24f29 Cleanup unnecessary debug prints 2017-10-21 20:41:07 +02:00
Rémi Verschelde
8652c1d5b1 classref: Sync with current source 2017-10-21 12:04:36 +02:00
Emmanuel Leblond
aedc44f6fe
[GDnative] remove useless (and illegal !) STL include 2017-10-20 22:05:25 +02:00
scorched
3ba5ee42c3 Fix compilation on Visual Studio 2013 (#10219). 2017-10-20 12:55:22 +02:00
Thomas Herzog
8c50bc369e Merge pull request #11953 from touilleMan/pluginscript
[GDnative] add pluginscript \o/
2017-10-17 13:08:41 +02:00
Emmanuel Leblond
e715be0f0a
[GDnative] add pluginscript \o/ 2017-10-17 10:50:13 +02:00
Emmanuel Leblond
9c1f6c5db6
[Nativescript] fix crash when loading a library with missing godot_nativescript_init 2017-10-16 08:16:37 +02:00
BastiaanOlij
c6ce73c680 Couple of small changes so our ARVRInterfaceGDNative gets constructed and registered automatically when a module loads 2017-10-15 12:56:36 +11:00
Karroffel
86de8060a4 remove error message for optional NativeScript symbols 2017-10-15 03:42:52 +02:00
Karroffel
e0019453a2 update ARVRInterfaceGDNative to use API struct 2017-10-14 18:18:02 +02:00
Karroffel
e568f80e6e [GDNative] removed native_raw_call 2017-10-14 15:50:55 +02:00
BastiaanOlij
cc37d43f86 Redoing the ARVR GDNative interface as module and tighter implementation 2017-10-14 09:10:18 +11:00
Karroffel
916ee427ff removed GDNativeClass doc from GDNative module 2017-10-13 15:02:54 +02:00
BastiaanOlij
41e70d4192 Move GDNative docs into gdnative folder 2017-10-13 21:54:57 +11:00
Thomas Herzog
ea37f44ec8 Merge pull request #11950 from sheepandshepherd/gdnative_property_index
Include property index in GDNative class API
2017-10-09 13:55:36 +02:00
Emmanuel Leblond
6363bcf209
[GDnative] fix crash at cleanup time when singleton_gdnatives is not empty 2017-10-09 00:31:25 +02:00
sheepandshepherd
6f3fffecb3 Include property index in GDNative class API
Needed by properties that share set/get functions. Fixes #10329.
2017-10-08 23:57:06 +02:00
Emmanuel Leblond
ce197990bc
[GDnatvie] improve wrapper code generation 2017-10-08 20:51:18 +02:00
Emmanuel Leblond
d17951f57e
[GDnative] Add string_name api 2017-10-08 16:47:10 +02:00
sheepandshepherd
39584f3312 Store GDNative API in array instead of dictionary 2017-10-07 20:17:12 +02:00
Juan Linietsky
3d87b70f7a Added the set/get_setting function in Editor/Project settings. Renamed has() to has_setting. Fixes #11844 2017-10-05 15:34:34 -03:00
Thomas Herzog
454dec2f2f Merge pull request #11806 from touilleMan/gdnative-version-field
[GDnative] add api version field to godot_gdnative_api_struct
2017-10-04 11:57:53 +02:00
Emmanuel Leblond
3e29cb806c
[GDnative] add future-proof next field to godot_gdnative_api_struct (a la Vulkan) 2017-10-04 03:11:41 +02:00
Karroffel
2a4e2b5378 [GDNative] added API struct wrapper generator
Previously functions of the GDNative API were accessed by letting
the loader at load-time resolve the symbols. This causes troubles on
Windows (...sigh...), so now the GDNative API isn't exported anymore.

This means, that a library that wants to call a GDNative function
needs to access it via a struct of pointers that's passed to it at
right after the library was loaded. To make the usage easier, those
function pointers in the struct can be wrapped in actual function in
the global scope. This commit adds a generator for that wrapper code.
2017-10-03 23:26:39 +02:00
Emmanuel Leblond
0d41be3790
[GDnative] add api version field to godot_gdnative_api_struct 2017-10-03 18:08:34 +02:00
Emmanuel Leblond
cdc29926af
[GDnative] replace gdnative_api_struct.h by a json-based autogenerated system 2017-10-03 09:48:52 +02:00
Emmanuel Leblond
c55b8217ab
[GDnative] Add active_library_path to init options struct 2017-10-02 13:45:47 +02:00
Emmanuel Leblond
c11c951871
[GDnative] Add binding to GDNativeLibrary::get_active_library_path 2017-10-02 13:25:53 +02:00
Ruslan Mustakov
f5b3b24c22 Enhance iOS export
- The export process now builds complete .ipa on macOS, instead of just
   creating XCode project.

 - The project includes Capabilities games usually require: Game Center,
   Push Notifications, In-App Purchase.

 - Icons and launch screens can be specified in export preset.
2017-09-26 00:18:08 +07:00
Ross Hadden
1a97d6455d Fixed a bunch of typos, including an error code. 2017-09-21 23:58:29 -04:00
Hein-Pieter van Braam
833c3917b2 Allow booleanization of all types
We now allow booleanization of all types. This means that empty versions
of all types now evaluate to false. So a Vector2(0,0), Dictionary(),
etc.

This allows you to write GDScript like:
if not Dictionary():
  print("Empty dict")

Booleanization can now also no longer fail. There is no more valid flag,
this changes Variant and GDNative API.
2017-09-19 18:55:31 +02:00
Konstantin Zaitsev
28dc30cd59 Change structure order for godot nim compatibility 2017-09-19 11:35:51 +07:00
Konstantin Zaitsev
c386a02654 Fix MSVC compilation errors 2017-09-19 10:33:07 +07:00
Thomas Herzog
259778ce8c Merge pull request #11296 from touilleMan/gdnative-api-struct
[GDnative] pass api as struct of function pointers to loaded gdnative modules
2017-09-17 20:59:46 +02:00
Emmanuel Leblond
8d57a3f3d5
[GDnative] Use X macro to define godot_gdnative_api_struct and it instantiation 2017-09-17 18:33:08 +02:00
Emmanuel Leblond
e4c9f8895e
[GDnative] create godot_gdnative_api_struct and pass it to godot_gdnative_init_options 2017-09-17 16:13:14 +02:00