text:
<?xml version="1.0"?>
<!--Generated by Don's HyperSpin Tools version 4.2.6-->
<menu>
  <game name="archrivla" index="" image="">
    <description>Arch Rivals (rev 2.0 5/03/89)</description>
    <cloneof>archrivl</cloneof>
    <crc>d4203273</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1989</year>
    <genre>Sports/Basketball</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Stick</ctrltype>
    <buttons>2</buttons>
    <score>4.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="archrivl" index="" image="">
    <description>Arch Rivals (rev 4.0 6/29/89)</description>
    <cloneof />
    <crc>d4203273</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1989</year>
    <genre>Sports/Basketball</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Stick</ctrltype>
    <buttons>2</buttons>
    <score>4.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="blasted" index="" image="">
    <description>Blasted</description>
    <cloneof />
    <crc>18e4a130</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1988</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>3.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="blueprnt" index="" image="">
    <description>Blue Print (Midway)</description>
    <cloneof />
    <crc>2fcb4f26</crc>
    <manufacturer>Zilec Electronics / Bally Midway</manufacturer>
    <year>1982</year>
    <genre>Maze</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>2.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="bnjm" index="" image="">
    <description>Bump 'n' Jump (Midway)</description>
    <cloneof>brubber</cloneof>
    <crc>a9ffacb4</crc>
    <manufacturer>Data East USA (Bally Midway license)</manufacturer>
    <year>1982</year>
    <genre>Driving</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>1.6</score>
    <enabled>Yes</enabled>
  </game>
  <game name="btimem" index="" image="">
    <description>Burger Time (Midway)</description>
    <cloneof>btime</cloneof>
    <crc>d26bc1f3</crc>
    <manufacturer>Data East (Bally Midway license)</manufacturer>
    <year>1982</year>
    <genre>Platform</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>4</joyways>
    <score>4.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="cshift" index="" image="">
    <description>Chicken Shift</description>
    <cloneof />
    <crc>a94cd35b</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Puzzle</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Buttons</ctrltype>
    <buttons>2</buttons>
    <score>3.7</score>
    <enabled>Yes</enabled>
  </game>
  <game name="crater" index="" image="">
    <description>Crater Raider</description>
    <cloneof />
    <crc>6fe53c8d</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1984</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Dial</ctrltype>
    <buttons>3</buttons>
    <joyways>vertical2</joyways>
    <score>2.9</score>
    <enabled>Yes</enabled>
  </game>
  <game name="demoderb" index="" image="">
    <description>Demolition Derby</description>
    <cloneof />
    <crc>0ec3f60a</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1984</year>
    <genre>Driving</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>4</players>
    <ctrltype>Dial</ctrltype>
    <buttons>2</buttons>
    <score>4.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="demoderm" index="" image="">
    <description>Demolition Derby (MCR-3 Mono Board Version)</description>
    <cloneof>demoderb</cloneof>
    <crc>0ec3f60a</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1984</year>
    <genre>Driving</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>4</players>
    <ctrltype>Dial</ctrltype>
    <buttons>2</buttons>
    <score>4.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="demoderbc" index="" image="">
    <description>Demolition Derby (cocktail)</description>
    <cloneof>demoderb</cloneof>
    <crc>0ec3f60a</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1984</year>
    <genre>Driving</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>4</players>
    <ctrltype>Dial</ctrltype>
    <buttons>2</buttons>
    <score>4.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="dotrone" index="" image="">
    <description>Discs of Tron (Environmental)</description>
    <cloneof>dotron</cloneof>
    <crc>fb58b867</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1983</year>
    <genre>Sports</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>4</buttons>
    <joyways>8</joyways>
    <score>1.7</score>
    <enabled>Yes</enabled>
  </game>
  <game name="dotrona" index="" image="">
    <description>Discs of Tron (Upright alternate)</description>
    <cloneof>dotron</cloneof>
    <crc>565a5c48</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1983</year>
    <genre>Sports</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>4</buttons>
    <joyways>8</joyways>
    <score>1.7</score>
    <enabled>Yes</enabled>
  </game>
  <game name="dotron" index="" image="">
    <description>Discs of Tron (Upright)</description>
    <cloneof />
    <crc>565a5c48</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1983</year>
    <genre>Sports</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>4</buttons>
    <joyways>8</joyways>
    <score>1.7</score>
    <enabled>Yes</enabled>
  </game>
  <game name="domino" index="" image="">
    <description>Domino Man</description>
    <cloneof />
    <crc>1f39257e</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1982</year>
    <genre>Puzzle</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>4</joyways>
    <score>2.4</score>
    <enabled>Yes</enabled>
  </game>
  <game name="dpoker" index="" image="">
    <description>Draw Poker (Bally, 03-20)</description>
    <cloneof />
    <crc>acb3b469</crc>
    <manufacturer>Bally</manufacturer>
    <year>1985</year>
    <genre>Casino</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Gambling</ctrltype>
    <buttons>12</buttons>
    <score>1.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="gimeabrk" index="" image="">
    <description>Gimme A Break (7/7/85)</description>
    <cloneof />
    <crc>b4f6b0b7</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1985</year>
    <genre>Sports/Pool and Dart</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>1</buttons>
    <score>3.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="gghost" index="" image="">
    <description>Goalie Ghost</description>
    <cloneof />
    <crc>d3da0093</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Sports/Soccer</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>2</buttons>
    <score>3.7</score>
    <enabled>Yes</enabled>
  </game>
  <game name="grudge" index="" image="">
    <description>Grudge Match (prototype)</description>
    <cloneof />
    <crc>b9681f53</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>198?</year>
    <genre>Driving</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>3</players>
    <ctrltype>Dial</ctrltype>
    <buttons>1</buttons>
    <score>3.3</score>
    <enabled>Yes</enabled>
  </game>
  <game name="hattrick" index="" image="">
    <description>Hat Trick</description>
    <cloneof />
    <crc>951f08c9</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Sports/Hockey</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>2.4</score>
    <enabled>Yes</enabled>
  </game>
  <game name="intlaser" index="" image="">
    <description>International Team Laser (prototype)</description>
    <cloneof>blasted</cloneof>
    <crc>203b55b8</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1987</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>4</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>3.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="journey" index="" image="">
    <description>Journey</description>
    <cloneof />
    <crc>b30cd2a7</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1983</year>
    <genre>Maze</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>4</joyways>
    <score>3.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="jrpacman" index="" image="">
    <description>Jr. Pac-Man (11/9/83)</description>
    <cloneof />
    <crc>77245b66</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1983</year>
    <genre>Maze</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <joyways>4</joyways>
    <score>4.1</score>
    <enabled>Yes</enabled>
  </game>
  <game name="jumpshot" index="" image="">
    <description>Jump Shot</description>
    <cloneof />
    <crc>77245b66</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1985</year>
    <genre>Sports/Basketball</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>3.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="jumpshotp" index="" image="">
    <description>Jump Shot Engineering Sample</description>
    <cloneof>jumpshot</cloneof>
    <crc>77245b66</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1985</year>
    <genre>Sports/Basketball</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>3.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="kroozr" index="" image="">
    <description>Kozmik Kroozr</description>
    <cloneof />
    <crc>b57fb0ff</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1982</year>
    <genre>Shoot-'Em-Up</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Dial</ctrltype>
    <buttons>2</buttons>
    <score>2.3</score>
    <enabled>Yes</enabled>
  </game>
  <game name="lazarian" index="" image="">
    <description>Lazarian</description>
    <cloneof>laserbat</cloneof>
    <crc>c3eb562a</crc>
    <manufacturer>Zaccaria (Bally Midway license)</manufacturer>
    <year>1981</year>
    <genre>Shoot-'Em-Up</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>4</buttons>
    <joyways>8</joyways>
    <score>3.7</score>
    <enabled>Yes</enabled>
  </game>
  <game name="maxrpm" index="" image="">
    <description>Max RPM (ver 2)</description>
    <cloneof />
    <crc>9ae3eb52</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1986</year>
    <genre>Driving</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Pedal</ctrltype>
    <joyways>vertical2</joyways>
    <score>4.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="minigolf2" index="" image="">
    <description>Mini Golf (10/8/85)</description>
    <cloneof>minigolf</cloneof>
    <crc>5cc09374</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1985</year>
    <genre>Sports/Golf</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>1</buttons>
    <score>4.1</score>
    <enabled>Yes</enabled>
  </game>
  <game name="minigolf" index="" image="">
    <description>Mini Golf (11/25/85)</description>
    <cloneof />
    <crc>5cc09374</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1985</year>
    <genre>Sports/Golf</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>1</buttons>
    <score>4.1</score>
    <enabled>Yes</enabled>
  </game>
  <game name="nametune2" index="" image="">
    <description>Name That Tune (3/23/86)</description>
    <cloneof>nametune</cloneof>
    <crc>a0121b80</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1986</year>
    <genre>Quiz</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Buttons</ctrltype>
    <buttons>4</buttons>
    <score>3.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="nametune" index="" image="">
    <description>Name That Tune (set 1)</description>
    <cloneof />
    <crc>6b75bb4b</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1986</year>
    <genre>Quiz</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Buttons</ctrltype>
    <buttons>4</buttons>
    <score>3.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="nstocker" index="" image="">
    <description>Night Stocker (10/6/86)</description>
    <cloneof />
    <crc>3311f9c0</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1986</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Dial</ctrltype>
    <buttons>1</buttons>
    <score>4.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="nstocker2" index="" image="">
    <description>Night Stocker (8/27/86)</description>
    <cloneof>nstocker</cloneof>
    <crc>3311f9c0</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1986</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Dial</ctrltype>
    <buttons>1</buttons>
    <score>4.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="otwalls" index="" image="">
    <description>Off the Wall (Sente)</description>
    <cloneof />
    <crc>448f7e3c</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Sports/Tennis</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Dial</ctrltype>
    <joyways>2</joyways>
    <score>3.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="paclandm" index="" image="">
    <description>Pac-Land (Midway)</description>
    <cloneof>pacland</cloneof>
    <crc>80558da8</crc>
    <manufacturer>Namco (Bally Midway license)</manufacturer>
    <year>1984</year>
    <genre>Platform</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Buttons</ctrltype>
    <buttons>3</buttons>
    <score>4.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="powerdrv" index="" image="">
    <description>Power Drive</description>
    <cloneof />
    <crc>de400335</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1986</year>
    <genre>Driving</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>3</players>
    <ctrltype>Buttons</ctrltype>
    <buttons>4</buttons>
    <score>3.6</score>
    <enabled>Yes</enabled>
  </game>
  <game name="profpac" index="" image="">
    <description>Professor Pac-Man</description>
    <cloneof />
    <crc>c3f47134</crc>
    <manufacturer>Dave Nutting Associates / Bally Midway</manufacturer>
    <year>1983</year>
    <genre>Quiz</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Buttons</ctrltype>
    <buttons>3</buttons>
    <score>2.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="rpunch" index="" image="">
    <description>Rabbit Punch (US)</description>
    <cloneof>rabiolep</cloneof>
    <crc>47840673</crc>
    <manufacturer>V-System Co. (Bally/Midway/Sente license)</manufacturer>
    <year>1987</year>
    <genre>Shoot-'Em-Up</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>8</joyways>
    <score>3.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="rampage2" index="" image="">
    <description>Rampage (Rev 2, 8/4/86)</description>
    <cloneof>rampage</cloneof>
    <crc>81e1de40</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1986</year>
    <genre>Action</genre>
    <rating>AAMA - Yellow (Animated Violence Mild)</rating>
    <players>3</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>8</joyways>
    <score>3.6</score>
    <enabled>Yes</enabled>
  </game>
  <game name="rampage" index="" image="">
    <description>Rampage (Rev 3, 8/27/86)</description>
    <cloneof />
    <crc>81e1de40</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1986</year>
    <genre>Action</genre>
    <rating>AAMA - Yellow (Animated Violence Mild)</rating>
    <players>3</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>8</joyways>
    <score>3.6</score>
    <enabled>Yes</enabled>
  </game>
  <game name="rescraid" index="" image="">
    <description>Rescue Raider (5/11/87) (non-cartridge)</description>
    <cloneof />
    <crc>771eff5d</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1987</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Doublejoy</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>2.6</score>
    <enabled>Yes</enabled>
  </game>
  <game name="rescraida" index="" image="">
    <description>Rescue Raider (stand-alone)</description>
    <cloneof>rescraid</cloneof>
    <crc>952ade30</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1987</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Doublejoy</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>2.6</score>
    <enabled>Yes</enabled>
  </game>
  <game name="sarge" index="" image="">
    <description>Sarge</description>
    <cloneof />
    <crc>c382267d</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1985</year>
    <genre>Shoot-'Em-Up</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Doublejoy</ctrltype>
    <buttons>2</buttons>
    <joyways>vertical2</joyways>
    <score>3.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="shollow" index="" image="">
    <description>Satan's Hollow (set 1)</description>
    <cloneof />
    <crc>37ea9d07</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1981</year>
    <genre>Shoot-'Em-Up</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>2</joyways>
    <score>3.6</score>
    <enabled>Yes</enabled>
  </game>
  <game name="shollow2" index="" image="">
    <description>Satan's Hollow (set 2)</description>
    <cloneof>shollow</cloneof>
    <crc>37ea9d07</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1981</year>
    <genre>Shoot-'Em-Up</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>2</joyways>
    <score>3.6</score>
    <enabled>Yes</enabled>
  </game>
  <game name="sentetst" index="" image="">
    <description>Sente Diagnostic Cartridge</description>
    <cloneof />
    <crc>5e0ff62a</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Utilities / Test</genre>
    <rating>Other - NR (Not Rated)</rating>
    <players>1</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>3.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="shootbul" index="" image="">
    <description>Shoot the Bull</description>
    <cloneof />
    <crc>77245b66</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1985</year>
    <genre>Sports/Pool and Dart</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>1</buttons>
    <score>3.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="shrike" index="" image="">
    <description>Shrike Avenger (prototype)</description>
    <cloneof />
    <crc>6f3d9aa1</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1986</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Stick</ctrltype>
    <buttons>5</buttons>
    <score>2.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="snakjack" index="" image="">
    <description>Snacks'n Jaxson</description>
    <cloneof />
    <crc>345f94fb</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Ball & Paddle</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>1</buttons>
    <score>4.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="snakepit" index="" image="">
    <description>Snake Pit</description>
    <cloneof />
    <crc>dc27c970</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Action</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>3.4</score>
    <enabled>Yes</enabled>
  </game>
  <game name="solarfox" index="" image="">
    <description>Solar Fox (upright)</description>
    <cloneof />
    <crc>3da25495</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1981</year>
    <genre>Maze</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>4</joyways>
    <score>2.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="spiker" index="" image="">
    <description>Spiker</description>
    <cloneof />
    <crc>90ddd737</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1986</year>
    <genre>Sports/Volleyball</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>1</buttons>
    <score>2.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="spiker2" index="" image="">
    <description>Spiker (5/5/86)</description>
    <cloneof>spiker</cloneof>
    <crc>bf2b413d</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1986</year>
    <genre>Sports/Volleyball</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>1</buttons>
    <score>2.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="spiker3" index="" image="">
    <description>Spiker (6/9/86)</description>
    <cloneof>spiker</cloneof>
    <crc>90ddd737</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1986</year>
    <genre>Sports/Volleyball</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>1</buttons>
    <score>2.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="spyhunt" index="" image="">
    <description>Spy Hunter</description>
    <cloneof />
    <crc>936dc87f</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1983</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Pedal</ctrltype>
    <buttons>5</buttons>
    <score>4.3</score>
    <enabled>Yes</enabled>
  </game>
  <game name="spyhuntp" index="" image="">
    <description>Spy Hunter (Playtronic license)</description>
    <cloneof>spyhunt</cloneof>
    <crc>5c74c9f0</crc>
    <manufacturer>Bally Midway (Playtronic license)</manufacturer>
    <year>1983</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Pedal</ctrltype>
    <buttons>5</buttons>
    <score>2.4</score>
    <enabled>Yes</enabled>
  </game>
  <game name="spyhunt2a" index="" image="">
    <description>Spy Hunter II (rev 1)</description>
    <cloneof>spyhunt2</cloneof>
    <crc>d3475ff8</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1987</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Pedal</ctrltype>
    <buttons>7</buttons>
    <score>2.4</score>
    <enabled>Yes</enabled>
  </game>
  <game name="spyhunt2" index="" image="">
    <description>Spy Hunter II (rev 2)</description>
    <cloneof />
    <crc>d3475ff8</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1987</year>
    <genre>Shooter</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Pedal</ctrltype>
    <buttons>7</buttons>
    <score>2.4</score>
    <enabled>Yes</enabled>
  </game>
  <game name="stargrds" index="" image="">
    <description>Star Guards</description>
    <cloneof />
    <crc>cc5cc003</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1987</year>
    <genre>Shoot-'Em-Up</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>3</players>
    <ctrltype>Doublejoy</ctrltype>
    <joyways>8</joyways>
    <score>3.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="stocker" index="" image="">
    <description>Stocker (3/19/85)</description>
    <cloneof />
    <crc>b4f6b0b7</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Driving</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Dial</ctrltype>
    <buttons>1</buttons>
    <score>3.5</score>
    <enabled>Yes</enabled>
  </game>
  <game name="stompin" index="" image="">
    <description>Stompin' (4/4/86)</description>
    <cloneof />
    <crc>2bab2784</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1986</year>
    <genre>Maze</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Buttons</ctrltype>
    <buttons>9</buttons>
    <score>3.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="sfootbal" index="" image="">
    <description>Street Football (11/12/86)</description>
    <cloneof />
    <crc>42452a7a</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1986</year>
    <genre>Sports/Football</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Stick</ctrltype>
    <buttons>1</buttons>
    <score>3.6</score>
    <enabled>Yes</enabled>
  </game>
  <game name="superpacm" index="" image="">
    <description>Super Pac-Man (Midway)</description>
    <cloneof>superpac</cloneof>
    <crc>ad43688f</crc>
    <manufacturer>Namco (Bally Midway license)</manufacturer>
    <year>1982</year>
    <genre>Maze</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>4</joyways>
    <score>4.3</score>
    <enabled>Yes</enabled>
  </game>
  <game name="tahjong" index="" image="">
    <description>Tahjong Yakitori (ver. 2-1)</description>
    <cloneof>royalmj</cloneof>
    <crc>c074c0f0</crc>
    <manufacturer>Bally Pond / Nasco</manufacturer>
    <year>1985</year>
    <genre>Mahjong</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Mahjong</ctrltype>
    <buttons>26</buttons>
    <score>2.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="tapper" index="" image="">
    <description>Tapper (Budweiser, set 1)</description>
    <cloneof />
    <crc>a37aef36</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1983</year>
    <genre>Platform</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>4</joyways>
    <score>4.1</score>
    <enabled>Yes</enabled>
  </game>
  <game name="tappera" index="" image="">
    <description>Tapper (Budweiser, set 2)</description>
    <cloneof>tapper</cloneof>
    <crc>6717264c</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1983</year>
    <genre>Platform</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>4</joyways>
    <score>4.1</score>
    <enabled>Yes</enabled>
  </game>
  <game name="rbtapper" index="" image="">
    <description>Tapper (Root Beer)</description>
    <cloneof>tapper</cloneof>
    <crc>441201a0</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1984</year>
    <genre>Platform</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>4</joyways>
    <score>3.9</score>
    <enabled>Yes</enabled>
  </game>
  <game name="sutapper" index="" image="">
    <description>Tapper (Suntory)</description>
    <cloneof>tapper</cloneof>
    <crc>d4f114b9</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1983</year>
    <genre>Platform</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>4</joyways>
    <score>1.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="teamht" index="" image="">
    <description>Team Hat Trick</description>
    <cloneof />
    <crc>6e299728</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1985</year>
    <genre>Sports/Hockey</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>4</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>4.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="robby" index="" image="">
    <description>The Adventures of Robby Roto!</description>
    <cloneof />
    <crc>e762cbda</crc>
    <manufacturer>Dave Nutting Associates / Bally Midway</manufacturer>
    <year>1981</year>
    <genre>Maze</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>4</joyways>
    <score>2.9</score>
    <enabled>Yes</enabled>
  </game>
  <game name="timber" index="" image="">
    <description>Timber</description>
    <cloneof />
    <crc>244778e8</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1984</year>
    <genre>Platform</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>4</joyways>
    <score>0.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="toggle" index="" image="">
    <description>Toggle (prototype)</description>
    <cloneof />
    <crc>3b141ad2</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1985</year>
    <genre>Maze</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>2.3</score>
    <enabled>Yes</enabled>
  </game>
  <game name="trisport" index="" image="">
    <description>Tri-Sports</description>
    <cloneof />
    <crc>761c3b56</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1989</year>
    <genre>Compilation</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Trackball</ctrltype>
    <buttons>2</buttons>
    <score>2.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="triviasp" index="" image="">
    <description>Trivial Pursuit (All Star Sports Edition)</description>
    <cloneof />
    <crc>7415a7fc</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Quiz</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>8</joyways>
    <score>2.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="triviabb" index="" image="">
    <description>Trivial Pursuit (Baby Boomer Edition) (3/20/85)</description>
    <cloneof />
    <crc>175a5168</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Quiz</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>8</joyways>
    <score>2.1</score>
    <enabled>Yes</enabled>
  </game>
  <game name="triviag2" index="" image="">
    <description>Trivial Pursuit (Genus II Edition)</description>
    <cloneof />
    <crc>1e870293</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Quiz</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>8</joyways>
    <score>2.6</score>
    <enabled>Yes</enabled>
  </game>
  <game name="triviaes" index="" image="">
    <description>Trivial Pursuit (Spanish)</description>
    <cloneof />
    <crc>1242033e</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1987</year>
    <genre>Quiz / Spanish</genre>
    <rating>Other - NR (Not Rated)</rating>
    <players>1</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>8</joyways>
    <score>2.1</score>
    <enabled>Yes</enabled>
  </game>
  <game name="trivia12" index="" image="">
    <description>Trivial Pursuit (Think Tank - Genus Edition) (12/14/84)</description>
    <cloneof>triviag1</cloneof>
    <crc>d17d5431</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Quiz</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>8</joyways>
    <score>2.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="triviag1" index="" image="">
    <description>Trivial Pursuit (Think Tank - Genus Edition) (set 1)</description>
    <cloneof />
    <crc>067bfd66</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Quiz</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>8</joyways>
    <score>2.6</score>
    <enabled>Yes</enabled>
  </game>
  <game name="triviayp" index="" image="">
    <description>Trivial Pursuit (Young Players Edition)</description>
    <cloneof />
    <crc>1242033e</crc>
    <manufacturer>Bally/Sente</manufacturer>
    <year>1984</year>
    <genre>Quiz</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>2</buttons>
    <joyways>8</joyways>
    <score>3.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="tron4" index="" image="">
    <description>Tron (6/15)</description>
    <cloneof>tron</cloneof>
    <crc>9743f873</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1982</year>
    <genre>Compilation</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Dial</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>3.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="tron3" index="" image="">
    <description>Tron (6/17)</description>
    <cloneof>tron</cloneof>
    <crc>9743f873</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1982</year>
    <genre>Compilation</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Dial</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>3.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="tron2" index="" image="">
    <description>Tron (6/25)</description>
    <cloneof>tron</cloneof>
    <crc>9743f873</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1982</year>
    <genre>Compilation</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Dial</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>3.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="tron" index="" image="">
    <description>Tron (8/9)</description>
    <cloneof />
    <crc>9743f873</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1982</year>
    <genre>Compilation</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Dial</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>3.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="tronger" index="" image="">
    <description>Tron (Germany)</description>
    <cloneof>tron</cloneof>
    <crc>9743f873</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1982</year>
    <genre>Compilation</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Dial</ctrltype>
    <buttons>1</buttons>
    <joyways>8</joyways>
    <score>3.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="turbotag" index="" image="">
    <description>Turbo Tag (prototype)</description>
    <cloneof />
    <crc>aa0b1471</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1985</year>
    <genre>Driving</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Pedal</ctrltype>
    <buttons>4</buttons>
    <score>4.4</score>
    <enabled>Yes</enabled>
  </game>
  <game name="twotigerc" index="" image="">
    <description>Two Tigers (Tron conversion)</description>
    <cloneof>twotiger</cloneof>
    <crc>9b22697b</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1984</year>
    <genre>Shoot-'Em-Up</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Dial</ctrltype>
    <buttons>2</buttons>
    <score>3.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="twotiger" index="" image="">
    <description>Two Tigers (dedicated)</description>
    <cloneof />
    <crc>ef515824</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1984</year>
    <genre>Shoot-'Em-Up</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Stick</ctrltype>
    <buttons>3</buttons>
    <score>3.0</score>
    <enabled>Yes</enabled>
  </game>
  <game name="wacko" index="" image="">
    <description>Wacko</description>
    <cloneof />
    <crc>080be3ad</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1982</year>
    <genre>Shoot-'Em-Up</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>2</players>
    <ctrltype>Trackball</ctrltype>
    <joyways>4</joyways>
    <score>3.2</score>
    <enabled>Yes</enabled>
  </game>
  <game name="xenophob" index="" image="">
    <description>Xenophobe</description>
    <cloneof />
    <crc>33e62608</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1987</year>
    <genre>Platform</genre>
    <rating>AAMA - Yellow (Animated Violence Mild)</rating>
    <players>3</players>
    <ctrltype>Joystick</ctrltype>
    <buttons>3</buttons>
    <joyways>8</joyways>
    <score>2.8</score>
    <enabled>Yes</enabled>
  </game>
  <game name="zwackery" index="" image="">
    <description>Zwackery</description>
    <cloneof />
    <crc>ab504dc8</crc>
    <manufacturer>Bally Midway</manufacturer>
    <year>1984</year>
    <genre>Platform</genre>
    <rating>AAMA - Green (Suitable For All Ages)</rating>
    <players>1</players>
    <ctrltype>Dial</ctrltype>
    <buttons>4</buttons>
    <joyways>8</joyways>
    <score>3.5</score>
    <enabled>Yes</enabled>
  </game>
