ca7ce5f13c
[change] signature of calcMoMw changed; renamed getinvdir to get_metadata
...
removed an unused remnant parameter invdir from definition of calcMoMw; method getinvdir from Magnitude class has been renamed and modified and returns now the metadata information and not only the inventory directory
2016-09-21 10:27:47 +02:00
a54ffe01f8
[new, bugfix] use new metadata concept in the scope of QtPyLoT; consistent use of input variables
...
input variables should always be used; avoid hard-coded parameters
2016-09-20 13:45:49 +02:00
21042bc071
Merge branch 'feature/magnitude4QtPyLoT'
...
Conflicts:
pylot/core/util/dataprocessing.py
pylot/core/util/widgets.py
2016-09-20 13:24:37 +02:00
c73435dec3
[fix] do not calculate moment magnitude for S phases
2016-09-20 09:54:14 +02:00
420f382051
[cherry-pick] merged conflicts after cherry-pick of commit [ 17585f9381
]
2016-09-19 11:42:52 +02:00
fa19ae9b9c
[bugfix] only try to calculate moment magnitude given w0 and fc
2016-09-19 11:35:59 +02:00
8ee515e79f
[bugfix] do not continue calculation without given data
2016-09-19 11:34:03 +02:00
5155efc710
[bugfix] do not try to give a full filepath for searching issue
2016-09-19 11:33:08 +02:00
17585f9381
[rename] renaming getGlobalTimes for consistency and introduction of similar new function in future commit
2016-09-19 11:29:33 +02:00
d7680f8ae3
Merge branch 'feature/magnitude4QtPyLoT'
...
Conflicts:
pylot/core/util/utils.py
2016-09-13 12:02:21 +02:00
3d41e0abcd
[refs #200 ] take advantage of the newly imported input file for magnitude calculation
2016-09-08 15:31:23 +02:00
6e6b3570a8
[bugfix] now plotting of picks works also if less data than picks are available
2016-09-08 15:29:37 +02:00
a2ddd04b2f
[bugfix] cancelling localization now works and gives information about the localization state
2016-09-08 15:28:40 +02:00
cbbe019475
[new] read generalized parameter input file
2016-09-08 14:02:21 +02:00
49b07163ad
[bugfix] saving data did not work properly due to changed variable signature; picking on just one horizontal component now possible, crash was caused by mismatching component labels -> new function added to find these labels from the available data
2016-09-08 09:54:43 +02:00
f6d05dd2cc
[refs #200 ] use distance in kilometres
...
ObsPy provides the epicentral distance in degree if the event information are read from a NLLoc hyp-file. To calculate the correct moment magnitude values it is essential to have the distance in kilometres instead.
2016-09-07 11:05:10 +02:00
12641f8d52
[refs #200 ] fixing some minor bugs during processing of magnitude
2016-09-05 15:00:08 +02:00
e1e3d54f8e
[refs #200 ] corrected call to QFileDialog
2016-09-05 10:16:12 +02:00
e6b788d423
Merge branch 'develop'
...
Conflicts:
QtPyLoT.py
pylot/core/io/data.py
2016-09-02 14:24:34 +02:00
76a856aa11
[clean-up] some code cosmetics and started to implement eventinformation
2016-09-02 14:21:59 +02:00
9f13f8db49
[refs #200 ] finished magnitude calculation (to be tested)
2016-09-02 09:03:51 +02:00
d98ecea18a
[refs #200 ] now merging picks without destroyed reference resource IDs
2016-09-01 14:21:25 +02:00
81640d30f9
[refs #200 ] ongoing work on parameter derivation
2016-08-31 13:41:18 +02:00
facffa1bf2
[refs #200 ] started to implement magnitude determination from QtPyLoT
2016-08-31 12:16:48 +02:00
ad91504211
[ref #137 ] removing last bugs before closing feature
2016-08-29 15:52:58 +02:00
060bc1d0c8
[refs #137 ] bugfix value now is specified by user on demand
2016-08-26 14:36:33 +02:00
30ccd331d4
[refs #137 ] bugfix in widgets.py badly formatted string corrupted load of settings; added a functionality to utils' which function to also look for NLLoc installation in the settings' binary path
2016-08-26 10:48:16 +02:00
b29c7068e3
[refs #137 ] some improvements in autoPyLoT and ongoing work in the QtPyLoT NLL implementation
2016-08-25 21:32:41 +02:00
e53dd99d75
[refs #137 ] implementation of GUI driven NonLinLoc location started
2016-08-25 13:31:51 +02:00
14cd175297
[bugfix] it was not possible to pick the very first station manually
2016-06-10 09:01:37 +02:00
8e09fd7c42
[refs #195 ] pushing GUI element implementation forward
2016-06-07 13:51:03 +02:00
536019259e
[adresses 195] preparing GUI elements for a new dialog widget for interactive comparison
2016-06-06 14:10:46 +02:00
de89fc83ce
moved widget to utils widgets for consistency and reusability
...
additionally the filter for PHASES and LOC files has been modified to avoid false selection
2016-06-02 09:39:01 +02:00
0d7ee9d779
[fixed] loading of automatic picks did not plot any result (fixed in this rev)
2016-06-01 08:55:43 +02:00
62b1a4e670
making widget reusable
2016-05-31 17:36:00 +02:00
73c49d8291
improved plotting performance especially for large data sets
2016-05-31 17:27:59 +02:00
7965239a92
[ closes #124 ] PILOT event data can be loaded now
2016-05-31 15:53:23 +02:00
36b0aea86c
[edit] fixing bugs (in progress)
2016-05-27 12:53:34 +02:00
618dd10c23
[task] further steps to implement pick comparison from QtPyLoT
2016-05-27 11:25:47 +02:00
163a501ae9
introducing automatic data into QtPyLoT
2016-05-27 07:43:54 +02:00
392a556ac4
[restructure] Wall-E wasting time
2016-05-20 14:46:10 +02:00
41991c5d81
[edit] further restructuring and bugfixing
2016-05-03 13:54:59 +02:00
210d39882d
further development on the reassessment routines for PILOT data
2016-05-03 08:46:13 +02:00
edd8920d54
WALL-E --- Small robot, big job! Restructuring the code and preparing implementation of a re-assessment tool for PILOT phases.
2016-05-01 21:10:30 +02:00
a9cd53886b
[enhancement, task] there was no routine to read obs pick files available; default values for autopicking should be the same for all parts of PyLoT, thus defaults should be defined only once
2016-04-11 05:47:38 +02:00
bd2bad7367
[adresses #195 ] task related new function introduced
2016-03-30 15:25:06 +02:00
a2640e3126
reformatting code
2016-03-30 07:00:31 +02:00
2d66248cf9
[ fixes #172 ] now also in overview all horizontals are plotted
2016-03-29 14:06:57 +02:00
4409a9c3ce
[ fixes #179 ] plotting of picks preserved after filtering
2016-03-29 12:09:26 +02:00
7b22bce2b0
[ close #190 ] pick handling is now consistent for manual and automatic picks
...
manual and automatic picks are now treated in the same way but separately; implementation of comparison routines should be much more easy now
2016-03-29 11:26:08 +02:00
14048d6784
[edit] reformat string only if certain prefix is found
2016-03-29 11:00:31 +02:00
f075970f5e
[adresses #190 ] autopicks in QtPyLoT can now also be updated
...
this change is necessary to be able to load autopickdata from storage independently
2016-03-29 10:30:45 +02:00
040c21dc13
[adresses #190 ] read information on the picker if available
2016-03-29 08:47:03 +02:00
c1c2aa4b7c
[bugfix] value has to be returned in either case
2016-03-23 12:01:46 +01:00
cad6ed2274
[edit] exit if no waveform files are selected
...
PyLoT will only start if waveformfiles are selected
2016-03-22 10:49:06 +01:00
b8d680f54f
189 Channels shown in wrong order.
2016-03-18 15:35:12 +01:00
6f26ab07b7
[ closes #184 ] saving picks works
...
saving now works without openening the filename prompt twice or more often
2016-03-03 13:17:10 +01:00
ddc682de95
[bugfix] selected file filter should be evaluated
2016-03-02 11:04:11 +01:00
f01c6109a8
[reformat] reformatted imports and parentheses indentation
2016-01-29 07:21:17 +01:00
Ludger Küperkoch
28276d1f8c
Set default path for autoPyLoT_local.in to /home/user/.pylot using os.expanduser("~").
2015-12-04 14:39:17 +01:00
ed7a323c50
[new] reverting stdout redirection after auto picking is done; added method finalizeAutoPick for purposes to be done after the auto picking thread has finished
2015-12-01 05:04:26 +01:00
d29c57ab4b
[bugfix] AutoPickLog is now directly attached to the MainWindow on the LeftDockWidgetArea and autoscrolls to the bottom
2015-11-30 09:55:33 +01:00
3f91fddd3e
[new] added attribute autopicks to and modified corresponding handling methods in class MainWindow
2015-11-30 09:50:47 +01:00
50a5586355
[bugfix] autoPickListWidget is directly attached to the main window and autoScrolls to the latest entry
2015-11-26 05:17:26 +01:00
386131e9f3
started implementation of NLLoc properties selection into manualPyLoT; new utility routine to find indices throughout QComboBox' items
2015-11-20 09:06:52 +01:00
c51ba1bd56
[bugfix] trying to figure out cause of segmentation fault
2015-11-18 09:30:32 +01:00
ed17272999
[bugfix] attribute was unset before using property setter
2015-11-14 11:46:46 +01:00
69011f13ac
[new] started to incorporate NLLoc into manualPyLoT
2015-11-13 14:05:29 +01:00
8ae692db70
[new] added a locate button to the toolbar in the GUI (not working yet)
2015-11-09 08:53:26 +01:00
9c7fbc4725
[new] introduced new attribute loc in order to control localization relevant GUI elements depending on the number of available phase onsets
2015-11-06 15:40:21 +01:00
21bb39d528
[new] preparing MainWindow for location button
2015-11-06 08:20:08 +01:00
a31e1a21f0
[bugfix] now filtering in the main window works; filter parameters are not stored -> has to be checked again
2015-10-31 00:07:24 +01:00
2201c3ea4d
[modified] restructured filterWaveformData method in order to make the GUI more intuitive
2015-10-30 08:39:51 +01:00
a2047aa37b
[disabled] P and S buttons preliminary removed due to unclear functionality
2015-10-30 08:37:00 +01:00
0a7b02c04a
general clean-up 2.0 even more checks made and issues resolved
2015-10-19 11:25:15 +02:00
3dc9bb3d06
some pick plotting issues solved; replotting main window if picks have been changed, otherwise just plot additional/deleted picks
2015-09-25 15:06:59 +02:00
d1f1fb42f3
[ fixes #176 ] event files are now opened and loaded correctly and picks are plotted in place
2015-09-21 08:48:29 +02:00
ff2b50f615
made some changes to make the code more idiomatic and renamed method convertPicks4PyLoT to updatePicks
2015-09-18 09:54:29 +02:00
2b42583999
debugged some code fragments while trying to solve the load event data problem
2015-09-17 17:55:40 +02:00
7a47594614
debugged some code fragments while trying to solve the load event data problem
2015-09-17 17:45:10 +02:00
f5fa4f4faf
Python 3 compatibility
2015-09-07 10:03:12 +02:00
4eef4d238b
176 open event failure
2015-09-04 15:01:59 +02:00
cc0b1e0a5b
176 open event failure
2015-09-03 13:21:46 +02:00
7588ad3c5b
resolved conflicts
2015-08-31 13:45:25 +02:00
623f5d7b7e
[addresses #167 ] started fixing the multiple phase saving issue
2015-08-31 13:37:18 +02:00
1f7049691c
[addresses #167 ] started fixing the multiple phase saving issue
2015-08-28 16:01:42 +02:00
3dd65b9cc3
[addresses #167 ] started fixing the multiple phase saving issue
2015-08-27 12:55:34 +02:00
0b02e8c213
Merge branch 'export-and-save-picks' into develop
2015-07-18 16:13:37 +02:00
f4f744e22c
export and save picks implemented successfully
2015-07-18 16:11:20 +02:00
1e58a86110
[bugfix] forgot to commit changed imports due to class naming changes in [ 49bf0ecd3c
]
2015-07-14 08:10:49 +02:00
d79165a9f2
[bugfix] pick times are absolute times, thus for plotting the start time has to be subtracted
2015-07-13 06:40:10 +02:00
641cb498f0
make labeling the trace slightly more efficient
2015-07-13 06:36:33 +02:00
ae563454af
Merge branch 'develop' of 134.147.164.251:/data/git/pylot into develop
2015-07-10 09:23:05 +02:00
ea976295d0
huge structural rearrangement to resolve circular import problems
...
[add] new feature added to QtPyLoT capable of automatically picking an event from overview window
2015-07-10 09:22:58 +02:00
Ludger Küperkoch
2bd31f433b
Changed labeling within overview window, station IDs are shown instead of running number.
2015-07-09 15:50:29 +02:00
398a25f902
non-working commit of autoPyLoT functionality in overview window
2015-07-09 11:37:03 +02:00
1bee360bbb
use get methods rather than directly access attributes
2015-07-08 15:14:05 +02:00
591e5a7110
standard output format should be QuakeML for saving the event relevant data, moreover the other formats should only be written temporarily for processing purposes
2015-07-08 15:12:35 +02:00
173724ee5a
make use of the __version__ variable other than updating the RELEASE_VERSION file
2015-07-07 14:27:29 +02:00
3320cd64a4
switching components enabled in overview window
2015-07-07 14:21:11 +02:00
6078338757
added a splash screen
2015-07-07 12:14:18 +02:00
960f9ca71a
use only the high resolution icon
2015-07-07 11:21:06 +02:00
b8c92ed551
preparing to parse the picks to the picking window
2015-07-07 11:02:46 +02:00
a8fe4b7419
give variable declaration a sense
2015-07-07 10:47:55 +02:00
5507a22865
actually draw picks into the overview window
2015-07-07 10:46:27 +02:00
e051be8a06
code cosmetics and give some hint on the usage of the overview window in the status bar
2015-07-07 10:45:42 +02:00
3dd02d7f0c
do not print information to standard out but into the status bar (recognizable for the user)
2015-07-07 10:44:06 +02:00
dd8766277a
last four commits might not work without the imports coming with this one
2015-07-07 10:39:51 +02:00
5d2900510e
added methods for drawing picks to the main window
2015-07-07 10:39:01 +02:00
06d6060a9f
added method to add picks to the picks dictionary and warn the user if he/she is about to overwrite pick information
2015-07-07 10:37:54 +02:00
4990e33d27
added utility functions for pick handling
2015-07-07 10:33:14 +02:00
f99f5dbc8f
unified icon set used for PyLoT in order to match the license restriction
2015-07-07 10:31:39 +02:00
a08c9e91e0
Ludger reported a Qt Problem that the MPLWidget was not recognized as an PySide.QtGui.QWidget; the problem was not reproducible on my system; maybe the problem was caused because getnoisewin is now imported from pick/utils and there matplotlib is imported for plotting reasons but to clarify the Qt backend used by matplotlib, it should not be imported before
2015-07-06 09:51:59 +02:00
b42f88605b
the main application window now opens in fullscreen mode
2015-06-25 10:25:08 +02:00
ca4c5edb18
make the code more readable
2015-06-23 13:22:30 +02:00
c5da8fd994
changed usage signature of some function from module utils and the corresponding calls
2015-06-11 10:12:50 +02:00
546e919dc9
code clean-up following several conventions
2015-06-11 10:07:21 +02:00
e0568e3849
write picks into data object (work in progress)
2015-06-10 15:36:37 +02:00
043c45e02c
bugfix: undo filtering when checkbox is unchecked
...
code improvement: class PickDlg -> distinguish between setting the initial pick (for zooming) and setting the actual pick (phase onset); methods renamed -> setPick is now setIniPick and plotPick became setPick
2015-04-06 11:42:21 +02:00
b243be8075
task: implementation of picking (work in progress)
2015-04-02 18:48:06 +02:00
e35d6b9371
bugfix: modified icon management and corrected usage of references
2015-04-02 18:36:21 +02:00
27ecdb899b
plotting scheme restructured: the same widgets are used for plotting the overview and the station plots, the plotting method has been moved to the widget side which makes more sense than having it on the data side;
...
new functions in utils module: prepTimeAxis returns a proper time axis array for a given start time and an obspy trace; getGlobalTimes returns the minimum start time and the maximum end time (edges) of a given obspy stream object
2015-03-29 08:07:46 +02:00
474622027e
now the station selection works fine and a picking window is opened when the waveform has been clicked
2015-03-12 13:59:29 +01:00
a0bbe8ca04
trying to get the picking of plot coordinates working (pending for poster preparation)
2015-03-11 12:05:52 +01:00
c7aeb1959b
implement picking window and station selection (tests pending due to not working station selection so far)
2015-03-09 11:21:33 +01:00
Sebastian Wehling
e321ad26b2
make creating new event work
2015-03-06 09:03:04 +01:00
Sebastian Wehling
a86a2efb8a
debugging in progress (filter waveform not working)
2015-03-05 14:52:34 +01:00
Sebastian Wehling
5f0b7fbdc0
bugfix: fixed usage of createAction do to outsourcing
2015-03-04 15:40:25 +01:00
Sebastian Wehling
0dbcca1c6f
moved function createAction to the widgets module (reused in additional widget)
...
bugfix: on Linux systems os.getlogin raises an exception (reimplementation: getLogin)
2015-03-04 11:52:04 +01:00
addb8ae815
try to make filtering work
2015-03-01 19:59:41 +01:00
c5f9842c37
added a toolbar (work in progress)
2015-02-23 14:47:38 +01:00
d9b685eebb
display more detailed status messages
2015-02-23 14:46:18 +01:00
cb114dc696
bugfix: displayed status message has not been updated properly
2015-02-23 14:45:47 +01:00
d4d464d400
generalized method addActions in order to be more flexible in adding actions to different QtObject types
2015-02-23 14:38:26 +01:00
cc002c9460
bugfix: wrong return type expectation corrected
2015-02-23 14:35:00 +01:00
4184fcffdc
make waveform filtering work (in progress)
2015-02-20 08:38:26 +01:00
4344a7c8a6
unnecessary code overhead; return type is clear anyway (different return type for PyQt!!!)
2015-02-20 08:37:21 +01:00
b10d8606cc
at least print error messages to screen (helps debugging ^^)
2015-02-20 08:36:20 +01:00
7dd1519f83
use similar method names for similar types of methods (e.g. xWFData for all methods connected to waveform data)
2015-02-20 08:35:26 +01:00
35c184ede7
bugfix: in order to be able to check for checkable these should be available in the namespace, thus these actions have been set as attributes of the MainWindow object
2015-02-20 08:30:17 +01:00
82ac85d743
bugfix: return value of QFileDialog method calls must be handled carefully
2015-02-18 15:30:24 +01:00
5c9f17bce3
bugfix: attribute was of wrong kind for which the successive call raised an exception
2015-02-18 15:27:50 +01:00
d15441900e
bugfixes in order to make the GUI work
2015-02-17 13:17:01 +01:00
8acd84976e
optimization of the codes outer appearance
2015-02-16 10:31:25 +01:00
fa6db084b8
Data object restructured for convenience; fixed problems in the class logic; restructured imports
2015-02-16 10:30:35 +01:00
2b8c60a3d4
now only Signal is imported from PySide avoiding overhead by importing SIGNAL additionally
2015-02-16 10:28:28 +01:00
d477467b02
method renamed to avoid misunderstanding
2015-02-16 10:27:32 +01:00
61c136fec3
fixed a startup problem: a figure was opened without parent object (MainWindow) and led to crash before the MainApplication opened properly
2015-02-16 10:26:05 +01:00
0e73f21bda
imports restructured and optimized
2015-02-16 10:24:17 +01:00
3508d00c28
catch case where no filename for the actual opened event is defined
2015-02-13 11:24:27 +01:00
2b5e8216ba
new method the get the latest event that has been opened see also [ 7e3bcef
]
2015-02-13 11:23:01 +01:00
922cb6a807
recursive call to openWaveFormData deleted
2015-02-13 11:20:29 +01:00
81ce161744
automatic reformatting of the code
2015-02-13 11:19:10 +01:00
30503185e4
initialize all attributes that might be used in startup methods (bugfix)
2015-02-13 11:17:18 +01:00
7e3bcefd19
only store the last 5 events
2015-02-13 11:16:20 +01:00
1c40cb3852
bugfix: wrong call to a method
2015-02-13 11:15:48 +01:00
35e477c13f
by default the last opened event is loaded on restart
2015-02-13 11:14:17 +01:00
903e87e1e1
usage of DATASTRUCTURE modified
2015-02-13 11:13:21 +01:00
d3199a5798
implementation of reading and plotting seismograms (work in progress)
2015-02-07 09:05:08 +01:00
7092f6e8b5
the MainWindow now should give the right component in the title
2015-02-07 09:03:03 +01:00
bc87c12cfa
new attribute dispComponent added to the MainWindow class to control the displayed component
2015-02-04 14:50:49 +01:00
36675d4a92
code clean up
2015-01-29 08:53:01 +01:00
9dc5b57ee0
new attribute introduced holding information about the component of the seismic waveforms to display in the overview plot
2015-01-29 08:52:01 +01:00
f5eda74730
method getWFFnames implemented returning the file names of the waveform data files given in a particular data structure case as well as setting the attribute pointing to the same information; method openWaveformData implemented in order to read waveform data into the Data object
2015-01-29 08:48:25 +01:00
8eb69822b1
re-organization of the MainWindow methods (for convenience only)
2015-01-29 08:41:38 +01:00
d22a224804
data plotting; waveform filtering and convenience imports in order to get a overview window displaying data; new data structure available -> PyLoT should be able to read PILOT data
2015-01-26 21:11:53 +01:00
23fa136dc5
get data from the NewEvtDlg dialog for event creation
2015-01-23 10:21:34 +01:00
64158174e6
currently working on the plotting of waveforms; changes made to meet pre-requisites to data plotting
2015-01-22 16:41:52 +01:00
ef50c3d4d8
bugfix: single element tuple declaration was wrong
2015-01-21 16:07:43 +01:00
45fb1935ef
added FormatError to convenience imports of package util
2015-01-20 14:02:29 +01:00
540891f3d7
preferences panel works for me; settings saved properly
2015-01-20 13:58:23 +01:00
4769b447a8
added help menu to the menubar
2015-01-20 13:56:15 +01:00
ff98371a04
add recent events to file menu
2015-01-20 13:55:15 +01:00
0bfe2ccc3d
new method added in order to add actions and separators to the menu in the menubar more easily
2015-01-20 13:54:17 +01:00
9bbbe89b36
add recent events to file menu
2015-01-20 13:46:16 +01:00
f0d60de745
add save data method
2014-12-17 12:16:32 +01:00
8213cdc575
PropertiesDlg added to the MainWindow (not tested yet)
2014-12-17 06:33:34 +01:00
0749420f9a
filter possible event format file extension for selection from file dialog
2014-12-17 06:30:03 +01:00
d665e47d02
get values for filter parameters from widget
2014-12-09 05:25:43 +01:00
9e7f20a9fb
create a working MainWindow
2014-12-08 11:38:24 +01:00
ef8bd6572e
create a working MainWindow
2014-12-08 10:26:14 +01:00
9603f7127c
imports corrected; menu definition changed
2014-12-04 05:13:32 +01:00
d7a4692afc
tried to get filter options popup working (not working yet)
2014-12-01 12:42:50 +01:00
ec1cc26b8c
new method okToContinue written in order to prevent accidental dataloss
2014-12-01 12:41:56 +01:00
dc43a3520d
do not "save" actions as Attributes of the MainWindow
2014-12-01 12:39:56 +01:00
4acf634f8d
loadData changed; now uses information from the sender to evaluate the fname to read
2014-12-01 12:37:52 +01:00
9d38ed9771
new QSettings added
2014-12-01 12:36:23 +01:00
746b073572
changed imports as some were not necessary and others are now mandatory
2014-12-01 12:34:44 +01:00
fc3e1a613e
added quit functionality
2014-12-01 08:40:35 +01:00
d405e9e6f9
debug GUI
2014-11-28 11:15:49 +01:00
9dc57e3977
icon for P and S phase selection added
2014-11-28 09:19:16 +01:00
d47623ed65
implementation of standard icons corrected
2014-11-27 10:59:34 +01:00
094213bd21
method createAction implemented in order to create menu entries
2014-11-27 10:13:17 +01:00
9ff18c7425
changes made in order to get the GUI working for the first time
2014-11-26 08:46:16 +01:00
9958c86287
fixed wrong usage of attribute wfdata
2014-11-21 10:06:04 +01:00
8c66f1823a
cleaning up main window for first test runs
2014-11-13 11:29:42 +01:00
86803cdff0
debugging UI problems to get the main application running
2014-11-06 15:07:05 +01:00
bff84ede81
moved QtPyLoT.py (main program) to the base directory
2014-10-30 13:36:19 +01:00