deliverable/lttng-analyses.git
9 years agoStyle: correct pep8 errors
Antoine Busque [Fri, 6 Mar 2015 23:31:28 +0000 (18:31 -0500)] 
Style: correct pep8 errors

9 years agoFix: set cpu id in constructor
Antoine Busque [Fri, 6 Mar 2015 23:20:13 +0000 (18:20 -0500)] 
Fix: set cpu id in constructor

9 years agoMinor: add comment in irq state provider to clarify execptional softirq creation
Antoine Busque [Fri, 6 Mar 2015 20:07:01 +0000 (15:07 -0500)] 
Minor: add comment in irq state provider to clarify execptional softirq creation

9 years agoStyle: rename method in memtop for consistency
Antoine Busque [Fri, 6 Mar 2015 20:05:05 +0000 (15:05 -0500)] 
Style: rename method in memtop for consistency

9 years agoFix tracking of softirq_raises and corresponding entries
Antoine Busque [Thu, 5 Mar 2015 23:30:57 +0000 (18:30 -0500)] 
Fix tracking of softirq_raises and corresponding entries

9 years agoFix: don't print raise_ts multiple times in irq log
Antoine Busque [Thu, 5 Mar 2015 20:21:08 +0000 (15:21 -0500)] 
Fix: don't print raise_ts multiple times in irq log

9 years agoSimplify irq cli args transform
Antoine Busque [Thu, 5 Mar 2015 20:20:50 +0000 (15:20 -0500)] 
Simplify irq cli args transform

9 years agoRefactor IrqAnalysisCommand to work with rewritten analysis
Antoine Busque [Thu, 5 Mar 2015 04:38:56 +0000 (23:38 -0500)] 
Refactor IrqAnalysisCommand to work with rewritten analysis

9 years agoAdd reset method to IrqStats
Antoine Busque [Thu, 5 Mar 2015 04:32:31 +0000 (23:32 -0500)] 
Add reset method to IrqStats

9 years agoKeep irq list by id and count irq raises
Antoine Busque [Thu, 5 Mar 2015 03:14:50 +0000 (22:14 -0500)] 
Keep irq list by id and count irq raises

9 years agoSimplify filter_irq function in CLI
Antoine Busque [Wed, 4 Mar 2015 22:58:10 +0000 (17:58 -0500)] 
Simplify filter_irq function in CLI

9 years agoTrack CPU id in interrupt objects
Antoine Busque [Wed, 4 Mar 2015 22:57:15 +0000 (17:57 -0500)] 
Track CPU id in interrupt objects

9 years agoRename irq analysis cli module to IrqAnalysisCommand to avoid ambiguity
Antoine Busque [Wed, 4 Mar 2015 20:15:18 +0000 (15:15 -0500)] 
Rename irq analysis cli module to IrqAnalysisCommand to avoid ambiguity

9 years agoImplement filtering by duration for IrqAnalysis
Antoine Busque [Wed, 4 Mar 2015 20:14:28 +0000 (15:14 -0500)] 
Implement filtering by duration for IrqAnalysis

9 years agoUpdate copyright info for modified files
Antoine Busque [Wed, 4 Mar 2015 20:13:31 +0000 (15:13 -0500)] 
Update copyright info for modified files

9 years agoImplement initial IrqStats system for analysis
Antoine Busque [Wed, 4 Mar 2015 07:43:01 +0000 (02:43 -0500)] 
Implement initial IrqStats system for analysis

9 years agoStyle: replace double quotes by single quotes in lttnganalysescli
Antoine Busque [Tue, 3 Mar 2015 20:59:26 +0000 (15:59 -0500)] 
Style: replace double quotes by single quotes in lttnganalysescli

9 years agoStyle: replace double quotes by single quotes in lttnganalyses
Antoine Busque [Tue, 3 Mar 2015 20:56:17 +0000 (15:56 -0500)] 
Style: replace double quotes by single quotes in lttnganalyses

9 years agoStyle: replace double quotes by single quotes in linuxautomaton
Antoine Busque [Tue, 3 Mar 2015 20:54:57 +0000 (15:54 -0500)] 
Style: replace double quotes by single quotes in linuxautomaton

9 years agoImplement notification for communication from automaton to analyses
Antoine Busque [Tue, 3 Mar 2015 20:10:44 +0000 (15:10 -0500)] 
Implement notification for communication from automaton to analyses