</menu>


text:
<!DOCTYPE HTML>

	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<meta name="generator" content="JsDoc Toolkit" />
	<title>JsDoc Reference - $</title>

	<link media="all" rel="stylesheet" href="../css/common.css" type="text/css" />
	<link media="all" rel="stylesheet" href="../css/prettify.css" type="text/css" />
	<link media="all" rel="stylesheet" href="../css/bootstrap.min.css" type="text/css" />
	<link media="print" rel="stylesheet" href="../css/print.css" type="text/css" />

				JsDoc Reference

Class Index

File Index

Classes

$

fn

swipe

defaults

directions

fingers

pageScroll

phases

_global_

				$

Inheritance

$

		Constructor

Constructor

							$
							(  )

									See (http://jquery.com/).
									code »

Documentation generated by JsDoc Toolkit 2.4.0 on Wed Jun 04 2014 13:36:56 GMT+0100 (BST)

redpajama_set_name: RedPajamaGithub


text:
package org.corpus_tools.annis.gui;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
import com.google.common.base.Charsets;
import com.google.common.eventbus.EventBus;
import com.google.common.hash.Hashing;
import com.google.common.io.Files;
import com.vaadin.annotations.Theme;
import com.vaadin.sass.internal.ScssStylesheet;
import com.vaadin.server.ClassResource;
import com.vaadin.server.Resource;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinService;
import com.vaadin.ui.UI;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.Serializable;
import java.nio.charset.StandardCharsets;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.LoggerFactory;
import org.slf4j.bridge.SLF4JBridgeHandler;

/**
 * Basic UI functionality.
 *
 * This class allows to out source some common tasks like initialization of the logging framework or
 * the plugin loading to this base class.
 */
@Theme("annis")
public class AnnisBaseUI extends UI implements Serializable {

  /**
   *
   */
  private static final long serialVersionUID = 1953089184783346987L;

  static {
    SLF4JBridgeHandler.removeHandlersForRootLogger();
    SLF4JBridgeHandler.install();
  }

  private static final org.slf4j.Logger log = LoggerFactory.getLogger(AnnisBaseUI.class);
  public static final Resource PINGUIN_IMAGE =
      new ClassResource("/org.corpus_tools.annis/libgui/penguins.png");

  /**
   * Given an configuration file name (might include directory) this function returns all locations
   * for this file in the "ANNIS configuration system".
   *
   * The files in the result list do not necessarily exist.
   *
   * These locations are the - base installation: WEB-INF/conf/ folder of the deployment. - global
   * configuration: $ANNIS_CFG environment variable value or /etc/annis/ if not set - user
   * configuration: ~/.annis/
   *
   * @param configFile The file path of the configuration file relative to the base config folder.
   * @return list of files or directories in the order in which they should be processed (most
   *         important is last)
   */
  public static List<File> getAllConfigLocations(String configFile) {
    LinkedList<File> locations = new LinkedList<File>();

    // first load everything from the base application
    locations.add(
        new File(VaadinService.getCurrent().getBaseDirectory(), "/WEB-INF/conf/" + configFile));

    // next everything from the global config
    // When ANNIS_CFG environment variable is set use this value or default to
    // "/etc/annis/
    String globalConfigDir = System.getenv("ANNIS_CFG");
    if (globalConfigDir == null) {
      globalConfigDir = "/etc/annis";
    }
    locations.add(new File(globalConfigDir + "/" + configFile));

    // the final and most specific user configuration is in the users home directory
    locations.add(new File(System.getProperty("user.home") + "/.annis/" + configFile));

    return locations;
  }

  private TreeSet<String> alreadyAddedCSS = new TreeSet<String>();

  private transient EventBus loginDataLostBus;

  @Override
  public void attach() {

    super.attach();
    alreadyAddedCSS.clear();
  }

  public EventBus getLoginDataLostBus() {
    if (loginDataLostBus == null) {
      loginDataLostBus = new EventBus();
    }
    return loginDataLostBus;
  }

  @Override
  protected void init(VaadinRequest request) {
    alreadyAddedCSS.clear();
  }

  /**
   * Inject CSS into the UI. This function will not add multiple style-elements if the exact CSS
   * string was already added.
   *
   * @param cssContent CSS as string
   */
  public void injectUniqueCSS(String cssContent) {
    injectUniqueCSS(cssContent, null);
  }

  /**
   * Inject CSS into the UI. This function will not add multiple style-elements if the exact CSS
   * string was already added.
   *
   * @param cssContent CSS as string
   * @param wrapperClass Name of the wrapper class (a CSS class that is applied to a parent element)
   */
  public void injectUniqueCSS(String cssContent, String wrapperClass) {
    this.access(() -> {
      if (alreadyAddedCSS == null) {
        alreadyAddedCSS = new TreeSet<String>();
      }

      final String wrappedCssContent =
          wrapperClass == null ? cssContent : wrapCSS(cssContent, wrapperClass);

      if (wrappedCssContent != null) {
        String hashForCssContent =
            Hashing.md5().hashString(wrappedCssContent, StandardCharsets.UTF_8).toString();

        if (!alreadyAddedCSS.contains(hashForCssContent)) {

          alreadyAddedCSS.add(hashForCssContent);
          this.getPage().getStyles().add(wrappedCssContent);
        }
      }
    });
  }

  protected Map<String, InstanceConfig> loadInstanceConfig() {
    TreeMap<String, InstanceConfig> result = new TreeMap<>();

    JsonMapper mapper = new JsonMapper();
    mapper.registerModule(new JaxbAnnotationModule());
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    // get a list of all directories that contain instance informations
    List<File> locations = getAllConfigLocations("instances");
    for (File root : locations) {
      if (root.isDirectory()) {
        // get all sub-files ending on ".json"
        File[] instanceFiles = root.listFiles((FilenameFilter) new SuffixFileFilter(".json"));
        if (instanceFiles != null) {
          for (File i : instanceFiles) {
            if (i.isFile() && i.canRead()) {
              try {
                InstanceConfig config = mapper.readValue(i, InstanceConfig.class);
                String name = StringUtils.removeEnd(i.getName(), ".json");
                config.setInstanceName(name);
                result.put(name, config);
              } catch (IOException ex) {
                log.warn("could not parse instance config: " + ex.getMessage());
              }
            }
          }
        }
      }
    }

    // always provide a default instance
    if (!result.containsKey("default")) {
      InstanceConfig cfgDefault = new InstanceConfig();
      cfgDefault.setInstanceDisplayName("ANNIS");
      result.put("default", cfgDefault);
    }

    return result;
  }

  private String wrapCSS(String cssContent, String wrapperClass) {
    try {

      String wrappedContent =
          wrapperClass == null ? cssContent : "." + wrapperClass + "{\n" + cssContent + "\n}";

      File tmpFile = File.createTempFile("annis-stylesheet", ".scss");
      Files.write(wrappedContent, tmpFile, Charsets.UTF_8);
      ScssStylesheet styleSheet = ScssStylesheet.get(tmpFile.getCanonicalPath());
      styleSheet.compile();

      return styleSheet.printState();

    } catch (IOException ex) {
      log.error("IOException when compiling wrapped CSS", ex);
    } catch (Exception ex) {
      log.error("Could not compile wrapped CSS", ex);
    }
    return null;
  }

}


text:
import { Component } from "../../core/bane";
import $ from "jquery";
import PhotoSwipe from "photoswipe";
import PhotoSwipeUI_Default from "photoswipe/dist/photoswipe-ui-default";
import Video from "../video";

// Keep track of instance IDs
let instanceId = 0;

/**
 * A component for creating an Image Gallery
 */
export default class ImageGalleryComponent extends Component {
  /**
   * Render the gallery viewer
   * @return {jQuery} Returns the gallery element
   */
  get $pswp() {
    if (this._$pswp) {
      return this._$pswp;
    }

    return this._$pswp = $(this.template({})).appendTo("body");
  }

  initialize({
    galleryImageSelector = ".stack__article__image-container",
    autoplayVideos = true
  } = {}) {
    this.template = require("./image_gallery.hbs");
    this.autoplayVideos = autoplayVideos;

    this.$images = this.$el.find(galleryImageSelector);

    this.events = {
      ["click " + galleryImageSelector]: "onGalleryClick"
    };

    this.$el.attr({
      "data-pswp-uid": ++instanceId,
      "data-gallery": this
    });
  }

  _parseThumbnailElements() {
    if (this._items) {
      return this._items;
    }

    let items = this._items = [];

    this.$images.each((i, el) => {
      let $galleryImage = $(el),
          $linkEl = $galleryImage.find("a"),
          size = $linkEl.attr("data-size").split("x"),
          image = $linkEl.find("img").attr("src"),
          link = $linkEl.attr("href"),
          largeImage = link.match(/\.(jpg|png|gif)/) ? link : image,
          youtubeID = Video.getYoutubeId(link),
          brightcoveID = Video.getBrightcoveId(link);

      let item = {
        src: largeImage,
        msrc: image,
        el: $linkEl.find("img")[0],
        w: parseInt(size[0], 10),
        h: parseInt(size[1], 10),
        videoID: youtubeID || brightcoveID,
        videoType: youtubeID ? "youtube" : brightcoveID ? "brightcove" : null
      };

      let $caption;
      if (($caption = $galleryImage.find("span")).length) {
        item.title = $caption.html();
      } else if (($caption = $galleryImage.next(".copy--caption")).length) {
        item.title = $caption.html();
      } else if (($caption = $galleryImage.next("p").find(".caption")).length) {
        item.title = $caption.html();
      }

      if (item.videoID) {
        item.html = "

";
        item.title = null;
        item.src = null;
        item.msrc = null;
      }

      items.push(item);
    });

    return items;
  }

  /**
   * Callback from photoswipe gallery close
   */
  onGalleryClose() {
    this._videoStop();
  }

  /**
   * Callback from photoswipe item change
   */
  onGalleryChange() {
    this._videoPlay(this._gallery.currItem);
  }

  /**
   * Plays movie if given proper movie ID
   */
  _videoPlay(galleryItem) {
    this._videoStop();
    if (galleryItem.videoID) {
      Video.addPlayer(
        galleryItem.videoID,
        { type: galleryItem.videoType,
          videoId: galleryItem.videoID,
          autoplay: this.autoplayVideos }).then(this.playerReady.bind(this));
    }
  }

  playerReady(player) {
    this._player = player;
  }

  /**
   * Stops movie and destroys the player
   */
  _videoStop() {
    if (this._player) {
      this._player.dispose();
      this._player = null;
    }
  }

  /**
   * Callback from clicking on a gallery image
   * @param  {Event}  event Event
   * @return {Object}       Returns an object to send data to GA for tracking
   */
  onGalleryClick(event) {
    event.preventDefault();

    let clickedListItem = event.currentTarget,
        index = this.$images.index(clickedListItem),
        src = $(clickedListItem).find("img").attr("src");

    if (index >= 0) {
      this.openPhotoSwipe(index);
    }

    return src;
  }

  /**
   * Open the photo gallery
   * @param  {[type]} index [description]
   * @return {[type]}       [description]
   */
  openPhotoSwipe(index = 0) {
    let items = this._parseThumbnailElements();

    let options = {
      galleryUID: this.$el.attr("data-pswp-uid"),
      getThumbBoundsFn: function(index) {
        let thumbnail = items[index].el, // find thumbnail
            pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
            rect = thumbnail.getBoundingClientRect();

        return { x: rect.left, y: rect.top + pageYScroll, w: rect.width };
      },
      history: false,
      counterEl: false,
      index
    };

    this._gallery = new PhotoSwipe( this.$pswp[0], PhotoSwipeUI_Default, items, options );
    this._gallery.listen("afterChange", this.onGalleryChange.bind(this));
    this._gallery.listen("close", this.onGalleryClose.bind(this));
    this._gallery.init();
  }
}


text:
using System;
using Agiil.Domain.Capabilities;
using static Agiil.Domain.App.AppCapability;

namespace Agiil.Domain.Projects
{
    [EnforceCapabilities]
    public interface ICreatesProject
    {
        CreateProjectResponse CreateNewProject([RequireCapability(CreateProject)] CreateProjectRequest request);
    }
}


text:
package org.apache.spark.mllib.tree.configuration

/**
 * Enum to select ensemble combining strategy for base learners
 */
private[tree] object EnsembleCombiningStrategy extends Enumeration {
  type EnsembleCombiningStrategy = Value
  val Average, Sum, Vote = Value
}


text:
In a web browser... very, very close…

Talend Data Preparation

VERSION I
A NEW HOPE FOR DATA PREPARATION

It is a period where data is everywhere.

Your company or yourself cannot waste any second working on incorrect data.

Data Prep is the missing link in data management. It enables easy self-service data preparation and
                cleansing.

It has a centralized and governed data inventory. It can be used independently but really shines with the
                rest of the Talend Data Fabric.

Padawans can use the personal Open Source edition freely or use the commercial edition to become true
                Jedi knights.

May the force be with you.


text:
div#authorplugins-wrap {
	margin-top: -20px;
	margin-right: -13px; /* 20 (div.authorplugins margin-right) - 7 (#rightnow margin-right) */
}

