Drop a single (.csv) file here or click to choose manually

If you're new to this and want to check out how everything works go check out the tutorial!

You can also test the tool with this test data set. Also, data from a dynamic video eye tracking study (UNO game data - Benchmark Data) and from an eye tracking study with an interactive visualization system (VarifocalReader data - IEEE Paper) are available. The stimuli for the two studies can be found in the corresponding EuroVis 2017 publication.

upload your stimulus (image or video)

Settings

Show/Hide

Enable/Disable

File

Drop a single (.csv) file here or click to choose manually

Size Settings

Tutorial

1. The Data

The table below shows how a data sheet should look like.

The AOIName column identifies the specific area of interest (AOI).
The FixationDuration column shows for how long an AOI has been looked at (in milliseconds).
The Stimulus column indicates the stimulus that has been looked at.
The Participant column characterizes the participant that was recorded.

The data must be stored in a csv-file that is separated by commas or semicolons. Do not leave any cell 'free', all cells must be filled with the according info*. If the dataset contains only the data of one participant, then the participant column can be removed, same holds for the stimulus. In this example, we could therefore remove the stimulus column.

* Except the AOI cells. If there is no AOI Name set, it will be aggregated towards an AOI being called other.

2. The Upload

Now that the data is stored the right way, it has to be uploaded.
To get the file loaded into the tool, simply drag and drop it into the upload box (or click on the box and use the file chooser):

Drop a single (.csv) file here or click to choose manually

The data is aggregated line by line until the stimulus or participant changes and a new aggregation starts. For data that is aggregated, all fixation durations of the same AOI are added to a total dwell time. Whenever the AOIName changes, it counts as a transition from the old AOI to the new AOI. Transitions having the same origin and destination are summed up to a total transition value as well.

3. Radial Transition Graph View

This is what a graph looks like, there are two versions that differ by their sector lengths.

In this example, the two graphs contain the same information, the dataset of the participant Jane.

In the left graph the sectors represent the value of the total dwell time on the according AOI by their length.
In the right graph each sector has the same length. Using the settings, it is possible to switch between both states, allowing to either focus on fixation times or transition patterns.
Both times each AOI is assigned a unique color.

The arcs between the AOIs show transitions. The thicker an arc, the more transitions exist between two AOIs.
The transition arcs start and end at the according AOI; being marked with small circles within the AOI sector.
A black circle represents an outgoing transition, a white circle an incoming one.

For example, Jane has switched her attention from the apple AOI to the strawberry AOI and the Melon AOI each at least once, but never from the apple AOI to the Banana AOI.
Furthermore, the size of sectors shows that Jane never had a look at the apricot AOI, as it is not presented in the left graph. However, with the equal sectors we can see that there are no transitions to and from this AOI.

Tip: Hover over the AOI sectors and transitions to get further information.

5. The Transition Graph Diff View

Simply drag'n'drop one graph on another to get the transition diff graph. Contrary to this tutorial it will does appear in the same place, but on the right side of the comparison list.