9 years agoRemove superfluous clear_screen string in irq _print_stats
Antoine Busque [Tue, 3 Mar 2015 01:35:27 +0000 (20:35 -0500)] 
Remove superfluous clear_screen string in irq _print_stats

9 years agoRefactor IRQ state provider and related classes
Antoine Busque [Tue, 3 Mar 2015 01:32:05 +0000 (20:32 -0500)] 
Refactor IRQ state provider and related classes

The IRQ state provider is now devoid of "analysis" or aggregation code
and now tracks the current state only, and does so using the newly
implemented HardIRQ and SoftIRQ classes in sv. The removed analysis code
will be reimplemented in the IRQ module of the analysis package, once
the notification system between automaton and analysis is implemented.

9 years agoRemove unused final argument in _print_results in cli
Antoine Busque [Mon, 2 Mar 2015 19:10:13 +0000 (14:10 -0500)] 
Remove unused final argument in _print_results in cli

9 years agoFix: don't count freed pages twice in memtop, reorganize printing code
Antoine Busque [Sat, 28 Feb 2015 02:22:00 +0000 (21:22 -0500)] 
Fix: don't count freed pages twice in memtop, reorganize printing code

9 years agoFix: display unkwown for pname/pid in block read/write when we don't have the info
Antoine Busque [Sat, 28 Feb 2015 00:39:06 +0000 (19:39 -0500)] 
Fix: display unkwown for pname/pid in block read/write when we don't have the info

9 years agoFix: check that current_tid is not None instead of -1
Antoine Busque [Sat, 28 Feb 2015 00:38:03 +0000 (19:38 -0500)] 
Fix: check that current_tid is not None instead of -1

9 years agoInitialize self.state in Command module when creating automaton
Antoine Busque [Sat, 28 Feb 2015 00:34:55 +0000 (19:34 -0500)] 
Initialize self.state in Command module when creating automaton

9 years agoPythonify tests for empty or uninitialized structures and arguments
Antoine Busque [Fri, 27 Feb 2015 20:41:45 +0000 (15:41 -0500)] 
Pythonify tests for empty or uninitialized structures and arguments

9 years agoUse None instead of -1 or 0 for default argument values
Antoine Busque [Fri, 27 Feb 2015 20:23:46 +0000 (15:23 -0500)] 
Use None instead of -1 or 0 for default argument values

9 years agoAdd callback registration to analysis module
Antoine Busque [Fri, 27 Feb 2015 04:13:16 +0000 (23:13 -0500)] 
Add callback registration to analysis module

9 years agoReplace usage of -1 as default/invalid value by None
Antoine Busque [Fri, 27 Feb 2015 04:05:12 +0000 (23:05 -0500)] 
Replace usage of -1 as default/invalid value by None

9 years agoClean-up mem and sched state providers and related modules.
Antoine Busque [Fri, 27 Feb 2015 02:51:24 +0000 (21:51 -0500)] 
Clean-up mem and sched state providers and related modules.

Removed deprecated code left over from old analysis framework,
began to pythonify remaining code and to improve clarity/legibility
(which means, amongst other things, removing single-letter variable
names).

9 years agoReplace integer logic by boolean value
Antoine Busque [Wed, 25 Feb 2015 20:04:34 +0000 (15:04 -0500)] 
Replace integer logic by boolean value

9 years agofix: missing sync in i/o syscalls list
Julien Desfossez [Tue, 24 Feb 2015 18:20:11 +0000 (13:20 -0500)] 
fix: missing sync in i/o syscalls list

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agohandle sys_accept4
Julien Desfossez [Fri, 20 Feb 2015 17:42:39 +0000 (12:42 -0500)] 
handle sys_accept4

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoMerge pull request #15 from abusque/deduplication
Julien Desfossez [Thu, 19 Feb 2015 23:22:24 +0000 (18:22 -0500)] 
Merge pull request #15 from abusque/deduplication

Deduplication

9 years agoClean-up: dead code removal in linuxautomaton modules
Antoine Busque [Thu, 19 Feb 2015 20:40:53 +0000 (15:40 -0500)] 
Clean-up: dead code removal in linuxautomaton modules

9 years agoRemove deprecated ret_strings from syscalls.py
Antoine Busque [Thu, 19 Feb 2015 00:42:51 +0000 (19:42 -0500)] 
Remove deprecated ret_strings from syscalls.py

