Widening the Remote Visualization Bottleneck

Total Page:16

File Type:pdf, Size:1020Kb

Widening the Remote Visualization Bottleneck Widening the Remote Visualization Bottleneck Simon Stegmaier Joachim Diepstraten Manfred Weiler Thomas Ertl Visualization and Interactive Systems Group, University of Stuttgart Universitatsstraße¨ 38, D-70569 Stuttgart∗ Abstract time the simulation parameters have changed. This may be a great advantage, given that many wide-area network With the advent of generic remote visualization solu- connections are still very slow compared to LANs. Sec- tions, accessing distant graphics resources from the desk- ond, replicating the datasets on the hosts of every researcher top is no longer restricted to specially tailored applica- working with the data multiplies the overall memory and tions. However, current solutions still suffer from poor in- disk requirements and unnecessarily raises the costs for teractivity due to limited network bandwidth and high la- desktop computers. Third, raw simulation data is often con- tency. In this paper we present several improvements to fidential and a transfer via insecure network connections our remote visualization system in order to overcome these may be unacceptable. drawbacks. Different image compression schemes are eval- To overcome these drawbacks of decentralized data stor- uated with regard to applicability for scientific visualiza- age, the concept of remote visualization was introduced. tion, showing that image compression alone cannot guar- The basic idea is simple: The datasets are visualized on the antee interactive frame rates. Therefore, we furthermore high-performance computer–the server–and only the ren- present different techniques for alleviating the bandwidth dered images are transmitted to the researcher. This min- limit, including quality reduction during user interaction or imizes the resources required at the client. However, albeit animations. Latency aspects are addressed by employing compression techniques can be employed to reduce the size multi-threading for asynchronous compression and utiliz- of the images to be transmitted, the data rates necessary for ing features of modern programmable graphics adapters for interactive frame rates usually restrict the applicability of performing the image compression entirely on the graphics remote visualization solutions to high-speed networks, usu- card. The presented ideas are integrated in our remote vi- ally LANs. sualization system without violating universality. In this paper, several methods for achieving interactive frame rates even in low-bandwidth environments are dis- cussed and evaluated using our own generic remote visu- 1. Introduction alization solution as a testing platform. The paper is orga- nized as follows: Related work is discussed in Section 2. Many scientific simulations calculated these days pro- Our remote visualization solution is described in Section 3, duce datasets of sizes that cannot be handled with PCs or including a revised architecture required for incorporating workstations typically available at the desks of the analyz- the optimizations. Software-based optimization methods ing researchers. However, speaking in Richard Hamming’s are discussed in Section 4, followed by the presentation of words, the purpose of computing is insight, not numbers; a hardware-based image compression in Section 5. Recom- thus, if analyzing the data becomes increasingly difficult, mendations and a conclusion are given in Section 6. the value of the simulation decreases. A highly effective way to analyze datasets is scientific 2. Related Work visualization. However, scientific visualization not only re- quires a fast CPU and huge amounts of memory (both main Engel et al. [3] developed a framework for providing re- memory and secondary storage) but also high rendering mote control to OpenInventor and Cosmo3D applications. performance provided by modern graphics adapters. Ob- The system transmits compressed images from the server viously, these resources are not always available and it is to a Java-based client and returns events generated at client impossible—especially for publicly-funded research insti- side via CORBA requests. The system requires substantial tutions like universities—to replace the computing equip- modifications of the visualization application and shows a ment each time the dataset sizes double. And even if this very low overall performance. was possible a central solution might still be favorable. Ma and Camp [8] developed a solution for remote visu- First, if the datasets remain on the host where they were alization of time-varying data over wide area networks. It generated, there is no need for transferring the data each involves a dedicated display daemon and a custom transport ∗[email protected] method which enables them to employ arbitrary compres- sion techniques. Again, the presented system is not generic but targeted at a parallel volume rendering application. Bethel [1] presented Visapult, a system that combines minimized data transfers and workstation-accelerated ren- dering. Like the solutions developed by Engel, Ma, and Camp, Visapult requires modifications of the application in order to make it “network aware”. As another drawback, the system relies to some extent on the existence of hard- ware graphics acceleration on the local display. A truly generic solution was first described in detail by Stegmaier et al. [15]. The system takes advantage of the transport mechanisms part of the X Window System [10] leading to an extremely compact implementation and (in combination with VNC [12]) support for a very large va- riety of platforms for the client. Due to the abandonment of a proprietary data channel, no custom compression of im- ages is supported. Wide-spread use of generic solutions came with the ad- Figure 1. GLX architecture as of Kilgard [6]. vent of SGI’s commercial OpenGL Vizserver [14]. OpenGL Vizserver allows a wide range of clients to access the ren- tionality is provided in two formats: as static libraries and dering capabilities of remote graphics servers. However, as shared libraries. It is up to the programmer to select a due to certain design decisions, the servers are restricted to suitable format. SGI workstations. Amongst other compression algorithms, For shared libraries only a link to the actual functionality Vizserver includes an implementation of Color Cell Com- is included in the application’s executable. Thus, dynami- pression [2]. cally linked applications allow the replacement of library functionality without relinking. Therefore, shared objects 3. Status Quo are the only suitable choice for library functionality that is not portable between different target platforms, e.g. the The remote visualization system presented in this work is GPU-dependent OpenGL libraries. based on the system described in [15]. The core idea can be Most systems that support load-time linking also support easily recognized by considering the way an OpenGL-based a second mechanism sometimes referred to as preloading. application generates images when the display is redirected Preloading allows to manipulate the stack that is used to to a remote host1 (left side of Fig. 1). All OpenGL com- resolve function references in dynamically linked applica- mands are encoded using the GLX protocol and transmitted tions, usually by setting an environment variable to an ob- to the remote host as part of the well-known X11 proto- ject file that redefines the functions to be overridden. There- col stream. The stream is then decoded by the receiving X fore, preloading presents an easy method for non-invasively server and the OpenGL commands are executed exploiting customizing library behavior. However, completely redefin- the resources available at the destination host. This is ex- ing library functions is not trivial—in particular if the func- actly what is not desired for hardware-accelerated remote tions perform complex tasks. visualization since we cannot benefit from the graphics re- To cope with this problem, many systems also support sources of the host running the application. Thus, the trans- run-time linking. With run-time linking, symbol resolution mission of OpenGL commands must be suppressed (to ob- is performed after the program has started instead of dur- tain the scenario on the right side of Fig. 1) and only the ing the loading phase. The original functionality can then rendered images should be transferred to the host where the be recovered by opening the original shared object (usually user interaction occurs. In the remainder of this paper, we with dlopen) and determining the address of the relevant will use the terms render server and interaction server to function from its name (with dlsym). refer to the two hosts involved in the visualization process. Surprisingly, the required modifications of the GLX ar- 3.2 Library Architecture chitecture can be obtained through a single shared object linked to the visualization application at program start-up. Using the described dynamic linking functionality, a generic remote visualization solution can be obtained by 3.1 Dynamic Linking preloading library functions from two groups. • XOpenDisplay Almost all applications developed these days make use Set-up functions like , glXChooseVisual glXMakeCurrent of functionality provided as libraries. Usually, library func- , and • 1We will only address remote visualization systems based on the X Trigger functions like glXSwapBuffers, Window system in this paper. glFlush, and glFinish The set-up functions make sure that the stream of OpenGL commands is directed
Recommended publications
  • THINC: a Virtual and Remote Display Architecture for Desktop Computing and Mobile Devices
    THINC: A Virtual and Remote Display Architecture for Desktop Computing and Mobile Devices Ricardo A. Baratto Submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy in the Graduate School of Arts and Sciences COLUMBIA UNIVERSITY 2011 c 2011 Ricardo A. Baratto This work may be used in accordance with Creative Commons, Attribution-NonCommercial-NoDerivs License. For more information about that license, see http://creativecommons.org/licenses/by-nc-nd/3.0/. For other uses, please contact the author. ABSTRACT THINC: A Virtual and Remote Display Architecture for Desktop Computing and Mobile Devices Ricardo A. Baratto THINC is a new virtual and remote display architecture for desktop computing. It has been designed to address the limitations and performance shortcomings of existing remote display technology, and to provide a building block around which novel desktop architectures can be built. THINC is architected around the notion of a virtual display device driver, a software-only component that behaves like a traditional device driver, but instead of managing specific hardware, enables desktop input and output to be intercepted, manipulated, and redirected at will. On top of this architecture, THINC introduces a simple, low-level, device-independent representation of display changes, and a number of novel optimizations and techniques to perform efficient interception and redirection of display output. This dissertation presents the design and implementation of THINC. It also intro- duces a number of novel systems which build upon THINC's architecture to provide new and improved desktop computing services. The contributions of this dissertation are as follows: • A high performance remote display system for LAN and WAN environments.
    [Show full text]
  • A Font Family Sampler
    A Font Family Sampler Nelson H. F. Beebe Department of Mathematics University of Utah Salt Lake City, UT 84112-0090, USA 11 February 2021 Version 1.6 To assist in producing greater font face variation in university disser- tations and theses, this document illustrates font family selection with a LATEX document preamble command \usepackage{FAMILY} where FAMILY is given in the subsection titles below. The body font in this document is from the TEX Gyre Bonum family, selected by a \usepackage{tgbonum} command in the document preamble, but the samples illustrate scores other font families. Like Computer Modern, Latin Modern, and the commercial Lucida and MathTime families, the TEX Gyre families oer extensive collections of mathematical characters that are designed to resemble their companion text characters, making them good choices for scientic and mathemati- cal typesetting. The TEX Gyre families also contain many additional spe- cially designed single glyphs for accented letters needed by several Euro- pean languages, such as Ð, ð, Ą, ą, Ę, ę, Ł, ł, Ö, ö, Ő, ő, Ü, ü, Ű, ű, Ş, ş, T,˚ t,˚ Ţ, ţ, U,˚ and u.˚ Comparison of text fonts Some of the families illustrated in this section include distinct mathemat- ics faces, but for brevity, we show only prose. When a font family is not chosen, the LATEX and Plain TEX default is the traditional Computer Mod- ern family used to typeset the Art of Computer Programming books, and shown in the rst subsection. 1 A Font Family Sampler 2 NB: The LuxiMono font has rather large characters: it is used here in 15% reduced size via these preamble commands: \usepackage[T1]{fontenc} % only encoding available for LuxiMono \usepackage[scaled=0.85]{luximono} \usepackage{} % cmr Lorem ipsum dolor sit amet, aenean nulla tellus metus odio non maecenas, pariatur vitae congue laoreet semper, nulla adipiscing cursus neque dolor dui, faucibus aliquam quis.
    [Show full text]
  • An Introduction to the X Window System Introduction to X's Anatomy
    An Introduction to the X Window System Robert Lupton This is a limited and partisan introduction to ‘The X Window System’, which is widely but improperly known as X-windows, specifically to version 11 (‘X11’). The intention of the X-project has been to provide ‘tools not rules’, which allows their basic system to appear in a very large number of confusing guises. This document assumes that you are using the configuration that I set up at Peyton Hall † There are helpful manual entries under X and Xserver, as well as for individual utilities such as xterm. You may need to add /usr/princeton/X11/man to your MANPATH to read the X manpages. This is the first draft of this document, so I’d be very grateful for any comments or criticisms. Introduction to X’s Anatomy X consists of three parts: The server The part that knows about the hardware and how to draw lines and write characters. The Clients Such things as terminal emulators, dvi previewers, and clocks and The Window Manager A programme which handles negotiations between the different clients as they fight for screen space, colours, and sunlight. Another fundamental X-concept is that of resources, which is how X describes any- thing that a client might want to specify; common examples would be fonts, colours (both foreground and background), and position on the screen. Keys X can, and usually does, use a number of special keys. You are familiar with the way that <shift>a and <ctrl>a are different from a; in X this sensitivity extends to things like mouse buttons that you might not normally think of as case-sensitive.
    [Show full text]
  • Virtualgl / Turbovnc Survey Results Version 1, 3/17/2008 -- the Virtualgl Project
    VirtualGL / TurboVNC Survey Results Version 1, 3/17/2008 -- The VirtualGL Project This report and all associated illustrations are licensed under the Creative Commons Attribution 3.0 License. Any works which contain material derived from this document must cite The VirtualGL Project as the source of the material and list the current URL for the VirtualGL web site. Between December, 2007 and March, 2008, a survey of the VirtualGL community was conducted to ascertain which features and platforms were of interest to current and future users of VirtualGL and TurboVNC. The larger purpose of this survey was to steer the future development of VirtualGL and TurboVNC based on user input. 1 Statistics 49 users responded to the survey, with 32 complete responses. When listing percentage breakdowns for each response to a question, this report computes the percentages relative to the total number of complete responses for that question. 2 Responses 2.1 Server Platform “Please select the server platform(s) that you currently use or plan to use with VirtualGL/TurboVNC” Platform Number of Respondees (%) Linux/x86 25 / 46 (54%) ● Enterprise Linux 3 (x86) 2 / 46 (4.3%) ● Enterprise Linux 4 (x86) 5 / 46 (11%) ● Enterprise Linux 5 (x86) 6 / 46 (13%) ● Fedora Core 4 (x86) 1 / 46 (2.2%) ● Fedora Core 7 (x86) 1 / 46 (2.2%) ● Fedora Core 8 (x86) 4 / 46 (8.7%) ● SuSE Linux Enterprise 9 (x86) 1 / 46 (2.2%) 1 Platform Number of Respondees (%) ● SuSE Linux Enterprise 10 (x86) 2 / 46 (4.3%) ● Ubuntu (x86) 7 / 46 (15%) ● Debian (x86) 5 / 46 (11%) ● Gentoo (x86) 1 /
    [Show full text]
  • Oracle® Secure Global Desktop Platform Support and Release Notes for Release 4.7
    Oracle® Secure Global Desktop Platform Support and Release Notes for Release 4.7 E26357-02 November 2012 Oracle® Secure Global Desktop: Platform Support and Release Notes for Release 4.7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S.
    [Show full text]
  • X Window System Network Performance
    X Window System Network Performance Keith Packard Cambridge Research Laboratory, HP Labs, HP [email protected] James Gettys Cambridge Research Laboratory, HP Labs, HP [email protected] Abstract havior (or on a local machine, context switches between the application and the X server). Performance was an important issue in the develop- One of the authors used the network visualization tool ment of X from the initial protocol design and contin- when analyzing the design of HTTP/1.1 [NGBS 97]. ues to be important in modern application and extension The methodology and tools used in that analysis in- development. That X is network transparent allows us volved passive packet level monitoring of traffic which to analyze the behavior of X from a perspective seldom allowed precise real-world measurements and compar- possible in most systems. We passively monitor network isons. The work described in this paper combines this packet flow to measure X application and server perfor- passive packet capture methodology with additional X mance. The network simulation environment, the data protocol specific analysis and visualization. Our experi- capture tool and data analysis tools will be presented. ence with this combination of the general technique with Data from this analysis are used to show the performance X specific additions was very positive and we believe impact of the Render extension, the limitations of the provides a powerful tool that could be used in the analy- LBX extension and help identify specific application and sis of other widely used protocols. toolkit performance problems. We believe this analysis With measurement tools in hand, we set about char- technique can be usefully applied to other network pro- acterizing the performance of a significant selection of tocols.
    [Show full text]
  • Supporting Distributed Visualization Services for High Performance Science and Engineering Applications – a Service Provider Perspective
    9th IEEE/ACM International Symposium on Cluster Computing and the Grid Supporting distributed visualization services for high performance science and engineering applications – A service provider perspective Lakshmi Sastry*, Ronald Fowler, Srikanth Nagella and Jonathan Churchill e-Science Centre, Science & Technology Facilities Council, Introduction activities, the outcomes, the status and some suggestions as to the way forward. The Science & Technology Facilities Council is home to international Facilities such as the ISIS Workshops and tutorials Neutron Spallation Source, Central Laser Facility and Diamond Light Source, the National The take up of advanced visualization Grid Service including national super techniques within STFC scientists and their computers, Tier1 data service for CERN particle colleagues from the wider academia is quite physics experiment, the British Atmospheric limited despite decades of holding seminars and data Centre and the British Oceanographic Data surgeries to create awareness of the state of the Centre at the Space Science and Technology art. Visualization events generally tend to department. Together these Facilities generate attract practitioners in the field and an several Terabytes of data per month which needs occasional application domain expert. This is a to be handled, catalogued and provided access serious issue limiting the more widespread use to. In addition, the scientists within STFC of advanced visualization tools. In order to departments also develop complex simulations address this deficit, more recently, we have and undertake data analysis for their own begun an escalation of such events by holding experiments. Facilities also have strong ongoing show and tell “Other Peoples Business” to collaborations with UK academic and introduce exemplars from specific domains and commercial users through their involvement then the tools behind the exemplars, advertising with Collaborative Computational Programme, these events exclusively to scientists of various generating very large simulation datasets.
    [Show full text]
  • FLTK 1.1.8 Programming Manual Revision 8
    FLTK 1.1.8 Programming Manual Revision 8 Written by Michael Sweet, Craig P. Earls, Matthias Melcher, and Bill Spitzak Copyright 1998-2006 by Bill Spitzak and Others. FLTK 1.1.8 Programming Manual Table of Contents Preface..................................................................................................................................................................1 Organization.............................................................................................................................................1 Conventions.............................................................................................................................................2 Abbreviations...........................................................................................................................................2 Copyrights and Trademarks.....................................................................................................................2 1 - Introduction to FLTK...................................................................................................................................3 History of FLTK......................................................................................................................................3 Features....................................................................................................................................................4 Licensing..................................................................................................................................................5
    [Show full text]
  • Striptool Users Guide.Pdf
    StripTool Users Guide 2008/10/24 8:01 AM StripTool Users Guide Kenneth Evans, Jr. November 2002 Advanced Photon Source Argonne National Laboratory 9700 South Cass Avenue Argonne, IL 60439 Table of Contents Introduction Overview History Starting StripTool Configuration Files Environment Variables Controls Window Menubar Graph Window Graph Legend Toolbar Popup Menu History Customization Acknowledgements Copyright Introduction Overview StripTool is a Motif application that allows you to view the time evolution of one or more process variables on a strip chart. It is designed to work with EPICS or CDEV and is maintained as an EPICS Extension. There are two main windows: The Controls Dialog and the Graph. The Controls Dialog allows you to specify and modify the process variable name and the graph parameters corresponding to each curve that is plotted. It also allows you to specify timing parameters and graph properties. The curves are plotted in real time on the Graph. There are buttons on the Graph that allow you to do things like zoom and pan, and there is a popup menu that allows http://www.aps.anl.gov/epics/EpicsDocumentation/ExtensionsManuals/StripTool/StripTool.html Page 1 of 10 StripTool Users Guide 2008/10/24 8:01 AM you to do things like print the graph and save the data in ASCII or SDDS format. StripTool was designed for UNIX but also runs on Microsoft Windows 95, 98, ME, 2000, and XP, collectively labeled here as WIN32. An X server and the X and Motif libraries are needed. For information on obtaining StripTool, consult the EPICS Documentation.
    [Show full text]
  • IN ACTION Understanding Data with Graphs SECOND EDITION
    Covers gnuplot version 5 IN ACTION Understanding data with graphs SECOND EDITION Philipp K. Janert MANNING Gnuplot in Action by Philipp K. Janert Chapter 2 Copyright 2016 Manning Publications brief contents PART 1GETTING STARTED............................................................ 1 1 ■ Prelude: understanding data with gnuplot 3 2 ■ Tutorial: essential gnuplot 16 3 ■ The heart of the matter: the plot command 31 PART 2CREATING GRAPHS ......................................................... 53 4 ■ Managing data sets and files 55 5 ■ Practical matters: strings, loops, and history 78 6 ■ A catalog of styles 100 7 ■ Decorations: labels, arrows, and explanations 125 8 ■ All about axes 146 PART 3MASTERING TECHNICALITIES......................................... 179 9 ■ Color, style, and appearance 181 10 ■ Terminals and output formats 209 11 ■ Automation, scripting, and animation 236 12 ■ Beyond the defaults: workflow and styles 262 PART 4UNDERSTANDING DATA ................................................. 287 13 ■ Basic techniques of graphical analysis 289 14 ■ Topics in graphical analysis 314 15 ■ Coda: understanding data with graphs 344 vii Color, style, and appearance This chapter covers Global appearance options Color Lines and points Size and aspect ratio Whereas the previous few chapters dealt with very local aspects of a graph (such as an individual curve, a single text label, or the details of tic mark formatting), the present chapter addresses global issues. We begin with a long and important sec- tion on color. Color is an exciting topic, and it opens a range of options for data visualization; I’ll explain gnuplot’s support for color handling in detail. Next, we discuss a few details that matter if you want to modify the default appearance of point types, dash patterns, and the automatic selection of visual styles.
    [Show full text]
  • Release 0.11 Todd Gamblin
    Spack Documentation Release 0.11 Todd Gamblin Feb 07, 2018 Basics 1 Feature Overview 3 1.1 Simple package installation.......................................3 1.2 Custom versions & configurations....................................3 1.3 Customize dependencies.........................................4 1.4 Non-destructive installs.........................................4 1.5 Packages can peacefully coexist.....................................4 1.6 Creating packages is easy........................................4 2 Getting Started 7 2.1 Prerequisites...............................................7 2.2 Installation................................................7 2.3 Compiler configuration..........................................9 2.4 Vendor-Specific Compiler Configuration................................ 13 2.5 System Packages............................................. 16 2.6 Utilities Configuration.......................................... 18 2.7 GPG Signing............................................... 20 2.8 Spack on Cray.............................................. 21 3 Basic Usage 25 3.1 Listing available packages........................................ 25 3.2 Installing and uninstalling........................................ 42 3.3 Seeing installed packages........................................ 44 3.4 Specs & dependencies.......................................... 46 3.5 Virtual dependencies........................................... 50 3.6 Extensions & Python support...................................... 53 3.7 Filesystem requirements........................................
    [Show full text]
  • Package 'Snp.Plotter'
    Package ‘snp.plotter’ February 15, 2013 Version 0.4 Date 2011-05-11 Title snp.plotter Author Augustin Luna <[email protected]>, Kristin K. Nicodemus <[email protected]>, <[email protected]> Maintainer Augustin Luna <[email protected]> Depends R (>= 2.0.0), genetics, grid Description Creates plots of p-values using single SNP and/or haplotype data. Main features of the package include options to display a linkage disequilibrium (LD) plot and the ability to plot multiple datasets simultaneously. Plots can be created using global and/or individual haplotype p-values along with single SNP p-values. Images are created as either PDF/EPS files. License GPL (>= 2) URL http://cbdb.nimh.nih.gov/~kristin/snp.plotter.html Repository CRAN Date/Publication 2012-10-29 08:59:47 NeedsCompilation no R topics documented: snp.plotter . .2 Index 7 1 2 snp.plotter snp.plotter SNP/haplotype association p-value and linkage disequilibrium plotter Description Creates plots of p-values using single SNP and/or haplotype data. Main features of the package include options to display a linkage disequilibrium (LD) plot and the ability to plot multiple set of results simultaneously. Plots can be created using global and/or individual haplotype p-values along with single SNP p-values. Images are created as either PDF/EPS files. Usage snp.plotter(EVEN.SPACED = FALSE, PVAL.THRESHOLD = 1, USE.GBL.PVAL = TRUE, SYMBOLS = NA, SAMPLE.LABELS = NULL, LAB.Y = "log", DISP.HAP = FALSE, DISP.SNP = TRUE, DISP.COLOR.BAR = TRUE, DISP.PHYS.DIST = TRUE, DISP.LEGEND
    [Show full text]