div#authorplugins {
	width: 100%;
}

div.authorplugins-holder {
	margin-top: 20px;
	width: 50%;
	float: left;
}

div.authorplugins-holder.full {
	width: 100%;
}

#authorplugins div.authorplugins-content ul {
	list-style: none;
	padding: 0;
	margin-bottom: 10px !important;
}

#authorplugins_secondary div.authorplugins-content ul li {
	display: block;
	width: 232px;
	padding-bottom: 0px;
	margin: 0;
	float: left;
	font-size: 95%;
}

#authorplugins_secondary div.authorplugins-content {
	margin: 10px 0px;
	padding: 0;
}

#authorplugins_secondary div.authorplugins-content ul li .post {
	display: block;
	font-family: Georgia,"Times New Roman",Times,serif;
	font-size: 14px;
	line-height: 1.2em;
	height: 20px;
	overflow: hidden;
	font-style: italic;
}

#authorplugins_secondary div.authorplugins-content ul li a {
	display: block;
	height: 100%;
	overflow:hidden;
	margin: 5px 10px 5px 0;
	text-decoration: none;
	padding: .5em;
	border: solid 1px #efefef;
	-webkit-box-shadow: 0px 0px 5px 0px rgba(150, 150, 150, 0.3);
	box-shadow: 0px 0px 5px 0px rgba(150, 150, 150, 0.3);
	background: #fefefe;
}