9 years agoMerge pull request #14 from abusque/email-fix
Julien Desfossez [Thu, 19 Feb 2015 00:17:45 +0000 (19:17 -0500)] 
Merge pull request #14 from abusque/email-fix

Fix: correct typo in author email address

9 years agoFix: correct typo in author email address
Antoine Busque [Wed, 18 Feb 2015 23:59:07 +0000 (18:59 -0500)] 
Fix: correct typo in author email address

9 years agoRemove redundant IOCategory code
Antoine Busque [Wed, 18 Feb 2015 22:08:01 +0000 (17:08 -0500)] 
Remove redundant IOCategory code

IO Categories have effectively been replaced by IO Operations in the
IORequest class, found in linuxautomaton's sv.py

9 years agoMerge pull request #13 from abusque/chrono_fds
Julien Desfossez [Wed, 11 Feb 2015 00:50:45 +0000 (19:50 -0500)] 
Merge pull request #13 from abusque/chrono_fds

Track chronological fd metadata

9 years agoMove track chrono fd code into method of Process class
Antoine Busque [Wed, 11 Feb 2015 00:47:23 +0000 (19:47 -0500)] 
Move track chrono fd code into method of Process class

9 years agoTrack files from statedump in chrono_fds
Antoine Busque [Tue, 10 Feb 2015 23:56:17 +0000 (18:56 -0500)] 
Track files from statedump in chrono_fds

9 years agoFix: use event.timestamp instead of event[timestamp_begin]
Antoine Busque [Tue, 10 Feb 2015 23:53:04 +0000 (18:53 -0500)] 
Fix: use event.timestamp instead of event[timestamp_begin]

9 years agoTrack files opened before start of trace in chrono_fds
Antoine Busque [Tue, 10 Feb 2015 22:58:21 +0000 (17:58 -0500)] 
Track files opened before start of trace in chrono_fds

9 years agoTrack chronological fd metadata
Antoine Busque [Tue, 10 Feb 2015 21:22:26 +0000 (16:22 -0500)] 
Track chronological fd metadata

This commit introduces a chrono_fds object as an attribute of Process
objects. In it, we track when the file (identified by its name)
associated to a given file descriptor has changed. The object
chrono_fds is indexed by file descriptor (number), and each value is
an OrderedDict which stores all the filenames and filetypes associated
with this fd, indexed by timestamp in nanoseconds.

Limitations: if a program opens a file, closes it, and reopens it with
the same file descriptor, without reusing the FD for any other file in
between, the change will not be tracked in chrono_fds.

9 years agofix override syscall name
Julien Desfossez [Mon, 9 Feb 2015 18:09:56 +0000 (13:09 -0500)] 
fix override syscall name

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agotest override syscall name for epoll_ctl
Julien Desfossez [Mon, 9 Feb 2015 17:24:09 +0000 (12:24 -0500)] 
test override syscall name for epoll_ctl

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoshow tid value
Julien Desfossez [Mon, 9 Feb 2015 16:47:04 +0000 (11:47 -0500)] 
show tid value

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofix: handle unknown syscall return codes
Julien Desfossez [Mon, 9 Feb 2015 16:44:50 +0000 (11:44 -0500)] 
fix: handle unknown syscall return codes

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofix: handle unknown syscall return codes
Julien Desfossez [Mon, 9 Feb 2015 16:43:00 +0000 (11:43 -0500)] 
fix: handle unknown syscall return codes

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agodon't fail if some events are not available
Julien Desfossez [Wed, 4 Feb 2015 16:00:55 +0000 (11:00 -0500)] 
don't fail if some events are not available

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoMerge pull request #12 from abusque/master
Julien Desfossez [Wed, 4 Feb 2015 14:22:50 +0000 (09:22 -0500)] 
Merge pull request #12 from abusque/master

Make user interaction with install.sh more convenient

9 years agoAdd build artifacts to .gitignore
Antoine Busque [Wed, 4 Feb 2015 06:17:41 +0000 (01:17 -0500)] 
Add build artifacts to .gitignore

9 years agoMake user interaction with install.sh more convenient
Antoine Busque [Wed, 4 Feb 2015 06:16:18 +0000 (01:16 -0500)] 
Make user interaction with install.sh more convenient