Each sector now has the value of the graph with the higher duration (either Jane or John's). Now there are two more rings:
The inner ring sectors represent the data of the graph that was dragged; in this case it is Jane's.
The outer ring sectors represent the other graph; in this case John's.
Either the inner or the outer sector has the same length as the colored one. This means that the sector has the higher fixation duration on this AOI. The other one is shortened percentually. For example, Jane never looked at the apricot AOI, that is why only John's sector is shown. On the other hand, Jane looked a lot longer at the strawberry AOI and the apple AOI than John did.

The grey scale of the inner/outer sectors gives information about the dwell time compared to the highest dwell time overall.
A blue transition means that Jane had more transitions than John.
A red transition means that Jane had less transitions than John.
A black transition means they both had the same amount of transitions.
The more blue/red the transition is, the more/less transitions Jane had. Note that the color is always calculated locally for the transition, so the maximum transition value of Jane or John marks the 100%.

6. The Comparison List View

After uploading the data the list view is shown. All graphs (we use another example here, so that there are more than 2 graphs), are listed next to each other. Having more graphs starts new rows when the place is not enough to fit all graphs in one row.

To start inspecting graphs, left-click a single graph and it appears enlarged on the right side. Also, all other graphs change their background color. The darker the background, the more similar the transition-patterns are, compared to the selected graph.
By dragging one graph on another, their merged graph appears also on the right side. Again the similarity backgrounds are shown, in respected to the dragged graph.

Further Inspection

Below each graph on the right one or three sliders are shown. One if a single graph is inspected or three if a merged graph is inspected. The picture below represents the case for a merged one.

First, it's telling which graph's data is represented by the inner/outer ring sectors, same for the transition colors.
Also, each graph's data additionally is shown in a timeline. This allows to track the path which was taken by a participant.

While the transition sliders allows to jump through all transitions in the same order as they have occured. The time sliders allows to control the time that is inspected. Therefore, there are two slider handles, allowing to change the start and end range The time slider(s) allow to only inspect a range of done transitions. This might help to find similar patterns or to compare the differences of done transitions at the beginning or near the end of the experiment for example.

Furthermore, it is possible to upload a video for each stand-alone transition graph. Right click a transition graph to open the context menu and choose upload video. Each time you inspect this transition graph the video will appear below the sliders. Optionally it is possible to open the context menu again and choose play video. This feature can be used to have better insights into the participants procedure and what the participant focused on during a study. Please note that this feature only works with videos of small size. The exact size limit depends on your system configuration as well as the used browser. Best results have been experienced with Mozilla Firefox.

7. The Comparison Grid View

The comparison grid allows to see more than just one merged graph at a time. There are two possible ways to open the comparison grid. Either yall graphs are compared or a small selection. Selecting some graphs is achieved by entering a mode in the comparison list view where the desired graphs can be selected.
In the comparison grid each (selected) graph from the list view is listed on the left side (rows) and on the top (columns). All cells inside the grid are the merged product of the according graphs on the left/top. Graphs on the left are represented as inner ring sectors and red, graphs on the right as outer ring sectors and blue. Also, each merged graph's background represents their global similarity.

8. Further Information

Sorting
By default the ring sectors are sorted by their AOI name. If the sectors need to be sorted differently, because a strawberry is so much tastier than an apple, a column can be added to the dataset named AOIId. Each line should then contain an integer, representing the sorting index of the according AOI name. The AOIs are sorted in ascending order, so the strawberry ID (e.g., AOIId = 1) should have a lower value than the apple ID (e.g. AOIId = 2).

Data Splitting
If the data should not only be split when a different stimulus or participant occurs, an extra column can be added to the dataset named AdditionalInfo. As soon as this value changes, a new graph is created as well.

Dataset
Must contain: AOIName, FixationDuration
Can contain: Stimulus, Participant, AOIId and AdditionalInfo.
Everything else is ignored.

Stimulus
It is possible to upload a picture as well as a video of the stimulus. A button on the bottom right of the page opens a file chooser.

7. Settings

There are some settings that can be changed to fit everything to ones needs.

Buttons are used to enable/disable features or to show/hide elements. This includes:

  • Graph Information: Shows information about which data the graph represents.
  • Transitions: Shows transitions. Hiding them allows focusing on dwell times.
  • Hover Tooltips: Shows tooltips on hover.
  • Similarity Info: Shows similarities between all graphs in respect to the selected one.
  • Drag and Merge: Enables drag and drop to merge graphs.
  • Update on the fly: Enables animations.
  • Colorblind Mode: Red transitions will be colored orange instead of red for better readability.
  • Equal Sectors: Each graph represents all AOIs with the same length.

Sliders are used to change sizes. This includes:

  • Ring Size: This slider has two slider handles to determine the inner and the outer radius of a ring.
  • Comparison Ring Size: This slider determines the width of the inner/outer sectors on merged graphs.
  • Transition Thickness: This slider is used to make transitions thicker or thinner.
Slide me!

8. That's it!

Now go ahead and try it out yourself with the example data set or your own data!

About RTGCT

Radial Transition Graph Comparison Tool (RTGCT) provides transition graphs with a radial layout that enable a direct comparison of two or a pairwise comparison of more than two participants. The approach is complemented with timelines to be able to also compare the dynamic viewing behavior of two participants.

This project is a result and development while working on my bachelor thesis at the University of Stuttgart at the Institute for Visualization and Interactive Systems (VIS). After finishing my bachelor thesis I continued working on this project as a research assistant, extending it with more functionalities. The idea is to offer a free and easy to use web-based tool to compare radial transition graphs from data collected in eye tracking experiments.

Supervisors:
Prof. Dr. Thomas Ertl - homepage
Jun.-Prof. Dr. Fabian Beck - homepage
Dipl.-Inf. Tanja Blascheck - homepage

About me:
My name is Markus Schweizer and I am currently studying software engineering in the Masters Program at the University of Stuttgart.
Feel free to contact me about bugs or ideas: mail me

Contact

[Angaben gemäß § 5 TMG:]

Dr. Fabian Beck
Meluner Str. 4
70569 Stuttgart
+49 711 685 88622
fabian.beck@wiwinf.uni-due.de

[Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV:]

Dr. Fabian Beck
Meluner Str. 4
70569 Stuttgart

Disclaimer

Limitation of liability for internal content

The content of our website has been compiled with meticulous care and to the best of our knowledge. However, we cannot assume any liability for the up-to-dateness, completeness or accuracy of any of the pages.

Pursuant to section 7, para. 1 of the TMG (Telemediengesetz – Tele Media Act by German law), we as service providers are liable for our own content on these pages in accordance with general laws. However, pursuant to sections 8 to 10 of the TMG, we as service providers are not under obligation to monitor external information provided or stored on our website. Once we have become aware of a specific infringement of the law, we will immediately remove the content in question. Any liability concerning this matter can only be assumed from the point in time at which the infringement becomes known to us.

Limitation of liability for external links

Our website contains links to the websites of third parties (“external links”). As the content of these websites is not under our control, we cannot assume any liability for such external content. In all cases, the provider of information of the linked websites is liable for the content and accuracy of the information provided. At the point in time when the links were placed, no infringements of the law were recognisable to us. As soon as an infringement of the law becomes known to us, we will immediately remove the link in question.

Copyright

The content and works published on this website are governed by the copyright laws of Germany. Any duplication, processing, distribution or any form of utilisation beyond the scope of copyright law shall require the prior written consent of the author or authors in question.

Data protection

A visit to our website can result in the storage on our server of information about the access (date, time, page accessed). This does not represent any analysis of personal data (e.g., name, address or e-mail address). If personal data are collected, this only occurs – to the extent possible – with the prior consent of the user of the website. Any forwarding of the data to third parties without the express consent of the user shall not take place.

We would like to expressly point out that the transmission of data via the Internet (e.g., by e-mail) can offer security vulnerabilities. It is therefore impossible to safeguard the data completely against access by third parties. We cannot assume any liability for damages arising as a result of such security vulnerabilities.

The use by third parties of all published contact details for the purpose of advertising is expressly excluded. We reserve the right to take legal steps in the case of the unsolicited sending of advertising information; e.g., by means of spam mail.

Source: English Disclaimer on Mustervorlage.net

Tools/Libraries/Icons

While realizing this project I was really glad that I could use some cool tools, libraries, and icons that are free to use. They made my work simpler and the tool more awesome. Using those makes me thankful that they exist and that I am allowed to use them. All of them are listed below.

Name Version Licence from
D3.js 4.2.1 07.08.2016
                Copyright 2010-2016 Mike Bostock
                All rights reserved.

                Redistribution and use in source and binary forms, with or without modification,
                are permitted provided that the following conditions are met:

                * Redistributions of source code must retain the above copyright notice, this
                  list of conditions and the following disclaimer.

                * Redistributions in binary form must reproduce the above copyright notice,
                  this list of conditions and the following disclaimer in the documentation
                  and/or other materials provided with the distribution.

                * Neither the name of the author nor the names of contributors may be used to
                  endorse or promote products derived from this software without specific prior
                  written permission.

                THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
                ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
                WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
                DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
                (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
                LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
                ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
                SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Name Version Licence from
Bootstrap 3.3.6 07.08.2016
                The MIT License (MIT)

                Copyright (c) 2011-2016 Twitter, Inc.

                Permission is hereby granted, free of charge, to any person obtaining a copy
                of this software and associated documentation files (the "Software"), to deal
                in the Software without restriction, including without limitation the rights
                to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
                copies of the Software, and to permit persons to whom the Software is
                furnished to do so, subject to the following conditions:

                The above copyright notice and this permission notice shall be included in
                all copies or substantial portions of the Software.

                THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
                THE SOFTWARE.
With bootstrap I also had the opportunity to use some glyphs for free that are provided by glyphicons.com.
Name Version Licence from
jQuery JavaScript Library v2.2.4 07.08.2016
                The MIT License (MIT)

                Copyright (c) 2016 jQuery Foundation.

                Permission is hereby granted, free of charge, to any person obtaining a copy
                of this software and associated documentation files (the "Software"), to deal
                in the Software without restriction, including without limitation the rights
                to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
                copies of the Software, and to permit persons to whom the Software is
                furnished to do so, subject to the following conditions:

                The above copyright notice and this permission notice shall be included in
                all copies or substantial portions of the Software.

                THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
                THE SOFTWARE.
Name Version Licence from
jQuery UI 1.12.0 07.08.2016
                Copyright jQuery Foundation and other contributors, https://jquery.org/

                This software consists of voluntary contributions made by many
                individuals. For exact contribution history, see the revision history
                available at https://github.com/jquery/jquery-ui

                The following license applies to all parts of this software except as
                documented below:

                ====

                Permission is hereby granted, free of charge, to any person obtaining
                a copy of this software and associated documentation files (the
                "Software"), to deal in the Software without restriction, including
                without limitation the rights to use, copy, modify, merge, publish,
                distribute, sublicense, and/or sell copies of the Software, and to
                permit persons to whom the Software is furnished to do so, subject to
                the following conditions:

                The above copyright notice and this permission notice shall be
                included in all copies or substantial portions of the Software.

                THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
                EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
                MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
                NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
                LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
                OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
                WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

                ====

                Copyright and related rights for sample code are waived via CC0. Sample
                code is defined as all source code contained within the demos directory.

                CC0: http://creativecommons.org/publicdomain/zero/1.0/

                ====

                All files located in the node_modules and external directories are
                externally maintained libraries used by this software which have their
                own licenses; we recommend you read them, as their terms may differ from
                the terms above.
            
Name Version Licence from
jQuery UI Touch Punch 0.2.3 07.08.2016
                Copyright (c) 2012 David Furfero

                Permission is hereby granted, free of charge, to any person obtaining
                a copy of this software and associated documentation files (the
                "Software"), to deal in the Software without restriction, including
                without limitation the rights to use, copy, modify, merge, publish,
                distribute, sublicense, and/or sell copies of the Software, and to
                permit persons to whom the Software is furnished to do so, subject to
                the following conditions:

                The above copyright notice and this permission notice shall be
                included in all copies or substantial portions of the Software.

                THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
                EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
                MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
                NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
                LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
                OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
                WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
                GNU GENERAL PUBLIC LICENSE
                Version 2, June 1991

                Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
                51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
                Everyone is permitted to copy and distribute verbatim copies
                of this license document, but changing it is not allowed.

                Preamble

                The licenses for most software are designed to take away your
                freedom to share and change it.  By contrast, the GNU General Public
                License is intended to guarantee your freedom to share and change free
                software--to make sure the software is free for all its users.  This
                General Public License applies to most of the Free Software
                Foundation's software and to any other program whose authors commit to
                using it.  (Some other Free Software Foundation software is covered by
                the GNU Lesser General Public License instead.)  You can apply it to
                your programs, too.

                When we speak of free software, we are referring to freedom, not
                price.  Our General Public Licenses are designed to make sure that you
                have the freedom to distribute copies of free software (and charge for
                this service if you wish), that you receive source code or can get it
                if you want it, that you can change the software or use pieces of it
                in new free programs; and that you know you can do these things.

                To protect your rights, we need to make restrictions that forbid
                anyone to deny you these rights or to ask you to surrender the rights.
                These restrictions translate to certain responsibilities for you if you
                distribute copies of the software, or if you modify it.

                For example, if you distribute copies of such a program, whether
                gratis or for a fee, you must give the recipients all the rights that
                you have.  You must make sure that they, too, receive or can get the
                source code.  And you must show them these terms so they know their
                rights.

                We protect your rights with two steps: (1) copyright the software, and
                (2) offer you this license which gives you legal permission to copy,
                distribute and/or modify the software.

                Also, for each author's protection and ours, we want to make certain
                that everyone understands that there is no warranty for this free
                software.  If the software is modified by someone else and passed on, we
                want its recipients to know that what they have is not the original, so
                that any problems introduced by others will not reflect on the original
                authors' reputations.

                Finally, any free program is threatened constantly by software
                patents.  We wish to avoid the danger that redistributors of a free
                program will individually obtain patent licenses, in effect making the
                program proprietary.  To prevent this, we have made it clear that any
                patent must be licensed for everyone's free use or not licensed at all.

                The precise terms and conditions for copying, distribution and
                modification follow.

                GNU GENERAL PUBLIC LICENSE
                TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

                0. This License applies to any program or other work which contains
                a notice placed by the copyright holder saying it may be distributed
                under the terms of this General Public License.  The "Program", below,
                refers to any such program or work, and a "work based on the Program"
                means either the Program or any derivative work under copyright law:
                that is to say, a work containing the Program or a portion of it,
                either verbatim or with modifications and/or translated into another
                language.  (Hereinafter, translation is included without limitation in
                the term "modification".)  Each licensee is addressed as "you".

                Activities other than copying, distribution and modification are not
                covered by this License; they are outside its scope.  The act of
                running the Program is not restricted, and the output from the Program
                is covered only if its contents constitute a work based on the
                Program (independent of having been made by running the Program).
                Whether that is true depends on what the Program does.

                1. You may copy and distribute verbatim copies of the Program's
                source code as you receive it, in any medium, provided that you
                conspicuously and appropriately publish on each copy an appropriate
                copyright notice and disclaimer of warranty; keep intact all the
                notices that refer to this License and to the absence of any warranty;
                and give any other recipients of the Program a copy of this License
                along with the Program.

                You may charge a fee for the physical act of transferring a copy, and
                you may at your option offer warranty protection in exchange for a fee.

                2. You may modify your copy or copies of the Program or any portion
                of it, thus forming a work based on the Program, and copy and
                distribute such modifications or work under the terms of Section 1
                above, provided that you also meet all of these conditions:

                a) You must cause the modified files to carry prominent notices
                stating that you changed the files and the date of any change.

                b) You must cause any work that you distribute or publish, that in
                whole or in part contains or is derived from the Program or any
                part thereof, to be licensed as a whole at no charge to all third
                parties under the terms of this License.

                c) If the modified program normally reads commands interactively
                when run, you must cause it, when started running for such
                interactive use in the most ordinary way, to print or display an
                announcement including an appropriate copyright notice and a
                notice that there is no warranty (or else, saying that you provide
                a warranty) and that users may redistribute the program under
                these conditions, and telling the user how to view a copy of this
                License.  (Exception: if the Program itself is interactive but
                does not normally print such an announcement, your work based on
                the Program is not required to print an announcement.)

                These requirements apply to the modified work as a whole.  If
                identifiable sections of that work are not derived from the Program,
                and can be reasonably considered independent and separate works in
                themselves, then this License, and its terms, do not apply to those
                sections when you distribute them as separate works.  But when you
                distribute the same sections as part of a whole which is a work based
                on the Program, the distribution of the whole must be on the terms of
                this License, whose permissions for other licensees extend to the
                entire whole, and thus to each and every part regardless of who wrote it.

                Thus, it is not the intent of this section to claim rights or contest
                your rights to work written entirely by you; rather, the intent is to
                exercise the right to control the distribution of derivative or
                collective works based on the Program.

                In addition, mere aggregation of another work not based on the Program
                with the Program (or with a work based on the Program) on a volume of
                a storage or distribution medium does not bring the other work under
                the scope of this License.

                3. You may copy and distribute the Program (or a work based on it,
                under Section 2) in object code or executable form under the terms of
                Sections 1 and 2 above provided that you also do one of the following:

                a) Accompany it with the complete corresponding machine-readable
                source code, which must be distributed under the terms of Sections
                1 and 2 above on a medium customarily used for software interchange; or,

                b) Accompany it with a written offer, valid for at least three
                years, to give any third party, for a charge no more than your
                cost of physically performing source distribution, a complete
                machine-readable copy of the corresponding source code, to be
                distributed under the terms of Sections 1 and 2 above on a medium
                customarily used for software interchange; or,

                c) Accompany it with the information you received as to the offer
                to distribute corresponding source code.  (This alternative is
                allowed only for noncommercial distribution and only if you
                received the program in object code or executable form with such
                an offer, in accord with Subsection b above.)

                The source code for a work means the preferred form of the work for
                making modifications to it.  For an executable work, complete source
                code means all the source code for all modules it contains, plus any
                associated interface definition files, plus the scripts used to
                control compilation and installation of the executable.  However, as a
                special exception, the source code distributed need not include
                anything that is normally distributed (in either source or binary
                form) with the major components (compiler, kernel, and so on) of the
                operating system on which the executable runs, unless that component
                itself accompanies the executable.

                If distribution of executable or object code is made by offering
                access to copy from a designated place, then offering equivalent
                access to copy the source code from the same place counts as
                distribution of the source code, even though third parties are not
                compelled to copy the source along with the object code.

                4. You may not copy, modify, sublicense, or distribute the Program
                except as expressly provided under this License.  Any attempt
                otherwise to copy, modify, sublicense or distribute the Program is
                void, and will automatically terminate your rights under this License.
                However, parties who have received copies, or rights, from you under
                this License will not have their licenses terminated so long as such
                parties remain in full compliance.

                5. You are not required to accept this License, since you have not
                signed it.  However, nothing else grants you permission to modify or
                distribute the Program or its derivative works.  These actions are
                prohibited by law if you do not accept this License.  Therefore, by
                modifying or distributing the Program (or any work based on the
                Program), you indicate your acceptance of this License to do so, and
                all its terms and conditions for copying, distributing or modifying
                the Program or works based on it.

                6. Each time you redistribute the Program (or any work based on the
                Program), the recipient automatically receives a license from the
                original licensor to copy, distribute or modify the Program subject to
                these terms and conditions.  You may not impose any further
                restrictions on the recipients' exercise of the rights granted herein.
                You are not responsible for enforcing compliance by third parties to
                this License.

                7. If, as a consequence of a court judgment or allegation of patent
                infringement or for any other reason (not limited to patent issues),
                conditions are imposed on you (whether by court order, agreement or
                otherwise) that contradict the conditions of this License, they do not
                excuse you from the conditions of this License.  If you cannot
                distribute so as to satisfy simultaneously your obligations under this
                License and any other pertinent obligations, then as a consequence you
                may not distribute the Program at all.  For example, if a patent
                license would not permit royalty-free redistribution of the Program by
                all those who receive copies directly or indirectly through you, then
                the only way you could satisfy both it and this License would be to
                refrain entirely from distribution of the Program.

                If any portion of this section is held invalid or unenforceable under
                any particular circumstance, the balance of the section is intended to
                apply and the section as a whole is intended to apply in other
                circumstances.

                It is not the purpose of this section to induce you to infringe any
                patents or other property right claims or to contest validity of any
                such claims; this section has the sole purpose of protecting the
                integrity of the free software distribution system, which is
                implemented by public license practices.  Many people have made
                generous contributions to the wide range of software distributed
                through that system in reliance on consistent application of that
                system; it is up to the author/donor to decide if he or she is willing
                to distribute software through any other system and a licensee cannot
                impose that choice.

                This section is intended to make thoroughly clear what is believed to
                be a consequence of the rest of this License.

                8. If the distribution and/or use of the Program is restricted in
                certain countries either by patents or by copyrighted interfaces, the
                original copyright holder who places the Program under this License
                may add an explicit geographical distribution limitation excluding
                those countries, so that distribution is permitted only in or among
                countries not thus excluded.  In such case, this License incorporates
                the limitation as if written in the body of this License.

                9. The Free Software Foundation may publish revised and/or new versions
                of the General Public License from time to time.  Such new versions will
                be similar in spirit to the present version, but may differ in detail to
                address new problems or concerns.

                Each version is given a distinguishing version number.  If the Program
                specifies a version number of this License which applies to it and "any
                later version", you have the option of following the terms and conditions
                either of that version or of any later version published by the Free
                Software Foundation.  If the Program does not specify a version number of
                this License, you may choose any version ever published by the Free Software
                Foundation.

                10. If you wish to incorporate parts of the Program into other free
                programs whose distribution conditions are different, write to the author
                to ask for permission.  For software which is copyrighted by the Free
                Software Foundation, write to the Free Software Foundation; we sometimes
                make exceptions for this.  Our decision will be guided by the two goals
                of preserving the free status of all derivatives of our free software and
                of promoting the sharing and reuse of software generally.

                NO WARRANTY

                11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
                FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
                OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
                PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
                OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
                MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
                TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
                PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
                REPAIR OR CORRECTION.

                12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
                WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
                REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
                INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
                OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
                TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
                YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
                PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
                POSSIBILITY OF SUCH DAMAGES.

                END OF TERMS AND CONDITIONS

                How to Apply These Terms to Your New Programs

                If you develop a new program, and you want it to be of the greatest
                possible use to the public, the best way to achieve this is to make it
                free software which everyone can redistribute and change under these terms.

                To do so, attach the following notices to the program.  It is safest
                to attach them to the start of each source file to most effectively
                convey the exclusion of warranty; and each file should have at least
                the "copyright" line and a pointer to where the full notice is found.

                
                Copyright (C)   

                This program is free software; you can redistribute it and/or modify
                it under the terms of the GNU General Public License as published by
                the Free Software Foundation; either version 2 of the License, or
                (at your option) any later version.

                This program is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                GNU General Public License for more details.

                You should have received a copy of the GNU General Public License along
                with this program; if not, write to the Free Software Foundation, Inc.,
                51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

                Also add information on how to contact you by electronic and paper mail.

                If the program is interactive, make it output a short notice like this
                when it starts in an interactive mode:

                Gnomovision version 69, Copyright (C) year name of author
                Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
                This is free software, and you are welcome to redistribute it
                under certain conditions; type `show c' for details.

                The hypothetical commands `show w' and `show c' should show the appropriate
                parts of the General Public License.  Of course, the commands you use may
                be called something other than `show w' and `show c'; they could even be
                mouse-clicks or menu items--whatever suits your program.

                You should also get your employer (if you work as a programmer) or your
                school, if any, to sign a "copyright disclaimer" for the program, if
                necessary.  Here is a sample; alter the names:

                Yoyodyne, Inc., hereby disclaims all copyright interest in the program
                `Gnomovision' (which makes passes at compilers) written by James Hacker.

                , 1 April 1989
                    Ty Coon, President of Vice

                    This General Public License does not permit incorporating your program into
                    proprietary programs.  If your program is a subroutine library, you may
                    consider it more useful to permit linking proprietary applications with the
                    library.  If this is what you want to do, use the GNU Lesser General
                    Public License instead of this License.
Name Version Licence from
spin.js 2.3.2 07.08.2016
                Copyright (c) 2011-2014 Felix Gnass

                Permission is hereby granted, free of charge, to any person obtaining
                a copy of this software and associated documentation files (the
                "Software"), to deal in the Software without restriction, including
                without limitation the rights to use, copy, modify, merge, publish,
                distribute, sublicense, and/or sell copies of the Software, and to
                permit persons to whom the Software is furnished to do so, subject to
                the following conditions:

                The above copyright notice and this permission notice shall be
                included in all copies or substantial portions of the Software.

                THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
                EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
                MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
                NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
                LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
                OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
                WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.