#authorplugins_secondary div.authorplugins-content ul li a cite {
	display: block;
	color: #aaa;
	font-family: "Lucida Sans", "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif;
}

#authorplugins_secondary div.authorplugins-content ul li a cite em {
	color: #900;
}

div.authorplugins-content {
	padding: 10px 15px;
}

div.authorplugins-content ul, div.authorplugins-content ol, div.authorplugins-content dl {
	margin: 0;
	text-indent: 0;
	padding-left: 15px;
}
div.authorplugins-content li {
	margin: .5em 0 1em;
}

div.authorplugins-content blockquote {
	margin: -1em 0;
}


text:
#ifndef OPENCV_DATASETS_HPE_HUMANEVA_HPP
#define OPENCV_DATASETS_HPE_HUMANEVA_HPP

#include <string>
#include <vector>

#include "opencv2/datasets/dataset.hpp"

#include <opencv2/core.hpp>

namespace cv
{
namespace datasets
{

//! @addtogroup datasets_hpe
//! @{

struct HPE_humanevaObj : public Object
{
    char person; // 1..4
    std::string action;
    int type1;
    std::string type2;
    Matx13d ofs;
    std::string fileName;
    std::vector<std::string> imageNames; // for HumanEva_II
};

enum datasetType
{
    humaneva_1 = 1,
    humaneva_2
};

class CV_EXPORTS HPE_humaneva : public Dataset
{
public:
    virtual void load(const std::string &path) = 0;