9 years agofix: syscall entry might not exists after reset_total
Julien Desfossez [Wed, 4 Feb 2015 05:39:10 +0000 (00:39 -0500)] 
fix: syscall entry might not exists after reset_total

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agomissing line
Julien Desfossez [Wed, 4 Feb 2015 03:53:59 +0000 (22:53 -0500)] 
missing line

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agocleanup display syscalls stats
Julien Desfossez [Wed, 4 Feb 2015 03:44:16 +0000 (22:44 -0500)] 
cleanup display syscalls stats

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agobump version numbers to 0.1.0
Julien Desfossez [Wed, 4 Feb 2015 01:25:21 +0000 (20:25 -0500)] 
bump version numbers to 0.1.0

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agointeresting syscall stats
Julien Desfossez [Wed, 4 Feb 2015 01:24:00 +0000 (20:24 -0500)] 
interesting syscall stats

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofix: use python3 in setup.py
Julien Desfossez [Tue, 3 Feb 2015 23:16:28 +0000 (18:16 -0500)] 
fix: use python3 in setup.py

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoinstall note in the README
Julien Desfossez [Tue, 3 Feb 2015 23:11:14 +0000 (18:11 -0500)] 
install note in the README

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agowriteback_pages_written is not necessarily available depending on the kernel config...
Julien Desfossez [Tue, 3 Feb 2015 23:04:55 +0000 (18:04 -0500)] 
writeback_pages_written is not necessarily available depending on the kernel config, allow it to fail

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agopackaging and install stuff
Julien Desfossez [Tue, 3 Feb 2015 22:59:05 +0000 (17:59 -0500)] 
packaging and install stuff

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoreadme style
Julien Desfossez [Tue, 3 Feb 2015 21:36:15 +0000 (16:36 -0500)] 
readme style

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoinstall procedure for other distros
Julien Desfossez [Tue, 3 Feb 2015 21:35:07 +0000 (16:35 -0500)] 
install procedure for other distros

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofix: lost link to the LTTng documentation
Julien Desfossez [Tue, 3 Feb 2015 20:43:39 +0000 (15:43 -0500)] 
fix: lost link to the LTTng documentation

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agodon't pad with .00 histogram values when it represents a counter (only integers)
Julien Desfossez [Tue, 3 Feb 2015 20:31:18 +0000 (15:31 -0500)] 
don't pad with .00 histogram values when it represents a counter (only integers)

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoexample of iolatencytop
Julien Desfossez [Tue, 3 Feb 2015 20:25:23 +0000 (15:25 -0500)] 
example of iolatencytop

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agosplit iolatencytop and iolatencystats
Julien Desfossez [Tue, 3 Feb 2015 19:35:13 +0000 (14:35 -0500)] 
split iolatencytop and iolatencystats

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoMerge pull request #11 from abusque/master
Julien Desfossez [Tue, 3 Feb 2015 20:18:39 +0000 (15:18 -0500)] 
Merge pull request #11 from abusque/master

Fix typos, formulation and formatting in README.md

9 years agofix: title and units in irq freq distribution
Julien Desfossez [Tue, 3 Feb 2015 20:15:54 +0000 (15:15 -0500)] 
fix: title and units in irq freq distribution

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoMerge branch 'master' of github.com:abusque/lttng-analyses
Antoine Busque [Tue, 3 Feb 2015 20:15:14 +0000 (15:15 -0500)] 
Merge branch 'master' of github.com:abusque/lttng-analyses

9 years agoFix typos, formulation, and remove trailing whitespace from README.md
Antoine Busque [Tue, 3 Feb 2015 20:10:22 +0000 (15:10 -0500)] 
Fix typos, formulation, and remove trailing whitespace from README.md

9 years agocheck for lost events manually with babeltrace
Julien Desfossez [Tue, 3 Feb 2015 20:09:53 +0000 (15:09 -0500)] 
check for lost events manually with babeltrace

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agorefix the fix
Julien Desfossez [Tue, 3 Feb 2015 19:57:06 +0000 (14:57 -0500)] 
refix the fix

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoUpdate README.md
Jérémie Galarneau [Tue, 3 Feb 2015 19:48:17 +0000 (14:48 -0500)] 
Update README.md

9 years agoMerge pull request #9 from PSRCode/patch-1
Julien Desfossez [Tue, 3 Feb 2015 19:46:38 +0000 (14:46 -0500)] 
Merge pull request #9 from PSRCode/patch-1

Update README.md

9 years agoUpdate README.md
Jonathan Rajotte Julien [Tue, 3 Feb 2015 19:45:44 +0000 (14:45 -0500)] 
Update README.md