    static Ptr<HPE_humaneva> create(int num=humaneva_1);
};

//! @}

}
}

#endif


text:
package com.nibado.example.loadbalance.lib;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.Random;

import javax.imageio.ImageIO;

public class RandomImage {
    private static final Color[] COLORS = new Color[] { Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW };
    private final int width;
    private final int height;
    private final int step;
    private final Random random;

    public RandomImage(final int width, final int height, final int step) {
        this.width = width;
        this.height = height;
        this.step = step;
        random = new Random();
    }

    public synchronized BufferedImage generate() throws IOException {
        final BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        final Graphics2D g = image.createGraphics();
        for (int y = 0; y < height; y += step) {
            for (int x = 0; x < width; x += step) {
                g.setColor(COLORS[random.nextInt(COLORS.length)]);
                g.fillRect(x, y, step, step);
            }
        }

        return image;
    }

    public synchronized String generateBase64(final Type imageType) throws IOException {
        final ByteArrayOutputStream outs = new ByteArrayOutputStream();
        ImageIO.write(generate(), imageType.type, outs);
        return Base64.getEncoder().encodeToString(outs.toByteArray());
    }

    public synchronized String generateDataUrl(final Type imageType) throws IOException {
        return "data:" + imageType.mimeType + ";base64," + generateBase64(imageType);
    }

    public static final void main(final String[] argv) throws IOException {
        final RandomImage ri = new RandomImage(400, 400, 4);
        System.out.println(ri.generateDataUrl(Type.PNG));
    }

    public enum Type {
        PNG("png", "image/png"), JPG("jpg", "image/jpeg"), GIF("gif", "image/gif");

        private String type;
        private String mimeType;

        private Type(final String type, final String mimeType) {
            this.type = type;
            this.mimeType = mimeType;
        }
    }
}


text:
$( document ).ready(function() {

    $("form").submit(function(e) {
        e.preventDefault();
        $("#compose-modal").modal('hide');
            data={
                NroFolio:$("#NroFolio").val(),
                idEmisor:$("#Insertar_Emisor").val(),
                Titulo:$("#Insertar_Titulo").val(),
                Cuerpo:$("#Insertar_Mensaje").val(),
                FechaCreacion:$("#FechaCreacion").val(),
                UsuariosNotificados:$("#Destinatarios").val(),
                tipoProcedimiento:"insertar",
                tipoNotificacion:"NotificacionEnviada"
            };

            $.ajax({
                async:true,
                type: "POST",
                dataType: "html",
                contentType: "application/x-www-form-urlencoded",
                url:"pages/gestion_folios/Notificacion.php",
                success:EnviarNotificacion,
                timeout:4000,
                error:problemas
            });
            return false;
    });

 $( "#enviadas" ).click(function() {
        data={
            tipoNotificacion:"NotificacionEnviada"
        };
        $.ajax({
                async:true,
                type: "POST",
                dataType: "html",
                contentType: "application/x-www-form-urlencoded",
                url:"pages/gestion_folios/Notificacion.php",
                success:notificacion,
                timeout:4000,
                error:problemas
        });
        return false;
    });

    $( "#recibidas" ).click(function() {
        data={
            tipoNotificacion:"NotificacionRecibida"
        };
        $.ajax({
                async:true,
                type: "POST",
                dataType: "html",
                contentType: "application/x-www-form-urlencoded",
                url:"pages/gestion_folios/Notificacion.php",
                success:notificacion,
                timeout:4000,
                error:problemas
        });
        return false;
    });

    $( "#basurero" ).click(function() {
        data={
            tipoNotificacion:"Basurero"
        };
        $.ajax({
                async:true,
                type: "POST",
                dataType: "html",
                contentType: "application/x-www-form-urlencoded",
                url:"pages/gestion_folios/Notificacion.php",
                success:notificacion,
                timeout:4000,
                error:problemas
        });
        return false;
    });

 $( "#enviadas" ).click(function() {
        data={
            tipoNotificacion:"NotificacionEnviada"
        };
        $.ajax({
                async:true,
                type: "POST",
                dataType: "html",
                contentType: "application/x-www-form-urlencoded",
                url:"pages/gestion_folios/Notificacion.php",
                success:notificacion,
                timeout:4000,
                error:problemas
        });
        return false;
    });

    $( "#recibidas" ).click(function() {
        data={
            tipoNotificacion:"NotificacionRecibida"
        };
        $.ajax({
                async:true,
                type: "POST",
                dataType: "html",
                contentType: "application/x-www-form-urlencoded",
                url:"pages/gestion_folios/Notificacion.php",
                success:notificacion,
                timeout:4000,
                error:problemas
        });
        return false;
    });

    $( "#basurero" ).click(function() {
        data={
            tipoNotificacion:"Basurero"
        };
        $.ajax({
                async:true,
                type: "POST",
                dataType: "html",
                contentType: "application/x-www-form-urlencoded",
                url:"pages/gestion_folios/Notificacion.php",
                success:notificacion,
                timeout:4000,
                error:problemas
        });
        return false;
    });

});
function Ver(){

    $("#div_contenido").load('pages/gestion_folios/datos_folio.php',data);
}

function InfoNotifificacion(){

    $("#div_contenido").load('pages/gestion_folios/datos_notificacion.php',data);
}

 function notificacion(){

    $("#div_contenido").load('pages/gestion_folios/Notificacion.php',data);
}

function EnviarNotificacion(){
         $('body').removeClass('modal-open');

            $("#div_contenido").load('pages/gestion_folios/Notificacion.php',data);
        }
 function problemas(){

            $("#div_contenido").text('Problemas con el servidor.');
        }


text:
namespace PressSharp
{
    public class Category
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Slug { get; set; }
    }
}