Little things here and there.

9 years agofix: note on lttng setup
Julien Desfossez [Tue, 3 Feb 2015 19:30:28 +0000 (14:30 -0500)] 
fix: note on lttng setup

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agonamespace the executables
Julien Desfossez [Tue, 3 Feb 2015 19:22:38 +0000 (14:22 -0500)] 
namespace the executables

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoreadme
Julien Desfossez [Tue, 3 Feb 2015 19:08:49 +0000 (14:08 -0500)] 
readme

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofix: reset irq instance must be shared
Julien Desfossez [Tue, 3 Feb 2015 18:51:23 +0000 (13:51 -0500)] 
fix: reset irq instance must be shared

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoCleanup license (MIT)
Julien Desfossez [Tue, 3 Feb 2015 15:47:51 +0000 (10:47 -0500)] 
Cleanup license (MIT)

Most of the code was already "kind of" MIT, somehow the last sentence of
the license was not present in the source files. Also, after the recent
refactoring, most of the new sources didn't have a proper license
header.

This commit adds the proper MIT licensing header and copyright to every
file that didn't have one.

Ccing every contributor according to [1] regardless of their
contribution. If someone opposes to this change, please contact me and
we will solve the problem.

[1] https://github.com/lttng/lttng-analyses/graphs/contributors

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Cc: Antoine Busque <antoinebusque@gmail.com>
Cc: Stéphane Graber <stgraber@ubuntu.com>
Cc: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Cc: Yannick Brosseau <yannick.brosseau@gmail.com>
Cc: Philippe Proulx <eeppeliteloop@gmail.com>
9 years agofix last_sched TS for process that exist at statedump
Julien Desfossez [Mon, 2 Feb 2015 16:18:37 +0000 (11:18 -0500)] 
fix last_sched TS for process that exist at statedump

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofix trailing zeros
Julien Desfossez [Mon, 2 Feb 2015 16:12:33 +0000 (11:12 -0500)] 
fix trailing zeros

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofix aliasing between context.pid vs field.pid
Julien Desfossez [Mon, 2 Feb 2015 15:47:45 +0000 (10:47 -0500)] 
fix aliasing between context.pid vs field.pid

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofix PID with contexts
Julien Desfossez [Mon, 2 Feb 2015 15:34:10 +0000 (10:34 -0500)] 
fix PID with contexts

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoremove output
Julien Desfossez [Fri, 30 Jan 2015 21:51:07 +0000 (16:51 -0500)] 
remove output

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agohelper script to record an analyses session
Julien Desfossez [Fri, 30 Jan 2015 21:47:06 +0000 (16:47 -0500)] 
helper script to record an analyses session

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofix: unify timerange display everywhere
Julien Desfossez [Fri, 30 Jan 2015 21:27:57 +0000 (16:27 -0500)] 
fix: unify timerange display everywhere

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agoclearer name for the iousage script
Julien Desfossez [Fri, 30 Jan 2015 20:49:50 +0000 (15:49 -0500)] 
clearer name for the iousage script

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofix: filtering in syscallstats
Julien Desfossez [Fri, 30 Jan 2015 15:35:40 +0000 (10:35 -0500)] 
fix: filtering in syscallstats

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agomove write_sched_switch outside of the root directory
Julien Desfossez [Fri, 30 Jan 2015 00:18:08 +0000 (19:18 -0500)] 
move write_sched_switch outside of the root directory

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agomove old code outside of the root directory for future cleanup
Julien Desfossez [Fri, 30 Jan 2015 00:16:30 +0000 (19:16 -0500)] 
move old code outside of the root directory for future cleanup

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agonew I/O commands
Julien Desfossez [Fri, 30 Jan 2015 00:12:00 +0000 (19:12 -0500)] 
new I/O commands

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agomultiple irq commands with the same backend
Julien Desfossez [Thu, 29 Jan 2015 23:57:16 +0000 (18:57 -0500)] 
multiple irq commands with the same backend

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofilters in memtop
Julien Desfossez [Thu, 29 Jan 2015 23:37:41 +0000 (18:37 -0500)] 
filters in memtop

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
9 years agofix: break cb
Julien Desfossez [Thu, 29 Jan 2015 23:25:33 +0000 (18:25 -0500)] 
fix: break cb

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
This page took 0.039008 seconds and 5 git commands to generate.