text:
**english** | [русский](https://github.com/svg/svgo/blob/master/README.ru.md)
- - -

<img src="http://soulshine.in/svgo.svg" width="200" height="200" alt="logo"/>

## SVGO [![NPM version](https://badge.fury.io/js/svgo.png)](https://npmjs.org/package/svgo) [![Dependency Status](https://gemnasium.com/svg/svgo.png)](https://gemnasium.com/svg/svgo) [![Build Status](https://secure.travis-ci.org/svg/svgo.png)](https://travis-ci.org/svg/svgo) [![Coverage Status](https://coveralls.io/repos/svg/svgo/badge.png?branch=master)](https://coveralls.io/r/svg/svgo)

**SVG O**ptimizer is a Nodejs-based tool for optimizing SVG vector graphics files.
![](https://mc.yandex.ru/watch/18431326)

## Why?

SVG files, especially exported from various editors, usually contains a lot of redundant and useless information such as editor metadata, comments, hidden elements, default or non-optimal values and other stuff that can be safely removed or converted without affecting SVG rendering result.

## What it can do

SVGO has a plugin-based architecture, so almost every optimization is a separate plugin.

Today we have:

* [ [>](https://github.com/svg/svgo/blob/master/plugins/cleanupAttrs.js) ] cleanup attributes from newlines, trailing and repeating spaces
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeDoctype.js) ] remove doctype declaration
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeXMLProcInst.js) ] remove XML processing instructions
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeComments.js) ] remove comments
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeMetadata.js) ] remove `<metadata>`
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeTitle.js) ] remove `<title>`
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeEditorsNSData.js) ] remove editors namespaces, elements and attributes
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeEmptyAttrs.js) ] remove empty attributes
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeHiddenElems.js) ] remove hidden elements
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeEmptyText.js) ] remove empty Text elements
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeEmptyContainers.js) ] remove empty Container elements
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeViewBox.js) ] remove `viewBox` attribute when possible
* [ [>](https://github.com/svg/svgo/blob/master/plugins/cleanupEnableBackground.js) ] remove or cleanup `enable-background` attribute when possible
* [ [>](https://github.com/svg/svgo/blob/master/plugins/convertStyleToAttrs.js) ] convert styles into attributes
* [ [>](https://github.com/svg/svgo/blob/master/plugins/convertColors.js) ] convert colors (from `rgb()` to `#rrggbb`, from `#rrggbb` to `#rgb`)
* [ [>](https://github.com/svg/svgo/blob/master/plugins/convertPathData.js) ] convert Path data to relative, convert one segment to another, trim useless delimiters and much more
* [ [>](https://github.com/svg/svgo/blob/master/plugins/convertTransform.js) ] collapse multiple transforms into one, convert matrices to the short aliases and much more
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeUnknownsAndDefaults.js) ] remove unknown elements content and attributes, remove attrs with default values
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeNonInheritableGroupAttrs.js) ] remove non-inheritable group's "presentation" attributes
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeUnusedNS.js) ] remove unused namespaces declaration
* [ [>](https://github.com/svg/svgo/blob/master/plugins/cleanupIDs.js) ] remove unused and minify used IDs
* [ [>](https://github.com/svg/svgo/blob/master/plugins/cleanupNumericValues.js) ] round numeric values to the fixed precision, remove default 'px' units
* [ [>](https://github.com/svg/svgo/blob/master/plugins/moveElemsAttrsToGroup.js) ] move elements attributes to the existing group wrapper
* [ [>](https://github.com/svg/svgo/blob/master/plugins/moveGroupAttrsToElems.js) ] move some group attributes to the content elements
* [ [>](https://github.com/svg/svgo/blob/master/plugins/collapseGroups.js) ] collapse useless groups
* [ [>](https://github.com/svg/svgo/blob/master/plugins/removeRasterImages.js) ] remove raster images (disabled by default)
* [ [>](https://github.com/svg/svgo/blob/master/plugins/mergePaths.js) ] merge multiple Paths into one
* [ [>](https://github.com/svg/svgo/blob/master/plugins/convertShapeToPath.js) ] convert some basic shapes to path
* [ [>](https://github.com/svg/svgo/blob/master/plugins/transformsWithOnePath.js) ] apply transforms, crop by real width, center vertical alignment and resize SVG with one Path inside

Want to know how it works and how to write your own plugin? [Of course you want to](https://github.com/svg/svgo/blob/master/docs/how-it-works/en.md).

## How to use

```sh
$ [sudo] npm install -g svgo
```

```
Usage:
  svgo [OPTIONS] [ARGS]

Options:
  -h, --help : Help
  -v, --version : Version
  -i INPUT, --input=INPUT : Input file, "-" for STDIN
  -s STRING, --string=STRING : Input SVG data string
  -f FOLDER, --folder=FOLDER : Input folder, optimize and rewrite all *.svg files
  -o OUTPUT, --output=OUTPUT : Output file (by default the same as the input), "-" for STDOUT
  --config=CONFIG : Config file to extend or replace default
  --disable=DISABLE : Disable plugin by name
  --enable=ENABLE : Enable plugin by name
  --datauri=DATAURI : Output as Data URI string (base64, URI encoded or unencoded)
  --pretty : Make SVG pretty printed

Arguments:
  INPUT : Alias to --input
  OUTPUT : Alias to --output
```

* with files:

        $ svgo test.svg

    or:

        $ svgo test.svg test.min.svg

* with STDIN / STDOUT:

        $ cat test.svg | svgo -i - -o - > test.min.svg

* with folder

        $ svgo -f ../path/to/folder/with/svg/files

* with strings:

        $ svgo -s '<svg version="1.1">test</svg>' -o test.min.svg

    or even with Data URI base64:

        $ svgo -s 'data:image/svg+xml;base64,…' -o test.min.svg

* with SVGZ:

    from `.svgz` to `.svg`:

        $ gunzip -c test.svgz | svgo -i - -o test.min.svg

    from `.svg` to `.svgz`:

        $ svgo test.svg -o - | gzip -cfq9 > test.svgz

* with GUI – [svgo-gui](https://github.com/svg/svgo-gui)
* as a Nodejs module – [examples](https://github.com/svg/svgo/tree/master/examples)
* as a Grunt task – [grunt-svgmin](https://github.com/sindresorhus/grunt-svgmin)
* as a Gulp task – [gulp-svgmin](https://github.com/ben-eb/gulp-svgmin)
* as an OSX Folder Action – [svgo-osx-folder-action](https://github.com/svg/svgo-osx-folder-action)

## License and copyrights

This software is released under the terms of the [MIT license](https://github.com/svg/svgo/blob/master/LICENSE).

Logo by [Yegor Bolshakov](http://xizzzy.ru/).


text:
package com.gc.materialdesign.views;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.MotionEvent;

public class LayoutRipple extends CustomView {

	int background;
	float rippleSpeed = 10f;
	int rippleSize = 3;

	OnClickListener onClickListener;
	int backgroundColor = Color.parseColor("#FFFFFF");

	Integer rippleColor;
	Float xRippleOrigin;
	Float yRippleOrigin;

	public LayoutRipple(Context context, AttributeSet attrs) {
		super(context, attrs);
		setAttributes(attrs);
	}

	// Set atributtes of XML to View
	protected void setAttributes(AttributeSet attrs) {

		// Set background Color
		// Color by resource
		int bacgroundColor = attrs.getAttributeResourceValue(ANDROIDXML,
				"background", -1);
		if (bacgroundColor != -1) {
			setBackgroundColor(getResources().getColor(bacgroundColor));
		} else {
			// Color by hexadecimal
			background = attrs.getAttributeIntValue(ANDROIDXML, "background", -1);
			if (background != -1)
				setBackgroundColor(background);
			else
				setBackgroundColor(this.backgroundColor);
		}
		// Set Ripple Color
		// Color by resource
		int rippleColor = attrs.getAttributeResourceValue(MATERIALDESIGNXML,
				"rippleColor", -1);
		if (rippleColor != -1) {
			setRippleColor(getResources().getColor(rippleColor));
		} else {
			// Color by hexadecimal
			int background = attrs.getAttributeIntValue(MATERIALDESIGNXML, "rippleColor", -1);
			if (background != -1)
				setRippleColor(background);
			else
				setRippleColor(makePressColor());
		}

		rippleSpeed = attrs.getAttributeFloatValue(MATERIALDESIGNXML,
				"rippleSpeed", 20f);
	}

	// Set color of background
	public void setBackgroundColor(int color) {
		this.backgroundColor = color;
		if (isEnabled())
			beforeBackground = backgroundColor;
		super.setBackgroundColor(color);
	}

	public void setRippleSpeed(int rippleSpeed) {
		this.rippleSpeed = rippleSpeed;
	}

	// ### RIPPLE EFFECT ###

	float x = -1, y = -1;
	float radius = -1;

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		if (isEnabled()) {
			isLastTouch = true;
			if (event.getAction() == MotionEvent.ACTION_DOWN) {
				radius = getHeight() / rippleSize;
				x = event.getX();
				y = event.getY();
			} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
				radius = getHeight() / rippleSize;
				x = event.getX();
				y = event.getY();
				if (!((event.getX() <= getWidth() && event.getX() >= 0) && (event
						.getY() <= getHeight() && event.getY() >= 0))) {
					isLastTouch = false;
					x = -1;
					y = -1;
				}
			} else if (event.getAction() == MotionEvent.ACTION_UP) {
				if ((event.getX() <= getWidth() && event.getX() >= 0)
						&& (event.getY() <= getHeight() && event.getY() >= 0)) {
					radius++;
				} else {
					isLastTouch = false;
					x = -1;
					y = -1;
				}
			}
		}
		return true;
	}

	@Override
	protected void onFocusChanged(boolean gainFocus, int direction,
			Rect previouslyFocusedRect) {
		if (!gainFocus) {
			x = -1;
			y = -1;
		}
	}

	@Override
	public boolean onInterceptTouchEvent(MotionEvent ev) {
		// super.onInterceptTouchEvent(ev);
		return true;
	}

	public Bitmap makeCircle() {
		Bitmap output = Bitmap.createBitmap(getWidth(), getHeight(),
				Config.ARGB_8888);
		Canvas canvas = new Canvas(output);
		canvas.drawARGB(0, 0, 0, 0);
		Paint paint = new Paint();
		paint.setAntiAlias(true);
		if (rippleColor == null)
			rippleColor = makePressColor();
		paint.setColor(rippleColor);
		x = (xRippleOrigin == null) ? x : xRippleOrigin;
		y = (yRippleOrigin == null) ? y : yRippleOrigin;
		canvas.drawCircle(x, y, radius, paint);
		if (radius > getHeight() / rippleSize)
			radius += rippleSpeed;
		if (radius >= getWidth()) {
			x = -1;
			y = -1;
			radius = getHeight() / rippleSize;
			if (onClickListener != null)
				onClickListener.onClick(this);
		}
		return output;
	}

	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		if (x != -1) {
			Rect src = new Rect(0, 0, getWidth(), getHeight());
			Rect dst = new Rect(0, 0, getWidth(), getHeight());
			canvas.drawBitmap(makeCircle(), src, dst, null);
		}
		invalidate();
	}

	/**
	 * Make a dark color to ripple effect
	 *
	 * @return
	 */
	protected int makePressColor() {
		int r = (this.backgroundColor >> 16) & 0xFF;
		int g = (this.backgroundColor >> 8) & 0xFF;
		int b = (this.backgroundColor >> 0) & 0xFF;
		r = (r - 30 < 0) ? 0 : r - 30;
		g = (g - 30 < 0) ? 0 : g - 30;
		b = (b - 30 < 0) ? 0 : b - 30;
		return Color.rgb(r, g, b);
	}

	@Override
	public void setOnClickListener(OnClickListener l) {
		onClickListener = l;
	}

	public void setRippleColor(int rippleColor) {
		this.rippleColor = rippleColor;
	}

	public void setxRippleOrigin(Float xRippleOrigin) {
		this.xRippleOrigin = xRippleOrigin;
	}

	public void setyRippleOrigin(Float yRippleOrigin) {
		this.yRippleOrigin = yRippleOrigin;
	}

}


text:
package generic

import (
	"text/template"
	"reflect"
	"fmt"
)

type structCacheKey struct {
	structName    string
	interfaceType reflect.Type
}

var structCtors = map[structCacheKey]func() interface{}{
}

func New(structTemplate *StructTemplate, interfaceType reflect.Type) interface{} {
	cacheKey := structCacheKey{
		structName:    structTemplate.structName,
		interfaceType: interfaceType,
	}
	ctor := structCtors[cacheKey]
	if ctor == nil {
		ctor = structTemplate.expandCtor(interfaceType)
		structCtors[cacheKey] = ctor
	}
	return ctor()
}

func (structTemplate *StructTemplate) expandCtor(interfaceType reflect.Type) func() interface{} {
	ctorTemplate := structTemplate.ctorTemplate()
	ctor := Expand(ctorTemplate, "I", interfaceType).(func() interface{})
	return ctor
}

func (structTemplate *StructTemplate) ctorTemplate() *FuncTemplate {
	return DefineFunc("New_" + structTemplate.structName + "()interface{}").
		Param("I", "interface of the expanded struct").
		ImportStruct(structTemplate).
		Source(fmt.Sprintf(`
{{ $struct := expand "%s" "I" .I }}
return &{{$struct}}{}`, structTemplate.structName))
}

func (structTemplate *StructTemplate) expand(templateArgs []interface{}) (string, error) {
	argMap := map[string]interface{}{}
	for i := 0; i < len(templateArgs); i += 2 {
		argName := templateArgs[i].(string)
		argVal := templateArgs[i+1]
		argMap[argName] = argVal
	}
	expandedStructName := expandSymbolName(structTemplate.structName, argMap)
	argMap["structName"] = expandedStructName
	parsedTemplate, err := structTemplate.parse()
	if err != nil {
		return "", err
	}
	err = parsedTemplate.Execute(state.out, argMap)
	if err != nil {
		return "", err
	}
	return expandedStructName, nil
}

func (structTemplate *StructTemplate) parse() (*template.Template, error) {
	parsedTemplate := templates[structTemplate.structName]
	if parsedTemplate == nil {
		var err error
		parsedTemplate, err = template.New(structTemplate.structName).
			Funcs(structTemplate.generators).
			Parse(structTemplate.templateSource)
		if err != nil {
			return nil, err
		}
		templates[structTemplate.structName] = parsedTemplate
	}
	return parsedTemplate, nil
}


text:
<?php

namespace Phlexible\Bundle\IndexerMediaBundle\Tests\Indexer;

use Phlexible\Bundle\IndexerBundle\Document\DocumentFactory;
use Phlexible\Bundle\IndexerBundle\Document\DocumentIdentity;
use Phlexible\Bundle\IndexerMediaBundle\Document\MediaDocument;
use Phlexible\Bundle\IndexerMediaBundle\Event\MapDocumentEvent;
use Phlexible\Bundle\IndexerMediaBundle\Indexer\IndexibleVoter\IndexibleVoterInterface;
use Phlexible\Bundle\IndexerMediaBundle\Indexer\Mapper\MediaDocumentMapperInterface;
use Phlexible\Bundle\IndexerMediaBundle\Indexer\MediaDocumentBuilder;
use Phlexible\Bundle\IndexerMediaBundle\Indexer\MediaDocumentDescriptor;
use Phlexible\Bundle\IndexerMediaBundle\IndexerMediaEvents;
use Phlexible\Bundle\IndexerMediaBundle\Tests\MediaDescriptorTrait;
use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
use Prophecy\Prophecy\ObjectProphecy;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;

/**
 * Media document builder test.
 *
 * @covers \Phlexible\Bundle\IndexerMediaBundle\Indexer\MediaDocumentBuilder
 */
class MediaDocumentBuilderTest extends TestCase
{
    use MediaDescriptorTrait;

    /**
     * @var MediaDocument
     */
    private $document;

    /**
     * @var MediaDocumentDescriptor
     */
    private $descriptor;

    /**
     * @var DocumentFactory|ObjectProphecy
     */
    private $documentFactory;

    /**
     * @var MediaDocumentMapperInterface|ObjectProphecy
     */
    private $mapper;

    /**
     * @var IndexibleVoterInterface|ObjectProphecy
     */
    private $voter;

    /**
     * @var EventDispatcherInterface|ObjectProphecy
     */
    private $eventDispatcher;

    /**
     * @var MediaDocumentBuilder
     */
    private $builder;

    public function setUp()
    {
        $this->document = new MediaDocument();
        $this->document->setIdentity(new DocumentIdentity('A'));

        $this->descriptor = $this->createDescriptor();

        $this->documentFactory = $this->prophesize(DocumentFactory::class);
        $this->documentFactory->factory(MediaDocument::class)->willReturn($this->document);
        $this->mapper = $this->prophesize(MediaDocumentMapperInterface::class);
        $this->voter = $this->prophesize(IndexibleVoterInterface::class);
        $this->eventDispatcher = $this->prophesize(EventDispatcherInterface::class);

        $this->builder = new MediaDocumentBuilder(
            $this->documentFactory->reveal(),
            $this->mapper->reveal(),
            $this->voter->reveal(),
            $this->eventDispatcher->reveal()
        );
    }

    public function testBuildReturnsOnDeny()
    {
        $this->voter->isIndexible($this->descriptor)->willReturn(IndexibleVoterInterface::VOTE_DENY);
        $this->mapper->mapDocument($this->document)->shouldNotBeCalled();

        $this->builder->build($this->descriptor);
    }

    public function testBuildCallsMapperOnAllow()
    {
        $this->voter->isIndexible($this->descriptor)->willReturn(IndexibleVoterInterface::VOTE_ALLOW);
        $this->mapper->mapDocument($this->document, $this->descriptor)->shouldBeCalled();

        $this->builder->build($this->descriptor);
    }

    public function testMapDocumentDispatchesMapDocumentEvent()
    {
        $this->voter->isIndexible($this->descriptor)->willReturn(IndexibleVoterInterface::VOTE_ALLOW);

        $this->eventDispatcher->dispatch(IndexerMediaEvents::MAP_DOCUMENT, Argument::type(MapDocumentEvent::class))->shouldBeCalled();

        $this->builder->build($this->descriptor);
    }
}


text:
module Awspec::Type
  class Ec2AccountAttributes < AccountAttributeBase
    def resource_via_client
      @resource_via_client ||= find_ec2_account_attributes
    end
  end
end


text:
$(document).ready(function () {
    showLoader();

    var hasActiveSeeds = false;

    $.get("/api/agent/"+currentAgentHost(), function (agent) {
    		showLoader();
    		agent.AvailableLocalSnapshots || (agent.AvailableLocalSnapshots = [])
    		agent.AvailableSnapshots || (agent.AvailableSnapshots = [])
	    	displayAgent(agent);
	    }, "json");

    $.get("/api/agent-active-seeds/"+currentAgentHost(), function (activeSeeds) {
        showLoader();
    	activeSeeds.forEach(function (activeSeed) {
    		appendSeedDetails(activeSeed, "[data-agent=active_seeds]");
    	});
    	if (activeSeeds.length == 0) {
    		$("div.active_seeds").parent().hide();
    		$("div.seed_states").parent().hide();
    	}
    	if (activeSeeds.length > 0) {
    		hasActiveSeeds = true;
    	    activateRefreshTimer();

    	    $.get("/api/agent-seed-states/"+activeSeeds[0].SeedId, function (seedStates) {
    	        showLoader();
    	        seedStates.forEach(function (seedState) {
    	        	appendSeedState(seedState);
    	    	});
    	    }, "json");
    	}
    }, "json");
    $.get("/api/agent-recent-seeds/"+currentAgentHost(), function (recentSeeds) {
        showLoader();
        recentSeeds.forEach(function (recentSeed) {
        	appendSeedDetails(recentSeed, "[data-agent=recent_seeds]");
    	});
    	if (recentSeeds.length == 0) {
    		$("div.recent_seeds").parent().hide();
    	}
    }, "json");

    function displayAgent(agent) {
    	if (!agent.Hostname) {
    		$("[data-agent=hostname]").html('Not found');
    		return;
    	}
    	$("[data-agent=hostname]").html(agent.Hostname)
    	$("[data-agent=hostname_search]").html(
    			''+agent.Hostname+''
    			+ '
<button class="btn btn-xs btn-success" data-command="discover" data-hostname="'+agent.Hostname+'" data-mysql-port="'+agent.MySQLPort+'">Discover</button>
'
    	);
    	$("[data-agent=port]").html(agent.Port)
    	$("[data-agent=last_submitted]").html(agent.LastSubmitted)

    	var mySQLStatus = "" + agent.MySQLRunning + '
' +
    		(agent.MySQLRunning ? '<button class="btn btn-xs btn-danger" data-command="mysql-stop">Stop</button>' :
    			'<button class="btn btn-xs btn-success" data-command="mysql-start">Start</button>') +
    		'
';
    	$("[data-agent=mysql_running]").html(mySQLStatus)
    	$("[data-agent=mysql_port]").html(agent.MySQLPort)
    	$("[data-agent=mysql_disk_usage]").html(toHumanFormat(agent.MySQLDiskUsage))

    	if (agent.MySQLErrorLogTail != null && agent.MySQLErrorLogTail.length > 0) {
	    	rows = agent.MySQLErrorLogTail;
	    	rows = rows.map(function(row) {
	    		if (row.trim() == "") {
	    			row = "[empty line]"
	    		}
	    		return row;
        	});
    		$("[data-agent=mysql_error_log_tail]").html(rows[rows.length -1])
    	    $("body").on("click", "a[data-agent=mysql_error_log_tail]", function(event) {
    	    	rows = rows.map(function(row) {
    	    		return '' + row + '';
            	});
		    	rows = rows.map(function(row) {
		    		if (row.indexOf("[ERROR]") >= 0) {
	    				return '' + row + '';
		    		} else	if (row.indexOf("[Warning]") >= 0) {
		    			return '' + row + '';
		    		} else	if (row.indexOf("[Note]") >= 0) {
		    			return '' + row + '';
		    		} else	{
		    			return '' + row + '';
		    		}
	        	});
        		bootbox.alert('
' + rows.join("
") + '
');
        		return false;
    	    });
    	}

    	function beautifyAvailableSnapshots(hostnames) {
        	var result = hostnames.filter(function(hostname) {
        		return hostname.trim() != "";
        	});
        	result = result.map(function(hostname) {
        		if (hostname == agent.Hostname) {
        			return ''+hostname+'		';
        		}
        		var isLocal = $.inArray(hostname, agent.AvailableLocalSnapshots) >= 0;
        		var btnType = (isLocal ? "btn-success" : "btn-warning");
        		return ''+hostname+'
<button class="btn btn-xs '+btnType+'" data-command="seed" data-seed-source-host="'+hostname+'" data-seed-local="'+isLocal+'" data-mysql-running="'+agent.MySQLRunning+'">Seed</button>
	';
        	});
        	result = result.map(function(entry) {
        		return '
'+entry+'
';
        	});
        	return result;
    	}
    	beautifyAvailableSnapshots(agent.AvailableLocalSnapshots).forEach(function (entry) {
        	$("[data-agent=available_local_snapshots]").append(entry)
    	});
    	availableRemoteSnapshots = agent.AvailableSnapshots.filter(function(snapshot) {
    		return agent.AvailableLocalSnapshots.indexOf(snapshot) < 0;
    	});
    	beautifyAvailableSnapshots(availableRemoteSnapshots).forEach(function (entry) {
        	$("[data-agent=available_remote_snapshots]").append(entry)
    	});

    	var mountedVolume = ""
    	if (agent.MountPoint) {
	    	if (agent.MountPoint.IsMounted) {
	    		mountedVolume = agent.MountPoint.LVPath;
	    		var mountMessage = '';
	    		mountMessage += ''+mountedVolume+' mounted on '+
	    			''+agent.MountPoint.Path+', size '+toHumanFormat(agent.MountPoint.DiskUsage);
	    		mountMessage += '
MySQL data path: '+agent.MountPoint.MySQLDataPath+'';
	    		mountMessage += '
<button class="btn btn-xs btn-danger" data-command="unmount">Unmount</button>
	';
	    		$("[data-agent=mount_point]").append(mountMessage);
	    	}
    	}

    	if (agent.LogicalVolumes) {
	    	var lvSnapshots = agent.LogicalVolumes.filter(function (logicalVolume) {
	    		return logicalVolume.IsSnapshot;
	    	}).map(function(logicalVolume) {
	    		return logicalVolume.Path;
	    	});
        	var result = lvSnapshots.map(function(volume) {
        		var volumeText = '';
        		var volumeTextType = 'text-info';
        		if (volume == mountedVolume) {
        			volumeText = '<button class="btn btn-xs btn-danger" data-command="unmount">Unmount</button>';
        			volumeTextType = 'text-success';
        		} else if (!(agent.MountPoint && agent.MountPoint.IsMounted)) {
        			volumeText += '<button class="btn btn-xs btn-success" data-command="mountlv" data-lv="'+volume+'">Mount</button>'
        			volumeText += ' <button class="btn btn-xs btn-danger" data-command="removelv" data-lv="'+volume+'">Remove</button>'
        		} else {
        		}
        		volumeText = ''+volume+'
' + volumeText + '
	';
        		return volumeText;
        	});
        	result = result.map(function(entry) {
        		return '
'+entry+'
';
        	});

        	result.forEach(function (entry) {
	        	$("[data-agent=lv_snapshots]").append(entry)
	    	});
    	}

        hideLoader();
    }

    $("body").on("click", "button[data-command=unmount]", function(event) {
    	if (hasActiveSeeds) {
			addAlert("This agent participates in an active seed; please await or abort active seed before unmounting");
			return;
    	}
    	showLoader();
        $.get("/api/agent-umount/"+currentAgentHost(), function (operationResult) {
			hideLoader();
			if (operationResult.Code == "ERROR") {
				addAlert(operationResult.Message)
			} else {
				location.reload();
			}
        }, "json");
    });
    $("body").on("click", "button[data-command=mountlv]", function(event) {
    	var lv = $(event.target).attr("data-lv")
    	showLoader();
        $.get("/api/agent-mount/"+currentAgentHost()+"?lv="+encodeURIComponent(lv), function (operationResult) {
			hideLoader();
			if (operationResult.Code == "ERROR") {
				addAlert(operationResult.Message)
			} else {
				location.reload();
			}
        }, "json");
    });
    $("body").on("click", "button[data-command=removelv]", function(event) {
    	var lv = $(event.target).attr("data-lv")
    	var message = "Are you sure you wish to remove logical volume " + lv + "?";
    	bootbox.confirm(message, function(confirm) {
			if (confirm) {
		    	showLoader();
		        $.get("/api/agent-removelv/"+currentAgentHost()+"?lv="+encodeURIComponent(lv), function (operationResult) {
					hideLoader();
					if (operationResult.Code == "ERROR") {
						addAlert(operationResult.Message)
					} else {
						location.reload();
					}
		        }, "json");
			}
		});
    });
    $("body").on("click", "button[data-command=create-snapshot]", function(event) {
    	var message = "Are you sure you wish to create a new snapshot on " +
    		currentAgentHost() + "?";
		bootbox.confirm(message, function(confirm) {
			if (confirm) {
		    	showLoader();
		        $.get("/api/agent-create-snapshot/"+currentAgentHost(), function (operationResult) {
					hideLoader();
					if (operationResult.Code == "ERROR") {
						addAlert(operationResult.Message)
					} else {
						location.reload();
					}
		        }, "json");
			}
		});
    });
    $("body").on("click", "button[data-command=mysql-stop]", function(event) {
    	var message = "Are you sure you wish to shut down MySQL service on " +
    		currentAgentHost() + "?";
		bootbox.confirm(message, function(confirm) {
			if (confirm) {
		    	showLoader();
		        $.get("/api/agent-mysql-stop/"+currentAgentHost(), function (operationResult) {
					hideLoader();
					if (operationResult.Code == "ERROR") {
						addAlert(operationResult.Message)
					} else {
						location.reload();
					}
		        }, "json");
			}
		});
    });
    $("body").on("click", "button[data-command=mysql-start]", function(event) {
    	showLoader();
        $.get("/api/agent-mysql-start/"+currentAgentHost(), function (operationResult) {
			hideLoader();
			if (operationResult.Code == "ERROR") {
				addAlert(operationResult.Message)
			} else {
				location.reload();
			}
        }, "json");
    });
    $("body").on("click", "button[data-command=seed]", function(event) {
    	if (hasActiveSeeds) {
			addAlert("This agent already participates in an active seed; please await or abort active seed");
			return;
    	}
    	if ($(event.target).attr("data-mysql-running") == "true") {
			addAlert("MySQL is running on this host. Please first stop the MySQL service");
			return;
    	}
    	var sourceHost = $(event.target).attr("data-seed-source-host");
    	var isLocalSeed = ($(event.target).attr("data-seed-local") == "true");

    	var message = "Are you sure you wish to destroy data on " +
    		currentAgentHost() + " and seed from " +
    		sourceHost + "?";
    	if (isLocalSeed) {
    		message += '
This seed is dc-local';
    	} else {
    		message += '
This seed is non-local and will require cross-DC data transfer!';
    	}

		bootbox.confirm(message, function(confirm) {
			if (confirm) {
		    	showLoader();
		        $.get("/api/agent-seed/"+currentAgentHost()+"/"+sourceHost, function (operationResult) {
					hideLoader();
					if (operationResult.Code == "ERROR") {
						addAlert(operationResult.Message)
					} else {
						location.reload();
					}
		        }, "json");
			}
		});
    });
    $("body").on("click", "button[data-command=discover]", function(event) {
    	var hostname = $(event.target).attr("data-hostname")
    	var mySQLPort = $(event.target).attr("data-mysql-port")
    	discover(hostname, mySQLPort)
    });

});


text:
package com.navercorp.pinpoint.web.service;

import com.navercorp.pinpoint.common.server.bo.SpanBo;
import com.navercorp.pinpoint.common.profiler.util.TransactionId;
import com.navercorp.pinpoint.web.dao.ApplicationTraceIndexDao;
import com.navercorp.pinpoint.web.dao.TraceDao;
import com.navercorp.pinpoint.web.filter.Filter;
import com.navercorp.pinpoint.web.scatter.ScatterData;
import com.navercorp.pinpoint.web.vo.GetTraceInfo;
import com.navercorp.pinpoint.web.vo.Range;
import com.navercorp.pinpoint.web.vo.SelectedScatterArea;
import com.navercorp.pinpoint.web.vo.scatter.Dot;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @author netspider
 * @author emeroad
 */
@Service
public class ScatterChartServiceImpl implements ScatterChartService {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private ApplicationTraceIndexDao applicationTraceIndexDao;

    @Autowired
    @Qualifier("hbaseTraceDaoFactory")
    private TraceDao traceDao;

    @Override
    public List<Dot> selectScatterData(String applicationName, SelectedScatterArea area, TransactionId offsetTransactionId, int offsetTransactionElapsed, int limit) {
        if (applicationName == null) {
            throw new NullPointerException("applicationName");
        }
        if (area == null) {
            throw new NullPointerException("area");
        }
        return applicationTraceIndexDao.scanTraceScatter(applicationName, area, offsetTransactionId, offsetTransactionElapsed, limit);
    }

    @Override
    public List<Dot> selectScatterData(List<TransactionId> transactionIdList, String applicationName, Filter filter) {
        if (transactionIdList == null) {
            throw new NullPointerException("transactionIdList");
        }
        if (applicationName == null) {
            throw new NullPointerException("applicationName");
        }
        if (filter == null) {
            throw new NullPointerException("filter");
        }

        final List<List<SpanBo>> traceList = traceDao.selectAllSpans(transactionIdList);

        final List<Dot> result = new ArrayList<>();

        for (List<SpanBo> trace : traceList) {
            if (!filter.include(trace)) {
                continue;
            }

            for (SpanBo span : trace) {
                if (applicationName.equals(span.getApplicationId())) {
                    final TransactionId transactionId = span.getTransactionId();
                    final Dot dot = new Dot(transactionId, span.getCollectorAcceptTime(), span.getElapsed(), span.getErrCode(), span.getAgentId());
                    result.add(dot);
                }
            }
        }

        return result;
    }

    /**
     * Queries for details on dots selected from the scatter chart.
     */
    @Override
    public List<SpanBo> selectTransactionMetadata(final List<GetTraceInfo> getTraceInfoList) {
        if (getTraceInfoList == null) {
            throw new NullPointerException("query");
        }
        final List<List<SpanBo>> selectedSpans = traceDao.selectSpans(getTraceInfoList);

        final List<SpanBo> result = new ArrayList<>(getTraceInfoList.size());
        for (List<SpanBo> spans : selectedSpans) {
            result.addAll(spans);
        }

        return result;
    }

    @Override
    public ScatterData selectScatterData(String applicationName, Range range, int xGroupUnit, int yGroupUnit, int limit, boolean backwardDirection) {
        if (applicationName == null) {
            throw new NullPointerException("applicationName");
        }
        if (range == null) {
            throw new NullPointerException("range");
        }
        return applicationTraceIndexDao.scanTraceScatterData(applicationName, range, xGroupUnit, yGroupUnit, limit, backwardDirection);
    }

    @Override
    public ScatterData selectScatterData(List<TransactionId> transactionIdList, String applicationName, Range range, int xGroupUnit, int yGroupUnit, Filter filter) {
        if (transactionIdList == null) {
            throw new NullPointerException("transactionIdList");
        }
        if (applicationName == null) {
            throw new NullPointerException("applicationName");
        }
        if (filter == null) {
            throw new NullPointerException("filter");
        }

        final List<List<SpanBo>> traceList = traceDao.selectAllSpans(transactionIdList);

        ScatterData scatterData = new ScatterData(range.getFrom(), range.getTo(), xGroupUnit, yGroupUnit);
        for (List<SpanBo> trace : traceList) {
            if (!filter.include(trace)) {
                continue;
            }

            for (SpanBo span : trace) {
                if (applicationName.equals(span.getApplicationId())) {
                    final TransactionId transactionId = span.getTransactionId();
                    final Dot dot = new Dot(transactionId, span.getCollectorAcceptTime(), span.getElapsed(), span.getErrCode(), span.getAgentId());
                    scatterData.addDot(dot);
                }
            }
        }

        return scatterData;
    }

}


text:
export interface IPage {
	onInit:() => void;
}