Bläddra i källkod

AMBARI-677. Delete old directories (hitesh)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/branches/AMBARI-666@1376319 13f79535-47bb-0310-9956-ffa450edef68
Hitesh Shah 13 år sedan
förälder
incheckning
8b1ecf1f68
100 ändrade filer med 0 tillägg och 18151 borttagningar
  1. 0 1151
      CHANGES.txt
  2. 0 403
      LICENSE.txt
  3. 0 22
      NOTICE.txt
  4. 0 49
      README.txt
  5. 0 347
      docs/pom.xml
  6. 0 109
      docs/src/site/apt/index.apt
  7. 0 188
      docs/src/site/apt/install.apt
  8. BIN
      docs/src/site/resources/images/apache-ambari-project.png
  9. 0 60
      docs/src/site/site.xml
  10. 0 56
      hmc/ShellScripts/cleanupHMCDB.sh
  11. 0 269
      hmc/ShellScripts/puppet_agent_install.sh
  12. 0 35
      hmc/conf/hmc.conf
  13. 0 25
      hmc/cpp/foo.sh
  14. 0 42
      hmc/cpp/runscriptasroot.c
  15. 0 1271
      hmc/css/app.css
  16. 0 5447
      hmc/css/bootstrap.css
  17. 0 50
      hmc/css/clusters.css
  18. 0 7
      hmc/css/cssreset-min.css
  19. BIN
      hmc/css/sprite_icons.png
  20. 0 20
      hmc/css/yuiCombined.css
  21. 0 533
      hmc/db/schema.dump
  22. 0 85
      hmc/fileCombinator.php
  23. 0 169
      hmc/fonts/iconic_fill.afm
  24. 0 21
      hmc/fonts/iconic_fill.css
  25. BIN
      hmc/fonts/iconic_fill.eot
  26. BIN
      hmc/fonts/iconic_fill.otf
  27. 0 496
      hmc/fonts/iconic_fill.svg
  28. BIN
      hmc/fonts/iconic_fill.ttf
  29. 0 169
      hmc/fonts/iconic_stroke.afm
  30. 0 21
      hmc/fonts/iconic_stroke.css
  31. BIN
      hmc/fonts/iconic_stroke.eot
  32. BIN
      hmc/fonts/iconic_stroke.otf
  33. 0 513
      hmc/fonts/iconic_stroke.svg
  34. BIN
      hmc/fonts/iconic_stroke.ttf
  35. 0 42
      hmc/html/_bootstrapJs.php
  36. 0 25
      hmc/html/_footer.php
  37. 0 25
      hmc/html/_head.php
  38. 0 132
      hmc/html/_router.php
  39. 0 47
      hmc/html/_subnav.php
  40. 0 43
      hmc/html/_topnav.php
  41. 0 32
      hmc/html/_txnUtils.php
  42. 0 35
      hmc/html/_utils.php
  43. 0 149
      hmc/html/addNodesWizard.php
  44. 0 61
      hmc/html/index.php
  45. 0 341
      hmc/html/initializeCluster.php
  46. 0 42
      hmc/html/installFailed.php
  47. 0 72
      hmc/html/manageServices.php
  48. 0 55
      hmc/html/showDeployAddedNodesProgress.php
  49. 0 55
      hmc/html/showDeployProgress.php
  50. 0 55
      hmc/html/showManageServicesProgress.php
  51. 0 55
      hmc/html/showUninstallProgress.php
  52. 0 44
      hmc/html/uninstallFailed.php
  53. 0 102
      hmc/html/uninstallWizard.php
  54. 0 61
      hmc/html/upgradeStack/_stageMenu.php
  55. 0 79
      hmc/html/upgradeStack/deploy.php
  56. 0 74
      hmc/html/upgradeStack/index.php
  57. 0 88
      hmc/html/upgradeStack/reconfigure.php
  58. 0 62
      hmc/html/upgradeStack/showUpgradeProgress.php
  59. 0 69
      hmc/html/upgradeStack/uninstall.php
  60. 0 43
      hmc/html/welcome.php
  61. BIN
      hmc/images/loading.gif
  62. BIN
      hmc/images/loadingLarge.gif
  63. BIN
      hmc/images/loading_orange.gif
  64. BIN
      hmc/images/loading_yellow.gif
  65. BIN
      hmc/images/logo-micro.gif
  66. BIN
      hmc/images/logo-small.gif
  67. BIN
      hmc/images/logo.jpg
  68. BIN
      hmc/images/orange-loader.gif
  69. 0 285
      hmc/js/addNodes.js
  70. 0 336
      hmc/js/addNodesProgress.js
  71. 0 91
      hmc/js/addNodesWizard.js
  72. 0 31
      hmc/js/addNodesWizardInit.js
  73. 0 329
      hmc/js/assignMasters.js
  74. 0 242
      hmc/js/clustersList.js
  75. 0 277
      hmc/js/configureCluster.js
  76. 0 97
      hmc/js/configureServices.js
  77. 0 431
      hmc/js/configureServicesUtils.js
  78. 0 54
      hmc/js/createCluster.js
  79. 0 58
      hmc/js/deployAddedNodesProgress.js
  80. 0 87
      hmc/js/deployProgress.js
  81. 0 6
      hmc/js/ext/bootstrap.min.js
  82. 0 1
      hmc/js/ext/jquery.min.js
  83. 0 33
      hmc/js/ext/sinon.min.js
  84. 0 6
      hmc/js/ext/yui-min.js
  85. 0 6
      hmc/js/ext/yuiCombined.js
  86. 0 124
      hmc/js/installationWizard.js
  87. 0 638
      hmc/js/manageServices.js
  88. 0 50
      hmc/js/manageServicesProgress.js
  89. 0 85
      hmc/js/reviewAndDeploy.js
  90. 0 131
      hmc/js/selectComponents.js
  91. 0 350
      hmc/js/selectServices.js
  92. 0 23
      hmc/js/showDeployAddedNodesProgress.js
  93. 0 23
      hmc/js/showDeployProgress.js
  94. 0 23
      hmc/js/showManageServicesProgress.js
  95. 0 23
      hmc/js/showUninstallProgress.js
  96. 0 67
      hmc/js/test/initializeClusterTest.js
  97. 0 504
      hmc/js/txnUtils.js
  98. 0 169
      hmc/js/uninstall.js
  99. 0 57
      hmc/js/uninstallProgress.js
  100. 0 68
      hmc/js/upgradeStack/deploy.js

+ 0 - 1151
CHANGES.txt

@@ -1,1151 +0,0 @@
-Ambari Change log
-
-Notes:
- - Committers should be listed using their login and non-committers
-should be listed by their full name.
- - Please keep the file to a max of 80 characters wide.
- - Put latest commits first in each section.
-
-Trunk (unreleased changes)
-
-  INCOMPATIBLE CHANGES
-
-  NEW FEATURES
-
-    AMBARI-656. Separate keytab for HTTP principal. (jitendra)
-
-    AMBARI-655. Move hbase directory creation in hdfs to namenode puppet 
-    module. (jitendra)
-
-    AMBARI-648. Keytab generation for hbase, hive. (jitendra)
-
-    AMBARI-642. Require jce policy file. (jitendra)
-
-    AMBARI-641. change the nagios status.data file location according to
-    platform (vgogate)
-
-    AMBARI-579. Support secure hadoop installation. (jitendra)
-
-    AMBARI-640. Add entrypoint to fetch info pertaining to Ganglia Clusters
-    (reznor)
-
-    AMBARI-616. Enable support for configuration of heapsize for TaskTracker
-    (hitesh)
-
-    AMBARI-636. Support for Hadoop Security (front-end changes)
-    (Jaimin Jetly via yusaku)
-
-    AMBARI-634. Force redirect to the "upgrade progress" page to prevent any
-    other actions during Hadoop stack upgrade (yusaku)
-
-    AMBARI-628. hdp-nagios and hdp-monitoring has wrong configuration file
-    location, also owner:group permissions are wrong.
-
-    AMBARI-631. Set the new Hadoop stack version in the database upon successful
-    upgrade (yusaku) 
-
-    AMBARI-623. Streamline UI flow for Hadoop stack upgrade (yusaku)
-
-    AMBARI-622. Upgrade DB only when Ambari Config table exists. (mahadev)
-
-    AMBARI-621. On Cluster Summary page, show Hadoop stack version information
-    and "Upgrade available" link if a newer version of the stack is available
-    (yusaku) 
-
-    AMBARI-612. Allow upgrading the database and add versions for ambari and
-    hadoop stacks. (mahadev)
-
-    AMBARI-605. Add UI flow/groundwork for handling Ambari / Hadoop stack version
-    upgrades (yusaku) 
-
-  IMPROVEMENTS
-
-    AMBARI-635. Add Nodes Progress: for partial failure that lets the user
-    continue, display an orange bar rather than a red bar in the progress popup
-    (yusaku)
-
-    AMBARI-620. Put common Javascript utility functions into appropriate
-    namespace/packages (yusaku)
-
-    AMBARI-615. Eliminate redundant and unused definition for the columns in the
-    table ConfigProperties (yusaku) 
-
-    AMBARI-613. Do not force Hadoop stack upgrade when a new version is available.
-    Show Hadoop stack version info (currently installed and latest available).
-    (yusaku)
-
-    AMBARI-607. Increase puppet timeouts to handle single-node installs timing
-    out (hitesh)
-
-    AMBARI-609. Modify router to handle hierarchical directory structure for
-    front-facing PHP files (yusaku)
-
-    AMBARI-606. Refactor "review and deploy" Javascript code for reuse (yusaku)
-
-  OPTIMIZATIONS
-
-  BUG FIXES
-
-    AMBARI-664. Fix mapred io sort mb and heap size for map/reduce. (mahadev)
-
-    AMBARI-661. Deploy cluster fails during Hive/HCatalog test (mahadev via yusaku)
-
-    AMBARI-654. Enter the value of the service properties that are not meant to
-    be displayed on UI in ServiceConfig table (Jaimin Jetly via yusaku) 
-
-    AMBARI-602. Fix install docs for 64-bit only support and how to pre-setup
-    cluster for ambari-agent for testing (hitesh)
-
-    AMBARI-653. Log txn-id when reporting completion of nodes for puppet kicks in
-    orchestrator (hitesh)
-
-    AMBARI-652. Large number of spurious logs due to undefined variables (yusaku)
-    
-    AMBARI-651. Fix issues with the footer overlapping page content due to
-    uncleared floats (yusaku)
-
-    AMBARI-650. Issues with Reconfigure Service (yusaku)
-
-    AMBARI-647. Change back log level to INFO from DEBUG (hitesh)
-
-    AMBARI-644. Fix various markup issues (yusaku) 
-
-    AMBARI-639. Monitoring Dashboard does not show the Help Link in the top nav
-    and a link to Apache 2.0 license and NOTICE file in the footer (yusaku) 
-
-    AMBARI-638. Weirdness with Custom Config page when the user goes back to 
-    previous stages (yusaku)
-
-    AMBARI-637. Cluster Install Wizard: the 7-step nav goes out of sync if the
-    user goes back to Step 3 and moves forward (yusaku) 
-
-    AMBARI-586. Add validation checks for the HBase config services value
-    entered by the user (Jaimin Jetly via yusaku)
-
-    AMBARI-632. Ensure that mysql connector jar is available to sqoop (hitesh)
-
-    AMBARI-633. Fix invalid HTML markup on Monitoring Dashboard (yusaku)
-
-    AMBARI-630. lzo needs arch-specific hadoop-lzo-native rpm to also be installed
-    (hitesh)
-
-    AMBARI-627. AMBARI-400 messed up the hbase region server opts (ddas via hitesh)
-
-    AMBARI-629. Upgrading Hadoop stack - uninstall for upgrade should preserve
-    cluster information (yusaku) 
-
-    AMBARI-624. Make hadoop-client/templeton/pig/sqoop also use 64-bit only packages
-    (hitesh)
-
-    AMBARI-625. Fix undefined variable warning in puppet php layer (hitesh)
-
-    AMBARI-614. The database set up script has a duplicate definition of
-    AmbariConfig so install fails (yusaku) 
-
-Release 0.9.0
-
-  AMBARI-618. Fix RAT warnings on docs directory (vinodkv via vikram)
-
-  AMBARI-617. Missing some files in rat-excludes (vikram via vinodkv)
-
-  AMBARI-600. Fix lzo installs to work correctly on RHEL6 (hitesh)
-
-  AMBARI-598. Set state to UNKNOWN and not 0 to avoid issues when using === matches
-  (hitesh)  
-
-  AMBARI-599. Welcome page - revive introductory message (yusaku) 
-
-  AMBARI-589. Refactor progress popup (TxnProgressWidget) Javascript code
-  (yusaku)
-
-  AMBARI-597. Remove /usr/bin/php dependency from the rpm's. (mahadev)
-
-  AMBARI-596. Remove unused images in images/ directory. (vinodkv)
-
-  AMBARI-594. Move documentation into a sub-directory. (vinodkv)
-
-  AMBARI-595. Fix NOTICE file to link to the images borrowed from Iconic. (vikram)
-
-  AMBARI-495. HMC master node not shown in topology and node assignments 
-  if the HMC server is not assigned to any other role (yusaku)
-
-  AMBARI-593. Update README file for consistency (yusaku)
-
-  AMBARI-592. Add a link to NOTICE file on every page (yusaku)
-
-  More notices added for jqgrid etc. (vikram)
-
-  AMBARI-591. License header for PHP files should use PHP comments,
-  not HTML comments (yusaku)
-
-  Added notices where we use compatibly licensed third party libraries (vikram)
-
-  Rat tool compliance on special files. (hitesh and vikram)
-
-  AMBARI-588. Externalize the manager service name and point the Help link to
-  a valid URL (yusaku)
-
-  AMBARI-587. Rat compliance patch. (vikram)
-
-  AMBARI-583. UI allows io_sort_spill_percent value to be set to over 1.0
-  (Jaimin Jetly via hitesh)
-
-  AMBARI-580. Run datanodes/tasktrackers in 64-bit mode to get around rpm issues
-  (hitesh)
-
-  AMBARI-585. Remove hardcoded dependency on mysql-connector-java package
-  version 5.0.8-1 (hitesh)
-
-  AMBARI-581. Strip carriage-return related control-chars from hosts files
-  (Jaimin Jetly via hitesh)
-
-  AMBARI-582. Update the installation guide - monitoring dashboard install
-  instructions (yusaku) 
-
-  AMBARI-569. Nagios install fails on RHEL6 due to php-pecl-json dep (hitesh)
-
-  AMBARI-546. Puppet fails to install 32-bit JDK properly on RHEL6 (hitesh)
-
-  AMBARI-548. Puppet agent install script should use correct epel repo (hitesh)
-
-  AMBARI-547. Change os type check during node bootstrap to allow for
-  CentOS6/RHEL6 nodes (hitesh)
-
-  AMBARI-549. rpm should have a dependency on php-posix (hitesh)
-
-  AMBARI-578. Custom Config page: don't allow form submission if there are
-  client-side validation errors (yusaku)
-
-  AMBARI-411. The HBase puppet templates could include some more config knobs
-  (Jaimin Jetly via yusaku)
-
-  AMBARI-577. Document the steps to build and install monitoring RPMs for Ambari 
-              (vgogate)
-
-  AMBARI-576. In Custom config for Nagios: emails with multiple periods
-  before the '@' fails validation (Jaimin Jetly via yusaku)
- 
-  AMBARI-574. Service Configuration: tabify settings for each service
-  (yusaku) 
-
-  AMBARI-573. Puppet error: Cannot reassign variable zookeeper_hosts at
-  modules/hdp/manifests/params.pp (hitesh)
-
-  AMBARI-571. Hive Server text should be replaced with Hive Metastore
-  (Jaimin Jetly via yusaku)
-
-  AMBARI-570. Consolidate head tags for organization and combine CSS files
-  for faster load (yusaku)
-
-  AMBARI-565. Remove YUI source files from SVN (yusaku)
-
-  AMBARI-566. Update documentation (yusaku)
-
-  AMBARI-564. Check in generated docs into svn to allow automatic updates
-  for doc web server. (hitesh)
-
-  AMBARI-559. Top nav - specify a static height for the logo (yusaku)
-
-  AMBARI-558. Update Installation Guide (yusaku)
-
-  AMBARI-556. Update version number for documentation (hitesh via yusaku)
-  
-  AMBARI-551. Missing font images (yusaku)
-
-  AMBARI-550. Add support to jump to a specified state in the wizard for
-  development purposes (yusaku)
-
-  AMBARI-538. Puppet layer assumes net-snmp* to be installed on all boxes
-  (ramya via yusaku)
-
-  AMBARI-536. Duplicate hosts not recognized due to case sensitive matching
-  (hitesh via yusaku)
-
-  AMBARI-535. On Reconfigure Service popup, enable webhdfs and enable lzo
-  check boxes are not selected when they should be (yusaku)
-
-  AMBARI-534. Duplicate package names passed in the manifest (jitendra via
-  yusaku)
-
-  AMBARI-557. Update project website documentation (yusaku via hitesh)
-
-  AMBARI-554. Update documentation to account for ambari-186 merge to trunk
-  (Yusaku via hitesh)
-
-  AMBARI-555. Update README for additional documentation to get around errors
-  related to missing php-posix module (ViVek Raghuwanshi via hitesh)
-
-  AMBARI-552. Update README to point to trunk (vinodkv via vikram)
-
-  AMBARI-543. Rpm naming needs to be corrected. (vikram via reznor)
-
-  AMBARI-541. Update README for installing/running code off
-  AMBARI-186. (vinodkv via reznor)
-
-  AMBARI-542. Rename HMC to Ambari in user-facing init.d scripts
-  (reznor via vikram)
-
-  AMBARI-540. Naming cleanup required for management console. (vikram
-  via reznor)
-
-  AMBARI-539. Create a spec file with less dependencies for
-  HMC. (hitesh via reznor)
-
-  AMBARI-537. Cleaning up references. (vikram via hitesh)
-
-  AMBARI-528. Fix oozie smoke test failure (ramya via vikram)
-
-  AMBARI-525. Javascript should not pass flag in case of post install
-  add nodes. (vikram)
-
-  AMBARI-524. Add nodes restore yum default on post install add nodes
-  page (vikram)
-
-  AMBARI-523. Need to persist yum repo for add nodes. (vikram)
-
-  AMBARI-522. Fix version of the server rpm. (mahadev via vikram)
-
-  AMBARI-521. Lzo Install with RPM's. (ramya via vikram)
-
-  AMBARI-520. Disable all debug console logging on the browser. (Yusaku Sako
-  via vikram)
-
-  AMBARI-517. Dashboard shows HDFS is down though it's still running.
-  (vgogate via vikram)
-
-  AMBARI-516. Fix epel install to be using curl calls. (mahadev via vikram)
-
-  AMBARI-515. Modules tar size increases. (jitendra via vikram)
-
-  AMBARI-514. Fix parsing error in puppet manifests. (mahadev via vikram)
-
-  AMBARI-513. Download mysql rpm for sqoop (ramya via vikram)
-
-  AMBARI-512. Fix puppet manifests for tarball downloads via
-  rpms. (mahadev via vikram)
-
-  AMBARI-511. Support rpms for mysql connector and other
-  tars. (jitendra via vikram)
-
-  AMBARI-510. Modify the router to force redirection to "Add Nodes
-  Progress" popup (Yusaku Sako via vikram)
-
-  AMBARI-508. Support Resume For Add Nodes (reznor via vikram)
-
-  AMBARI-506. Do not use epel in local yum repo installs (hitesh via vikram)
-
-  AMBARI-507. Install rpms instead of tar.gz downloads (ramya via vikram)
-
-  AMBARI-505. Messaging Update (Yusaku Sako via vikram)
-
-  AMBARI-503. Make sure epel rep is installed when installing the
-  agent. (mahadev via vikram)
-
-  AMBARI-527. Increase number of puppet retries to recover from
-  intermittent network issues. (jitendra via vikram)
-
-  AMBARI-502. X button missing from popup (Yusaku Sako via vikram)
-
-  AMBARI-501. Speed up page load/reload times (Yusaku Sako via vikram)
-
-  AMBARI-500. Fix versions in rpm spec file. (mahadev via vikram)
-
-  AMBARI-499. Add "Help" link to the top nav (Yusaku Sako via vikram)
-
-  AMBARI-498. Make service directories editable (but not
-  reconfigurable) (Yusaku Sako via vikram)
-
-  AMBARI-497. Messaging clean up (Yusaku Sako via vikram)
-
-  AMBARI-496. Ganglia graphs have labels/content that are not
-  meaningful (vgogate via vikram)
-
-  AMBARI-494. Fix node assignments not not allow slaves on
-  master. (mahadev via vikram)
-
-  AMBARI-493. Add rack_info as column in Hosts table (hitesh via vikram)
-
-  AMBARI-492. make support for os check a bit more robust (hitesh via vikram)
-
-  AMBARI-491. Service Reconfiguration screens should respect the
-  "reconfigurable" attributes set in ConfigProperties table (Yusaku Sako
-  via vikram)
-
-  AMBARI-490. Highlight the required parameters in Step 6 "Custom
-  Config" of the Cluster Init Wizard (Yusaku Sako via vikram)
-
-  AMBARI-489. Call out HMC master node in the topology and node
-  assignments (Yusaku Sako via vikram)
-
-  AMBARI-488. Manage service needs a way to recover from terminated
-  browser sessions (Yusaku Sako via vikram)
-
-  AMBARI-487. Add nodes with external name on AWS causes issues. (vikram)
-
-  AMBARI-486. Add Node installs MySQL Server for Hive (Yusaku Sako via vikram)
-
-  AMBARI-485. Make Firebug debugger work again with fileCombinator.php
-  (Yusaku Sako via vikram)
-
-  AMBARI-484. Reconfigure option for Nagios service does not work (vikram)
-
-  AMBARI-483. Start Making Responses From fileCombinator.php Suitably
-  Cacheable (reznor via vikram)
-
-  AMBARI-482. Show the same welcome page to the user if the user
-  starts configuring a cluster but has not started deploy yet (Yusaku Sako
-  via vikram)
-
-  AMBARI-481. Units of various config values not displayed on review
-  and deploy page (Yusaku Sako via vikram)
-
-  AMBARI-480. Reduce Page Load Time By Combining HMC JS Files (reznor
-  via vikram)
-
-  AMBARI-479. Add nodes after install does not allow re-bootstrap if
-  user closes browser after bootstrap and before starting services
-  (vikram)
-
-  AMBARI-477. Spec file for using installer with php-5.3 (hitesh via vikram)
-
-  AMBARI-478. Checkbox in the review and deploy page does not show
-  proper state (vikram)
-
-  AMBARI-476. Undefined offset: 0 in
-  /usr/share/hmc/php/db/HMCDBAccessor.php on line 1030 (hitesh via
-  vikram)
-
-  AMBARI-475. Add missing JS file for making post cluster install Add
-  Nodes work (Yusaku Sako via vikram)
-
-  AMBARI-473. Secondary namenode checkpoint dir doesnt get created if
-  its on the same host as NN. (mahadev via vikram)
-
-  AMBARI-471. hadoop-metrics2.properties not updated (ramya via vikram)
-
-  AMBARI-468. Post-Install Add Nodes - update progress title and
-  success/error messages to reflect what it's actually doing/has done
-  (Yusaku Sako via vikram)
-
-  AMBARI-472. Add api to find all unassigned hosts in a cluster
-  (hitesh via vikram)
-
-  AMBARI-470. Fix conflicting dashbord conf files in installer and
-  dashboard. (mahadev via vikram)
-
-  AMBARI-469. Cap DataNode heap size. (mahadev via vikram)
-
-  AMBARI-467. Fix hive stop to escape $. (mahadev via vikram)
-
-  AMBARI-446. Support Resume For Manage Services (reznor via vikram)
-  
-  AMBARI-466. Add nodes page alerts removed in case of adding
-  duplicate nodes (vikram)
-
-  AMBARI-465. Fix suggestions for Map Red Child java opts. (mahadev via vikram)
-
-  AMBARI-461. Uninstall shoud stop nagios service first before
-  stopping other services (hitesh via vikram)
-  
-  AMBARI-464. Auto refresh should be applicable to all the service
-  tabs (vgogate via vikram)
-
-  AMBARI-463. Redesign cluster management pages and navigation (Yusaku Sako
-  via vikram)
-
-  AMBARI-462. when hive is being stopped, it stops the hive nagios
-  checks (ramya via vikram)
-
-  AMBARI-460. Ganglia shows four hosts on a single node installation
-  (vgogate via vikram)
-
-  AMBARI-459. Race conditions in fetch transaction progress (vikram)
-
-  AMBARI-447. First pass at Info level logging (cleanup of
-  logging). (mahadev via vikram)
-
-  AMBARI-458. Support configuration of checkpointing-related variables
-  (hitesh via vikram)
-
-  AMBARI-457. Create template for SNN checkpoint dir (ramya via vikram)
-
-  AMBARI-456. Add more logging for ganglia (ramya via vikram)
-
-  AMBARI-455. nagios shows service status critical if hbase is not
-  installed (vgogate via vikram)
-
-  AMBARI-453. Remove the puppet kick --ping during bootstrap instead
-  use simple network ping for puppet agent. (vgogate via vikram)
-
-  AMBARI-454. Fix Hive tarball issue download for templeton. (mahadev
-  via vikram)
-
-  AMBARI-452. Create cluster should wipe out entire db (vikram)
-
-  AMBARI-451. Add nodes has incorrect check on returned status (vikram)
-
-  AMBARI-450. Boldify/Redify restart HMC message when nagios/ganglia
-  is on the hmc host (Yusaku Sako via vikram)
-
-  AMBARI-449. Post cluster install/deploy the URL
-  hmc/html/initializeCluster.php should be disabled (Yusaku Sako via
-  vikram)
-
-  AMBARI-448. Redesign progress popups. (Yusaku Sako via vikram)
-
-  AMBARI-444, 445. Nagios checks send kicks to the agent that trigger
-  a run. Configure nagios to send email notifications when slaves go
-  down (vgogate via vikram)
-
-  AMBARI-443. Nagios start fails on reinstall (ramya via vikram)
-
-  AMBARI-442 Duplicate definition:
-  Class[Hdp-hbase::Regionserver::Enable-ganglia] (ramya via vikram)
-
-  AMBARI-441. Add ganglia monitor to all the hosts including
-  collector. (mahadev via vikram)
-
-  AMBARI-440. Keep the touch file for NN format in /var/run rather
-  than /etc/conf. (mahadev via vikram)
-
-  AMBARI-439. Gmetad start fails sometimes. (ramya via vikram)
-
-  AMBARI-438. Add retry if kick fails immediately. (jitendra via vikram)
-
-  AMBARI-437. Update router to handle resuming uninstall progress and
-  uninstall failed pages (Yusaku Sako via vikram)
-
-  AMBARI-436. Support Resume For Uninstall (reznor via vikram)
-
-  AMBARI-435. Uninstall needs to update status for failure. (vikram)
-
-  AMBARI-434. fix display name in smoke test progress description
-  (hitesh via vikram)
-
-  AMBARI-433. Using service stop instead of killall for uninstall (vikram)
-
-  AMBARI-432. Templeton should not install templeton.i386 (ramya via vikram)
-
-  AMBARI-431. Fix orchestrator to use correct display names for
-  descriptions of stages (hitesh via vikram)
-
-  AMBARI-430. set service state to failed if cluster monitoring
-  reconfiguration fails (hitesh via vikram)
-
-  AMBARI-429. Fix bug with jmx parsing on HBase. (mahadev via vikram)
-
-  AMBARI-428. changes to templeton setup for 0.1.4 (ramya via vikram)
-
-  AMBARI-425. Oozie start fails with "Not managing symlink mode"
-  (ramya via vikram)
-
-  AMBARI-424. change "reconfiguremonitoring" message to a better
-  worded action (hitesh via vikram)
-
-  AMBARI-421. Ganglia uninstall does not remove libganglia or gmond
-  (Richard Pelavin via vikram)
-
-  AMBARI-423. Uninstall cluster can't be automated by Selenium due to
-  the internal confirmation window (Yusaku Sako via vikram)
-
-  AMBARI-422. Increase Threshold For Number Of Successive Backend
-  Connection Failures (reznor via vikram)
-
-  AMBARI-420. Improve style on error log popups (Yusaku Sako via vikram)
-
-  AMBARI-419. Add Basic Keyboard Action Support For HMC UI (reznor via vikram)
-
-  AMBARI-418. Remove Redundant Titles From Reconfigure Panel (reznor
-  via vikram)
-
-  AMBARI-416. Fix Inconsistent Validation Error Messages (reznor via vikram)
-
-  AMBARI-417. Typo fix in uninstall path. (vikram)
-
-  AMBARI-415. Reset service back to original state after
-  reconfiguration (hitesh via vikram)
-
-  AMBARI-414. Add rpm spec for hmc agent. (mahadev via vikram)
-
-  AMBARI-409. Uninstall does not get full list of hosts. (vikram)
-
-  AMBARI-410. Need to move the creation of cluster directory for
-  hosting the key file and the nodes file to add nodes. (vikram)
-
-  AMBARI-408. HDPJobTracker cluster in ganglia has multiple nodes
-  (vgogate via vikram)
-
-  AMBARI-426. Reinstall of cluster after failure to install results in
-  failure (ramya via vikram)
-
-  AMBARI-427. Class not found Class['hdp-zookeeper::service'] during
-  uninstall (ramya via vikram)
-
-  AMBARI-531. Remove/disable reconfigure option for Sqoop, Pig,
-  Ganglia and Templeton (Yusaku Sako via vikram)
-
-  AMBARI-529. Fix Advanced Config: HDFS reserved space is in
-  bytes. Too many bytes to count. (hitesh via vikram)
-
-  AMBARI-530. HMC UI shows undefined for nodes after single node
-  install (Yusaku Sako via vikram)
-
-  AMBARI-532. add ganglia monitor to all masters (mahadev via vikram)
-
-  AMBARI-407. add more logging and timing info for various actions
-  (hitesh via vikram)
-
-  AMBARI-406. Monitoring dashboard does not show ZK service state
-  correctly (ramya via vikram)
-
-  AMBARI-321. Multiple ZK nodes not displayed on review-page (Yusaku Sako
-  via vikram)
-
-  AMBARI-405. Clean up messages for service management reconfiguration
-  popup (Yusaku Sako via vikram)
-
-  AMBARI-404. Unify the top nav for both Monitoring and Cluster
-  Management (Yusaku Sako via vikram)
-
-  AMBARI-403. Show fixed count of total nodes during all bootstrap
-  phases (hitesh via vikram)
-
-  AMBARI-325. MR vmem config options are useless without an option to
-  enable/disable memory-monitoring (vinodkv via vikram)
-
-  AMBARI-402. Completing successful add node takes one to initialize
-  cluster page starting from scratch (reznor via vikram)
-
-  AMBARI-401. Manual config changes for nn get reset on stop/start
-  from hmc (jitendra via vikram)
-
-  AMBARI-399. Cannot uninstall - the page hangs with the spinning icon
-  (Yusaku Sako via vikram)
-
-  AMBARI-398. if hbase is not installed, nagios sends alerts for
-  "ganglia collector for hbasemaster" being down (vgogate via vikram)
-
-  AMBARI-397. Clean up descriptions and titles of mapreduce memory
-  related configs (vinodkv via vikram)
-
-  AMBARI-396. Add nodes fails in assign masters because of closure
-  issues (vikram)
-
-  AMBARI-395. Ganglia server should not run gmond. (mahadev via vikram)
-
-  AMBARI-394. Add nodes fails to find node in db (vikram)
-
-  AMBARI-393. ZooKeeper myid files not existent on ZK
-  install. (mahadev via vikram)
-
-  AMBARI-392. Add ID attributes to HTML tags to help test automation
-  (Yusaku Sako via vikram)
-
-  AMBARI-358. Make index.php always accessible, rather than
-  automatically forwarding to the action, even if there's only one
-  action that the user can take (Yusaku Sako via vikram)
-
-  AMBARI-390. Handle multiple ZooKeeper service masters in Assign
-  Masters page (Yusaku Sako via vikram)
-
-  AMBARI-389. Do not allow invalid chars for database name and user
-  name for hive (hitesh via vikram)
-
-  AMBARI-388. Prevent the user from assigning NameNode and Secondary
-  NameNode services on the same host (Yusaku Sako via vikram)
-
-  AMBARI-386. On Single Node install when install all the components
-  the recommended num for Map/Reduce Tasks is too high (hitesh via
-  vikram)
-
-  AMBARI-279. On the mount points page show info on what the mount
-  points are being used for (Yusaku Sako via vikram)
-
-  AMBARI-387. Fine tune node assignment and propagate ZK host
-  assignments to the frontend. (mahadev via vikram)
-
-  AMBARI-381. Restarting Templeton should not run PIG smoke tests
-  (hitesh via vikram)
-
-  AMBARI-384. Fix the position of the deploy error logs popup (Yusaku Sako
-  via vikram)
-
-  AMBARI-385. Namenode format should not be passed as true in the
-  manifest unless from user input. (vikram via jitendra)
-
-  AMBARI-383. Do not force the user to look at the error logs before
-  given choices to go back/continue, etc (Yusaku Sako via vikram)
-
-  AMBARI-382. Make sure install/uninstall/reinstall preserves data on
-  HDFS/ZK/others. (ramya via vikram)
-
-  AMBARI-377. Uninstall does not handle component
-  dependencies. (jitendra via vikram)
-
-  AMBARI-380. Clean up messages for Add Nodes and Deploy progress
-  result (Yusaku Sako via vikram)
-
-  AMBARI-379. Remove puppet start stub on uninstall. (mahadev via vikram)
-
-  AMBARI-378. Getting a 404 after clicking on reinstall when the
-  install fails (Yusaku Sako via vikram)
-
-  AMBARI-376. Show welcome page when no clusters are set up (Yusaku Sako via vikram)
-
-  AMBARI-374. Modify the cluster info page to show host-to-service
-  mapping for both master services and client services using
-  color-coding (Yusaku Sako via vikram)
-
-  AMBARI-372. Hive metastore nagios check is broken. (jitendra via vikram)
-
-  AMBARI-373. Create RPM fails as fonts files are not copied
-  over. (mahadev via vikram)
-
-  AMBARI-371. Mysql packages not being sent during install and
-  uninstall (jitendra via vikram)
-
-  AMBARI-369. Improve Service Management page and general popup
-  styling (Yusaku Sako via vikram)
-
-  AMBARI-367. Make users enter hive configs instead of using defaults
-  (hitesh via vikram)
-
-  AMBARI-364. Retry puppet kick --ping on bootstrap to handle
-  intermittent failures (hitesh via vikram)
-
-  AMBARI-370. Uninstall needs to clear Puppet directories (vikram)
-
-  AMBARI-368. Server restart kills puppet agent. (mahadev via vikram)
-
-  AMBARI-366. Package up the fonts/ subdirectory in the HMC RPM (reznor
-  via vikram)
-
-  AMBARI-365. Uninstall/reinstall complains about OS Type as
-  unsupported (ramya via vikram)
-
-  AMBARI-363. Nagios should monitor puppet agents (vgogate via vikram)  
-
-  AMBARI-362. Create lock file as part of rpm install (vikram)
-
-  AMBARI-361. Display client nodes as part of cluster topology display
-  (Yusaku Sako via vikram)
-
-  AMBARI-360. Adding nodes that already part of the cluster should be
-  avoidable (vinodkv via vikram)
-
-  AMBARI-286. Make TxnProgressWidget Immune To Re-Fetch Race
-  Conditions (reznor via vikram)
-
-  AMBARI-526. Display client nodes as part of cluster topology
-  display. (reznor via vikram)
-
-  AMBARI-265. Reconfig page close button (x) is not visible (vinodkv
-  via vikram)
-
-  AMBARI-357. Redesign master service assignment page so that it takes
-  up less vertical space (Yusaku Sako via vikram)
-
-  AMBARI-356. Log output to console slows puppet run. (jitendra via vikram)
-
-  AMBARI-359. invalid parameter java_needed during uninstall (ramya
-  via vikram)
-
-  AMBARI-354. hmc rpm on install must backup the database (suresh via vikram)
-
-  AMBARI-353. Passing packages in hdp class for package install
-  optimization. (jitendra via vikram)
-
-  AMBARI-344. Fix TxnProgressWidget To Not Hide Previously Pending
-  States (reznor via vikram)
-
-  AMBARI-352. Add flow control - force redirects to appropriate pages
-  based on cluster configuration status for better usability (Yusaku Sako
-  via vikram)
-
-  AMBARI-351.  Monitoring dashboard should auto refresh as regular
-  interval (vgogate via vikram)
-
-  AMBARI-349. Logging in case of error during uninstall needs to be
-  fixed. (vikram)
-
-  AMBARI-317. Select-all + unselect HBASE removes Zookeeper
-  incorrectly (vinodkv via vikram)
-
-  AMBARI-348. Select all services by default (vinodkv via vikram)
-
-  AMBARI-247. Replace index.php with clusters.php (reznor via vikram)
-
-  AMBARI-347. Redo master service assignment page (Yusaku Sako via vikram)
-
-  AMBARI-339. Making transitionToNextStage more robust (vikram)
-
-  AMBARI-345. Make TxnProgressWidget More Robust In The Face Of
-  Un-Ready Txn Stages (reznor via vikram)
-
-  AMBARI-346. user should not be allowed to change the paths to
-  various directories on the advance config page (hitesh via vikram)
-
-  AMBARI-316. Grid mount points page doesn't let one pass with only a
-  custom mount point (vinodkv via vikram)
-
-  AMBARI-343. add option to enable webhdfs (hitesh via vikram)
-
-  AMBARI-342. Reconfiguration process kicks in even when the user
-  submits without new configs changes (vinodkv via vikram)
-
-  AMBARI-341. Batch yum commands (ramya via vikram)
-
-  AMBARI-338. Cluster status update needs to happen for all stages of
-  installation wizard. (vikram)
-
-  AMBARI-330. Provide a way to resume if browser crashes/is closed
-  during the deploy-in-progress (reznor via vikram)
-
-  AMBARI-320. Reconfiguring a stopped service starts it incorrectly
-  (hitesh via vikram)
-
-  AMBARI-340. Info logs for PuppetInvoker (jitendra via vikram)
-
-  AMBARI-337. Parallelize puppet kick --ping during bootstrap (hitesh
-  via vikram)
-
-  AMBARI-335. Redundant downloads even though the artifacts are
-  already installed (ramya via vikram)
-
-  AMBARI-519. update to fix the ganglia monitor_and_server anchor
-  problem (Richard Pelavin via vikram)
-
-  AMBARI-333. Update messaging resources for initialization wizard
-  (Yusaku Sako via vikram)
-
-  AMBARI-332. Modify nav to easily switch between cluster management
-  and monitoring. (Yusaku Sako via vikram)
-
-  AMBARI-518. Junk code in manifestloader site.pp. (jitendra via
-  vikram)
-
-  AMBARI-331. Make txnUtils immune to backend race conditions (reznor
-  via vikram)
-
-  AMBARI-327. Fix syntax error in monitoring modules (ramya via vikram)
-
-  AMBARI-326. Dependencies should be added only during install phase
-  (jitendra via vikram)
-
-  AMBARI-324. Welcome page missing. (Yusaku Sako via vikram)
-
-  AMBARI-323. During any process in the cluster initialization wizard,
-  if the user goes back to the "1 Create Cluster" tab, the user is
-  stuck. (vikram)
-
-  AMBARI-319. Scale puppet master to large number of nodes. (jitendra
-  via vikram)
-
-  AMBARI-318. Do not install the packages that install init.d scripts.
-  (ramya via vikram)
-
-  AMBARI-315. reconfig a service should a list of dependent services
-  that will be restarted as a result. (vinodkv via vikram)
-
-  AMBARI-314. Uninstall Wizard prevents the user from proceeding.
-  (Yusaku Sako via vikram)
-
-  AMBARI-311. Update HBase configuration description (suresh via vikram)
-
-  AMBARI-313. Provide a DB cleanup script. (hitesh via vikram)
-
-  AMBARI-312. Uninstall's wipe flag should be correctly passed to
-  puppet. (hitesh via vikram)
-
-  AMBARI-307. Ensure recommended memory is never below 256 M. (hitesh
-  via vikram)
-
-  AMBARI-310. Externalize message resources for the welcome
-  page. Update styles on various pages. (Yusaku Sako via vikram)
-
-  AMBARI-309. Make ManageServices Show Only One Action Per Service
-  (reznor via vgogate)
-
-  AMBARI-194. Avoid TxnProgressWidget Getting Stuck In An Infinite
-  Loop (reznor via vgogate)
-
-  AMBARI-308. Externalize message resources; Update styles/messaging
-  on Uninstall Wizard and Add Nodes Wizard (Yusaku Sako via vgogate)
-
-  AMBARI-306. Ignore client components when calculating
-  memory. (hitesh via jitendra)
-
-  AMBARI-305. Combine Hive and HCat into a single service. (hitesh via
-  jitendra)
-
-  AMBARI-278. Update MapReduce parameter configuration
-  description. (suresh via jitendra)
-
-  AMBARI-276. Update HDFS parameter configuration description. (suresh
-  via jitendra)
-
-  AMBARI-304. Upgrade to yui-3.5.1. (vinodkv via jitendra)
-
-  AMBARI-302. regionservers config in the hbase only has localhost in it. 
-  (ramya via jitendra)
-
-  AMBARI-275. Remove the configuration variable fs.inmemory.size.mb.
-  (suresh via jitendra)
-
-  AMBARI-303. Cleanup testing code for uninstall failure (simulation). 
-  (vikram via jitendra)
-
-  AMBARI-301. Uninstall should not stop HMC. (vikram via jitendra)
-  
-  AMBARI-273. Fix TxnProgressWidget To Show Failed States When No
-  SubTxn Is In Progress (reznor via vgogate)
-
-  AMBARI-294. Add Nodes page - incorrect field label (Yusaku Sako via vgogate)
-
-  AMBARI-293. Invoking browser "back" action on any step after the Add
-  Hosts step in the Cluster Init Wizard launches the host discovery
-  process again (Yusaku Sako via vgogate)
-
-  AMBARI-289. Hive dependency on hcat (jitendra via vgogate)
-
-  AMBARI-288. Add description for Nagios config (vgogate)
-
-  AMBARI-400. Fixes the regionserver opts for GC (ddas)
-
-  AMBARI-287. Add link to uninstall on index page. (vikram via hitesh)
-
-  AMBARI-285. Clean up Add Hosts page. (Yusaku Sako via hitesh)
-
-  AMBARI-284. Define service groups in nagios such that users can more easily
-  enable/disable the related alerts. (vgogate via hitesh)
-
-  AMBARI-283. Fixup review and deploy rendering. (vinodkv via hitesh)
-
-  AMBARI-282. Make fetchTxnProgress post processing easier to
-  debug. (vikram via hitesh)
-
-  AMBARI-281. Uninstall should hide loading image at startup. (vikram
-  via hitesh)
-
-  AMBARI-280. Cleanup of utilities. (vikram via hitesh)
-
-  AMBARI-249. Uninstall support from UI. (vikram via hitesh)
-
-  AMBARI-277. API for getting cluster status. (vikram via hitesh)
-
-  AMBARI-274. Templeton data on hdfs needs to be readable by all users
-  (ramya via hitesh)
-
-  AMBARI-272. Remove occurrences of repo_url to support local yum repo
-  (ramya via hitesh)
-
-  AMBARI-271. Support for local yum mirror (hitesh via ramya)
- 
-  AMBARI-270. Puppet cleanup to define all the users in a common 
-  location (ramya)
-
-  AMBARI-269. Specifiy the notification intervals and options for Alerts 
-  (vgogate via ramya)
-
-  AMBARI-300. Change the status message (success/error) location so that it 
-  shows below the page summary box, rather than above, more better visibility 
-  (Yusaku Sako via ramya)
-
-  AMBARI-255. Rename/Relocate files as appropriate (reznor via ramya)
-
-  AMBARI-252. Remove Playground files from HMC (reznor via ramya)
-
-  AMBARI-266. add select/unselect all buttons to the select services page 
-  (vinodkv via ramya)
-
-  AMBARI-256. Update hive config to enable authorization (ramya)
- 
-  AMBARI-254. Parameterize zookeeper configs (ramya)
-
-  AMBARI-257. Manage services section will have any empty section when no 
-  client only components installed (vinodkv via ramya)
-
-  AMBARI-253. Support uninstall state in mysql modules (ramya)
-
-  AMBARI-258. Start/Stop service show services that are not dependent on the 
-  service being worked on (vinodkv via ramya)
-
-  AMBARI-251. Oozie link is not displayed even when Oozie is installed 
-  (vgogate via ramya)
-
-  AMBARI-298. The current stage and the next stage are shown at the same time
-  during state transition (Yusaku Sako via ramya)
-
-  AMBARI-245. Support data cleanup if installation fails (jitendra via ramya)
-
-  AMBARI-248. Add yuiCombinator.php to rpm (jitendra via ramya)
-
-  AMBARI-297. Modal dialog box for showing deploy progress looks broken
-  in Safari (Yusaku Sako via ramya)
-
-  AMBARI-244. Implement wipeoff state in puppet (ramya)
-
-  AMBARI-246. Add support for parsing yum repo files to understand how to
-  bootstrap nodes for local yum mirror (hitesh via ramya)
-
-  AMBARI-218. Install Combo-Handler On HMC Webserver To Drastically Speed Up
-  Page Load Times (reznor via ramya)
-
-  AMBARI-259. add nodes to a cluster gives an option for ganglia and dashboard,
-  these should be on by default (vinodkv via ramya)
-
-  AMBARI-262. Init Wizard: Advanced Config validation errors can be bypassed 
-  (vinodkv via ramya)
-
-  AMBARI-263. Initialization Wizard: Select Disk Mount Points allows the user 
-  to continue without any mount points selected (vinodkv via ramya) 
-
-  AMBARI-250. Cluster name validation (vikram via ramya)
-
-  AMBARI-243. Templeton setup fails due to hive download error. (ramya)
-
-  AMBARI-296. Update styles on Service Management page (Yusaku Sako via ramya)
-
-  AMBARI-264. Nagios Admin Contact should be checked to ensure it is always an 
-  email address (vinodkv via ramya)
-
-  AMBARI-242. Change code layout to ensure unit tests are not part of final
-  built rpm. (hitesh via ramya)
-
-  AMBARI-295. Improve the overall look and feel (Yusaku Sako via ramya)
-
-  AMBARI-241. Support cluster wipeout in orchestrator. (hitesh via jitendra)
-
-  AMBARI-292. HTML being spewed in the Review+Deploy page. (reznor
-  via jitendra)
-
-  AMBARI-291. Fix yui packaging in the rpm. (jitendra)
-
-  AMBARI-290. Comment in addNodesWizardInit.js. (reznor via jitendra)
-
-  AMBARI-240. Make All FE Entry Points Hide The Loading Image When
-  They're Ready To Take Input.  (reznor via jitendra)
-
-  AMBARI-197. Templatize Standard Helper Components Of Every HTML
-  Page. (reznor via jitendra)
-
-  AMBARI-229. Remove Navigation Bar (W/ Clusters Link) From
-  InstallationWizard (And Other Entry Points).  (reznor via
-  jitendra)
-
-  AMBARI-214. Make HMC Use Local YUI Copy. (reznor via jitendra)
-
-  AMBARI-239. HDFS utilization pie chart shows gray / HDFS down while
-  HDFS is up and running.  (vgogate via jitendra)
-
-  AMBARI-238. When namenode process is down info shown is not correct
-  for both HDFS and MR (vgogate)
-
-  AMBARI-237. Refactor puppet kick loop to easily change retries and timeouts.
-  (jitendra)
-
-  AMBARI-236. Increase puppet agent timeout. (jitendra via vgogate)
-
-  AMBARI-235. Ordering problem when using
-  hdp-ganglia::monitor_and_server (Richard Pelavin via vgogate)
-
-  AMBARI-234. Typo in javascript (vikram via vgogate)
-
-  AMBARI-233. Add Oozie link to HMC dashboard (vgogate)
-
-  AMBARI-232. Enable LZO should show checkbox instead of text (
-  vikram via vgogate)
-
-  AMBARI-231. Support hadoop cleanup (ramya via vgogate)
-
-  AMBARI-228. Ganglia reports on host types not present (Richard
-  Pelavin via vgogate)
-
-  AMBARI-227. Invalid parameter ensure in ganglia manifests (ramya via vgogate)
-
-  AMBARI-226. Make the daemon names and other field names consistent
-  (suresh via vgogate)
-
-  AMBARI-225. Currently we dont have any monitoring alerts setup for
-  secondary namenode (vgogate)
-
-  AMBARI-224. sequentialScriptRunner.php logging in a tight
-  loop. (jitendra via vgogate)
-
-  AMBARI-223. Add troubleshoot link in the Alerts table to provide
-  documentation for debugging/resolving the alerts (vgogate)
-
-  AMBARI-222. Remove the word alert from all the Nagios alerts
-  descriptions. (vgogate)
-
-  AMBARI-221. Service fails to set its state to failed if a component
-  fails to be acted upon (hitesh via vgogate)
-
-  AMBARI-220. Alerts table semantic difference at different levels (vgogate)
-
-  AMBARI-217. Alert table needs to display service name for context.
-  (vgogate via omalley)
-
-  AMBARI-216. Remove sleeps to speed simulations of installs. (vikram
-  via omalley)
-
-  AMBARI-215. Fix description for dfs_data_dir. (hitesh via omalley)
-
-  AMBARI-209. Node selection should ignore failed nodes. (hitesh via omalley)
-
-  AMBARI-213. Fix directory permissions so that Ganglia graphs render.
-  (ramya via omalley)
-
-  AMBARI-210. Remove link for wiping clusters from the hope page. (vikram
-  via omalley)
-
-  AMBARI-212. Fix templeton configurations. (ramya via omalley)
-
-  AMBARI-206. Fix undefined variable in orchestrator. (hitesh via omalley)
-
-  AMBARI-208. Support filtering hosts based on discovery status. (hitesh
-  via omalley)
-
-  AMBARI-207. Fix for undefined variable manifest. (jitendra via omalley)
-
-  AMBARI-204. Use the host that runs Ambari for running slaves & masters.
-  (mahadev via omalley)
-
-  AMBARI-196. Support capturing os information correctly during node 
-  discovery. (hitesh via omalley)
-
-  AMBARI-203. Fix for duplicate jdk definition (ramya via omalley)
-
-  AMBARI-202. Add check to verify jdk path after install (ramya via vgogate)
-
-  AMBARI-201. reduce db query logging (hitesh via vgogate)
-
-  AMBARI-200. External hostnames should be used for links on dashboard
-  UI (ramya via vgogate)
-
-  AMBARI-199. Remove import of mysql puppet module from manifest
-  (jitendra via vgogate)
-
-  AMBARI-198. Dependency of templeton on hcat client (jitendra via vgogate)
-
-  AMBARI-192. Check for NN safemode during restarts (ramya via vgogate)
-
-  AMBARI-191. Implement hive server stopped state (ramya via vgogate)
-
-  AMBARI-195. Fix typo in java license question (hitesh via vgogate)
-
-  AMBARI-187. Syntax error in the puppet manifest in reconfiguration (jitendra
-  via vgogate)
-
-  AMBARI-193. Track nodes that timed out for puppet kicks (hitesh via
-  vgogate)
-
-  AMBARI-190. On a Single Node install, Nagios alert do not take affect until 
-  hmc is restarted (hitesh via vgogate)
-
-  AMBARI-189. Make getAllHostsInfo api support optional params (
-  hitesh via vgogate)
-
-  AMBARI-188. Disable jdk location validation as filter apis not supported in 
-  PHP 5.1. (hitesh via vgogate)
-

+ 0 - 403
LICENSE.txt

@@ -1,403 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-APACHE HCATALOG SUBCOMPONENTS:
-
-The Apache HCatalog project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the ANTLR libraries:
-
-Copyright (c) 2003-2008, Terence Parr
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.  Redistributions
-in binary form must reproduce the above copyright notice, this list of
-conditions and the following disclaimer in the documentation and/or
-other materials provided with the distribution.  Neither the name of
-the author nor the names of its contributors may be used to endorse or
-promote products derived from this software without specific prior
-written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-For the StringTemplate library:
-
-Copyright (c) 2008, Terence Parr
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.  Redistributions
-in binary form must reproduce the above copyright notice, this list of
-conditions and the following disclaimer in the documentation and/or
-other materials provided with the distribution.  Neither the name of
-the author nor the names of its contributors may be used to endorse or
-promote products derived from this software without specific prior
-written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-For the ASM library:
-
-Copyright (c) 2000-2005 INRIA, France Telecom
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holders nor the names of its
-   contributors may be used to endorse or promote products derived from
-   this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-
-
-For the org.json library:
-
-Copyright (c) 2002 JSON.org
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-The Software shall be used for Good, not Evil.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-For the JLine library:
-
-Copyright (c) 2002-2006, Marc Prud'hommeaux <mwp1@cornell.edu>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or
-without modification, are permitted provided that the following
-conditions are met:
-
-Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with
-the distribution.
-
-Neither the name of JLine nor the names of its contributors
-may be used to endorse or promote products derived from this
-software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-For the SLF4J library:
-
-Copyright (c) 2004-2008 QOS.ch
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
- 
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
- 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- 
-For the DataNucleus library:
-
-DataNucleus is licensed under the Apache 2 license, as given above.
-
-For the Guava library:
-
-Guava is licensed under the Apache 2 license, as given above.
-
-For the JavaEWAH library:
-
-JavaEWAH is licensed under the Apache 2 license, as given above.
-

+ 0 - 22
NOTICE.txt

@@ -1,22 +0,0 @@
-Apache Ambari
-Copyright 2012 The Apache Software Foundation
-
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
-
-This product includes YUI (http://yuilibrary.com - BSD License)
-Copyright (c) 2012, Yahoo! Inc.
-
-This product includes jQuery (http://jquery.org - MIT license)
-Copyright (c) 2012, John Resig.
-
-This product includes fonts/images from iconic hmc/fonts/iconic_* (http://somerandomdude.com/work/iconic - Creative Commons Share Alike 3.0) by P.J. Onori.
-
-This product includes jqgrid (http://www.triand.com/)
-Copyright (c) 2007-2012 jQuery Grid Plugin - jqGrid
-
-This product includes raphael (http://raphaeljs.com/)
-Copyright (c) 2008 Dmitry Baranovskiy
-
-This product includes Sinon.JS (http://sinonjs.org - BSD license)
-Copyright (c) 2010 - 2012, Christian Johansen.

+ 0 - 49
README.txt

@@ -1,49 +0,0 @@
-Ambari
-======
-
-Apache Ambari is a web application for installing, managing, and monitoring
-Apache Hadoop clusters.
-The set of Hadoop components that are currently supported by Ambari includes:
-
-    Apache HBase
-    Apache HCatalog
-    Apache Hadoop HDFS
-    Apache Hive
-    Apache Hadoop MapReduce
-    Apache Oozie
-    Apache Pig
-    Apache Sqoop
-    Apache Templeton
-    Apache Zookeeper
-
-Ambari's primary audience is system administrators responsible for managing
-Hadoop clusters.
-
-Ambari allows them to:
-
-    Easily Install a Hadoop Cluster
-        Ambari provides an easy-to-use, step-by-step wizard for installing
-        Hadoop services across any number of nodes.
-        Ambari leverages Puppet to perform installation and configuration of
-        Hadoop services for the cluster.
-
-    Manage a Hadoop Cluster
-        Ambari provides central management for starting, stopping, and
-        reconfiguring Hadoop services across the entire cluster.
-
-    Monitor a Hadoop Cluster
-        Ambari provides a dashboard for monitoring health and status of the
-        Hadoop cluster. Ambari leverages Ganglia to render graphs.
-        Ambari sends email alerts when your attention is needed (e.g., a node
-        goes down, remaining disk space is low, etc).
-        Ambari leverages Nagios to monitor and trigger alerts.
-
-In the future, Ambari will allow third-party tool developers to integrate
-Hadoop cluster management and monitoring capabilities via its RESTful interface.
-
-
-Resources
-=========
-
- - Ambari project website:    http://incubator.apache.org/ambari
- - Ambari installation guide: http://incubator.apache.org/ambari/install.html

+ 0 - 347
docs/pom.xml

@@ -1,347 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-   contributor license agreements.  See the NOTICE file distributed with
-   this work for additional information regarding copyright ownership.
-   The ASF licenses this file to You under the Apache License, Version 2.0
-   (the "License"); you may not use this file except in compliance with
-   the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <name>ambari</name>
-    <description>
-      Ambari is a web-based tool for performing installation, management, and monitoring of Apache Hadoop clusters. The stack of components that are currently supported by
-      Ambari includes HBase, HCatalog, HDFS, Hive, MapReduce, Oozie, Pig, Scoop, Templeton, and Zookeeper.
-    </description>
-    <url>http://incubator.apache.org/ambari</url>
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>org.apache.ambari</groupId>
-    <version>1.0.0-SNAPSHOT</version>
-    <artifactId>ambari</artifactId>
-    <packaging>pom</packaging>
-
-    <properties>
-        <buildtype>test</buildtype>
-        <BUILD_NUMBER>${env.BUILD_NUMBER}</BUILD_NUMBER>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
-        <package.prefix>/usr</package.prefix>
-        <package.conf.dir>/etc/ambari</package.conf.dir>
-        <package.log.dir>/var/log/ambari</package.log.dir>
-        <package.pid.dir>/var/run/ambari</package.pid.dir>
-        <package.release>1</package.release>
-        <package.type>tar.gz</package.type>
-        <ambari.version>1.0.0-SNAPSHOT</ambari.version>
-        <final.name>${project.artifactId}-${ambari.version}</final.name>
-    </properties>
-
-    <licenses>
-      <license>
-        <name>Apache 2</name>
-        <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        <distribution>repo</distribution>
-      </license>
-    </licenses>
-
-    <scm>
-      <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/ambari</connection>
-      <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/ambari</developerConnection>
-      <tag>HEAD</tag>
-      <url>http://svn.apache.org/repos/asf/incubator/ambari</url>
-    </scm>
-
-    <issueManagement>
-        <system>Jira</system>
-        <url>http://issues.apache.org/jira/browse/AMBARI</url>
-    </issueManagement>
-
-    <mailingLists>
-        <mailingList>
-            <name>User list</name>
-            <subscribe>mailto:ambari-user-subscribe@incubator.apache.org
-            </subscribe>
-            <unsubscribe>mailto:ambari-user-unsubscribe@incubator.apache.org
-            </unsubscribe>
-            <post>mailto:ambari-user@incubator.apache.org</post>
-            <archive></archive>
-        </mailingList>
-        <mailingList>
-            <name>Development list</name>
-            <subscribe>mailto:ambari-dev-subscribe@incubator.apache.org
-            </subscribe>
-            <unsubscribe>mailto:ambari-dev-unsubscribe@incubator.apache.org
-            </unsubscribe>
-            <post>mailto:ambari-dev@incubator.apache.org</post>
-            <archive></archive>
-        </mailingList>
-        <mailingList>
-            <name>Commit list</name>
-            <subscribe>mailto:ambari-commits-subscribe@incubator.apache.org
-            </subscribe>
-            <unsubscribe>mailto:ambari-commits-unsubscribe@incubator.apache.org
-            </unsubscribe>
-            <post>mailto:ambari-commits@incubator.apache.org</post>
-            <archive></archive>
-        </mailingList>
-    </mailingLists>
-
-    <developers>
-        <developer>
-            <id>omalley</id>
-            <name>Owen O'Malley</name>
-            <email>omalley@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>PMC</role>
-            </roles>
-            <organization>
-                Hortonworks                
-            </organization>            
-        </developer>
-        <developer>
-            <id>berndf</id>
-            <name>Bernd Fondermann</name>
-            <email>berndf@apache.org</email>
-            <timezone>+1</timezone>
-            <roles>
-                <role>PMC</role>
-            </roles>
-        </developer>
-        <developer>            
-            <id>ddas</id>
-            <name>Devaraj Das</name>
-            <email>ddas@hortonworks.com</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>PMC</role>
-            </roles>
-            <organization>
-                Hortonworks                
-            </organization>            
-        </developer>
-        <developer>
-            <id>eyang</id>
-            <name>Eric Yang</name>
-            <email>eyang@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>PMC</role>
-            </roles>
-            <organization>
-                IBM            
-            </organization>            
-        </developer> 
-        <developer>
-            <id>hitesh</id>
-            <name>Hitesh Shah</name>
-            <email>hitesh@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>Committer</role>
-            </roles>
-            <organization>
-                Hortonworks                
-            </organization>            
-        </developer>          
-        <developer>
-            <id>jagane</id>
-            <name>Jagane Sundar</name>
-            <email>jagane@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>PMC</role>
-            </roles>
-            <organization>
-                                
-            </organization>            
-        </developer>             
-        <developer>
-            <id>jitendra</id>
-            <name>Jitendra Pandey</name>
-            <email>jitendra@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>Committer</role>
-            </roles>
-            <organization>
-                Hortonworks                
-            </organization>            
-        </developer>
-        <developer>
-            <id>kzhang</id>
-            <name>Kan Zhang</name>
-            <email>kanzhangmail@yahoo.com</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>PMC</role>
-            </roles>
-            <organization>
-                IBM                
-            </organization>            
-        </developer>        
-        <developer>
-            <id>mahadev</id>
-            <name>Mahadev Konar</name>
-            <email>mahadev@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>Committer</role>
-            </roles>
-            <organization>
-                Hortonworks                
-            </organization>            
-        </developer>              
-        <developer>
-            <id>ramya</id>
-            <name>Ramya Sunil</name>
-            <email>ramya@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>Committer</role>
-            </roles>
-            <organization>
-                Hortonworks                
-            </organization>            
-        </developer>        
-        <developer>
-            <id>varun</id>
-            <name>Varun Kapoor</name>
-            <email>varun@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>Committer</role>
-            </roles>
-            <organization>
-                Hortonworks                
-            </organization>            
-        </developer>
-        <developer>
-            <id>vikram</id>
-            <name>Vikram Dixit</name>
-            <email>vikram@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>Committer</role>
-            </roles>
-            <organization>
-                Hortonworks
-            </organization>
-        </developer>        
-        <developer>
-            <id>vgogate</id>
-            <name>Vitthal Suhas Gogate</name>
-            <email>vgogate@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>PMC</role>
-            </roles>
-            <organization>
-                Hortonworks
-            </organization>           
-        </developer>
-        <developer>
-            <id>vinodkv</id>
-            <name>Vinod Kumar Vavilapalli</name>
-            <email>vinodkv@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>Committer</role>
-            </roles>
-            <organization>
-                Hortonworks                
-            </organization>
-        </developer>        
-        <developer>
-            <id>yusaku</id>
-            <name>Yusaku Sako</name>
-            <email>yusaku@apache.org</email>
-            <timezone>-8</timezone>
-            <roles>
-                <role>Committer</role>
-            </roles>
-            <organization>
-                Hortonworks
-            </organization>
-        </developer>
-      </developers>
-    <organization>
-        <name>Apache Software Foundation</name>
-        <url>http://www.apache.org/</url>
-    </organization>
-
-    <build>
-      <resources>
-        <resource>
-          <directory>src/main/resources</directory>
-          <filtering>true</filtering>
-        </resource>
-      </resources>
-      <pluginManagement>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-resources-plugin</artifactId>
-            <version>2.4.3</version>
-            <configuration>
-              <encoding>UTF-8</encoding>
-            </configuration>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-site-plugin</artifactId>
-            <version>3.0</version>
-            <configuration>
-              <outputDirectory>./target</outputDirectory>
-            </configuration>
-          </plugin>
-        </plugins>
-      </pluginManagement>
-    </build>
-
-    <reporting>
-      <excludeDefaults>true</excludeDefaults>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-project-info-reports-plugin</artifactId>
-          <version>2.4</version>
-          <reportSets>
-            <reportSet>
-              <reports>
-                <report>project-team</report>
-                <report>mailing-list</report>
-                <report>issue-tracking</report>
-                <report>license</report>
-<!-- for now
-                <report>modules</report>
-                <report>dependencies</report>
-                <report>cim</report>
-                <report>scm</report>
--->
-               </reports>
-             </reportSet>
-          </reportSets>
-        </plugin>
-      </plugins>
-    </reporting>
-    
-  <distributionManagement>
-    <site>
-      <id>apache-website</id>
-      <name>Apache website</name>
-      <url>scpexe://people.apache.org/www/incubator.apache.org/ambari</url>
-    </site>
-  </distributionManagement>
-
-</project>

+ 0 - 109
docs/src/site/apt/index.apt

@@ -1,109 +0,0 @@
-~~ Licensed to the Apache Software Foundation (ASF) under one or more
-~~ contributor license agreements.  See the NOTICE file distributed with
-~~ this work for additional information regarding copyright ownership.
-~~ The ASF licenses this file to You under the Apache License, Version 2.0
-~~ (the "License"); you may not use this file except in compliance with
-~~ the License.  You may obtain a copy of the License at
-~~
-~~     http://www.apache.org/licenses/LICENSE-2.0
-~~
-~~ Unless required by applicable law or agreed to in writing, software
-~~ distributed under the License is distributed on an "AS IS" BASIS,
-~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-~~ See the License for the specific language governing permissions and
-~~ limitations under the License.
-~~
-Introduction
-
-  Apache Ambari is a web-based tool for installing, managing, and monitoring Apache Hadoop clusters. The set of
-  Hadoop components that are currently supported by Ambari includes:
-
-  * {{{http://hbase.apache.org} Apache HBase}}
-
-  * {{{http://incubator.apache.org/hcatalog} Apache HCatalog}}
-
-  * {{{http://hadoop.apache.org/hdfs} Apache Hadoop HDFS}}
-
-  * {{{http://hive.apache.org} Apache Hive}}
-
-  * {{{http://hadoop.apache.org/mapreduce} Apache Hadoop MapReduce}}
-
-  * {{{http://incubator.apache.org/oozie/} Apache Oozie}}
-
-  * {{{http://pig.apache.org} Apache Pig}}
-
-  * {{{http://sqoop.apache.org} Apache Sqoop}}
-
-  * {{{http://people.apache.org/~thejas/templeton_doc_latest/index.html} Apache Templeton}}
-
-  * {{{http://zookeeper.apache.org} Apache Zookeeper}}
-
-  []
-  
-  Ambari's primary audience is system administrators responsible for managing Hadoop clusters.
-  
-  Ambari allows them to:
-
-  * Easily Install a Hadoop Cluster  
-  
-    * Ambari provides an easy-to-use, step-by-step wizard for installing Hadoop services across any number of nodes.
-    
-    * Ambari leverages {{{http://puppetlabs.com/} Puppet}} to perform installation and configuration of Hadoop services for the cluster. 
-
-  []
-
-  * Manage a Hadoop Cluster
-  
-    * Ambari provides central management for starting, stopping, and reconfiguring Hadoop services across the entire cluster.
-
-  []
-
-  * Monitor a Hadoop Cluster
-  
-    * Ambari provides a dashboard for monitoring health and status of the Hadoop cluster.  Ambari leverages {{{http://ganglia.sourceforge.net/} Ganglia}} to render graphs.
-    
-    * Ambari sends email alerts when your attention is needed (e.g., a node goes down, remaining disk space is low, etc).  Ambari leverages {{{http://www.nagios.org/} Nagios}} to monitor and trigger alerts.
-  
-  []
-  
-  In the future, Ambari will allow third-party tool developers to integrate Hadoop cluster management and monitoring capabilities via its RESTful interface. 
-
-Ambari Installation
-
-  Follow the {{{./install.html} installation guide}}.
-
-Roadmap
-
-  * Support for Hadoop Security
-  
-  []
-  
-  * Support for various operating systems
-  
-    * Ambari currently supports:
-    
-      * 64-bit RHEL 5.*
-      
-      * 64-bit CentOS 5.*
-      
-    * Support for RHEL/CentOS 6.* is coming soon.
-      Contributions to support other operating systems are welcome.
-
-  []
-  
-  * Support for more granular configurations
-   
-   * Ambari currently applies configurations at the cluster-level.  To allow for more flexibility,
-     Ambari needs to allow for configurations in a more granular manner (e.g., apply a set of configurations to a specific group of nodes, etc.) 
-   
-  []  
-
-  * Interactive visualization of current and historical states of the cluster
-  
-  []
-
-  * RESTful API for third-party integration
-  
-    * Ambari will expose a unified, RESTful API to enable third-party applications to integrate Hadoop cluster management
-      and monitoring capabilities.
-      

+ 0 - 188
docs/src/site/apt/install.apt

@@ -1,188 +0,0 @@
-~~ Licensed under the Apache License, Version 2.0 (the "License");
-~~ you may not use this file except in compliance with the License.
-~~ You may obtain a copy of the License at
-~~
-~~   http://www.apache.org/licenses/LICENSE-2.0
-~~
-~~ Unless required by applicable law or agreed to in writing, software
-~~ distributed under the License is distributed on an "AS IS" BASIS,
-~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-~~ See the License for the specific language governing permissions and
-~~ limitations under the License. See accompanying LICENSE file.
-
-Supported Operating Systems
-
-  * Ambari currently supports:
-  
-    * 64-bit RHEL 5.*
-    
-    * 64-bit CentOS 5.*
-
-  RHEL/CentOS 6.* support is coming shortly.
-
-
-Getting Ambari
-
-  The source can be checked out anonymously from SVN with this command:
-  
-+--
-$ svn checkout http://svn.apache.org/repos/asf/incubator/ambari/trunk ambari
-+--
-
-How to build Ambari
-
-  You need to build Ambari RPMs from the source code that you checked out:
-
-+--
-$ yum install rpm-build
-$ cd hmc/package/rpm
-$ ./create_hmc_rpm.sh
-
-$ cd mon_dashboard/package/rpm
-$ ./create_dashboard_rpm.sh
-+--
-
-  When this succeeds, you will find following RPMs inside the ambari directory:
-
-  1) hmc/package/rpm/build/rpmbuild/RPMS/noarch/ambari-1.0.0-1.noarch.rpm
-
-  2) hmc/package/rpm/build/rpmbuild/RPMS/noarch/ambari-agent-1.0.0-1.noarch.rpm
-
-  3) mon_dashboard/package/rpm/build/rpmbuild/RPMS/noarch/hdp_mon_dashboard-0.0.1-2.noarch.rpm
-
-
-Steps to run before you use Ambari to install Hadoop on your cluster
-  
-  We will refer to the node running the Ambari server as <Ambari master>
-  and the nodes to which Hadoop services will be installed as <cluster nodes>.
-
-  1) Set up password-less SSH for root on all your cluster nodes.
-
-    * Copy root's SSH public key to all the cluster nodes in the <authorized_keys> file.
-
-    * Save the corresponding SSH private key file locally.  You will be prompted by Ambari UI to upload it during cluster installation.
-
-  2) Install ambari-agent-1.0.0-1.noarch.rpm on each of the cluster nodes by running:
-
-+--
-$ sudo rpm -Uvh ambari-agent-1.0.0-1.noarch.rpm ( or use yum install to pull in required dependencies )
-+--
-  
-    * To install ambari-agent, you may need to install puppet beforehand or point to the freely accessible HDP repo
-as it contains the required dependencies to allow the ambari-agent rpm to install successfully. To install the HDP repo, run:
- 
-+--
-$ sudo rpm -Uvh http://public-repo-1.hortonworks.com/HDP-1.0.13/repos/centos5/hdp-release-1.0.13-1.el5.noarch.rpm
-+--
-
-  3) Stop iptables on the Ambari master:
-
-+--
-$ sudo service iptables stop
-+--
-
-
-How to install Ambari
-
-  Ambari has several external runtime dependencies.  Major dependencies are:
-
-  1) puppet
-
-  2) php
-
-  3) ruby
-
-  To simplify the installation of the dependencies, you should enable the following
-  yum repos. To do that, you can simply install the corresponding RPMs.
-
-  1) EPEL repo
-
-  2) Puppet Passenger
-
-  3) Hadoop repo
-
-  You should run the following at the command line on Ambari master:
-  
-+--  
-
-$ sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
-$ sudo rpm -Uvh http://passenger.stealthymonkeys.com/rhel/5/passenger-release.noarch.rpm 
-$ sudo rpm -Uvh http://public-repo-1.hortonworks.com/HDP-1.0.13/repos/centos5/hdp-release-1.0.13-1.el5.noarch.rpm
-
-+--
-
-  To install necessary PHP modules on Ambari master:
-
-+--
-$ sudo yum install php-pecl-json  # version 1.2.1 compatible with php-5.1 or php-5.2
-$ sudo yum install php-pdo
-$ php -m | grep posix
-+--
-
-   If the posix module is not found, run:
-
-+--   
-$ sudo yum install php-process
-+--
-
-  Depending on which packages you have already installed, you may need to run following on Ambari master:
-  
-+--
-$ sudo yum install pdsh
-$ sudo yum install httpd-devel
-$ sudo yum install mod_passenger
-$ sudo yum install puppet-2.7.9
-$ sudo yum install ruby-devel
-+--
-
-  To install Ambari on Ambari master:
-
-+--
-$ sudo rpm -iv ambari-1.0.0-1.noarch.rpm 
-$ sudo rpm -iv hdp_mon_dashboard-0.0.1-2.noarch.rpm
-+--
-
-  Hadoop requires JDK.  You can download following files from the Oracle website: 
-  {{{http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html} http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html}}
-  After accepting the license and downloading the files, copy them to /var/run/hmc/downloads/ directory on the 
-  Ambari master (Note: Upon download, these files may have .sh extension, so make sure you remove the .sh extension 
-  from the filenames and also set the execute permission on them)
-
-  1) jdk-6u26-linux-x64.bin
-
-  2) jdk-6u26-linux-i586.bin
-
-
-How to run Ambari
-
-+--
-$ sudo service ambari start
-+--
-
-  Now that Ambari server is installed and started, you can start installing Apache Hadoop and its ecosystem components on your cluster nodes by visiting:
-
-  http://AMBARIMASTER/hmc/html/
-  
-  from your browser.  
-
-
-Notes for Developers
-
-  If you have made any changes to Nagios or Ganglia addons code (mon_dashboard/src/addOns/[ganglia|nagios]), you will also have to install 
-  hdp_mon_ganglia_addons-0.0.1-2.noarch.rpm and hdp_mon_nagios_addons-0.0.1-2.noarch.rpm on the hosts running 
-  Ganglia and Nagios server, respectively, to make your changes effective.
-  After your Hadoop cluster is installed using Ambari, go to the host(s) running Nagios and Ganglia server, 
-  remove these pre-installed addon RPMs for Nagios and Ganglia, and install the new ones built from the source.
-  To build these RPMs from the source, run:
-
-+--
-$ cd mon_dashboard/package/rpm
-$ ./create_ganglia_addon_rpm.sh
-$ ./create_nagios_addon_rpm.sh
-+--
-  
-  Running the above creates the following two RPMs:
-
-   * mon_dashboard/package/rpm/build/rpmbuild/RPMS/noarch/hdp_mon_ganglia_addons-0.0.1-2.noarch.rpm
-   
-   * mon_dashboard/package/rpm/build/rpmbuild/RPMS/noarch/hdp_mon_nagios_addons-0.0.1-2.noarch.rpm

BIN
docs/src/site/resources/images/apache-ambari-project.png


+ 0 - 60
docs/src/site/site.xml

@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-   contributor license agreements.  See the NOTICE file distributed with
-   this work for additional information regarding copyright ownership.
-   The ASF licenses this file to You under the Apache License, Version 2.0
-   (the "License"); you may not use this file except in compliance with
-   the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Ambari">
-  <bannerLeft>
-    <name>Ambari</name>
-    <src>http://incubator.apache.org/ambari/images/apache-ambari-project.png</src>
-    <href>http://incubator.apache.org/ambari</href>
-  </bannerLeft>
-  <body>
-    <head>
-       <!-- Start of Google analytics -->
-       <script type="text/javascript">
-         var _gaq = _gaq || [];
-         _gaq.push(['_setAccount', 'UA-27188762-1']);
-         _gaq.push(['_trackPageview']);
-
-         (function() {
-            var ga = document.createElement('script'); 
-            ga.type = 'text/javascript'; ga.async = true;
-            ga.src = ('https:' == document.location.protocol ? 
-                      'https://ssl' : 'http://www') + 
-                     '.google-analytics.com/ga.js';
-            var s = document.getElementsByTagName('script')[0]; 
-            s.parentNode.insertBefore(ga, s);
-          })();
-       </script>
-       <!-- End of Google analytics -->
-    </head>
-
-    <links>
-      <item name="JIRA" href="https://issues.apache.org/jira/browse/AMBARI" />
-      <item name="SVN" href="https://svn.apache.org/repos/asf/incubator/ambari/" />
-    </links>
-
-    <menu name="Ambari">
-      <item name="About" href="index.html"/>
-      <item name="Installation Guide" href="install.html"/>
-    </menu>
-
-    <menu ref="reports"/>
-
-  </body>
-</project>

+ 0 - 56
hmc/ShellScripts/cleanupHMCDB.sh

@@ -1,56 +0,0 @@
-#!/bin/sh
-#
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-#
-
-dbFile="/var/db/hmc/data/data.db"
-
-if [[ "x" != "x$1" ]]; then
-  dbFile=$1
-fi
-
-if [[ ! -f ${dbFile} ]]; then
-  echo "DB file ${dbFile} does not exist";
-  exit 1
-fi
-
-while true; do
-  read -p "Are you really sure you want to wipe out the DB at ${dbFile}? (y/n)" yn  
-  case $yn in
-    [Yy]* ) break;;
-    [Nn]* ) echo "User aborted script. Exiting without cleaning up DB"; exit 0;;
-    * ) echo "Please answer y or n.";;
-  esac
-done
-
-echo "Deleting data from DB ${dbFile}, restoring to clean state"
-
-sqlite3 ${dbFile} "Delete FROM Clusters;"
-sqlite3 ${dbFile} "DELETE FROM ServiceInfo;"
-sqlite3 ${dbFile} "DELETE FROM ServiceComponentInfo;"
-sqlite3 ${dbFile} "DELETE FROM ServiceConfig;"
-sqlite3 ${dbFile} "DELETE FROM Hosts;"
-sqlite3 ${dbFile} "DELETE FROM HostRoles;"
-sqlite3 ${dbFile} "DELETE FROM HostRoleConfig;"
-sqlite3 ${dbFile} "DELETE FROM ConfigHistory;"
-sqlite3 ${dbFile} "DELETE FROM TransactionStatus;"
-sqlite3 ${dbFile} "DELETE FROM SubTransactionStatus;"
-
-exit 0;

+ 0 - 269
hmc/ShellScripts/puppet_agent_install.sh

@@ -1,269 +0,0 @@
-#!/bin/bash
-#*
-#/*
-# * Licensed to the Apache Software Foundation (ASF) under one
-# * or more contributor license agreements.  See the NOTICE file
-# * distributed with this work for additional information
-# * regarding copyright ownership.  The ASF licenses this file
-# * to you under the Apache License, Version 2.0 (the
-# * "License"); you may not use this file except in compliance
-# * with the License.  You may obtain a copy of the License at
-# *
-# *     http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-# */
-
-#
-#  /* This script takes three arguments,
-#   * - sshkey: if not specified then ssh w/o key
-#   * - repository information : to be added to remote node
-#   * - list of hosts
-#  */
-#set -e
-#set -x
-trap 'pp_cmd=$ppp_cmd; ppp_cmd=$previous_command; previous_command=$this_command; this_command=$BASH_COMMAND' DEBUG
-#trap 'echo "$host: retcode:[$?] command:[$previous_command], out:[$out]"' EXIT
-#printf 'Argument is __%s__\n' "$@"
-
-usage() {
-  echo "
-Usage: $0 with the following parameters
-    --puppet-master     Puppet Master
-    --repo-file         Repo File
-    --gpg-key-files     GPG Key files - comma-separated
-    --using-local-repo  Whether local repo is being used
-  "
-}
-
-OPTS=$(getopt \
-  -n $0 \
-  -o '' \
-  -l 'puppet-master:' \
-  -l 'repo-file:' \
-  -l 'using-local-repo' \
-  -l 'gpg-key-files:' \
-  -l 'help' \
-  -- "$@")
-
-if [ $? != 0 ] ; then
-  usage
-  echo "Invalid args" >&2
-  exit 3
-fi
-
-echo "DEBUG: opts ${OPTS}"
-
-USINGLOCALREPO=0
-
-eval set -- "${OPTS}"
-while true ; do
-  case "$1" in
-    --puppet-master)
-      MASTER=$2 ; shift 2
-      ;;
-    --repo-file)
-      REPOFILE=$2 ; shift 2
-      ;;
-    --gpg-key-files)
-      GPGKEYFILESTR=$2 ; shift 2
-      ;;
-    --using-local-repo)
-      USINGLOCALREPO=1; shift
-      ;;
-    --help)
-      usage ;
-      exit 0
-      ;;
-    --)
-      shift ; break
-      ;;
-    *)
-      echo "Unknown option: $1" >&2
-      usage
-      exit 1
-      ;;
-  esac
-done
-
-if [[ "x" == "x${MASTER}" ]]; then
-  echo "Error: Puppet master not specified" >&2
-  exit 3
-fi
-
-if [[ "x" == "x${REPOFILE}" ]]; then
-  echo "Error: Repo file not specified" >&2
-  exit 3
-fi
-
-if [[ "x" != "x${GPGKEYFILESTR}" ]]; then
-  GPGKEYFILES=$(echo ${GPGKEYFILESTR} | tr "," " ")
-fi
-
-master=${MASTER}
-repoFile=${REPOFILE}
-gpgKeyFiles=${GPGKEYFILES}
-usingLocalRepo=${USINGLOCALREPO}
-
-echo "DEBUG: Puppet Master: ${master}"
-echo "DEBUG: Repo File: ${repoFile}"
-echo "DEBUG: GPG Key File Locations: ${gpgKeyFiles}"
-
-osType=''
-osMajorVersion=''
-if [ -f /usr/bin/lsb_release ] ; then
-  osType=$( lsb_release -sd | tr '[:upper:]' '[:lower:]' | tr '"' ' ' | awk '{ for(i=1; i<=NF; i++) { if ( $i ~ /[0-9]+/ ) { cnt=split($i, arr, "."); if ( cnt > 1) { print arr[1] } else { print $i; } break; } print $i; } }' )
-  osMajorVersion=`lsb_release -sd | tr '[:upper:]' '[:lower:]' | tr '"' ' ' | awk '{ for(i=1; i<=NF; i++) { if ( $i ~ /[0-9]+/ ) { cnt=split($i, arr, "."); if ( cnt > 1) { print arr[1] } else { print $i; } break; } } }'`
-else
-  osType=$( cat `ls /etc/*release | grep "redhat\|SuSE"` | head -1 | awk '{ for(i=1; i<=NF; i++) { if ( $i ~ /[0-9]+/ ) { cnt=split($i, arr, "."); if ( cnt > 1) { print arr[1] } else { print $i; } break; } print $i; } }' | tr '[:upper:]' '[:lower:]' )
-  osMajorVersion=`cat \`ls /etc/*release | grep "redhat\|SuSE"\` | head -1 | awk '{ for(i=1; i<=NF; i++) { if ( $i ~ /[0-9]+/ ) { cnt=split($i, arr, "."); if ( cnt > 1) { print arr[1] } else { print $i; } break; } } }' | tr '[:upper:]' '[:lower:]'`
-fi
-
-osType=`echo ${osType} | sed -e "s/ *//g"`
-
-osArch=`uname -m`
-if [[ "xi686" == "x${osArch}" || "xi386" == "x${osArch}" ]]; then
-  osArch="i386"
-fi
-if [[ "xx86_64" == "x${osArch}" || "xamd64" == "x${osArch}" ]]; then
-  osArch="x86_64"
-fi
-
-echo "DEBUG: OS Type ${osType}"
-echo "DEBUG: OS Arch ${osArch}"
-echo "DEBUG: OS Major Version ${osMajorVersion}"
-
-if [[ ! -f ${repoFile} ]]; then
-  echo "Error: Repo file ${repoFile} does not exist" >&2
-  exit 3
-else
-  echo "Copying $repoFile to /etc/yum.repos.d/ for ${osType} ${osMajorVersion}"
-  if [[ "x${usingLocalRepo}" == "x0" ]]; then
-    osReplaceStr=""
-    if [[ "x${osMajorVersion}" == "x5" ]]; then
-      osReplaceStr="centos5"
-    fi
-    if [[ "x${osMajorVersion}" == "x6" ]]; then
-      osReplaceStr="centos6"
-    fi
-    if [[ "x${osReplaceStr}" != "x" ]]; then
-      sed -i -e "s/centos[0-9]/${osReplaceStr}/g" ${repoFile}
-    fi
-  fi
-  cp -f $repoFile /etc/yum.repos.d/
-fi
-
-repoFileName=`basename $repoFile`
-if [[ ! -f "/etc/yum.repos.d/${repoFileName}" ]]; then
-  echo "Error: Repo file ${repoFile} not copied over to /etc/yum.repos.d/" >&2
-  exit 3
-fi
-
-for gpgKeyFile in ${gpgKeyFiles}
-do
-  if [[ ! -f ${gpgKeyFile} ]]; then
-    echo "Error: Specified GPG key file ${gpgKeyFile} does not exist" >&2
-    exit 3
-  fi
-  echo "Copying ${gpgKeyFile} to /etc/pki/rpm-gpg/"
-  cp -f ${gpgKeyFile} /etc/pki/rpm-gpg/
-  gpgKeyFileName=`basename ${gpgKeyFile}`
-  if [[ ! -f "/etc/pki/rpm-gpg/${gpgKeyFileName}" ]]; then
-    echo "Error: GPG key file ${gpgKeyFile} not copied over to /etc/pki/rpm-gpg/" >&2
-    exit 3
-  fi
-done
-
-host=`hostname -f | tr '[:upper:]' '[:lower:]'`
-
-out=`/etc/init.d/iptables stop 1>/dev/null`
-
-#check if epel repo is installed if not try installing
-#only needed if non-local repo mode
-
-epelVer="";
-if [[ "x${osMajorVersion}" == "x5" ]]; then
-  epelVer="5-4"
-fi
-if [[ "x${osMajorVersion}" == "x6" ]]; then
-  epelVer="6-7"
-fi
-
-# Assumption that earlier stage is already doing a check on valid os types
-# so should not reach here for non-CentOS/RHEL 5/6 hosts
-epelRPMUrl="http://download.fedoraproject.org/pub/epel/${osMajorVersion}/${osArch}/epel-release-${epelVer}.noarch.rpm"
-
-echo "Using local repo setting is ${usingLocalRepo}"
-if [[ "${usingLocalRepo}" == "0" ]]; then
-  echo "Checking to see if epel needs to be installed"
-  epel_installed=`yum repolist enabled | grep epel`
-  if [[ "x$epel_installed" != "x" ]]; then
-    echo "Already Installed epel repo"
-  else
-    echo "Installing epel-release rpm from ${epelRPMUrl}"
-    mkdir -p /tmp/HDP-artifacts/
-    curl -L -f --retry 10 $epelRPMUrl -o /tmp/HDP-artifacts/epel-release-${osMajorVersion}.noarch.rpm
-    rpm -Uvh /tmp/HDP-artifacts/epel-release-${osMajorVersion}.noarch.rpm
-    #make sure epel is installed else fail
-    epel_installed=`yum repolist enabled | grep epel`
-    if [[ "x$epel_installed" == "x" ]]; then
-      echo "$host:_ERROR_:retcode:[1], CMD:[rpm -Uvh $epelRPMUrl]: OUT:[Not Installed]" >&2
-      exit 1
-    fi
-  fi
-else
-  echo "Skipping epel check+install as local repo mode is enabled"
-fi
-
-echo "Installing puppet using yum"
-out=`yum install -y hmc-agent`
-ret=$?
-if [[ "$ret" != "0" ]]; then
-  echo "$host:_ERROR_:retcode:[$ret], CMD:[$pp_cmd]: OUT:[$out]" >&2
-  exit 1
-fi
-
-#Install ruby
-out=`yum install -y ruby-devel rubygems`
-ret=$?
-if [[ "$ret" != "0" ]]; then
-  echo "$host:_ERROR_:retcode:[$ret], CMD:[$pp_cmd]: OUT:[$out]" >&2
-  exit 1
-fi
-out=`echo $master > /etc/hmc/hmc-agent.conf`
-out=`mkdir -p /etc/puppet/agent 2>&1`
-agent_auth_conf="path /run\nauth any\nallow $master\n\npath /\nauth any"
-out=`echo -e $agent_auth_conf > /etc/puppet/agent/auth.conf`
-out=`touch /etc/puppet/agent/namespaceauth.conf`
-
-out=`cp -f /etc/puppet/puppet.conf /etc/puppet/agent/ 2>&1`
-ret=$?
-if [[ "$ret" != "0" ]]; then
-  echo "$host:_ERROR_:retcode:[$ret], CMD:[$pp_cmd]: OUT:[$out]" >&2
-  exit 1
-fi
-
-#TODO clean this up for better fix. For now make sure we stop puppet agent. The issue here is we do not know if we started this puppet agent during our run or not.
-echo "Stopping puppet agent using service stop command"
-out=`service hmc-agent stop`
-ret=$?
-
-echo "Starting puppet agent for HMC"
-out=`service hmc-agent start`
-ret=$?
-if [[ "$ret" != "0" ]]; then
-  echo "$host:_ERROR_:retcode:[$ret], CMD:[$pp_cmd]: OUT:[$out]" >&2
-  exit 1
-fi
-echo "Setting chkconfig for HMC"
-out=`chkconfig --add hmc-agent`
-ret=$?
-#if [[ "$ret" != "0" ]]; then
-#  echo "$host:_ERROR_:retcode:[$ret], CMD:[$pp_cmd]: OUT:[$out]" >&2
-#  exit 1
-#fi
-exit 0

+ 0 - 35
hmc/conf/hmc.conf

@@ -1,35 +0,0 @@
-#/*
-# * Licensed to the Apache Software Foundation (ASF) under one
-# * or more contributor license agreements.  See the NOTICE file
-# * distributed with this work for additional information
-# * regarding copyright ownership.  The ASF licenses this file
-# * to you under the Apache License, Version 2.0 (the
-# * "License"); you may not use this file except in compliance
-# * with the License.  You may obtain a copy of the License at
-# *
-# *     http://www.apache.org/licenses/LICENSE-2.0
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-# */
-
-Alias /hmc "/usr/share/hmc"
-
-#<Directory "/usr/share/hmc">
-##  SSLRequireSSL
-#   Options None
-#   AllowOverride None
-#   Order allow,deny
-#   Allow from all
-##  Order deny,allow
-##  Deny from all
-##  Allow from 127.0.0.1
-#   AuthName "HMC Access"
-#   AuthType Basic
-#   AuthUserFile /etc/hmc/htpasswd.users
-#   Require valid-user
-#</Directory>
-#

+ 0 - 25
hmc/cpp/foo.sh

@@ -1,25 +0,0 @@
-#!/bin/bash 
-#
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-#
-
-sleep 100s;
-
-

+ 0 - 42
hmc/cpp/runscriptasroot.c

@@ -1,42 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-int main(int argc, char** argv)
-{
-   if (argc != 2) {
-     exit(-1);
-   }
-
-   setuid(0);
-
-   pid_t pid = fork();
-
-   if ( pid == 0 ) {
-     // execute command in child
-     return system(argv[1]);
-   }
-   return 0;
-}

+ 0 - 1271
hmc/css/app.css

@@ -1,1271 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-header, footer, aside, nav, article, section {
-  display: block;
-}
-
-html, body {
-  height:100%;
-}
-
-body { 
-  font:13px/1.231 Helvetica,Arial,sans-serif;
-  *font-size:small; 
-  margin: 0 auto;
-  min-width: 1024px;
-  font-size: 75%;
-  color: #454545;
-  overflow:auto;
-}
-
-#container {
-  min-height:100%;
-  height: auto !important;
-  height: 100%;
-  position:relative;
-}
-
-#content {
-  width:980px;
-  margin:0 auto;
-  background-color:#fff;
-  padding-bottom:90px;
-}
-
-h1 {
-  font-size: 175%; 
-  font-weight: bolder; 
-  text-align: center; 
-}
-
-footer {
-	border-top:1px solid #e5e5e5;
-	padding:30px 0;
-	background-color:#fff;
-  color:#666666;
-  bottom: 0;
-  position: absolute;
-  width: 980px;
-}
-
-footer a:link, footer a:visited {
-  color:#666666;
-  text-decoration:underline;
-}
-
-/* override bootstrap settings to make the elements shorter */
-input, .uneditable-input {
-  height:20px;
-}
-
-select {
-  width:250px;
-  background-color:#DBDBDB;
-}
-
-#blackScreenDivId, #loadingBlackScreenDivId {
-  position:fixed;
-  background-color:black;
-  opacity:0.8;
-  height:100%;
-  width:100%;
-  top:0px;
-  left:0px;
-  z-index:10;
-}
-
-#loadingImgId {
-  /*
-  margin-left: auto;
-  margin-right: auto;
-  */
-  position: fixed; 
-  left: 50%; 
-  top: 50%;
-  width: 100px;
-  height: 100px;
-  margin-top: -50px;
-  margin-left: -50px;
-  z-index:20;
-}
-
-#installationWizardDivId {
-  margin-left:auto;
-  margin-right:auto;
-  border:1px;
-  background-color:#FFF;
-  padding:20px 20px 20px;
-  width:940px;
-}
-
-#installationWizardDivId h2 {
-	margin-bottom:10px;
-}
-
-#installationWizardDivId h3 {
-	margin-bottom:10px;
-}
-
-#installationSideBarDivId {
-  display:block;
-  float:left;
-}
-
-#installationMainFormsDivId {
-  display:block;
-}
-
-#displayLogsContentDivId {
-  height: 500px;
-  width: 600px;
-  padding: 5px;
-  background-color: white;
-  overflow: auto;
-}
-
-table {
-  width:80%;
-  margin-left:auto;
-  margin-right:auto;
-  padding-left:20px;
-  font-size:1em;
-  cellspacing:10px;
-  cellpadding:10px;
-  border:1px solid #DBDBDB;
-}
-
-thead {
-  font-size:13px;
-  font-weight:bold;
-  color:white;
-  background-color:#65B642;
-  border-bottom:1px solid #7A7A7A;
-}
-
-thead tr {
-}
-
-thead tr:hover {
-  background-color:#65B642;
-}
-
-th {
-  padding:10px;
-}
-
-tr {
-  transition: background-color 0.5s cubic-bezier(.09, .99, .37, .98);
-  -moz-transition: background-color 0.5s cubic-bezier(.09, .99, .37, .98);    /* FF3.7+ */
-  -o-transition: background-color 0.5s cubic-bezier(.09, .99, .37, .98) ;      /* Opera 10.5 */
-  -webkit-transition: background-color 0.5s cubic-bezier(.09, .99, .37, .98) ; /* Saf3.2+, Chrome */
-}
-
-tr:hover {
-  background-color:#DBDBDB;
-  height:30px;
-}
-
-td {
-  padding:10px;
-}
-
-.contextualHelp {
-  margin-left:10px;
-  width:300px;
-  display:inline-block;
-  font-size:12px;
-  visibility:hidden;
-}
-
-.formElement:hover .contextualHelp {
-  visibility:visible;
-}
-
-.pageSummary {
-  min-height: 20px;
-  padding: 19px;
-  margin: 30px 0 20px 0;
-  background-color: #f5f5f5;
-  border: 1px solid #eee;
-  border: 1px solid rgba(0, 0, 0, 0.05);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-
-.pageSumary h2 {
-	margin-bottom:10px;
-}
-
-.container {
-  width:980px!important;
-  margin:0 auto;
-}
-
-#selectServicesCoreDivId label {
-	font-size:16px;
-	margin-bottom:10px;
-}
-
-#selectServicesCoreDivId div.description {
-	font-style:italic;
-	margin:0 0 20px 20px;
-}
-
-#selectServicesCoreDivId span.description {
-	font-style:italic;
-	margin:0;
-	font-size:12px;
-}
-
-.pageContent {
-	margin:40px 0 0 40px;
-}
-
-div.formElement {
-	clear:both;
-	font-size:12px;
-}
-
-.formElement input {
-  vertical-align:top; 
-}
-
-#configureClusterAdvancedCoreDivId label,
-#deployDynamicRenderDivId label,
-#deployCoreDivId label {
-	float:left;
-	width:300px;
-	text-align:right;
-	margin-right:20px;
-	padding-top:4px;
-}
-
-#deployDynamicRenderDivId input {
-	display:block!important;
-	float:left;
-}
-
-#labelForSelectAllId {
-	font-size:12px!important;
-}
-
-#configureClusterAdvancedCoreDivId input {
-  float:left;
-}
-
-input.unit, input[readonly].unit {
-	width:80px;
-}
-
-label.unit {
-  margin-top:3px;
-  margin-left:4px;
-  width:auto!important;  
-}
-
-a.btn {
-	color: #333;
-}
-
-a.btn-success {
-  color: #fff;
-}
-
-.btn-large .iconic-stop:before {
-    margin-top: -1px;
-}
-
-#yumMirrorSupportFormButtonWrapperId {
-	margin-bottom:20px;
-}
-
-#yumMirrorSupportFormFieldsId input[type=text] {
-	width:500px;
-	margin-bottom:20px;
-}
-
-div.separator {
-	margin-bottom:20px;
-}
-#selectServicesCoreDivId ul {
-	list-style:none outside none;
-}
-#masterServices {
-	margin-top:40px;
-}
-
-#masterServices select {
-	width:auto;
-	max-width:330px;
-	background-color:#fff;
-}
-#masterServices a {
-	margin-left:165px;
-}
-
-/*
-#masterServices label {
-	width:240px;
-	float:left;
-	line-height: 28px;
-    margin-right: 10px;
-    text-align: right;
-}
-*/
-#masterServices .hostInfo {
-	margin-left:10px;
-	font-size:14px;
-	font-weight:normal;
-}
-
-#masterServicesToHostsContainer {
-	margin:0 10px 40px 0;
-	width:520px;
-	float:left;
-}
-
-.masterServiceSelect {
-	margin-bottom:10px;	
-}
-.masterServiceSelect select {
-	margin-bottom:0;
-}
-
-.masterServiceSelect label {
-	font-size:14px;
-	float:left;
-	width:160px;
-	margin-right:5px;
-	line-height:30px;
-	text-align:right;
-}
-#hostsToMasterServices {
-	width:auto;
-	float:left;
-}
-.hostToMasterServices, .hostToServices, #configureClusterMountPointsDisplayDivId .formElement {
-    background-color: #F7F7F5;
-    border: 2px solid rgba(0, 0, 0, 0.25);
-    border-radius: 4px 4px 4px 4px;
-    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) inset;
-    margin: 0 0 10px;
-    min-height: 20px;
-    padding: 10px 20px;
-    width:360px;
-}
-.hostToServices {
-	width:auto;
-}
-.hostToMasterServices > h3, .hostToServices > h3 {
-	font-size:14px;
-	margin-bottom:4px!important;
-	line-height:14px;
-}
-.hostToServices > h3 {
-  font-weight:normal;
-}
-.hostToMasterServices ul, .hostToServices ul {
-	margin-left:0;
-	margin-bottom:0;
-	list-style:none;
-}
-.hostToMasterServices ul:after, .hostToServices ul:after {
-	clear:both;
-}
-.hostToMasterServices li, .hostToServices li, .masterLegend, .clientLegend {
-	float:left;
-	background-color:#65B642;
-	padding:4px 6px;
-	color:#fff;
-	margin-right:10px;
-	margin-top:6px;
-	border-radius:4px;
-	-webkit-border-radius:4px;
-	-moz-border-radius:4px;
-}
-.hostToServices li.client, .clientLegend {
-  background-color:#0088CC;
-}
-#serviceLegend {
-  float:right;
-  margin-bottom: 4px;
-}
-#clusterHostRoleMapping {
-  margin-top: 20px;
-  width: 500px;
-  margin-left: 20px;
-  float: left;
-}
-
-#clusterHostRoleMapping h2 {
-  font-size:16px;
-  float:left;
-  margin-bottom:10px;
-  font-weight:normal;
-}
-
-#clusterInfo {
-  margin-left:20px;
-}
-#clusterInfo label {
-  display: inline;
-  font-weight:bold;
-}
-/* BEGIN TOP NAV */
-.navbar {
-  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
-}
-.navbar .brand {
-    color: #666666;
-    display: block;
-    float: left;
-    font-size: 16px;
-    font-weight: normal;
-    line-height: 1;
-    margin-left: 0;
-    margin-right: 40px;
-    margin-top: 3px;
-    padding: 14px 10px;
-}
-
-.navbar-inner {
-	background: linear-gradient(#FAFAFA, #EAEAEA) repeat scroll 0 0 transparent;
-	background: -moz-linear-gradient(#FAFAFA, #EAEAEA) repeat scroll 0 0 transparent;
-	background: -webkit-linear-gradient(#FAFAFA, #EAEAEA) repeat scroll 0 0 transparent;
-	border-radius:0;
-	border:1px solid #bbb;
-	border-width:0 0 1px 0;
-}
-.navbar .nav {
-  float:none;
-  overflow:hidden;
-}
-.navbar .nav .active > a, .navbar .nav .active > a:hover {
-  background-color: #999999;
-  color: #FFFFFF;
-  text-decoration: none;
-}
-.navbar .nav > li > a {
-	border-radius:8px;
-	-webkit-border-radius: 8px;
-	-moz-border-radius: 8px;
-  color: #666666;
-  float: none;
-  font-size: 13px;
-  font-weight: bold;
-  line-height: 19px;
-  margin: 6px 10px 6px 0;
-  padding: 8px 14px;
-  text-decoration: none;
-  text-shadow: none;
-}
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #999999;
-  text-decoration: none;
-}
-.navbar .brand {
-	margin-right:40px;
-}
-.navbar #logo {
-	float:left;
-	padding-top:7px;
-	height:36px;
-}
-.navbar .nav > li.right {
-  float:right; 
-}
-/* END TOPNAV */
-/* BEGIN SUBNAV */
-#subnav a {
-  color:#666;
-  font-size:13px;
-}
-#subnav a:active, #subnav .active a {
-  color:#65B642;
-  font-size:13px;
-}
-/* END SUBNAV */
-/* BEGIN progress box styles */
-#txnProgressBox {
-  width:auto;
-  border: 1px solid rgba(0, 0, 0, 0.10);
-  border-radius: 4px 4px 4px 4px;
-  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05) inset;
-  background-color:#ffffff;
-  min-height:80px;
-}
-#txnProgressBox ul {
-  list-style-type:none;
-  width:500px;
-  margin:0;
-  padding:20px;
-  font-size:13px;
-}
-#txnProgressBox ul li {
-  margin-bottom:3px;
-  text-align:right;
-  clear:both;  
-}
-#txnProgressBox ul label {
-  width:150px;
-  float:left;
-  margin-right:8px;
-}
-#txnProgressBox ul.wrapped li {
-  margin-bottom:18px;
-  text-align:left;
-  clear:both;  
-}
-#txnProgressBox ul.wrapped li:last-child {
-  margin-bottom:0px;
-}
-#txnProgressBox ul.wrapped label {
-  width:auto;
-  float:none;
-  background:none;
-  box-shadow:none;
-  margin-bottom:2px;
-}
-#txnProgressBox ul .progress {
-  /*height:10px;*/
-  width:240px;
-}
-#txnProgressBox ul.wrapped .progress {
-  width:100%;
-}
-#txnProgressBox #buttonArea {
-  background-color:#fefefe;
-  padding:6px 20px;
-}
-#txnProgressBox ul .progress {
-  height:12px;
-  margin-top:3px;
-  margin-bottom:0;
-  float:left;
-}
-#txnProgressBox ul.wrapped .progress {
-  margin-bottom:0;
-  float:none;
-}
-#txnProgressBox label.txnProgressStatePending {
-  color:#999;
-}
-#txnProgressBox label.txnProgressStateDone {
-}
-#txnProgressBox label.txnProgressStateError {
-  color:red;
-}
-#txnProgressBox label.txnProgressStateInProgress {
-  color:#333;
-  font-weight:bold;
-}
-#txnProgressBox label.txnProgressStateWarning {
-  color:#FAA732;
-}
-#txnProgressBox .progress .bar {
-  width:0;
-}
-#txnProgressBox .progress.active .bar {
-  width:auto;
-}
-#txnProgressBox .progress.progress-success .bar {
-  width:auto;
-}
-#txnProgressBox .progress.progress-danger .bar {
-  width:auto;
-}
-#txnProgressBox .progress.progress-warning .bar {
-  width:auto;
-}
-#txnProgressBox .status {
-  margin-left:8px;
-  float:left; 
-}
-#txnProgressBox .status.txnProgressStatePending {
-  color:#999;
-}
-#txnProgressBox .status.txnProgressStateDone {
-  color:green;
-}
-#txnProgressBox .status.txnProgressStateInProgress {
-  color:#149BDF;
-  font-weight:bold;
-}
-#txnProgressBox .status.txnProgressStateError {
-  color:red;
-}
-#txnProgressBox .status.txnProgressStateWarning {
-  color:#FAA732;
-}
-#txnProgressBox #successInfoLinkId {
-  margin-left:20px;
-}
-#txnProgressHeader {
-  background-color:#f0f0f0;
-  border-bottom: 1px solid #DDDDDD;
-  box-shadow: 0 1px 0 #FFFFFF inset;
-  color:#333333;
-  font-size:18px;
-  font-weight:bold; 
-  padding:9px 15px;
-  min-width:500px;
-}
-#activeProgressBar.wrapped {
-  width:500px;
-  height:12px;
-  float:none;
-}
-#activeProgressBar {
-  margin-top:3px;
-  width:240px;
-  height:12px;
-  float:none;
-}
-.wrapped #activeProgressBarContainer {
-  height:12px;
-  float:none;
-}
-#activeProgressBarContainer {
-  height:12px;
-  float:left;
-}
-/* END progress popup styles */
-#deployAddedNodesSubmitButtonId {
-  margin-left:20px; 
-}
-/* BEGIN common2 */
-hr {
-  clear:both;
-  color: #FFF;
-}
-
-legend {
-  padding: 0.2em 0.5em;
-  color:green;
-  font-size:120%;
-  text-align:left;
-}
-
-input[readonly] {
-  width:300px;
-  /*
-    color:green;
-  */
-  box-shadow:none;
-  border:0px;
-  background-color:#F0F0E8;
-  vertical-align:top;
-}
-
-/* END common2 */
-/* BEGIN common3 */
-span.installationWizardStageNumber {
-  color: rgb(157,157,157);
-  font-size: 20px;
-  font-weight: bold;
-  text-align: center;
-  width: 100%;
-  left: 1px;
-  background-color: transparent;
-  background-image: none;
-  background-repeat: repeat;
-  background-attachment: scroll;
-  background-position: 0% 0%;
-  background-clip: border-box;
-  background-origin: padding-box;
-  background-size: auto auto;
-}
-
-#installationWizardProgressBarDivId {
-  width: 100%;
-  margin: 0px auto;
-  margin-bottom: 8px;
-}
-
-#installationWizardProgressBarListId {
-  margin:0;
-  padding:0;
-  height:50px;
-}
-
-#installationWizardProgressBarListId li {
-  display: inline-block;
-  width: auto;
-  padding: 5px;
-  margin: 2px;
-  cursor: default;
-}
-
-.installationWizardUnvisitedStage, #installationWizardProgressBarListId li.installationWizardUnvisitedStage {
-  background-color: rgb(190,190,190);
-  color: white;
-  border-radius:4px;
-  -moz-border-radius:4px;
-  -webkit-border-radius:4px;
-  padding:10px;
-}
-
-.installationWizardVisitedStage, #installationWizardProgressBarListId li.installationWizardVisitedStage {
-  background-color: grey;
-  color: #fff;
-  padding:10px;
-  font-weight:bold;
-  font-size: 12px;
-  border-radius:4px;
-  -moz-border-radius:4px;
-  -webkit-border-radius:4px;
-  cursor: pointer;
-}
-
-.installationWizardCurrentStage, #installationWizardProgressBarListId li.installationWizardCurrentStage {
-  background-color:#65B642;
-  color: white;
-  margin:4px;
-  padding:10px;
-  font-weight:bolder;
-  font-size: 14px;
-  border-radius:4px;
-  -moz-border-radius:4px;
-  -webkit-border-radius:4px;
-}
-
-.txnNoOpMsg {
-  padding: 4px;
-  font-weight: bolder;
-  font-size: 150%;
-  text-align: center;
-}
-
-.logEntry {
-  border:1px solid #B2B299 ;
-  background-color:#F0F0E8;
-  margin:30px;
-}
-
-.logEntryHeader {
-  font-weight:bold;
-  font-size:larger;
-  background-color:#B2B299;
-  color:white;
-}
-
-.logEntryBody {
-  padding:5px;
-}
-
-#txnProgressStatusDivId {
-  width: auto;
-  max-width:500px;
-  border-style: solid;
-  border-width: 2px;
-  border-radius:2px;
-  -moz-border-radius:2px;
-  -webkit-border-radius:2px;
-  padding-top: 6px;
-  padding-bottom: 6px;
-  font-size: 13px;
-  /*text-align: center;*/
-  margin-bottom:0;
-  text-align:right;
-}
-
-.formStatusBar {
-    background-color: #FCF8E3;
-    border: 1px solid #FBEED5;
-    border-radius: 4px 4px 4px 4px;
-    color: #C09853;
-    font-size:14px;
-    margin-bottom: 18px;
-    padding: 8px 20px;
-    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-
-#txnProgressCoreDivId {
-  /* Float above all else*/
-  z-index:15;
-  position:absolute;
-  top:180px;
-  left:50%;
-  margin-left:-270px;
-
-  /* Leave some space at the bootom for long progress-lists */
-  padding-bottom:100px;
-}
-
-#txnProgressStatusDivId p {
-  font-size:14px;
-  margin:0;
-  /*margin-top:10px;*/
-}
-
-#txnProgressFieldSetId {
-  width:auto;
-  background-color:white;
-  border-radius:0px 0px 15px 15px;
-}
-
-.statusOk {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-  color: #468847;
-}
-
-.statusError {
-    background-color: #F2DEDE;
-    border-color: #EED3D7;
-    color: #B94A48;
-}
-
-.statusWarning {
-  background-color: #FCF8E3;
-  border-color: #FBEED5;
-  color: #C09853;
-}
-
-/* configureServices */
-#configureClusterAdvancedCoreDivId .nav-tabs > li > a {
-  color:#0088CC;
-  outline: 0 none;
-  font-size:13px;
-}
-#configureClusterAdvancedCoreDivId .nav-tabs > .active > a, #configureClusterAdvancedCoreDivId .nav-tabs > .active > a:hover {
-  font-weight:bold;
-  color:#65B642;
-}
-#configureClusterAdvancedCoreDivId #buttonAreaDivId {
-  background-color:#f0f0f0;
-  border:1px solid #dddddd;
-  border-width:0 1px 1px 1px;
-  border-radius:0 0 4px 4px;
-}
-#configureClusterAdvancedDynamicRenderDivId #configureServicesTabs {
-  margin-top:20px;
-}
-
-#configureClusterAdvancedDynamicRenderDivId .tab-content {
-  /* height:300px; */
-  border:1px solid #dddddd;
-  border-width:0 1px 1px 1px;
-  padding:40px 0;
-}
-
-#configureClusterAdvancedFormId {
-  margin:0;
-}
-
-#configureClusterAdvancedDynamicRenderDivId .nav {
-  margin-bottom:0;
-}
-
-#configureClusterAdvancedDynamicRenderDivId .formInputErrorReason {
-  color: red;
-  display: inline-block;
-  margin-bottom: 20px;
-  margin-left: 320px;
-}
-#configureClusterAdvancedCoreDivId #buttonGroupDivId {
-  float:right;
-  padding:6px 20px;
-}
-#configureClusterAdvancedCoreDivId #backNextDivId {
-  float:left;
-  margin-right:20px;
-}
-#configureClusterAdvancedCoreDivId #configureClusterAdvancedSubmitButtonId {
-  /* width:100px; */
-  width:300px;
-}
-#configureClusterAdvancedCoreDivId .contextualHelp {
-  width:280px;
-}
-/* END configure services */
-
-
-/* Add a scrollbar only to the body of the YUI Panel, keeping the locations of
- * the Header and Footer fixed (and always visible).
- */
-#informationalPanelContainerDivId .yui3-widget-bd {
-    max-height:400px;
-    min-height:80px;
-    padding:15px;
-    overflow-x:hidden;
-    overflow-y:auto;
-}
-
-#informationalPanelContainerDivId .yui3-widget-hd {
-  background: #f0f0f0;
-  border-bottom: 1px solid #DDDDDD;
-  box-shadow: 0 1px 0 #FFFFFF inset;
-  border-radius:6px 6px 0 0;
-  padding: 9px 15px;
-  font-size: 18px;
-  line-height: 27px;
-  color:#333333;
-  font-weight:bold;
-}
-
-#informationalPanelContainerDivId .yui3-widget-ft {
-  background-color: #F5F5F5;
-  border-radius: 0 0 6px 6px;
-  border-top: 1px solid #DDDDDD;
-  box-shadow: 0 1px 0 #FFFFFF inset;
-  margin-bottom: 0;
-  padding: 14px 15px 15px;
-  text-align: right;
-}
-
-#informationalPanelContainerDivId .yui3-widget-ft .yui3-button {
-    -moz-border-bottom-colors: none;
-    -moz-border-image: none;
-    -moz-border-left-colors: none;
-    -moz-border-right-colors: none;
-    -moz-border-top-colors: none;
-    background-color: #F5F5F5;
-    background-image: -ms-linear-gradient(top, white, #E6E6E6);
-    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white),
-     to(#E6E6E6) );
-    background-image: -webkit-linear-gradient(top, white, #E6E6E6);
-    background-image: -o-linear-gradient(top, white, #E6E6E6);
-    background-image: linear-gradient(top, white, #E6E6E6);
-    background-image: -moz-linear-gradient(top, white, #E6E6E6);
-    background-repeat: repeat-x;
-    border-color: #CCCCCC #CCCCCC #B3B3B3;
-    border-radius: 4px 4px 4px 4px;
-    border-style: solid;
-    border-width: 1px;
-    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
-    color: #333333;
-    cursor: pointer;
-    display: inline-block;
-    font-size: 13px;
-    line-height: 18px;
-    margin-bottom: 0;
-    padding: 4px 10px;
-    text-align: center;
-    text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-    vertical-align: middle;
-}
-
-#informationalPanelContainerDivId .yui3-widget-ft .yui3-button:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-  /* Buttons in IE7 don't get borders, so darken on hover */
-
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -ms-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-
-#informationalPanelContainerDivId .yui3-widget-ft .yui3-button:active {
-  background-color: #e6e6e6;
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-
-#informationalPanelContainerDivId .yui3-widget-ft .okButton {
-  color: #FFFFFF;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -ms-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(top, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #51a351;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-
-#informationalPanelContainerDivId .yui3-widget-ft .okButton:hover,
-#informationalPanelContainerDivId .yui3-widget-ft .okButton:active {
-  color: #FFFFFF;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #51a351;
-  *background-color: #499249;
-}
-
-#informationalPanelContainerDivId .yui3-panel-content {
-  box-shadow:none;
-  border:none;  
-  border-radius:6px;
-}
-
-#informationalPanelContainerDivId .yui3-widget-content-expanded {
-  height:auto;
-}
-
-#informationalPanelContainerDivId .yui3-widget-mask {
-  opacity:0.7;
-}
-
-.yui3-panel:focus {
-  outline:0 none;
-}
-
-#confirmationDataPanelBodyContent {
-  font-size:13px;
-}
-
-#manageServicesDisplayDepsOnAction {
-  margin-top:30px;
-}
-
-.loadingImg {
-  display: block;
-  margin: auto;
-}
-
-#configureClusterInputContainerDivId {
-  float:left;
-  width:400px;
-  margin:20px 0 0 80px;
-}
-
-#configureClusterDisplayDivId {
-  float:left;
-  width:40%;
-  opacity: 0.7;
-  margin-left:10px;
-}
-
-#configureClusterCoreDivId #previewLinkId {
-  color:#0088CC;
-  font-size:13px; 
-}
-
-#configureClusterMountPointsDisplayDivId {
-  margin:20px; 
-}
-
-#configureClusterMountPointsDisplayDivId label {
-  font-weight:bold;
-  font-size:14px;
-}
-
-#configureClusterMountPointsDisplayDivId .formElement {
-  margin-top:20px;
-  width:auto;
-}
-
-.formInputError, input[type="text"].formInputError {
-  border-color: #F53907;
-  /*background-color: #F17879;*/
-}
-
-.formInputErrorReason {
-  display: inline-block;
-  margin-left: 10px;
-  color: red;
-}
-
-#configureClusterAdvancedDynamicRenderDivId .formInputErrorReason {
-  color: red;
-    display: inline-block;
-    margin-bottom: 20px;
-    margin-left: 320px;
-}
-/* END common3 */
-
-#selectServiceMastersSubmitButtonId {
-  clear:both;
-}
-
-/* BEGIN manageServices */
-#serviceManagementCoreDivId {
-  width: 400px;
-  margin-left:20px;
-  margin-bottom:40px;
-}
-
-.serviceManagementGroup {
-  margin-bottom:20px;
-}
-
-.serviceManagementGroup h2 {
-  font-size:16px;
-}
-
-.serviceManagementEntry {
-padding: 14px 14px;
-margin: 0 0 10px;
-list-style: none;
-background-color: #FBFBFB;
-background-image: -moz-linear-gradient(top, white, whiteSmoke);
-background-image: -ms-linear-gradient(top, white, whiteSmoke);
-background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white), to(whiteSmoke));
-background-image: -webkit-linear-gradient(top, white, whiteSmoke);
-background-image: -o-linear-gradient(top, white, whiteSmoke);
-background-image: linear-gradient(top, white, whiteSmoke);
-background-repeat: repeat-x;
-border: 1px solid #DDD;
--webkit-border-radius: 3px;
--moz-border-radius: 3px;
-border-radius: 3px;
-filter: progid:dximagetransform.microsoft.gradient(startColorstr='white', endColorstr='whiteSmoke', GradientType=0);
--webkit-box-shadow: inset 0 1px 0 white;
--moz-box-shadow: inset 0 1px 0 white;
-box-shadow: inset 0 1px 0 white;
-}
-
-.serviceManagementEntry:hover {
-}
-
-.serviceManagementEntry:hover a {
-}
-
-.serviceManagementEntryStarted {
-  color: green;
-}
-
-.serviceManagementEntryStopped {
-  color:red;
-}
-
-.serviceManagementEntryInstalled {
-  color: green;
-}
-
-.serviceManagementEntryUninstalled {
-  color:red;
-  opacity: 0.3;
-
-  /* Make links within .serviceManagementEntryUninstalled not look like links. */
-  pointer-events: none;
-  cursor: text;
-}
-
-.serviceManagementEntryNameContainer {
-  /* Reznor's
-  font-weight: bold;
-  font-size: 20px;
-  */
-  font-size: 15px;
-}
-
-a.serviceManagementEntryName {
-  display:inline-block;
-  border:0px solid black;
-  width:180px;
-  color:#333333;
- 
-/* Temporarily make links within .serviceManagementEntryName not look like links. */
-  pointer-events: none;
-  text-decoration: none;
-  cursor: text;
-}
-
-
-.serviceManagementEntryStateContainer {
-  display:inline-block;
-  font-size:15px;
-  margin-left:0px;
-  border:0px solid black;
-}
-
-.serviceManagementEntryActionsContainer {
-  float: right;
-  margin-top:-4px;
-}
-
-.serviceManagementEntryActionStart {
-  width:20px;
-  margin-right:4px;
-}
-
-.serviceManagementEntryActionStop {
-  width:20px;
-  margin-right:4px;
-}
-
-.serviceManagementEntryActionReconfigure {
-  width:20px;
-}
-
-.serviceManagementEntryActionReconfigure.disabled {
-  visibility:hidden;
-}
-
-
-#serviceManagementGlobalActionsDivId {
-  margin-left:90px;
-}
-
-ul#serviceManagementListId,
-.serviceManagementGroup ul {
-  list-style:none outside none;
-  margin:0;
-}
-/* END manageServices */
-
-#stageTabsContainer {
-
-}
-
-#stageTabs {
-  margin: 30px 0 30px 0;
-}
-
-#stageTabs li {
-  display: inline-block;
-  width: auto;
-  padding: 10px;
-  margin: 0 4px 0 0;
-  cursor: default;
-  color: white;
-  font-size: 12px;
-  border-radius: 4px;
-  -moz-border-radius: 4px;
-  -webkit-border-radius: 4px;
-}
-
-#stageTabs li.current {
-  background-color: #65B642;
-  font-weight: bolder;
-  font-size: 14px;
-}
-
-#stageTabs li.unvisited {
-  background-color: rgb(190, 190, 190);
-}
-#stageTabs li.visited {
-  background-color: grey;
-  cursor: pointer;
-}

+ 0 - 5447
hmc/css/bootstrap.css

@@ -1,5447 +0,0 @@
-/*!
- * Bootstrap v2.0.3
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- */
-.clearfix {
-  *zoom: 1;
-}
-.clearfix:before,
-.clearfix:after {
-  display: table;
-  content: "";
-}
-.clearfix:after {
-  clear: both;
-}
-.hide-text {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-.input-block-level {
-  display: block;
-  width: 100%;
-  min-height: 28px;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  -ms-box-sizing: border-box;
-  box-sizing: border-box;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-audio,
-canvas,
-video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-audio:not([controls]) {
-  display: none;
-}
-html {
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-a:hover,
-a:active {
-  outline: 0;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  max-width: 100%;
-  vertical-align: middle;
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-button,
-input,
-select,
-textarea {
-  margin: 0;
-  font-size: 100%;
-  vertical-align: middle;
-}
-button,
-input {
-  *overflow: visible;
-  line-height: normal;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-decoration,
-input[type="search"]::-webkit-search-cancel-button {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 18px;
-  color: #333333;
-  background-color: #ffffff;
-}
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-a:hover {
-  color: #005580;
-  text-decoration: underline;
-}
-.row {
-  margin-left: -20px;
-  *zoom: 1;
-}
-.row:before,
-.row:after {
-  display: table;
-  content: "";
-}
-.row:after {
-  clear: both;
-}
-[class*="span"] {
-  float: left;
-  margin-left: 20px;
-}
-.container,
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-.span12 {
-  width: 940px;
-}
-.span11 {
-  width: 860px;
-}
-.span10 {
-  width: 780px;
-}
-.span9 {
-  width: 700px;
-}
-.span8 {
-  width: 620px;
-}
-.span7 {
-  width: 540px;
-}
-.span6 {
-  width: 460px;
-}
-.span5 {
-  width: 380px;
-}
-.span4 {
-  width: 300px;
-}
-.span3 {
-  width: 220px;
-}
-.span2 {
-  width: 140px;
-}
-.span1 {
-  width: 60px;
-}
-.offset12 {
-  margin-left: 980px;
-}
-.offset11 {
-  margin-left: 900px;
-}
-.offset10 {
-  margin-left: 820px;
-}
-.offset9 {
-  margin-left: 740px;
-}
-.offset8 {
-  margin-left: 660px;
-}
-.offset7 {
-  margin-left: 580px;
-}
-.offset6 {
-  margin-left: 500px;
-}
-.offset5 {
-  margin-left: 420px;
-}
-.offset4 {
-  margin-left: 340px;
-}
-.offset3 {
-  margin-left: 260px;
-}
-.offset2 {
-  margin-left: 180px;
-}
-.offset1 {
-  margin-left: 100px;
-}
-.row-fluid {
-  width: 100%;
-  *zoom: 1;
-}
-.row-fluid:before,
-.row-fluid:after {
-  display: table;
-  content: "";
-}
-.row-fluid:after {
-  clear: both;
-}
-.row-fluid [class*="span"] {
-  display: block;
-  width: 100%;
-  min-height: 28px;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  -ms-box-sizing: border-box;
-  box-sizing: border-box;
-  float: left;
-  margin-left: 2.127659574%;
-  *margin-left: 2.0744680846382977%;
-}
-.row-fluid [class*="span"]:first-child {
-  margin-left: 0;
-}
-.row-fluid .span12 {
-  width: 99.99999998999999%;
-  *width: 99.94680850063828%;
-}
-.row-fluid .span11 {
-  width: 91.489361693%;
-  *width: 91.4361702036383%;
-}
-.row-fluid .span10 {
-  width: 82.97872339599999%;
-  *width: 82.92553190663828%;
-}
-.row-fluid .span9 {
-  width: 74.468085099%;
-  *width: 74.4148936096383%;
-}
-.row-fluid .span8 {
-  width: 65.95744680199999%;
-  *width: 65.90425531263828%;
-}
-.row-fluid .span7 {
-  width: 57.446808505%;
-  *width: 57.3936170156383%;
-}
-.row-fluid .span6 {
-  width: 48.93617020799999%;
-  *width: 48.88297871863829%;
-}
-.row-fluid .span5 {
-  width: 40.425531911%;
-  *width: 40.3723404216383%;
-}
-.row-fluid .span4 {
-  width: 31.914893614%;
-  *width: 31.8617021246383%;
-}
-.row-fluid .span3 {
-  width: 23.404255317%;
-  *width: 23.3510638276383%;
-}
-.row-fluid .span2 {
-  width: 14.89361702%;
-  *width: 14.8404255306383%;
-}
-.row-fluid .span1 {
-  width: 6.382978723%;
-  *width: 6.329787233638298%;
-}
-.container {
-  margin-right: auto;
-  margin-left: auto;
-  *zoom: 1;
-}
-.container:before,
-.container:after {
-  display: table;
-  content: "";
-}
-.container:after {
-  clear: both;
-}
-.container-fluid {
-  padding-right: 20px;
-  padding-left: 20px;
-  *zoom: 1;
-}
-.container-fluid:before,
-.container-fluid:after {
-  display: table;
-  content: "";
-}
-.container-fluid:after {
-  clear: both;
-}
-p {
-  margin: 0 0 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  line-height: 18px;
-}
-p small {
-  font-size: 11px;
-  color: #999999;
-}
-.lead {
-  margin-bottom: 18px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 27px;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 0;
-  font-family: inherit;
-  font-weight: bold;
-  color: inherit;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  color: #999999;
-}
-h1 {
-  font-size: 30px;
-  line-height: 36px;
-}
-h1 small {
-  font-size: 18px;
-}
-h2 {
-  font-size: 24px;
-  line-height: 36px;
-}
-h2 small {
-  font-size: 18px;
-}
-h3 {
-  font-size: 18px;
-  line-height: 27px;
-}
-h3 small {
-  font-size: 14px;
-}
-h4,
-h5,
-h6 {
-  line-height: 18px;
-}
-h4 {
-  font-size: 14px;
-}
-h4 small {
-  font-size: 12px;
-}
-h5 {
-  font-size: 12px;
-}
-h6 {
-  font-size: 11px;
-  color: #999999;
-  text-transform: uppercase;
-}
-.page-header {
-  padding-bottom: 17px;
-  margin: 18px 0;
-  border-bottom: 1px solid #eeeeee;
-}
-.page-header h1 {
-  line-height: 1;
-}
-ul,
-ol {
-  padding: 0;
-  margin: 0 0 9px 25px;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-ul {
-  list-style: disc;
-}
-ol {
-  list-style: decimal;
-}
-li {
-  line-height: 18px;
-}
-ul.unstyled,
-ol.unstyled {
-  margin-left: 0;
-  list-style: none;
-}
-dl {
-  margin-bottom: 18px;
-}
-dt,
-dd {
-  line-height: 18px;
-}
-dt {
-  font-weight: bold;
-  line-height: 17px;
-}
-dd {
-  margin-left: 9px;
-}
-.dl-horizontal dt {
-  float: left;
-  width: 120px;
-  clear: left;
-  text-align: right;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-.dl-horizontal dd {
-  margin-left: 130px;
-}
-hr {
-  margin: 18px 0;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-  border-bottom: 1px solid #ffffff;
-}
-strong {
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-}
-.muted {
-  color: #999999;
-}
-abbr[title] {
-  cursor: help;
-  border-bottom: 1px dotted #ddd;
-}
-abbr.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 0 0 0 15px;
-  margin: 0 0 18px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p {
-  margin-bottom: 0;
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 22.5px;
-}
-blockquote small {
-  display: block;
-  line-height: 18px;
-  color: #999999;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-blockquote.pull-right {
-  float: right;
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-}
-blockquote.pull-right p,
-blockquote.pull-right small {
-  text-align: right;
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  display: block;
-  margin-bottom: 18px;
-  font-style: normal;
-  line-height: 18px;
-}
-small {
-  font-size: 100%;
-}
-cite {
-  font-style: normal;
-}
-code,
-pre {
-  padding: 0 3px 2px;
-  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
-  font-size: 12px;
-  color: #333333;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  padding: 2px 4px;
-  color: #d14;
-  background-color: #f7f7f9;
-  border: 1px solid #e1e1e8;
-}
-pre {
-  display: block;
-  padding: 8.5px;
-  margin: 0 0 9px;
-  font-size: 12.025px;
-  line-height: 18px;
-  word-break: break-all;
-  word-wrap: break-word;
-  white-space: pre;
-  white-space: pre-wrap;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-pre.prettyprint {
-  margin-bottom: 18px;
-}
-pre code {
-  padding: 0;
-  color: inherit;
-  background-color: transparent;
-  border: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-.label,
-.badge {
-  font-size: 10.998px;
-  font-weight: bold;
-  line-height: 14px;
-  color: #ffffff;
-  vertical-align: baseline;
-  white-space: nowrap;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #999999;
-}
-.label {
-  padding: 1px 4px 2px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.badge {
-  padding: 1px 9px 2px;
-  -webkit-border-radius: 9px;
-  -moz-border-radius: 9px;
-  border-radius: 9px;
-}
-a.label:hover,
-a.badge:hover {
-  color: #ffffff;
-  text-decoration: none;
-  cursor: pointer;
-}
-.label-important,
-.badge-important {
-  background-color: #b94a48;
-}
-.label-important[href],
-.badge-important[href] {
-  background-color: #953b39;
-}
-.label-warning,
-.badge-warning {
-  background-color: #f89406;
-}
-.label-warning[href],
-.badge-warning[href] {
-  background-color: #c67605;
-}
-.label-success,
-.badge-success {
-  background-color: #468847;
-}
-.label-success[href],
-.badge-success[href] {
-  background-color: #356635;
-}
-.label-info,
-.badge-info {
-  background-color: #3a87ad;
-}
-.label-info[href],
-.badge-info[href] {
-  background-color: #2d6987;
-}
-.label-inverse,
-.badge-inverse {
-  background-color: #333333;
-}
-.label-inverse[href],
-.badge-inverse[href] {
-  background-color: #1a1a1a;
-}
-table {
-  max-width: 100%;
-  background-color: transparent;
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-.table {
-  width: 100%;
-  margin-bottom: 18px;
-}
-.table th,
-.table td {
-  padding: 8px;
-  line-height: 18px;
-  text-align: left;
-  vertical-align: top;
-  border-top: 1px solid #dddddd;
-}
-.table th {
-  font-weight: bold;
-}
-.table thead th {
-  vertical-align: bottom;
-}
-.table caption + thead tr:first-child th,
-.table caption + thead tr:first-child td,
-.table colgroup + thead tr:first-child th,
-.table colgroup + thead tr:first-child td,
-.table thead:first-child tr:first-child th,
-.table thead:first-child tr:first-child td {
-  border-top: 0;
-}
-.table tbody + tbody {
-  border-top: 2px solid #dddddd;
-}
-.table-condensed th,
-.table-condensed td {
-  padding: 4px 5px;
-}
-.table-bordered {
-  border: 1px solid #dddddd;
-  border-collapse: separate;
-  *border-collapse: collapsed;
-  border-left: 0;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.table-bordered th,
-.table-bordered td {
-  border-left: 1px solid #dddddd;
-}
-.table-bordered caption + thead tr:first-child th,
-.table-bordered caption + tbody tr:first-child th,
-.table-bordered caption + tbody tr:first-child td,
-.table-bordered colgroup + thead tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child th,
-.table-bordered colgroup + tbody tr:first-child td,
-.table-bordered thead:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child th,
-.table-bordered tbody:first-child tr:first-child td {
-  border-top: 0;
-}
-.table-bordered thead:first-child tr:first-child th:first-child,
-.table-bordered tbody:first-child tr:first-child td:first-child {
-  -webkit-border-top-left-radius: 4px;
-  border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-}
-.table-bordered thead:first-child tr:first-child th:last-child,
-.table-bordered tbody:first-child tr:first-child td:last-child {
-  -webkit-border-top-right-radius: 4px;
-  border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-}
-.table-bordered thead:last-child tr:last-child th:first-child,
-.table-bordered tbody:last-child tr:last-child td:first-child {
-  -webkit-border-radius: 0 0 0 4px;
-  -moz-border-radius: 0 0 0 4px;
-  border-radius: 0 0 0 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-}
-.table-bordered thead:last-child tr:last-child th:last-child,
-.table-bordered tbody:last-child tr:last-child td:last-child {
-  -webkit-border-bottom-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-}
-.table-striped tbody tr:nth-child(odd) td,
-.table-striped tbody tr:nth-child(odd) th {
-  background-color: #f9f9f9;
-}
-.table tbody tr:hover td,
-.table tbody tr:hover th {
-  background-color: #f5f5f5;
-}
-table .span1 {
-  float: none;
-  width: 44px;
-  margin-left: 0;
-}
-table .span2 {
-  float: none;
-  width: 124px;
-  margin-left: 0;
-}
-table .span3 {
-  float: none;
-  width: 204px;
-  margin-left: 0;
-}
-table .span4 {
-  float: none;
-  width: 284px;
-  margin-left: 0;
-}
-table .span5 {
-  float: none;
-  width: 364px;
-  margin-left: 0;
-}
-table .span6 {
-  float: none;
-  width: 444px;
-  margin-left: 0;
-}
-table .span7 {
-  float: none;
-  width: 524px;
-  margin-left: 0;
-}
-table .span8 {
-  float: none;
-  width: 604px;
-  margin-left: 0;
-}
-table .span9 {
-  float: none;
-  width: 684px;
-  margin-left: 0;
-}
-table .span10 {
-  float: none;
-  width: 764px;
-  margin-left: 0;
-}
-table .span11 {
-  float: none;
-  width: 844px;
-  margin-left: 0;
-}
-table .span12 {
-  float: none;
-  width: 924px;
-  margin-left: 0;
-}
-table .span13 {
-  float: none;
-  width: 1004px;
-  margin-left: 0;
-}
-table .span14 {
-  float: none;
-  width: 1084px;
-  margin-left: 0;
-}
-table .span15 {
-  float: none;
-  width: 1164px;
-  margin-left: 0;
-}
-table .span16 {
-  float: none;
-  width: 1244px;
-  margin-left: 0;
-}
-table .span17 {
-  float: none;
-  width: 1324px;
-  margin-left: 0;
-}
-table .span18 {
-  float: none;
-  width: 1404px;
-  margin-left: 0;
-}
-table .span19 {
-  float: none;
-  width: 1484px;
-  margin-left: 0;
-}
-table .span20 {
-  float: none;
-  width: 1564px;
-  margin-left: 0;
-}
-table .span21 {
-  float: none;
-  width: 1644px;
-  margin-left: 0;
-}
-table .span22 {
-  float: none;
-  width: 1724px;
-  margin-left: 0;
-}
-table .span23 {
-  float: none;
-  width: 1804px;
-  margin-left: 0;
-}
-table .span24 {
-  float: none;
-  width: 1884px;
-  margin-left: 0;
-}
-form {
-  margin: 0 0 18px;
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 27px;
-  font-size: 19.5px;
-  line-height: 36px;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #eee;
-}
-legend small {
-  font-size: 13.5px;
-  color: #999999;
-}
-label,
-input,
-button,
-select,
-textarea {
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 18px;
-}
-input,
-button,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-}
-label {
-  display: block;
-  margin-bottom: 5px;
-  color: #333333;
-}
-input,
-textarea,
-select,
-.uneditable-input {
-  display: inline-block;
-  width: 210px;
-  height: 28px;
-  padding: 4px;
-  margin-bottom: 9px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #cccccc;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.uneditable-textarea {
-  width: auto;
-  height: auto;
-}
-label input,
-label textarea,
-label select {
-  display: block;
-}
-input[type="image"],
-input[type="checkbox"],
-input[type="radio"] {
-  width: auto;
-  height: auto;
-  padding: 0;
-  margin: 3px 0;
-  *margin-top: 0;
-  /* IE7 */
-
-  line-height: normal;
-  cursor: pointer;
-  background-color: transparent;
-  border: 0 \9;
-  /* IE9 and down */
-
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-input[type="image"] {
-  border: 0;
-}
-input[type="file"] {
-  width: auto;
-  padding: initial;
-  line-height: initial;
-  background-color: #ffffff;
-  background-color: initial;
-  border: initial;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  width: auto;
-  height: auto;
-}
-select,
-input[type="file"] {
-  height: 28px;
-  /* In IE7, the height of the select element cannot be changed by height, only font-size */
-
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-  line-height: 28px;
-}
-input[type="file"] {
-  line-height: 18px \9;
-}
-select {
-  width: 220px;
-  background-color: #ffffff;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-input[type="image"] {
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-textarea {
-  height: auto;
-}
-input[type="hidden"] {
-  display: none;
-}
-.radio,
-.checkbox {
-  min-height: 18px;
-  padding-left: 18px;
-}
-.radio input[type="radio"],
-.checkbox input[type="checkbox"] {
-  float: left;
-  margin-left: -18px;
-}
-.controls > .radio:first-child,
-.controls > .checkbox:first-child {
-  padding-top: 5px;
-}
-.radio.inline,
-.checkbox.inline {
-  display: inline-block;
-  padding-top: 5px;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.radio.inline + .radio.inline,
-.checkbox.inline + .checkbox.inline {
-  margin-left: 10px;
-}
-input,
-textarea {
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -o-transition: border linear 0.2s, box-shadow linear 0.2s;
-  transition: border linear 0.2s, box-shadow linear 0.2s;
-}
-input:focus,
-textarea:focus {
-  border-color: rgba(82, 168, 236, 0.8);
-  outline: 0;
-  outline: thin dotted \9;
-  /* IE6-9 */
-
-  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-}
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus,
-select:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.input-mini {
-  width: 60px;
-}
-.input-small {
-  width: 90px;
-}
-.input-medium {
-  width: 150px;
-}
-.input-large {
-  width: 210px;
-}
-.input-xlarge {
-  width: 270px;
-}
-.input-xxlarge {
-  width: 530px;
-}
-input[class*="span"],
-select[class*="span"],
-textarea[class*="span"],
-.uneditable-input[class*="span"],
-.row-fluid input[class*="span"],
-.row-fluid select[class*="span"],
-.row-fluid textarea[class*="span"],
-.row-fluid .uneditable-input[class*="span"] {
-  float: none;
-  margin-left: 0;
-}
-input,
-textarea,
-.uneditable-input {
-  margin-left: 0;
-}
-input.span12, textarea.span12, .uneditable-input.span12 {
-  width: 930px;
-}
-input.span11, textarea.span11, .uneditable-input.span11 {
-  width: 850px;
-}
-input.span10, textarea.span10, .uneditable-input.span10 {
-  width: 770px;
-}
-input.span9, textarea.span9, .uneditable-input.span9 {
-  width: 690px;
-}
-input.span8, textarea.span8, .uneditable-input.span8 {
-  width: 610px;
-}
-input.span7, textarea.span7, .uneditable-input.span7 {
-  width: 530px;
-}
-input.span6, textarea.span6, .uneditable-input.span6 {
-  width: 450px;
-}
-input.span5, textarea.span5, .uneditable-input.span5 {
-  width: 370px;
-}
-input.span4, textarea.span4, .uneditable-input.span4 {
-  width: 290px;
-}
-input.span3, textarea.span3, .uneditable-input.span3 {
-  width: 210px;
-}
-input.span2, textarea.span2, .uneditable-input.span2 {
-  width: 130px;
-}
-input.span1, textarea.span1, .uneditable-input.span1 {
-  width: 50px;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  cursor: not-allowed;
-  background-color: #eeeeee;
-  border-color: #ddd;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"][readonly],
-input[type="checkbox"][readonly] {
-  background-color: transparent;
-}
-.control-group.warning > label,
-.control-group.warning .help-block,
-.control-group.warning .help-inline {
-  color: #c09853;
-}
-.control-group.warning input,
-.control-group.warning select,
-.control-group.warning textarea {
-  color: #c09853;
-  border-color: #c09853;
-}
-.control-group.warning input:focus,
-.control-group.warning select:focus,
-.control-group.warning textarea:focus {
-  border-color: #a47e3c;
-  -webkit-box-shadow: 0 0 6px #dbc59e;
-  -moz-box-shadow: 0 0 6px #dbc59e;
-  box-shadow: 0 0 6px #dbc59e;
-}
-.control-group.warning .input-prepend .add-on,
-.control-group.warning .input-append .add-on {
-  color: #c09853;
-  background-color: #fcf8e3;
-  border-color: #c09853;
-}
-.control-group.error > label,
-.control-group.error .help-block,
-.control-group.error .help-inline {
-  color: #b94a48;
-}
-.control-group.error input,
-.control-group.error select,
-.control-group.error textarea {
-  color: #b94a48;
-  border-color: #b94a48;
-}
-.control-group.error input:focus,
-.control-group.error select:focus,
-.control-group.error textarea:focus {
-  border-color: #953b39;
-  -webkit-box-shadow: 0 0 6px #d59392;
-  -moz-box-shadow: 0 0 6px #d59392;
-  box-shadow: 0 0 6px #d59392;
-}
-.control-group.error .input-prepend .add-on,
-.control-group.error .input-append .add-on {
-  color: #b94a48;
-  background-color: #f2dede;
-  border-color: #b94a48;
-}
-.control-group.success > label,
-.control-group.success .help-block,
-.control-group.success .help-inline {
-  color: #468847;
-}
-.control-group.success input,
-.control-group.success select,
-.control-group.success textarea {
-  color: #468847;
-  border-color: #468847;
-}
-.control-group.success input:focus,
-.control-group.success select:focus,
-.control-group.success textarea:focus {
-  border-color: #356635;
-  -webkit-box-shadow: 0 0 6px #7aba7b;
-  -moz-box-shadow: 0 0 6px #7aba7b;
-  box-shadow: 0 0 6px #7aba7b;
-}
-.control-group.success .input-prepend .add-on,
-.control-group.success .input-append .add-on {
-  color: #468847;
-  background-color: #dff0d8;
-  border-color: #468847;
-}
-input:focus:required:invalid,
-textarea:focus:required:invalid,
-select:focus:required:invalid {
-  color: #b94a48;
-  border-color: #ee5f5b;
-}
-input:focus:required:invalid:focus,
-textarea:focus:required:invalid:focus,
-select:focus:required:invalid:focus {
-  border-color: #e9322d;
-  -webkit-box-shadow: 0 0 6px #f8b9b7;
-  -moz-box-shadow: 0 0 6px #f8b9b7;
-  box-shadow: 0 0 6px #f8b9b7;
-}
-.form-actions {
-  padding: 17px 20px 18px;
-  margin-top: 18px;
-  margin-bottom: 18px;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  *zoom: 1;
-}
-.form-actions:before,
-.form-actions:after {
-  display: table;
-  content: "";
-}
-.form-actions:after {
-  clear: both;
-}
-.uneditable-input {
-  overflow: hidden;
-  white-space: nowrap;
-  cursor: not-allowed;
-  background-color: #ffffff;
-  border-color: #eee;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-}
-:-moz-placeholder {
-  color: #999999;
-}
-::-webkit-input-placeholder {
-  color: #999999;
-}
-.help-block,
-.help-inline {
-  color: #555555;
-}
-.help-block {
-  display: block;
-  margin-bottom: 9px;
-}
-.help-inline {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  vertical-align: middle;
-  padding-left: 5px;
-}
-.input-prepend,
-.input-append {
-  margin-bottom: 5px;
-}
-.input-prepend input,
-.input-append input,
-.input-prepend select,
-.input-append select,
-.input-prepend .uneditable-input,
-.input-append .uneditable-input {
-  position: relative;
-  margin-bottom: 0;
-  *margin-left: 0;
-  vertical-align: middle;
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-prepend input:focus,
-.input-append input:focus,
-.input-prepend select:focus,
-.input-append select:focus,
-.input-prepend .uneditable-input:focus,
-.input-append .uneditable-input:focus {
-  z-index: 2;
-}
-.input-prepend .uneditable-input,
-.input-append .uneditable-input {
-  border-left-color: #ccc;
-}
-.input-prepend .add-on,
-.input-append .add-on {
-  display: inline-block;
-  width: auto;
-  height: 18px;
-  min-width: 16px;
-  padding: 4px 5px;
-  font-weight: normal;
-  line-height: 18px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  vertical-align: middle;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-}
-.input-prepend .add-on,
-.input-append .add-on,
-.input-prepend .btn,
-.input-append .btn {
-  margin-left: -1px;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-prepend .active,
-.input-append .active {
-  background-color: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on,
-.input-prepend .btn {
-  margin-right: -1px;
-}
-.input-prepend .add-on:first-child,
-.input-prepend .btn:first-child {
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-append input,
-.input-append select,
-.input-append .uneditable-input {
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-append .uneditable-input {
-  border-right-color: #ccc;
-  border-left-color: #eee;
-}
-.input-append .add-on:last-child,
-.input-append .btn:last-child {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-prepend.input-append input,
-.input-prepend.input-append select,
-.input-prepend.input-append .uneditable-input {
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.input-prepend.input-append .add-on:first-child,
-.input-prepend.input-append .btn:first-child {
-  margin-right: -1px;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-prepend.input-append .add-on:last-child,
-.input-prepend.input-append .btn:last-child {
-  margin-left: -1px;
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.search-query {
-  padding-right: 14px;
-  padding-right: 4px \9;
-  padding-left: 14px;
-  padding-left: 4px \9;
-  /* IE7-8 doesn't have border-radius, so don't indent the padding */
-
-  margin-bottom: 0;
-  -webkit-border-radius: 14px;
-  -moz-border-radius: 14px;
-  border-radius: 14px;
-}
-.form-search input,
-.form-inline input,
-.form-horizontal input,
-.form-search textarea,
-.form-inline textarea,
-.form-horizontal textarea,
-.form-search select,
-.form-inline select,
-.form-horizontal select,
-.form-search .help-inline,
-.form-inline .help-inline,
-.form-horizontal .help-inline,
-.form-search .uneditable-input,
-.form-inline .uneditable-input,
-.form-horizontal .uneditable-input,
-.form-search .input-prepend,
-.form-inline .input-prepend,
-.form-horizontal .input-prepend,
-.form-search .input-append,
-.form-inline .input-append,
-.form-horizontal .input-append {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-bottom: 0;
-}
-.form-search .hide,
-.form-inline .hide,
-.form-horizontal .hide {
-  display: none;
-}
-.form-search label,
-.form-inline label {
-  display: inline-block;
-}
-.form-search .input-append,
-.form-inline .input-append,
-.form-search .input-prepend,
-.form-inline .input-prepend {
-  margin-bottom: 0;
-}
-.form-search .radio,
-.form-search .checkbox,
-.form-inline .radio,
-.form-inline .checkbox {
-  padding-left: 0;
-  margin-bottom: 0;
-  vertical-align: middle;
-}
-.form-search .radio input[type="radio"],
-.form-search .checkbox input[type="checkbox"],
-.form-inline .radio input[type="radio"],
-.form-inline .checkbox input[type="checkbox"] {
-  float: left;
-  margin-right: 3px;
-  margin-left: 0;
-}
-.control-group {
-  margin-bottom: 9px;
-}
-legend + .control-group {
-  margin-top: 18px;
-  -webkit-margin-top-collapse: separate;
-}
-.form-horizontal .control-group {
-  margin-bottom: 18px;
-  *zoom: 1;
-}
-.form-horizontal .control-group:before,
-.form-horizontal .control-group:after {
-  display: table;
-  content: "";
-}
-.form-horizontal .control-group:after {
-  clear: both;
-}
-.form-horizontal .control-label {
-  float: left;
-  width: 140px;
-  padding-top: 5px;
-  text-align: right;
-}
-.form-horizontal .controls {
-  *display: inline-block;
-  *padding-left: 20px;
-  margin-left: 160px;
-  *margin-left: 0;
-}
-.form-horizontal .controls:first-child {
-  *padding-left: 160px;
-}
-.form-horizontal .help-block {
-  margin-top: 9px;
-  margin-bottom: 0;
-}
-.form-horizontal .form-actions {
-  padding-left: 160px;
-}
-.btn {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  padding: 4px 10px 4px;
-  margin-bottom: 0;
-  font-size: 13px;
-  line-height: 18px;
-  *line-height: 20px;
-  color: #333333;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  vertical-align: middle;
-  cursor: pointer;
-  background-color: #f5f5f5;
-  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: linear-gradient(top, #ffffff, #e6e6e6);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
-  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #e6e6e6;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  border: 1px solid #cccccc;
-  *border: 0;
-  border-bottom-color: #b3b3b3;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  *margin-left: .3em;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn:hover,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-}
-.btn:active,
-.btn.active {
-  background-color: #cccccc \9;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-  /* Buttons in IE7 don't get borders, so darken on hover */
-
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -ms-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active,
-.btn:active {
-  background-color: #e6e6e6;
-  background-color: #d9d9d9 \9;
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-color: #e6e6e6;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 9px 14px;
-  font-size: 15px;
-  line-height: normal;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-large [class^="icon-"] {
-  margin-top: 1px;
-}
-.btn-small {
-  padding: 5px 9px;
-  font-size: 11px;
-  line-height: 16px;
-}
-.btn-small [class^="icon-"] {
-  margin-top: -1px;
-}
-.btn-mini {
-  padding: 2px 6px;
-  font-size: 11px;
-  line-height: 14px;
-}
-.btn-primary,
-.btn-primary:hover,
-.btn-warning,
-.btn-warning:hover,
-.btn-danger,
-.btn-danger:hover,
-.btn-success,
-.btn-success:hover,
-.btn-info,
-.btn-info:hover,
-.btn-inverse,
-.btn-inverse:hover {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn {
-  border-color: #ccc;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-}
-.btn-primary {
-  background-color: #0074cc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0055cc);
-  background-image: -ms-linear-gradient(top, #0088cc, #0055cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0055cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0055cc);
-  background-image: linear-gradient(top, #0088cc, #0055cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0);
-  border-color: #0055cc #0055cc #003580;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #0055cc;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  background-color: #0055cc;
-  *background-color: #004ab3;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #004099 \9;
-}
-.btn-warning {
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(top, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #f89406;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  background-color: #f89406;
-  *background-color: #df8505;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(top, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #bd362f;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  background-color: #bd362f;
-  *background-color: #a9302a;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -ms-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(top, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #51a351;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  background-color: #51a351;
-  *background-color: #499249;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(top, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #2f96b4;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  background-color: #2f96b4;
-  *background-color: #2a85a0;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-.btn-inverse {
-  background-color: #414141;
-  background-image: -moz-linear-gradient(top, #555555, #222222);
-  background-image: -ms-linear-gradient(top, #555555, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));
-  background-image: -webkit-linear-gradient(top, #555555, #222222);
-  background-image: -o-linear-gradient(top, #555555, #222222);
-  background-image: linear-gradient(top, #555555, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0);
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #222222;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-inverse:hover,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  background-color: #222222;
-  *background-color: #151515;
-}
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #080808 \9;
-}
-button.btn,
-input[type="submit"].btn {
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-button.btn::-moz-focus-inner,
-input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.btn-large,
-input[type="submit"].btn.btn-large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.btn-small,
-input[type="submit"].btn.btn-small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-button.btn.btn-mini,
-input[type="submit"].btn.btn-mini {
-  *padding-top: 1px;
-  *padding-bottom: 1px;
-}
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 14px;
-  height: 14px;
-  *margin-right: .3em;
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("../images/glyphicons-halflings.png");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-}
-[class^="icon-"]:last-child,
-[class*=" icon-"]:last-child {
-  *margin-left: 0;
-}
-.icon-white {
-  background-image: url("../images/glyphicons-halflings-white.png");
-}
-.icon-glass {
-  background-position: 0      0;
-}
-.icon-music {
-  background-position: -24px 0;
-}
-.icon-search {
-  background-position: -48px 0;
-}
-.icon-envelope {
-  background-position: -72px 0;
-}
-.icon-heart {
-  background-position: -96px 0;
-}
-.icon-star {
-  background-position: -120px 0;
-}
-.icon-star-empty {
-  background-position: -144px 0;
-}
-.icon-user {
-  background-position: -168px 0;
-}
-.icon-film {
-  background-position: -192px 0;
-}
-.icon-th-large {
-  background-position: -216px 0;
-}
-.icon-th {
-  background-position: -240px 0;
-}
-.icon-th-list {
-  background-position: -264px 0;
-}
-.icon-ok {
-  background-position: -288px 0;
-}
-.icon-remove {
-  background-position: -312px 0;
-}
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-.icon-off {
-  background-position: -384px 0;
-}
-.icon-signal {
-  background-position: -408px 0;
-}
-.icon-cog {
-  background-position: -432px 0;
-}
-.icon-trash {
-  background-position: -456px 0;
-}
-.icon-home {
-  background-position: 0 -24px;
-}
-.icon-file {
-  background-position: -24px -24px;
-}
-.icon-time {
-  background-position: -48px -24px;
-}
-.icon-road {
-  background-position: -72px -24px;
-}
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-.icon-download {
-  background-position: -120px -24px;
-}
-.icon-upload {
-  background-position: -144px -24px;
-}
-.icon-inbox {
-  background-position: -168px -24px;
-}
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-.icon-repeat {
-  background-position: -216px -24px;
-}
-.icon-refresh {
-  background-position: -240px -24px;
-}
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-.icon-lock {
-  background-position: -287px -24px;
-}
-.icon-flag {
-  background-position: -312px -24px;
-}
-.icon-headphones {
-  background-position: -336px -24px;
-}
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-.icon-barcode {
-  background-position: -456px -24px;
-}
-.icon-tag {
-  background-position: 0 -48px;
-}
-.icon-tags {
-  background-position: -25px -48px;
-}
-.icon-book {
-  background-position: -48px -48px;
-}
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-.icon-print {
-  background-position: -96px -48px;
-}
-.icon-camera {
-  background-position: -120px -48px;
-}
-.icon-font {
-  background-position: -144px -48px;
-}
-.icon-bold {
-  background-position: -167px -48px;
-}
-.icon-italic {
-  background-position: -192px -48px;
-}
-.icon-text-height {
-  background-position: -216px -48px;
-}
-.icon-text-width {
-  background-position: -240px -48px;
-}
-.icon-align-left {
-  background-position: -264px -48px;
-}
-.icon-align-center {
-  background-position: -288px -48px;
-}
-.icon-align-right {
-  background-position: -312px -48px;
-}
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-.icon-list {
-  background-position: -360px -48px;
-}
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-.icon-picture {
-  background-position: -456px -48px;
-}
-.icon-pencil {
-  background-position: 0 -72px;
-}
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-.icon-adjust {
-  background-position: -48px -72px;
-}
-.icon-tint {
-  background-position: -72px -72px;
-}
-.icon-edit {
-  background-position: -96px -72px;
-}
-.icon-share {
-  background-position: -120px -72px;
-}
-.icon-check {
-  background-position: -144px -72px;
-}
-.icon-move {
-  background-position: -168px -72px;
-}
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-.icon-backward {
-  background-position: -240px -72px;
-}
-.icon-play {
-  background-position: -264px -72px;
-}
-.icon-pause {
-  background-position: -288px -72px;
-}
-.icon-stop {
-  background-position: -312px -72px;
-}
-.icon-forward {
-  background-position: -336px -72px;
-}
-.icon-fast-forward {
-  background-position: -360px -72px;
-}
-.icon-step-forward {
-  background-position: -384px -72px;
-}
-.icon-eject {
-  background-position: -408px -72px;
-}
-.icon-chevron-left {
-  background-position: -432px -72px;
-}
-.icon-chevron-right {
-  background-position: -456px -72px;
-}
-.icon-plus-sign {
-  background-position: 0 -96px;
-}
-.icon-minus-sign {
-  background-position: -24px -96px;
-}
-.icon-remove-sign {
-  background-position: -48px -96px;
-}
-.icon-ok-sign {
-  background-position: -72px -96px;
-}
-.icon-question-sign {
-  background-position: -96px -96px;
-}
-.icon-info-sign {
-  background-position: -120px -96px;
-}
-.icon-screenshot {
-  background-position: -144px -96px;
-}
-.icon-remove-circle {
-  background-position: -168px -96px;
-}
-.icon-ok-circle {
-  background-position: -192px -96px;
-}
-.icon-ban-circle {
-  background-position: -216px -96px;
-}
-.icon-arrow-left {
-  background-position: -240px -96px;
-}
-.icon-arrow-right {
-  background-position: -264px -96px;
-}
-.icon-arrow-up {
-  background-position: -289px -96px;
-}
-.icon-arrow-down {
-  background-position: -312px -96px;
-}
-.icon-share-alt {
-  background-position: -336px -96px;
-}
-.icon-resize-full {
-  background-position: -360px -96px;
-}
-.icon-resize-small {
-  background-position: -384px -96px;
-}
-.icon-plus {
-  background-position: -408px -96px;
-}
-.icon-minus {
-  background-position: -433px -96px;
-}
-.icon-asterisk {
-  background-position: -456px -96px;
-}
-.icon-exclamation-sign {
-  background-position: 0 -120px;
-}
-.icon-gift {
-  background-position: -24px -120px;
-}
-.icon-leaf {
-  background-position: -48px -120px;
-}
-.icon-fire {
-  background-position: -72px -120px;
-}
-.icon-eye-open {
-  background-position: -96px -120px;
-}
-.icon-eye-close {
-  background-position: -120px -120px;
-}
-.icon-warning-sign {
-  background-position: -144px -120px;
-}
-.icon-plane {
-  background-position: -168px -120px;
-}
-.icon-calendar {
-  background-position: -192px -120px;
-}
-.icon-random {
-  background-position: -216px -120px;
-}
-.icon-comment {
-  background-position: -240px -120px;
-}
-.icon-magnet {
-  background-position: -264px -120px;
-}
-.icon-chevron-up {
-  background-position: -288px -120px;
-}
-.icon-chevron-down {
-  background-position: -313px -119px;
-}
-.icon-retweet {
-  background-position: -336px -120px;
-}
-.icon-shopping-cart {
-  background-position: -360px -120px;
-}
-.icon-folder-close {
-  background-position: -384px -120px;
-}
-.icon-folder-open {
-  background-position: -408px -120px;
-}
-.icon-resize-vertical {
-  background-position: -432px -119px;
-}
-.icon-resize-horizontal {
-  background-position: -456px -118px;
-}
-.icon-hdd {
-  background-position: 0 -144px;
-}
-.icon-bullhorn {
-  background-position: -24px -144px;
-}
-.icon-bell {
-  background-position: -48px -144px;
-}
-.icon-certificate {
-  background-position: -72px -144px;
-}
-.icon-thumbs-up {
-  background-position: -96px -144px;
-}
-.icon-thumbs-down {
-  background-position: -120px -144px;
-}
-.icon-hand-right {
-  background-position: -144px -144px;
-}
-.icon-hand-left {
-  background-position: -168px -144px;
-}
-.icon-hand-up {
-  background-position: -192px -144px;
-}
-.icon-hand-down {
-  background-position: -216px -144px;
-}
-.icon-circle-arrow-right {
-  background-position: -240px -144px;
-}
-.icon-circle-arrow-left {
-  background-position: -264px -144px;
-}
-.icon-circle-arrow-up {
-  background-position: -288px -144px;
-}
-.icon-circle-arrow-down {
-  background-position: -312px -144px;
-}
-.icon-globe {
-  background-position: -336px -144px;
-}
-.icon-wrench {
-  background-position: -360px -144px;
-}
-.icon-tasks {
-  background-position: -384px -144px;
-}
-.icon-filter {
-  background-position: -408px -144px;
-}
-.icon-briefcase {
-  background-position: -432px -144px;
-}
-.icon-fullscreen {
-  background-position: -456px -144px;
-}
-.btn-group {
-  position: relative;
-  *zoom: 1;
-  *margin-left: .3em;
-}
-.btn-group:before,
-.btn-group:after {
-  display: table;
-  content: "";
-}
-.btn-group:after {
-  clear: both;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  margin-top: 9px;
-  margin-bottom: 9px;
-}
-.btn-toolbar .btn-group {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group > .btn {
-  position: relative;
-  float: left;
-  margin-left: -1px;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group > .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group > .btn:last-child,
-.btn-group > .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group > .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group > .btn.large:last-child,
-.btn-group > .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group > .btn:active,
-.btn-group > .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group > .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-  *padding-top: 4px;
-  *padding-bottom: 4px;
-}
-.btn-group > .btn-mini.dropdown-toggle {
-  padding-left: 5px;
-  padding-right: 5px;
-}
-.btn-group > .btn-small.dropdown-toggle {
-  *padding-top: 4px;
-  *padding-bottom: 4px;
-}
-.btn-group > .btn-large.dropdown-toggle {
-  padding-left: 12px;
-  padding-right: 12px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-}
-.btn-group.open .btn.dropdown-toggle {
-  background-color: #e6e6e6;
-}
-.btn-group.open .btn-primary.dropdown-toggle {
-  background-color: #0055cc;
-}
-.btn-group.open .btn-warning.dropdown-toggle {
-  background-color: #f89406;
-}
-.btn-group.open .btn-danger.dropdown-toggle {
-  background-color: #bd362f;
-}
-.btn-group.open .btn-success.dropdown-toggle {
-  background-color: #51a351;
-}
-.btn-group.open .btn-info.dropdown-toggle {
-  background-color: #2f96b4;
-}
-.btn-group.open .btn-inverse.dropdown-toggle {
-  background-color: #222222;
-}
-.btn .caret {
-  margin-top: 7px;
-  margin-left: 0;
-}
-.btn:hover .caret,
-.open.btn-group .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.btn-mini .caret {
-  margin-top: 5px;
-}
-.btn-small .caret {
-  margin-top: 6px;
-}
-.btn-large .caret {
-  margin-top: 6px;
-  border-left-width: 5px;
-  border-right-width: 5px;
-  border-top-width: 5px;
-}
-.dropup .btn-large .caret {
-  border-bottom: 5px solid #000000;
-  border-top: 0;
-}
-.btn-primary .caret,
-.btn-warning .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret,
-.btn-inverse .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 0.75;
-  filter: alpha(opacity=75);
-}
-.nav {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav > .pull-right {
-  float: right;
-}
-.nav .nav-header {
-  display: block;
-  padding: 3px 15px;
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #999999;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  text-transform: uppercase;
-}
-.nav li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list {
-  padding-left: 15px;
-  padding-right: 15px;
-  margin-bottom: 0;
-}
-.nav-list > li > a,
-.nav-list .nav-header {
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list > li > a {
-  padding: 3px 15px;
-}
-.nav-list > .active > a,
-.nav-list > .active > a:hover {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-.nav-list [class^="icon-"] {
-  margin-right: 2px;
-}
-.nav-list .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 8px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.nav-tabs,
-.nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-}
-.nav-tabs:after,
-.nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li,
-.nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a,
-.nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  line-height: 18px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a,
-.nav-tabs > .active > a:hover {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills > .active > a,
-.nav-pills > .active > a:hover {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu {
-  -webkit-border-radius: 0 0 5px 5px;
-  -moz-border-radius: 0 0 5px 5px;
-  border-radius: 0 0 5px 5px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.nav-tabs .dropdown-toggle .caret,
-.nav-pills .dropdown-toggle .caret {
-  border-top-color: #0088cc;
-  border-bottom-color: #0088cc;
-  margin-top: 6px;
-}
-.nav-tabs .dropdown-toggle:hover .caret,
-.nav-pills .dropdown-toggle:hover .caret {
-  border-top-color: #005580;
-  border-bottom-color: #005580;
-}
-.nav-tabs .active .dropdown-toggle .caret,
-.nav-pills .active .dropdown-toggle .caret {
-  border-top-color: #333333;
-  border-bottom-color: #333333;
-}
-.nav > .dropdown.active > a:hover {
-  color: #000000;
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle,
-.nav-pills .open .dropdown-toggle,
-.nav > li.dropdown.open.active > a:hover {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav li.dropdown.open .caret,
-.nav li.dropdown.open.active .caret,
-.nav li.dropdown.open a:hover .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.tabs-stacked .open > a:hover {
-  border-color: #999999;
-}
-.tabbable {
-  *zoom: 1;
-}
-.tabbable:before,
-.tabbable:after {
-  display: table;
-  content: "";
-}
-.tabbable:after {
-  clear: both;
-}
-.tab-content {
-  overflow: auto;
-}
-.tabs-below > .nav-tabs,
-.tabs-right > .nav-tabs,
-.tabs-left > .nav-tabs {
-  border-bottom: 0;
-}
-.tab-content > .tab-pane,
-.pill-content > .pill-pane {
-  display: none;
-}
-.tab-content > .active,
-.pill-content > .active {
-  display: block;
-}
-.tabs-below > .nav-tabs {
-  border-top: 1px solid #ddd;
-}
-.tabs-below > .nav-tabs > li {
-  margin-top: -1px;
-  margin-bottom: 0;
-}
-.tabs-below > .nav-tabs > li > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.tabs-below > .nav-tabs > li > a:hover {
-  border-bottom-color: transparent;
-  border-top-color: #ddd;
-}
-.tabs-below > .nav-tabs > .active > a,
-.tabs-below > .nav-tabs > .active > a:hover {
-  border-color: transparent #ddd #ddd #ddd;
-}
-.tabs-left > .nav-tabs > li,
-.tabs-right > .nav-tabs > li {
-  float: none;
-}
-.tabs-left > .nav-tabs > li > a,
-.tabs-right > .nav-tabs > li > a {
-  min-width: 74px;
-  margin-right: 0;
-  margin-bottom: 3px;
-}
-.tabs-left > .nav-tabs {
-  float: left;
-  margin-right: 19px;
-  border-right: 1px solid #ddd;
-}
-.tabs-left > .nav-tabs > li > a {
-  margin-right: -1px;
-  -webkit-border-radius: 4px 0 0 4px;
-  -moz-border-radius: 4px 0 0 4px;
-  border-radius: 4px 0 0 4px;
-}
-.tabs-left > .nav-tabs > li > a:hover {
-  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
-}
-.tabs-left > .nav-tabs .active > a,
-.tabs-left > .nav-tabs .active > a:hover {
-  border-color: #ddd transparent #ddd #ddd;
-  *border-right-color: #ffffff;
-}
-.tabs-right > .nav-tabs {
-  float: right;
-  margin-left: 19px;
-  border-left: 1px solid #ddd;
-}
-.tabs-right > .nav-tabs > li > a {
-  margin-left: -1px;
-  -webkit-border-radius: 0 4px 4px 0;
-  -moz-border-radius: 0 4px 4px 0;
-  border-radius: 0 4px 4px 0;
-}
-.tabs-right > .nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
-}
-.tabs-right > .nav-tabs .active > a,
-.tabs-right > .nav-tabs .active > a:hover {
-  border-color: #ddd #ddd #ddd transparent;
-  *border-left-color: #ffffff;
-}
-.navbar {
-  *position: relative;
-  *z-index: 2;
-  overflow: visible;
-  margin-bottom: 18px;
-}
-.navbar-inner {
-  min-height: 40px;
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #2c2c2c;
-  background-image: -moz-linear-gradient(top, #333333, #222222);
-  background-image: -ms-linear-gradient(top, #333333, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
-  background-image: -webkit-linear-gradient(top, #333333, #222222);
-  background-image: -o-linear-gradient(top, #333333, #222222);
-  background-image: linear-gradient(top, #333333, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1);
-  -moz-box-shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1);
-  box-shadow: 0 1px 3px rgba(0,0,0,.25), inset 0 -1px 0 rgba(0,0,0,.1);
-}
-.navbar .container {
-  width: auto;
-}
-.nav-collapse.collapse {
-  height: auto;
-}
-.navbar {
-  color: #999999;
-}
-.navbar .brand:hover {
-  text-decoration: none;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 8px 20px 12px;
-  margin-left: -20px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 1;
-  color: #999999;
-}
-.navbar .navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-}
-.navbar .navbar-link {
-  color: #999999;
-}
-.navbar .navbar-link:hover {
-  color: #ffffff;
-}
-.navbar .btn,
-.navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn {
-  margin: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before,
-.navbar-form:after {
-  display: table;
-  content: "";
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input,
-.navbar-form select,
-.navbar-form .radio,
-.navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input,
-.navbar-form select {
-  display: inline-block;
-  margin-bottom: 0;
-}
-.navbar-form input[type="image"],
-.navbar-form input[type="checkbox"],
-.navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-form .input-append,
-.navbar-form .input-prepend {
-  margin-top: 6px;
-  white-space: nowrap;
-}
-.navbar-form .input-append input,
-.navbar-form .input-prepend input {
-  margin-top: 0;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 6px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  padding: 4px 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  color: #ffffff;
-  background-color: #626262;
-  border: 1px solid #151515;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -ms-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-search .search-query:-moz-placeholder {
-  color: #cccccc;
-}
-.navbar-search .search-query::-webkit-input-placeholder {
-  color: #cccccc;
-}
-.navbar-search .search-query:focus,
-.navbar-search .search-query.focused {
-  padding: 5px 10px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  margin-bottom: 0;
-}
-.navbar-fixed-top .navbar-inner,
-.navbar-fixed-bottom .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar-fixed-top .container,
-.navbar-fixed-bottom .container {
-  width: 940px;
-}
-.navbar-fixed-top {
-  top: 0;
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-}
-.navbar .nav > li {
-  display: block;
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 9px 10px 11px;
-  line-height: 19px;
-  color: #999999;
-  text-decoration: none;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar .btn {
-  display: inline-block;
-  padding: 4px 10px 4px;
-  margin: 5px 5px 6px;
-  line-height: 18px;
-}
-.navbar .btn-group {
-  margin: 0;
-  padding: 5px 5px 6px;
-}
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-  text-decoration: none;
-}
-.navbar .nav .active > a,
-.navbar .nav .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #222222;
-}
-.navbar .divider-vertical {
-  height: 40px;
-  width: 1px;
-  margin: 0 9px;
-  overflow: hidden;
-  background-color: #222222;
-  border-right: 1px solid #333333;
-}
-.navbar .nav.pull-right {
-  margin-left: 10px;
-  margin-right: 0;
-}
-.navbar .btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  background-color: #2c2c2c;
-  background-image: -moz-linear-gradient(top, #333333, #222222);
-  background-image: -ms-linear-gradient(top, #333333, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
-  background-image: -webkit-linear-gradient(top, #333333, #222222);
-  background-image: -o-linear-gradient(top, #333333, #222222);
-  background-image: linear-gradient(top, #333333, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  *background-color: #222222;
-  /* Darken IE7 buttons by default so they stand out more given they won't have borders */
-
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-  box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-}
-.navbar .btn-navbar:hover,
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active,
-.navbar .btn-navbar.disabled,
-.navbar .btn-navbar[disabled] {
-  background-color: #222222;
-  *background-color: #151515;
-}
-.navbar .btn-navbar:active,
-.navbar .btn-navbar.active {
-  background-color: #080808 \9;
-}
-.navbar .btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.navbar .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar-fixed-bottom .dropdown-menu:before {
-  border-top: 7px solid #ccc;
-  border-top-color: rgba(0, 0, 0, 0.2);
-  border-bottom: 0;
-  bottom: -7px;
-  top: auto;
-}
-.navbar-fixed-bottom .dropdown-menu:after {
-  border-top: 6px solid #ffffff;
-  border-bottom: 0;
-  bottom: -6px;
-  top: auto;
-}
-.navbar .nav li.dropdown .dropdown-toggle .caret,
-.navbar .nav li.dropdown.open .caret {
-  border-top-color: #ffffff;
-  border-bottom-color: #ffffff;
-}
-.navbar .nav li.dropdown.active .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.navbar .nav li.dropdown.open > .dropdown-toggle,
-.navbar .nav li.dropdown.active > .dropdown-toggle,
-.navbar .nav li.dropdown.open.active > .dropdown-toggle {
-  background-color: transparent;
-}
-.navbar .nav li.dropdown.active > .dropdown-toggle:hover {
-  color: #ffffff;
-}
-.navbar .pull-right .dropdown-menu,
-.navbar .dropdown-menu.pull-right {
-  left: auto;
-  right: 0;
-}
-.navbar .pull-right .dropdown-menu:before,
-.navbar .dropdown-menu.pull-right:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .pull-right .dropdown-menu:after,
-.navbar .dropdown-menu.pull-right:after {
-  left: auto;
-  right: 13px;
-}
-.breadcrumb {
-  padding: 7px 14px;
-  margin: 0 0 18px;
-  list-style: none;
-  background-color: #fbfbfb;
-  background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: linear-gradient(top, #ffffff, #f5f5f5);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
-  border: 1px solid #ddd;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-}
-.breadcrumb li {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.breadcrumb .divider {
-  padding: 0 5px;
-  color: #999999;
-}
-.breadcrumb .active a {
-  color: #333333;
-}
-.pagination {
-  height: 36px;
-  margin: 18px 0;
-}
-.pagination ul {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-  margin-left: 0;
-  margin-bottom: 0;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.pagination li {
-  display: inline;
-}
-.pagination a {
-  float: left;
-  padding: 0 14px;
-  line-height: 34px;
-  text-decoration: none;
-  border: 1px solid #ddd;
-  border-left-width: 0;
-}
-.pagination a:hover,
-.pagination .active a {
-  background-color: #f5f5f5;
-}
-.pagination .active a {
-  color: #999999;
-  cursor: default;
-}
-.pagination .disabled span,
-.pagination .disabled a,
-.pagination .disabled a:hover {
-  color: #999999;
-  background-color: transparent;
-  cursor: default;
-}
-.pagination li:first-child a {
-  border-left-width: 1px;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.pagination li:last-child a {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.pagination-centered {
-  text-align: center;
-}
-.pagination-right {
-  text-align: right;
-}
-.pager {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-  text-align: center;
-  *zoom: 1;
-}
-.pager:before,
-.pager:after {
-  display: table;
-  content: "";
-}
-.pager:after {
-  clear: both;
-}
-.pager li {
-  display: inline;
-}
-.pager a {
-  display: inline-block;
-  padding: 5px 14px;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.pager a:hover {
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.pager .next a {
-  float: right;
-}
-.pager .previous a {
-  float: left;
-}
-.pager .disabled a,
-.pager .disabled a:hover {
-  color: #999999;
-  background-color: #fff;
-  cursor: default;
-}
-.thumbnails {
-  margin-left: -20px;
-  list-style: none;
-  *zoom: 1;
-}
-.thumbnails:before,
-.thumbnails:after {
-  display: table;
-  content: "";
-}
-.thumbnails:after {
-  clear: both;
-}
-.row-fluid .thumbnails {
-  margin-left: 0;
-}
-.thumbnails > li {
-  float: left;
-  margin-bottom: 18px;
-  margin-left: 20px;
-}
-.thumbnail {
-  display: block;
-  padding: 4px;
-  line-height: 1;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-a.thumbnail:hover {
-  border-color: #0088cc;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-}
-.thumbnail > img {
-  display: block;
-  max-width: 100%;
-  margin-left: auto;
-  margin-right: auto;
-}
-.thumbnail .caption {
-  padding: 9px;
-}
-.alert {
-  padding: 8px 35px 8px 14px;
-  margin-bottom: 18px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  background-color: #fcf8e3;
-  border: 1px solid #fbeed5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  color: #c09853;
-}
-.alert-heading {
-  color: inherit;
-}
-.alert .close {
-  position: relative;
-  top: -2px;
-  right: -21px;
-  line-height: 18px;
-}
-.alert-success {
-  background-color: #dff0d8;
-  border-color: #d6e9c6;
-  color: #468847;
-}
-.alert-danger,
-.alert-error {
-  background-color: #f2dede;
-  border-color: #eed3d7;
-  color: #b94a48;
-}
-.alert-info {
-  background-color: #d9edf7;
-  border-color: #bce8f1;
-  color: #3a87ad;
-}
-.alert-block {
-  padding-top: 14px;
-  padding-bottom: 14px;
-}
-.alert-block > p,
-.alert-block > ul {
-  margin-bottom: 0;
-}
-.alert-block p + p {
-  margin-top: 5px;
-}
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-@-moz-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-@-ms-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-@-o-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-.progress {
-  overflow: hidden;
-  height: 18px;
-  margin-bottom: 18px;
-  background-color: #f7f7f7;
-  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
-  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.progress .bar {
-  width: 0%;
-  height: 18px;
-  color: #ffffff;
-  font-size: 12px;
-  text-align: center;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e90d2;
-  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
-  background-image: -ms-linear-gradient(top, #149bdf, #0480be);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
-  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
-  background-image: -o-linear-gradient(top, #149bdf, #0480be);
-  background-image: linear-gradient(top, #149bdf, #0480be);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  -ms-box-sizing: border-box;
-  box-sizing: border-box;
-  -webkit-transition: width 0.6s ease;
-  -moz-transition: width 0.6s ease;
-  -ms-transition: width 0.6s ease;
-  -o-transition: width 0.6s ease;
-  transition: width 0.6s ease;
-}
-.progress-striped .bar {
-  background-color: #149bdf;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  -webkit-background-size: 40px 40px;
-  -moz-background-size: 40px 40px;
-  -o-background-size: 40px 40px;
-  background-size: 40px 40px;
-}
-.progress.active .bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-  -moz-animation: progress-bar-stripes 2s linear infinite;
-  -ms-animation: progress-bar-stripes 2s linear infinite;
-  -o-animation: progress-bar-stripes 2s linear infinite;
-  animation: progress-bar-stripes 2s linear infinite;
-}
-.progress-danger .bar {
-  background-color: #dd514c;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: linear-gradient(top, #ee5f5b, #c43c35);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
-}
-.progress-danger.progress-striped .bar {
-  background-color: #ee5f5b;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-success .bar {
-  background-color: #5eb95e;
-  background-image: -moz-linear-gradient(top, #62c462, #57a957);
-  background-image: -ms-linear-gradient(top, #62c462, #57a957);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
-  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
-  background-image: -o-linear-gradient(top, #62c462, #57a957);
-  background-image: linear-gradient(top, #62c462, #57a957);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
-}
-.progress-success.progress-striped .bar {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-info .bar {
-  background-color: #4bb1cf;
-  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: linear-gradient(top, #5bc0de, #339bb9);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
-}
-.progress-info.progress-striped .bar {
-  background-color: #5bc0de;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-warning .bar {
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(top, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
-}
-.progress-warning.progress-striped .bar {
-  background-color: #fbb450;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.hero-unit {
-  padding: 60px;
-  margin-bottom: 30px;
-  background-color: #eeeeee;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.hero-unit h1 {
-  margin-bottom: 0;
-  font-size: 60px;
-  line-height: 1;
-  color: inherit;
-  letter-spacing: -1px;
-}
-.hero-unit p {
-  font-size: 18px;
-  font-weight: 200;
-  line-height: 27px;
-  color: inherit;
-}
-.tooltip {
-  position: absolute;
-  z-index: 1020;
-  display: block;
-  visibility: visible;
-  padding: 5px;
-  font-size: 11px;
-  opacity: 0;
-  filter: alpha(opacity=0);
-}
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.tooltip.top {
-  margin-top: -2px;
-}
-.tooltip.right {
-  margin-left: 2px;
-}
-.tooltip.bottom {
-  margin-top: 2px;
-}
-.tooltip.left {
-  margin-left: -2px;
-}
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  padding: 5px;
-}
-.popover.top {
-  margin-top: -5px;
-}
-.popover.right {
-  margin-left: 5px;
-}
-.popover.bottom {
-  margin-top: 5px;
-}
-.popover.left {
-  margin-left: -5px;
-}
-.popover.top .arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.popover.right .arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.popover.bottom .arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.popover.left .arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.popover .arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover-inner {
-  padding: 3px;
-  width: 280px;
-  overflow: hidden;
-  background: #000000;
-  background: rgba(0, 0, 0, 0.8);
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-}
-.popover-title {
-  padding: 9px 15px;
-  line-height: 1;
-  background-color: #f5f5f5;
-  border-bottom: 1px solid #eee;
-  -webkit-border-radius: 3px 3px 0 0;
-  -moz-border-radius: 3px 3px 0 0;
-  border-radius: 3px 3px 0 0;
-}
-.popover-content {
-  padding: 14px;
-  background-color: #ffffff;
-  -webkit-border-radius: 0 0 3px 3px;
-  -moz-border-radius: 0 0 3px 3px;
-  border-radius: 0 0 3px 3px;
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.popover-content p,
-.popover-content ul,
-.popover-content ol {
-  margin-bottom: 0;
-}
-.modal-open .dropdown-menu {
-  z-index: 2050;
-}
-.modal-open .dropdown.open {
-  *z-index: 2050;
-}
-.modal-open .popover {
-  z-index: 2060;
-}
-.modal-open .tooltip {
-  z-index: 2070;
-}
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop,
-.modal-backdrop.fade.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.modal {
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  z-index: 1050;
-  overflow: auto;
-  width: 560px;
-  margin: -250px 0 0 -280px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -ms-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 50%;
-}
-.modal-header {
-  padding: 9px 15px;
-  border-bottom: 1px solid #eee;
-}
-.modal-header .close {
-  margin-top: 2px;
-}
-.modal-body {
-  overflow-y: auto;
-  max-height: 400px;
-  padding: 15px;
-}
-.modal-form {
-  margin-bottom: 0;
-}
-.modal-footer {
-  padding: 14px 15px 15px;
-  margin-bottom: 0;
-  text-align: right;
-  background-color: #f5f5f5;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  *zoom: 1;
-}
-.modal-footer:before,
-.modal-footer:after {
-  display: table;
-  content: "";
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn + .btn {
-  margin-left: 5px;
-  margin-bottom: 0;
-}
-.modal-footer .btn-group .btn + .btn {
-  margin-left: -1px;
-}
-.dropup,
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active,
-.open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  vertical-align: top;
-  border-top: 4px solid #000000;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-  content: "";
-  opacity: 0.3;
-  filter: alpha(opacity=30);
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown:hover .caret,
-.open .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 4px 0;
-  margin: 1px 0 0;
-  list-style: none;
-  background-color: #ffffff;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.2);
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  *width: 100%;
-  height: 1px;
-  margin: 8px 1px;
-  *margin: -5px 0 5px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-.dropdown-menu a {
-  display: block;
-  padding: 3px 15px;
-  clear: both;
-  font-weight: normal;
-  line-height: 18px;
-  color: #333333;
-  white-space: nowrap;
-}
-.dropdown-menu li > a:hover,
-.dropdown-menu .active > a,
-.dropdown-menu .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #0088cc;
-}
-.open {
-  *z-index: 1000;
-}
-.open .dropdown-menu {
-  display: block;
-}
-.pull-right .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  border-top: 0;
-  border-bottom: 4px solid #000000;
-  content: "\2191";
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-.typeahead {
-  margin-top: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.accordion {
-  margin-bottom: 18px;
-}
-.accordion-group {
-  margin-bottom: 2px;
-  border: 1px solid #e5e5e5;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.accordion-heading {
-  border-bottom: 0;
-}
-.accordion-heading .accordion-toggle {
-  display: block;
-  padding: 8px 15px;
-}
-.accordion-toggle {
-  cursor: pointer;
-}
-.accordion-inner {
-  padding: 9px 15px;
-  border-top: 1px solid #e5e5e5;
-}
-.carousel {
-  position: relative;
-  margin-bottom: 18px;
-  line-height: 1;
-}
-.carousel-inner {
-  overflow: hidden;
-  width: 100%;
-  position: relative;
-}
-.carousel .item {
-  display: none;
-  position: relative;
-  -webkit-transition: 0.6s ease-in-out left;
-  -moz-transition: 0.6s ease-in-out left;
-  -ms-transition: 0.6s ease-in-out left;
-  -o-transition: 0.6s ease-in-out left;
-  transition: 0.6s ease-in-out left;
-}
-.carousel .item > img {
-  display: block;
-  line-height: 1;
-}
-.carousel .active,
-.carousel .next,
-.carousel .prev {
-  display: block;
-}
-.carousel .active {
-  left: 0;
-}
-.carousel .next,
-.carousel .prev {
-  position: absolute;
-  top: 0;
-  width: 100%;
-}
-.carousel .next {
-  left: 100%;
-}
-.carousel .prev {
-  left: -100%;
-}
-.carousel .next.left,
-.carousel .prev.right {
-  left: 0;
-}
-.carousel .active.left {
-  left: -100%;
-}
-.carousel .active.right {
-  left: 100%;
-}
-.carousel-control {
-  position: absolute;
-  top: 40%;
-  left: 15px;
-  width: 40px;
-  height: 40px;
-  margin-top: -20px;
-  font-size: 60px;
-  font-weight: 100;
-  line-height: 30px;
-  color: #ffffff;
-  text-align: center;
-  background: #222222;
-  border: 3px solid #ffffff;
-  -webkit-border-radius: 23px;
-  -moz-border-radius: 23px;
-  border-radius: 23px;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-}
-.carousel-control.right {
-  left: auto;
-  right: 15px;
-}
-.carousel-control:hover {
-  color: #ffffff;
-  text-decoration: none;
-  opacity: 0.9;
-  filter: alpha(opacity=90);
-}
-.carousel-caption {
-  position: absolute;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  padding: 10px 15px 5px;
-  background: #333333;
-  background: rgba(0, 0, 0, 0.75);
-}
-.carousel-caption h4,
-.carousel-caption p {
-  color: #ffffff;
-}
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #eee;
-  border: 1px solid rgba(0, 0, 0, 0.05);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.well-large {
-  padding: 24px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.well-small {
-  padding: 9px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.close {
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #000000;
-  text-shadow: 0 1px 0 #ffffff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-.close:hover {
-  color: #000000;
-  text-decoration: none;
-  cursor: pointer;
-  opacity: 0.4;
-  filter: alpha(opacity=40);
-}
-button.close {
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-  -webkit-appearance: none;
-}
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.invisible {
-  visibility: hidden;
-}
-.fade {
-  opacity: 0;
-  filter: alpha(opacity=0);
-  -webkit-transition: opacity 0.15s linear;
-  -moz-transition: opacity 0.15s linear;
-  -ms-transition: opacity 0.15s linear;
-  -o-transition: opacity 0.15s linear;
-  transition: opacity 0.15s linear;
-}
-.fade.in {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.collapse {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition: height 0.35s ease;
-  -moz-transition: height 0.35s ease;
-  -ms-transition: height 0.35s ease;
-  -o-transition: height 0.35s ease;
-  transition: height 0.35s ease;
-}
-.collapse.in {
-  height: auto;
-}
-.hidden {
-  display: none;
-  visibility: hidden;
-}
-.visible-phone {
-  display: none !important;
-}
-.visible-tablet {
-  display: none !important;
-}
-.hidden-desktop {
-  display: none !important;
-}
-@media (max-width: 767px) {
-  .visible-phone {
-    display: inherit !important;
-  }
-  .hidden-phone {
-    display: none !important;
-  }
-  .hidden-desktop {
-    display: inherit !important;
-  }
-  .visible-desktop {
-    display: none !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 979px) {
-  .visible-tablet {
-    display: inherit !important;
-  }
-  .hidden-tablet {
-    display: none !important;
-  }
-  .hidden-desktop {
-    display: inherit !important;
-  }
-  .visible-desktop {
-    display: none !important ;
-  }
-}
-@media (max-width: 480px) {
-  .nav-collapse {
-    -webkit-transform: translate3d(0, 0, 0);
-  }
-  .page-header h1 small {
-    display: block;
-    line-height: 18px;
-  }
-  input[type="checkbox"],
-  input[type="radio"] {
-    border: 1px solid #ccc;
-  }
-  .form-horizontal .control-group > label {
-    float: none;
-    width: auto;
-    padding-top: 0;
-    text-align: left;
-  }
-  .form-horizontal .controls {
-    margin-left: 0;
-  }
-  .form-horizontal .control-list {
-    padding-top: 0;
-  }
-  .form-horizontal .form-actions {
-    padding-left: 10px;
-    padding-right: 10px;
-  }
-  .modal {
-    position: absolute;
-    top: 10px;
-    left: 10px;
-    right: 10px;
-    width: auto;
-    margin: 0;
-  }
-  .modal.fade.in {
-    top: auto;
-  }
-  .modal-header .close {
-    padding: 10px;
-    margin: -10px;
-  }
-  .carousel-caption {
-    position: static;
-  }
-}
-@media (max-width: 767px) {
-  body {
-    padding-left: 20px;
-    padding-right: 20px;
-  }
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    margin-left: -20px;
-    margin-right: -20px;
-  }
-  .container-fluid {
-    padding: 0;
-  }
-  .dl-horizontal dt {
-    float: none;
-    clear: none;
-    width: auto;
-    text-align: left;
-  }
-  .dl-horizontal dd {
-    margin-left: 0;
-  }
-  .container {
-    width: auto;
-  }
-  .row-fluid {
-    width: 100%;
-  }
-  .row,
-  .thumbnails {
-    margin-left: 0;
-  }
-  [class*="span"],
-  .row-fluid [class*="span"] {
-    float: none;
-    display: block;
-    width: auto;
-    margin-left: 0;
-  }
-  .input-large,
-  .input-xlarge,
-  .input-xxlarge,
-  input[class*="span"],
-  select[class*="span"],
-  textarea[class*="span"],
-  .uneditable-input {
-    display: block;
-    width: 100%;
-    min-height: 28px;
-    -webkit-box-sizing: border-box;
-    -moz-box-sizing: border-box;
-    -ms-box-sizing: border-box;
-    box-sizing: border-box;
-  }
-  .input-prepend input,
-  .input-append input,
-  .input-prepend input[class*="span"],
-  .input-append input[class*="span"] {
-    display: inline-block;
-    width: auto;
-  }
-}
-@media (min-width: 768px) and (max-width: 979px) {
-  .row {
-    margin-left: -20px;
-    *zoom: 1;
-  }
-  .row:before,
-  .row:after {
-    display: table;
-    content: "";
-  }
-  .row:after {
-    clear: both;
-  }
-  [class*="span"] {
-    float: left;
-    margin-left: 20px;
-  }
-  .container,
-  .navbar-fixed-top .container,
-  .navbar-fixed-bottom .container {
-    width: 724px;
-  }
-  .span12 {
-    width: 724px;
-  }
-  .span11 {
-    width: 662px;
-  }
-  .span10 {
-    width: 600px;
-  }
-  .span9 {
-    width: 538px;
-  }
-  .span8 {
-    width: 476px;
-  }
-  .span7 {
-    width: 414px;
-  }
-  .span6 {
-    width: 352px;
-  }
-  .span5 {
-    width: 290px;
-  }
-  .span4 {
-    width: 228px;
-  }
-  .span3 {
-    width: 166px;
-  }
-  .span2 {
-    width: 104px;
-  }
-  .span1 {
-    width: 42px;
-  }
-  .offset12 {
-    margin-left: 764px;
-  }
-  .offset11 {
-    margin-left: 702px;
-  }
-  .offset10 {
-    margin-left: 640px;
-  }
-  .offset9 {
-    margin-left: 578px;
-  }
-  .offset8 {
-    margin-left: 516px;
-  }
-  .offset7 {
-    margin-left: 454px;
-  }
-  .offset6 {
-    margin-left: 392px;
-  }
-  .offset5 {
-    margin-left: 330px;
-  }
-  .offset4 {
-    margin-left: 268px;
-  }
-  .offset3 {
-    margin-left: 206px;
-  }
-  .offset2 {
-    margin-left: 144px;
-  }
-  .offset1 {
-    margin-left: 82px;
-  }
-  .row-fluid {
-    width: 100%;
-    *zoom: 1;
-  }
-  .row-fluid:before,
-  .row-fluid:after {
-    display: table;
-    content: "";
-  }
-  .row-fluid:after {
-    clear: both;
-  }
-  .row-fluid [class*="span"] {
-    display: block;
-    width: 100%;
-    min-height: 28px;
-    -webkit-box-sizing: border-box;
-    -moz-box-sizing: border-box;
-    -ms-box-sizing: border-box;
-    box-sizing: border-box;
-    float: left;
-    margin-left: 2.762430939%;
-    *margin-left: 2.709239449638298%;
-  }
-  .row-fluid [class*="span"]:first-child {
-    margin-left: 0;
-  }
-  .row-fluid .span12 {
-    width: 99.999999993%;
-    *width: 99.9468085036383%;
-  }
-  .row-fluid .span11 {
-    width: 91.436464082%;
-    *width: 91.38327259263829%;
-  }
-  .row-fluid .span10 {
-    width: 82.87292817100001%;
-    *width: 82.8197366816383%;
-  }
-  .row-fluid .span9 {
-    width: 74.30939226%;
-    *width: 74.25620077063829%;
-  }
-  .row-fluid .span8 {
-    width: 65.74585634900001%;
-    *width: 65.6926648596383%;
-  }
-  .row-fluid .span7 {
-    width: 57.182320438000005%;
-    *width: 57.129128948638304%;
-  }
-  .row-fluid .span6 {
-    width: 48.618784527%;
-    *width: 48.5655930376383%;
-  }
-  .row-fluid .span5 {
-    width: 40.055248616%;
-    *width: 40.0020571266383%;
-  }
-  .row-fluid .span4 {
-    width: 31.491712705%;
-    *width: 31.4385212156383%;
-  }
-  .row-fluid .span3 {
-    width: 22.928176794%;
-    *width: 22.874985304638297%;
-  }
-  .row-fluid .span2 {
-    width: 14.364640883%;
-    *width: 14.311449393638298%;
-  }
-  .row-fluid .span1 {
-    width: 5.801104972%;
-    *width: 5.747913482638298%;
-  }
-  input,
-  textarea,
-  .uneditable-input {
-    margin-left: 0;
-  }
-  input.span12, textarea.span12, .uneditable-input.span12 {
-    width: 714px;
-  }
-  input.span11, textarea.span11, .uneditable-input.span11 {
-    width: 652px;
-  }
-  input.span10, textarea.span10, .uneditable-input.span10 {
-    width: 590px;
-  }
-  input.span9, textarea.span9, .uneditable-input.span9 {
-    width: 528px;
-  }
-  input.span8, textarea.span8, .uneditable-input.span8 {
-    width: 466px;
-  }
-  input.span7, textarea.span7, .uneditable-input.span7 {
-    width: 404px;
-  }
-  input.span6, textarea.span6, .uneditable-input.span6 {
-    width: 342px;
-  }
-  input.span5, textarea.span5, .uneditable-input.span5 {
-    width: 280px;
-  }
-  input.span4, textarea.span4, .uneditable-input.span4 {
-    width: 218px;
-  }
-  input.span3, textarea.span3, .uneditable-input.span3 {
-    width: 156px;
-  }
-  input.span2, textarea.span2, .uneditable-input.span2 {
-    width: 94px;
-  }
-  input.span1, textarea.span1, .uneditable-input.span1 {
-    width: 32px;
-  }
-}
-@media (min-width: 1200px) {
-  .row {
-    margin-left: -30px;
-    *zoom: 1;
-  }
-  .row:before,
-  .row:after {
-    display: table;
-    content: "";
-  }
-  .row:after {
-    clear: both;
-  }
-  [class*="span"] {
-    float: left;
-    margin-left: 30px;
-  }
-  .container,
-  .navbar-fixed-top .container,
-  .navbar-fixed-bottom .container {
-    width: 1170px;
-  }
-  .span12 {
-    width: 1170px;
-  }
-  .span11 {
-    width: 1070px;
-  }
-  .span10 {
-    width: 970px;
-  }
-  .span9 {
-    width: 870px;
-  }
-  .span8 {
-    width: 770px;
-  }
-  .span7 {
-    width: 670px;
-  }
-  .span6 {
-    width: 570px;
-  }
-  .span5 {
-    width: 470px;
-  }
-  .span4 {
-    width: 370px;
-  }
-  .span3 {
-    width: 270px;
-  }
-  .span2 {
-    width: 170px;
-  }
-  .span1 {
-    width: 70px;
-  }
-  .offset12 {
-    margin-left: 1230px;
-  }
-  .offset11 {
-    margin-left: 1130px;
-  }
-  .offset10 {
-    margin-left: 1030px;
-  }
-  .offset9 {
-    margin-left: 930px;
-  }
-  .offset8 {
-    margin-left: 830px;
-  }
-  .offset7 {
-    margin-left: 730px;
-  }
-  .offset6 {
-    margin-left: 630px;
-  }
-  .offset5 {
-    margin-left: 530px;
-  }
-  .offset4 {
-    margin-left: 430px;
-  }
-  .offset3 {
-    margin-left: 330px;
-  }
-  .offset2 {
-    margin-left: 230px;
-  }
-  .offset1 {
-    margin-left: 130px;
-  }
-  .row-fluid {
-    width: 100%;
-    *zoom: 1;
-  }
-  .row-fluid:before,
-  .row-fluid:after {
-    display: table;
-    content: "";
-  }
-  .row-fluid:after {
-    clear: both;
-  }
-  .row-fluid [class*="span"] {
-    display: block;
-    width: 100%;
-    min-height: 28px;
-    -webkit-box-sizing: border-box;
-    -moz-box-sizing: border-box;
-    -ms-box-sizing: border-box;
-    box-sizing: border-box;
-    float: left;
-    margin-left: 2.564102564%;
-    *margin-left: 2.510911074638298%;
-  }
-  .row-fluid [class*="span"]:first-child {
-    margin-left: 0;
-  }
-  .row-fluid .span12 {
-    width: 100%;
-    *width: 99.94680851063829%;
-  }
-  .row-fluid .span11 {
-    width: 91.45299145300001%;
-    *width: 91.3997999636383%;
-  }
-  .row-fluid .span10 {
-    width: 82.905982906%;
-    *width: 82.8527914166383%;
-  }
-  .row-fluid .span9 {
-    width: 74.358974359%;
-    *width: 74.30578286963829%;
-  }
-  .row-fluid .span8 {
-    width: 65.81196581200001%;
-    *width: 65.7587743226383%;
-  }
-  .row-fluid .span7 {
-    width: 57.264957265%;
-    *width: 57.2117657756383%;
-  }
-  .row-fluid .span6 {
-    width: 48.717948718%;
-    *width: 48.6647572286383%;
-  }
-  .row-fluid .span5 {
-    width: 40.170940171000005%;
-    *width: 40.117748681638304%;
-  }
-  .row-fluid .span4 {
-    width: 31.623931624%;
-    *width: 31.5707401346383%;
-  }
-  .row-fluid .span3 {
-    width: 23.076923077%;
-    *width: 23.0237315876383%;
-  }
-  .row-fluid .span2 {
-    width: 14.529914530000001%;
-    *width: 14.4767230406383%;
-  }
-  .row-fluid .span1 {
-    width: 5.982905983%;
-    *width: 5.929714493638298%;
-  }
-  input,
-  textarea,
-  .uneditable-input {
-    margin-left: 0;
-  }
-  input.span12, textarea.span12, .uneditable-input.span12 {
-    width: 1160px;
-  }
-  input.span11, textarea.span11, .uneditable-input.span11 {
-    width: 1060px;
-  }
-  input.span10, textarea.span10, .uneditable-input.span10 {
-    width: 960px;
-  }
-  input.span9, textarea.span9, .uneditable-input.span9 {
-    width: 860px;
-  }
-  input.span8, textarea.span8, .uneditable-input.span8 {
-    width: 760px;
-  }
-  input.span7, textarea.span7, .uneditable-input.span7 {
-    width: 660px;
-  }
-  input.span6, textarea.span6, .uneditable-input.span6 {
-    width: 560px;
-  }
-  input.span5, textarea.span5, .uneditable-input.span5 {
-    width: 460px;
-  }
-  input.span4, textarea.span4, .uneditable-input.span4 {
-    width: 360px;
-  }
-  input.span3, textarea.span3, .uneditable-input.span3 {
-    width: 260px;
-  }
-  input.span2, textarea.span2, .uneditable-input.span2 {
-    width: 160px;
-  }
-  input.span1, textarea.span1, .uneditable-input.span1 {
-    width: 60px;
-  }
-  .thumbnails {
-    margin-left: -30px;
-  }
-  .thumbnails > li {
-    margin-left: 30px;
-  }
-  .row-fluid .thumbnails {
-    margin-left: 0;
-  }
-}
-@media (max-width: 979px) {
-  body {
-    padding-top: 0;
-  }
-  .navbar-fixed-top {
-    position: static;
-    margin-bottom: 18px;
-  }
-  .navbar-fixed-top .navbar-inner {
-    padding: 5px;
-  }
-  .navbar .container {
-    width: auto;
-    padding: 0;
-  }
-  .navbar .brand {
-    padding-left: 10px;
-    padding-right: 10px;
-    margin: 0 0 0 -5px;
-  }
-  .nav-collapse {
-    clear: both;
-  }
-  .nav-collapse .nav {
-    float: none;
-    margin: 0 0 9px;
-  }
-  .nav-collapse .nav > li {
-    float: none;
-  }
-  .nav-collapse .nav > li > a {
-    margin-bottom: 2px;
-  }
-  .nav-collapse .nav > .divider-vertical {
-    display: none;
-  }
-  .nav-collapse .nav .nav-header {
-    color: #999999;
-    text-shadow: none;
-  }
-  .nav-collapse .nav > li > a,
-  .nav-collapse .dropdown-menu a {
-    padding: 6px 15px;
-    font-weight: bold;
-    color: #999999;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
-  }
-  .nav-collapse .btn {
-    padding: 4px 10px 4px;
-    font-weight: normal;
-    -webkit-border-radius: 4px;
-    -moz-border-radius: 4px;
-    border-radius: 4px;
-  }
-  .nav-collapse .dropdown-menu li + li a {
-    margin-bottom: 2px;
-  }
-  .nav-collapse .nav > li > a:hover,
-  .nav-collapse .dropdown-menu a:hover {
-    background-color: #222222;
-  }
-  .nav-collapse.in .btn-group {
-    margin-top: 5px;
-    padding: 0;
-  }
-  .nav-collapse .dropdown-menu {
-    position: static;
-    top: auto;
-    left: auto;
-    float: none;
-    display: block;
-    max-width: none;
-    margin: 0 15px;
-    padding: 0;
-    background-color: transparent;
-    border: none;
-    -webkit-border-radius: 0;
-    -moz-border-radius: 0;
-    border-radius: 0;
-    -webkit-box-shadow: none;
-    -moz-box-shadow: none;
-    box-shadow: none;
-  }
-  .nav-collapse .dropdown-menu:before,
-  .nav-collapse .dropdown-menu:after {
-    display: none;
-  }
-  .nav-collapse .dropdown-menu .divider {
-    display: none;
-  }
-  .nav-collapse .navbar-form,
-  .nav-collapse .navbar-search {
-    float: none;
-    padding: 9px 15px;
-    margin: 9px 0;
-    border-top: 1px solid #222222;
-    border-bottom: 1px solid #222222;
-    -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
-    -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
-    box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
-  }
-  .navbar .nav-collapse .nav.pull-right {
-    float: none;
-    margin-left: 0;
-  }
-  .nav-collapse,
-  .nav-collapse.collapse {
-    overflow: hidden;
-    height: 0;
-  }
-  .navbar .btn-navbar {
-    display: block;
-  }
-  .navbar-static .navbar-inner {
-    padding-left: 10px;
-    padding-right: 10px;
-  }
-}
-@media (min-width: 980px) {
-  .nav-collapse.collapse {
-    height: auto !important;
-    overflow: visible !important;
-  }
-}
-@font-face {
-  font-family: IconicStroke;
-  font-weight: normal;
-  src: url('../fonts/iconic_stroke.eot');
-  src: local('IconicStroke'), url('iconic_stroke.eot?#iefix') format('../fonts/embedded-opentype'), url('../fonts/iconic_stroke.ttf') format('truetype'), url('iconic_stroke.svg#iconic') format('svg'), url('../fonts/iconic_stroke.otf') format('opentype');
-}
-@font-face {
-  font-family: IconicFill;
-  font-weight: normal;
-  src: url('../fonts/iconic_fill.eot');
-  src: local('IconicFill'), url('../fonts/iconic_fill.eot?#iefix') format('embedded-opentype'), url('../fonts/iconic_fill.ttf') format('truetype'), url('iconic_fill.svg#iconic') format('svg'), url('../fonts/iconic_fill.otf') format('opentype');
-}
-@media screen, print {
-  [class*="iconic-"] {
-    font-style: inherit;
-    font-weight: normal;
-  }
-  [class*="iconic-"]:before {
-    font-family: IconicFill;
-    vertical-align: middle;
-    display: inline-block;
-    content: "";
-    width: 1em;
-    text-align: center;
-  }
-  .iconic-stroke:before {
-    font-family: IconicStroke;
-  }
-  .iconic-hash:before {
-    content: '\23';
-  }
-  .iconic-question-mark:before {
-    content: '\3f';
-  }
-  .iconic-at:before {
-    content: '\40';
-  }
-  .iconic-pilcrow:before {
-    content: '\b6';
-  }
-  .iconic-info:before {
-    content: '\2139';
-  }
-  .iconic-arrow-left:before {
-    content: '\2190';
-  }
-  .iconic-arrow-up:before {
-    content: '\2191';
-  }
-  .iconic-arrow-right:before {
-    content: '\2192';
-  }
-  .iconic-arrow-down:before {
-    content: '\2193';
-  }
-  .iconic-home:before {
-    content: '\2302';
-  }
-  .iconic-sun:before {
-    content: '\2600';
-  }
-  .iconic-cloud:before {
-    content: '\2601';
-  }
-  .iconic-umbrella:before {
-    content: '\2602';
-  }
-  .iconic-star:before {
-    content: '\2605';
-  }
-  .iconic-moon:before {
-    content: '\263e';
-  }
-  .iconic-heart:before {
-    content: '\2764';
-  }
-  .iconic-cog:before {
-    content: '\2699';
-    color:#666;
-  }
-  .iconic-bolt:before {
-    content: '\26a1';
-  }
-  .iconic-key:before {
-    content: '\26bf';
-  }
-  .iconic-rain:before {
-    content: '\26c6';
-  }
-  .iconic-denied:before {
-    content: '\26d4';
-  }
-  .iconic-mail:before {
-    content: '\2709';
-  }
-  .iconic-pen:before {
-    content: '\270e';
-  }
-  .iconic-x:before {
-    content: '\2717';
-  }
-  .iconic-o-x:before {
-    content: '\2718';
-  }
-  .iconic-check:before {
-    content: '\2713';
-  }
-  .iconic-o-check:before {
-    content: '\2714';
-  }
-  .iconic-left-quote:before {
-    content: '\275d';
-  }
-  .iconic-right-quote:before {
-    content: '\275e';
-  }
-  .iconic-plus:before {
-    content: '\2795';
-  }
-  .iconic-minus:before {
-    content: '\2796';
-  }
-  .iconic-curved-arrow:before {
-    content: '\2935';
-  }
-  .iconic-document-alt:before {
-    content: '\e000';
-  }
-  .iconic-calendar:before {
-    content: '\e001';
-  }
-  .iconic-map-pin-alt:before {
-    content: '\e002';
-  }
-  .iconic-comment-alt1:before {
-    content: '\e003';
-  }
-  .iconic-comment-alt2:before {
-    content: '\e004';
-  }
-  .iconic-pen-alt:before {
-    content: '\e005';
-  }
-  .iconic-pen-alt2:before {
-    content: '\e006';
-  }
-  .iconic-chat-alt:before {
-    content: '\e007';
-  }
-  .iconic-o-plus:before {
-    content: '\e008';
-  }
-  .iconic-o-minus:before {
-    content: '\e009';
-  }
-  .iconic-bars-alt:before {
-    content: '\e00a';
-  }
-  .iconic-book-alt:before {
-    content: '\e00b';
-  }
-  .iconic-aperture-alt:before {
-    content: '\e00c';
-  }
-  .iconic-beaker-alt:before {
-    content: '\e010';
-  }
-  .iconic-left-quote-alt:before {
-    content: '\e011';
-  }
-  .iconic-right-quote-alt:before {
-    content: '\e012';
-  }
-  .iconic-o-arrow-left:before {
-    content: '\e013';
-  }
-  .iconic-o-arrow-up:before {
-    content: '\e014';
-  }
-  .iconic-o-arrow-right:before {
-    content: '\e015';
-  }
-  .iconic-o-arrow-down:before {
-    content: '\e016';
-  }
-  .iconic-o-arrow-left-alt:before {
-    content: '\e017';
-  }
-  .iconic-o-arrow-up-alt:before {
-    content: '\e018';
-  }
-  .iconic-o-arrow-right-alt:before {
-    content: '\e019';
-  }
-  .iconic-o-arrow-down-alt:before {
-    content: '\e01a';
-  }
-  .iconic-brush:before {
-    content: '\e01b';
-  }
-  .iconic-brush-alt:before {
-    content: '\e01c';
-  }
-  .iconic-eyedropper:before {
-    content: '\e01e';
-  }
-  .iconic-layers:before {
-    content: '\e01f';
-  }
-  .iconic-layers-alt:before {
-    content: '\e020';
-  }
-  .iconic-compass:before {
-    content: '\e021';
-  }
-  .iconic-award:before {
-    content: '\e022';
-  }
-  .iconic-beaker:before {
-    content: '\e023';
-  }
-  .iconic-steering-wheel:before {
-    content: '\e024';
-  }
-  .iconic-eye:before {
-    content: '\e025';
-  }
-  .iconic-aperture:before {
-    content: '\e026';
-  }
-  .iconic-image:before {
-    content: '\e027';
-  }
-  .iconic-chart:before {
-    content: '\e028';
-  }
-  .iconic-chart-alt:before {
-    content: '\e029';
-  }
-  .iconic-target:before {
-    content: '\e02a';
-  }
-  .iconic-tag:before {
-    content: '\e02b';
-  }
-  .iconic-rss:before {
-    content: '\e02c';
-  }
-  .iconic-rss-alt:before {
-    content: '\e02d';
-  }
-  .iconic-share:before {
-    content: '\e02e';
-  }
-  .iconic-undo:before {
-    content: '\e02f';
-  }
-  .iconic-reload:before {
-    content: '\e030';
-  }
-  .iconic-reload-alt:before {
-    content: '\e031';
-  }
-  .iconic-loop:before {
-    content: '\e032';
-  }
-  .iconic-loop-alt:before {
-    content: '\e033';
-  }
-  .iconic-back-forth:before {
-    content: '\e034';
-  }
-  .iconic-back-forth-alt:before {
-    content: '\e035';
-  }
-  .iconic-spin:before {
-    content: '\e036';
-  }
-  .iconic-spin-alt:before {
-    content: '\e037';
-  }
-  .iconic-move-horizontal:before {
-    content: '\e038';
-  }
-  .iconic-move-horizontal-alt:before {
-    content: '\e039';
-  }
-  .iconic-o-move-horizontal:before {
-    content: '\e03a';
-  }
-  .iconic-move-vertical:before {
-    content: '\e03b';
-  }
-  .iconic-move-vertical-alt:before {
-    content: '\e03c';
-  }
-  .iconic-o-move-vertical:before {
-    content: '\e03d';
-  }
-  .iconic-move:before {
-    content: '\e03e';
-  }
-  .iconic-move-alt:before {
-    content: '\e03f';
-  }
-  .iconic-o-move:before {
-    content: '\e040';
-  }
-  .iconic-transfer:before {
-    content: '\e041';
-  }
-  .iconic-download:before {
-    content: '\e042';
-  }
-  .iconic-upload:before {
-    content: '\e043';
-  }
-  .iconic-cloud-download:before {
-    content: '\e044';
-  }
-  .iconic-cloud-upload:before {
-    content: '\e045';
-  }
-  .iconic-fork:before {
-    content: '\e046';
-  }
-  .iconic-play:before {
-    content: '\e047';
-    color:#65B642;
-    margin-left:4px;
-  }
-  .iconic-o-play:before {
-    content: '\e048';
-  }
-  .iconic-pause:before {
-    content: '\e049';
-  }
-  .iconic-stop:before {
-    content: '\e04a';
-    color:red;
-    font-size:10px;
-  }
-  .iconic-eject:before {
-    content: '\e04b';
-  }
-  .iconic-first:before {
-    content: '\e04c';
-  }
-  .iconic-last:before {
-    content: '\e04d';
-  }
-  .iconic-fullscreen:before {
-    content: '\e04e';
-  }
-  .iconic-fullscreen-alt:before {
-    content: '\e04f';
-  }
-  .iconic-fullscreen-exit:before {
-    content: '\e050';
-  }
-  .iconic-fullscreen-exit-alt:before {
-    content: '\e051';
-  }
-  .iconic-equalizer:before {
-    content: '\e052';
-  }
-  .iconic-article:before {
-    content: '\e053';
-  }
-  .iconic-read-more:before {
-    content: '\e054';
-  }
-  .iconic-list:before {
-    content: '\e055';
-  }
-  .iconic-list-nested:before {
-    content: '\e056';
-  }
-  .iconic-cursor:before {
-    content: '\e057';
-  }
-  .iconic-dial:before {
-    content: '\e058';
-  }
-  .iconic-new-window:before {
-    content: '\e059';
-  }
-  .iconic-trash:before {
-    content: '\e05a';
-  }
-  .iconic-battery-half:before {
-    content: '\e05b';
-  }
-  .iconic-battery-empty:before {
-    content: '\e05c';
-  }
-  .iconic-battery-charging:before {
-    content: '\e05d';
-  }
-  .iconic-chat:before {
-    content: '\e05e';
-  }
-  .iconic-mic:before {
-    content: '\e05f';
-  }
-  .iconic-movie:before {
-    content: '\e060';
-  }
-  .iconic-headphones:before {
-    content: '\e061';
-  }
-  .iconic-user:before {
-    content: '\e062';
-  }
-  .iconic-lightbulb:before {
-    content: '\e063';
-  }
-  .iconic-cd:before {
-    content: '\e064';
-  }
-  .iconic-folder:before {
-    content: '\e065';
-  }
-  .iconic-document:before {
-    content: '\e066';
-  }
-  .iconic-pin:before {
-    content: '\e067';
-  }
-  .iconic-map-pin:before {
-    content: '\e068';
-  }
-  .iconic-book:before {
-    content: '\e069';
-  }
-  .iconic-book-alt2:before {
-    content: '\e06a';
-  }
-  .iconic-box:before {
-    content: '\e06b';
-  }
-  .iconic-calendar-alt:before {
-    content: '\e06c';
-  }
-  .iconic-comment:before {
-    content: '\e06d';
-  }
-  .iconic-iphone:before {
-    content: '\e06e';
-  }
-  .iconic-bars:before {
-    content: '\e06f';
-  }
-  .iconic-camera:before {
-    content: '\e070';
-  }
-  .iconic-volume-mute:before {
-    content: '\e071';
-  }
-  .iconic-volume:before {
-    content: '\e072';
-  }
-  .iconic-battery-full:before {
-    content: '\e073';
-  }
-  .iconic-magnifying-glass:before {
-    content: '\e074';
-  }
-  .iconic-lock:before {
-    content: '\e075';
-  }
-  .iconic-unlock:before {
-    content: '\e076';
-  }
-  .iconic-link:before {
-    content: '\e077';
-  }
-  .iconic-wrench:before {
-    content: '\e078';
-  }
-  .iconic-clock:before {
-    content: '\e079';
-  }
-  .iconic-sun-stroke:before {
-    content: '\2600';
-    font-family: IconicStroke;
-  }
-  .iconic-moon-stroke:before {
-    content: '\263e';
-    font-family: IconicStroke;
-  }
-  .iconic-star-stroke:before {
-    content: '\2605';
-    font-family: IconicStroke;
-  }
-  .iconic-heart-stroke:before {
-    content: '\2764';
-    font-family: IconicStroke;
-  }
-  .iconic-key-stroke:before {
-    content: '\26bf';
-    font-family: IconicStroke;
-  }
-  .iconic-document-alt-stroke:before {
-    content: '\e000';
-    font-family: IconicStroke;
-  }
-  .iconic-comment-alt1-stroke:before {
-    content: '\e003';
-    font-family: IconicStroke;
-  }
-  .iconic-comment-alt2-stroke:before {
-    content: '\e004';
-    font-family: IconicStroke;
-  }
-  .iconic-pen-alt-stroke:before {
-    content: '\e005';
-    font-family: IconicStroke;
-  }
-  .iconic-chat-alt-stroke:before {
-    content: '\e007';
-    font-family: IconicStroke;
-  }
-  .iconic-award-stroke:before {
-    content: '\e022';
-    font-family: IconicStroke;
-  }
-  .iconic-tag-stroke:before {
-    content: '\e02b';
-    font-family: IconicStroke;
-  }
-  .iconic-trash-stroke:before {
-    content: '\e05a';
-    font-family: IconicStroke;
-  }
-  .iconic-folder-stroke:before {
-    content: '\e065';
-    font-family: IconicStroke;
-  }
-  .iconic-document-stroke:before {
-    content: '\e066';
-    font-family: IconicStroke;
-  }
-  .iconic-map-pin-stroke:before {
-    content: '\e068';
-    font-family: IconicStroke;
-  }
-  .iconic-calendar-alt-stroke:before {
-    content: '\e06c';
-    font-family: IconicStroke;
-  }
-  .iconic-comment-stroke:before {
-    content: '\e06d';
-    font-family: IconicStroke;
-  }
-  .iconic-lock-stroke:before {
-    content: '\e075';
-    font-family: IconicStroke;
-  }
-  .iconic-unlock-stroke:before {
-    content: '\e076';
-    font-family: IconicStroke;
-  }
-}

+ 0 - 50
hmc/css/clusters.css

@@ -1,50 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-#clustersNavigationLinksDivId {
-  width: 100%;
-  text-align: center;
-  margin: 0px auto;
-  margin-bottom: 8px;
-}
-
-#clustersNavigationLinksListId {
-  margin:0;
-  padding:0;
-  text-align:center;
-  height:50px;
-}
-
-#clustersNavigationLinksListId li {
-  display: inline-block;
-  width: auto;
-  padding: 5px;
-  margin: 2px;
-  cursor: default;
-}
-
-#clustersHostRoleMappingFieldsetId {
-  margin-left: auto;
-  margin-right: auto;
-  width: 300px;
-}
-
-

+ 0 - 7
hmc/css/cssreset-min.css

@@ -1,7 +0,0 @@
-/*
-YUI 3.5.1 (build 22)
-Copyright 2012 Yahoo! Inc. All rights reserved.
-Licensed under the BSD License.
-http://yuilibrary.com/license/
-*/
-html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea,select{*font-size:100%}legend{color:#000}#yui3-css-stamp.cssreset{display:none}

BIN
hmc/css/sprite_icons.png


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 20
hmc/css/yuiCombined.css


+ 0 - 533
hmc/db/schema.dump

@@ -1,533 +0,0 @@
--- /*
---  * Licensed to the Apache Software Foundation (ASF) under one
---  * or more contributor license agreements.  See the NOTICE file
---  * distributed with this work for additional information
---  * regarding copyright ownership.  The ASF licenses this file
---  * to you under the Apache License, Version 2.0 (the
---  * "License"); you may not use this file except in compliance
---  * with the License.  You may obtain a copy of the License at
---  *
---  *     http://www.apache.org/licenses/LICENSE-2.0
---  *
---  * Unless required by applicable law or agreed to in writing, software
---  * distributed under the License is distributed on an "AS IS" BASIS,
---  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
---  * See the License for the specific language governing permissions and
---  * limitations under the License.
---  */
-BEGIN TRANSACTION;
-
-CREATE TABLE "AmbariConfig" (
-  key_name TEXT, -- the key for cluster wide version
-  tag_name TEXT, -- tag name current/previous
-  version TEXT,  -- the cluster wide version
-  PRIMARY KEY (key_name, tag_name)
-);
-
-INSERT OR REPLACE INTO "AmbariConfig" (key_name, tag_name, version) VALUES 
-  ("Ambari", "Current", "1.0.2");
-INSERT OR REPLACE INTO "AmbariConfig" (key_name, tag_name, version) VALUES
-  ("Ambari", "Previous", "");
-INSERT OR REPLACE INTO "AmbariConfig" (key_name, tag_name, version) VALUES
-  ("HDPStack", "Latest", "1.0.1");
-
-CREATE TABLE  "Clusters" (
-  cluster_name TEXT, -- Cluster name
-  version TEXT, -- version of the hadoop stack installed
-  state TEXT, -- cluster state - installed, config in progress etc
-  PRIMARY KEY (cluster_name)
-);
-
-CREATE TABLE  "Services" (
-  id INTEGER,
-  service_name TEXT, -- Service name
-  description TEXT, -- Service description
-  display_name TEXT, -- Display name
-  attributes BLOB, -- Per-Service attributes stored as a JSON serialized string conforming to
-                   -- the following schema:
-                   --
-                   -- { "runnable": boolean, "mustInstall": boolean, "editable": boolean, "noDisplay": boolean }
-                   --     where:
-                   --
-                   --     "runnable": true for services like Sqoop and Pig that don't have any
-                   --                 running components, and can thus not be started/stopped.
-                   --     "mustInstall": true for services that MUST be installed on a cluster,
-                   --                    with no option for the user to say otherwise.
-                   --     "editable": false for services like ZooKeeper whose selectability
-                   --                 cannot be edited, and is instead controlled completely by
-                   --                 our internal needs.
-                   --     "noDisplay": true for services that shouldn't be displayed in the UI.
-  PRIMARY KEY (id),
-  UNIQUE (service_name)
-);
-
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "KERBEROS", "Kerberos", '{ "runnable": true, "mustInstall": false, "editable": true, "noDisplay": false }',  "Kerberos for Secure Cluster Installation" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "HDFS", "HDFS", '{ "runnable": true, "mustInstall": true, "editable": false, "noDisplay": false }', "Apache Hadoop Distributed File System" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "MAPREDUCE", "MapReduce", '{ "runnable": true, "mustInstall": true, "editable": false, "noDisplay": false }', "Apache Hadoop Distributed Processing Framework" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "ZOOKEEPER", "ZooKeeper", '{ "runnable": true, "mustInstall": false, "editable": false, "noDisplay": false }', "Centralized Service for Configuration Management and Distribution Synchronization" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "HBASE", "HBase", '{ "runnable": true, "mustInstall": false, "editable": true, "noDisplay": false }',  "Apache HDFS-based Non-relational Distributed Database" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "PIG", "Pig", '{ "runnable": false, "mustInstall": false, "editable": true, "noDisplay": false }',  "Platform for Analyzing Large Data Sets" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "SQOOP", "Sqoop", '{ "runnable": false, "mustInstall": false, "editable": true, "noDisplay": false }',  "Tool for transferring bulk data between Apache Hadoop and structured datastores such as relational databases" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "OOZIE", "Oozie", '{ "runnable": true, "mustInstall": false, "editable": true, "noDisplay": false }',  "Workflow/Coordination system to manage Apache Hadoop jobs" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "HIVE", "Hive/HCatalog", '{ "runnable": true, "mustInstall": false, "editable": true, "noDisplay": false }',  "Hive - Data Warehouse system for Apache Hadoop, HCatalog - Table and Storage Management service for data created using Apache Hadoop" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "TEMPLETON", "Templeton", '{ "runnable": true, "mustInstall": false, "editable": true, "noDisplay": false }',  "Webservice APIs for Apache Hadoop" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "DASHBOARD", "Dashboard", '{ "runnable": true, "mustInstall": true, "editable": false, "noDisplay": true }',  "Monitoring Dashboard for HDP" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "GANGLIA", "Ganglia", '{ "runnable": true, "mustInstall": true, "editable": false, "noDisplay": false }',  "Ganglia-based Metrics Collection for HDP" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "NAGIOS", "Nagios", '{ "runnable": true, "mustInstall": true, "editable": false, "noDisplay": false }',  "Nagios-based Monitoring for HDP" );
-INSERT OR REPLACE INTO "Services" ( service_name, display_name, attributes, description ) VALUES
-  ( "MISCELLANEOUS", "Miscellaneous", '{ "runnable": false, "mustInstall": true, "editable": false, "noDisplay": true }',  "" );
-
-CREATE TABLE  "ServiceComponents" (
-  service_name TEXT, -- service name
-  component_name TEXT, -- component name
-  display_name TEXT, -- Component display name
-  description TEXT, -- component description
-  attributes BLOB, -- Per-ServiceComponent attributes stored as a JSON serialized string
-                   -- conforming to the following schema:
-                   --
-                   -- { "isMaster": boolean, "isClient": boolean }
-                   --     where:
-                   --
-                   --     "isMaster": true if this component plays the role of a master
-                   --                 for the service.
-                   --     "isClient": true if this component plays the role of a client
-                   --                 for the service.
-  PRIMARY KEY (component_name),
-  FOREIGN KEY (service_name) REFERENCES Services(service_name)
-);
-
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "HDFS", "NAMENODE", "NameNode", '{ "isMaster": true, "isClient": false }', "Master server that manages the file system namespace and regulates access to files by clients" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "HDFS", "SNAMENODE", "Secondary NameNode", '{ "isMaster": true, "isClient": false }', "Helper to the primary NameNode that is responsible for supporting periodic checkpoints of the HDFS metadata" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "HDFS", "DATANODE", "Datanode", '{ "isMaster": false, "isClient": false }', "The slave for HDFS" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "HDFS", "HDFS_CLIENT", "HDFS Client", '{ "isMaster": false, "isClient": true}', "Client component for HDFS" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "MAPREDUCE", "JOBTRACKER", "JobTracker", '{ "isMaster": true, "isClient": false }', "Central Master service that pushes work (MR tasks) out to available TaskTracker nodes in the cluster");
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "MAPREDUCE", "TASKTRACKER", "TaskTracker", '{ "isMaster": false, "isClient": false }', "The slave for MapReduce" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "MAPREDUCE", "MAPREDUCE_CLIENT", "MapReduce Client", '{ "isMaster": false, "isClient": true }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "ZOOKEEPER", "ZOOKEEPER_SERVER", "ZooKeeper Server", '{ "isMaster": true, "isClient": false }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "ZOOKEEPER", "ZOOKEEPER_CLIENT", "ZooKeeper Client", '{ "isMaster": false, "isClient": true }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "HBASE", "HBASE_MASTER", "HBase Master", '{ "isMaster": true, "isClient": false }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "HBASE", "HBASE_REGIONSERVER", "HBase Region Server", '{ "isMaster": false, "isClient": false }', "The slave for HBase" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "HBASE", "HBASE_CLIENT", "HBase Client", '{ "isMaster": false, "isClient": true }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "PIG", "PIG_CLIENT", "Pig Client", '{ "isMaster": false, "isClient": true }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "SQOOP", "SQOOP_CLIENT", "Sqoop Client", '{ "isMaster": false, "isClient": true }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "OOZIE", "OOZIE_SERVER", "Oozie Server", '{ "isMaster": true, "isClient": false }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "OOZIE", "OOZIE_CLIENT", "Oozie Client", '{ "isMaster": false, "isClient": true }',  "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "HIVE", "HIVE_MYSQL", "MySql Server for Hive", '{ "isMaster": false, "isClient": false }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "HIVE", "HIVE_SERVER", "Hive Metastore", '{ "isMaster": true, "isClient": false }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "HIVE", "HIVE_CLIENT", "Hive Client", '{ "isMaster": false, "isClient": true }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "TEMPLETON", "TEMPLETON_SERVER", "Templeton Server", '{ "isMaster": true, "isClient": false }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "TEMPLETON", "TEMPLETON_CLIENT", "Templeton Client", '{ "isMaster": false, "isClient": true }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "DASHBOARD", "DASHBOARD", "Monitoring Dashboard", '{ "isMaster": false, "isClient": false }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "NAGIOS", "NAGIOS_SERVER", "Nagios Server", '{ "isMaster": true, "isClient": false }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "GANGLIA", "GANGLIA_MONITOR_SERVER", "Ganglia Collector", '{ "isMaster": true, "isClient": false }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "GANGLIA", "GANGLIA_MONITOR", "Ganglia Slave", '{ "isMaster": false, "isClient": false }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "KERBEROS", "KERBEROS_SERVER", "Kerberos Server", '{ "isMaster": true, "isClient": false }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "KERBEROS", "KERBEROS_ADMIN_CLIENT", "Kerberos Admin Client", '{ "isMaster": false, "isClient": true }', "" );
-INSERT OR REPLACE INTO "ServiceComponents" ( service_name, component_name, display_name, attributes, description ) VALUES
-  ( "KERBEROS", "KERBEROS_CLIENT", "Kerberos Client", '{ "isMaster": false, "isClient": true }', "" );
-
-CREATE TABLE  "ServiceDependencies" (
-  from_service_name TEXT, -- service A depends on B
-  to_service_name TEXT, -- service B
-  PRIMARY KEY ( from_service_name, to_service_name ),
-  FOREIGN KEY (from_service_name) REFERENCES Services(service_name),
-  FOREIGN KEY (to_service_name) REFERENCES Services(service_name)
-);
-CREATE INDEX  svc_dep_index ON "ServiceDependencies" ( to_service_name );
-
-INSERT OR REPLACE INTO "ServiceDependencies" ( from_service_name, to_service_name ) VALUES ( "MAPREDUCE" , "HDFS" );
-INSERT OR REPLACE INTO "ServiceDependencies" ( from_service_name, to_service_name ) VALUES ( "HBASE" , "ZOOKEEPER" );
-INSERT OR REPLACE INTO "ServiceDependencies" ( from_service_name, to_service_name ) VALUES ( "HBASE" , "HDFS" );
-INSERT OR REPLACE INTO "ServiceDependencies" ( from_service_name, to_service_name ) VALUES ( "OOZIE" , "MAPREDUCE" );
-INSERT OR REPLACE INTO "ServiceDependencies" ( from_service_name, to_service_name ) VALUES ( "HIVE" , "MAPREDUCE" );
-INSERT OR REPLACE INTO "ServiceDependencies" ( from_service_name, to_service_name ) VALUES ( "TEMPLETON" , "MAPREDUCE" );
-INSERT OR REPLACE INTO "ServiceDependencies" ( from_service_name, to_service_name ) VALUES ( "TEMPLETON" , "PIG" );
-INSERT OR REPLACE INTO "ServiceDependencies" ( from_service_name, to_service_name ) VALUES ( "TEMPLETON" , "HIVE" );
-INSERT OR REPLACE INTO "ServiceDependencies" ( from_service_name, to_service_name ) VALUES ( "TEMPLETON" , "ZOOKEEPER" );
-INSERT OR REPLACE INTO "ServiceDependencies" ( from_service_name, to_service_name ) VALUES ( "PIG" , "MAPREDUCE" );
-INSERT OR REPLACE INTO "ServiceDependencies" ( from_service_name, to_service_name ) VALUES ( "SQOOP" , "MAPREDUCE" );
--- todo need to add all dependencies
-
-CREATE TABLE  "ServiceComponentDependencies" (
-  from_component_name TEXT, -- component  A depends on B
-  to_component_name TEXT, -- component B
-  PRIMARY KEY ( from_component_name, to_component_name ),
-  FOREIGN KEY (from_component_name) REFERENCES ServiceComponents(component_name),
-  FOREIGN KEY (to_component_name) REFERENCES ServiceComponents(component_name)
-);
-CREATE INDEX  component_dep_index ON "ServiceComponentDependencies" ( to_component_name );
-
-INSERT OR REPLACE INTO "ServiceComponentDependencies" ( from_component_name, to_component_name ) VALUES ( "DATANODE", "NAMENODE" );
-INSERT OR REPLACE INTO "ServiceComponentDependencies" ( from_component_name, to_component_name ) VALUES ( "SNAMENODE", "NAMENODE" );
-INSERT OR REPLACE INTO "ServiceComponentDependencies" ( from_component_name, to_component_name ) VALUES ( "TASKTRACKER", "JOBTRACKER" );
-
--- TODO add inserts for dependencies
-
-CREATE TABLE  "ServiceInfo" (
-  cluster_name TEXT, -- foreign-key cluster_name
-  service_name TEXT, -- foreign-key
-  state TEXT, -- current state of the service
-  desired_state TEXT, -- desired state of the service
-  is_enabled BOOL, -- whether service is enabled
-  PRIMARY KEY(cluster_name, service_name),
-  FOREIGN KEY (cluster_name) REFERENCES Clusters(cluster_name),
-  FOREIGN KEY (service_name) REFERENCES Services(service_name)
-);
-
-CREATE TABLE  "ServiceComponentInfo" (
-  cluster_name TEXT, -- foreign-key cluster_name
-  service_name TEXT, -- foreign-key
-  component_name TEXT, -- foreign-key
-  state TEXT, -- current state of the service
-  desired_state TEXT, -- desired state of the service
-  PRIMARY KEY(cluster_name, component_name),
-  FOREIGN KEY (cluster_name) REFERENCES Clusters(cluster_name),
-  FOREIGN KEY (service_name) REFERENCES Services(service_name),
-  FOREIGN KEY (component_name) REFERENCES ServiceComponents(component_name)
-);
-
-CREATE TABLE  ConfigProperties (
-  key TEXT, -- property key
-  default_value TEXT, -- default value
-  display_name TEXT, -- display name
-  description TEXT, -- description
-  service_name TEXT, -- service to which this property belongs to
-  display_type TEXT, -- used to determine what form element to use for rendering
-                     -- possible values are:
-                     --   NODISPLAY: do not display the field
-                     --   TEXT: text field
-                     --   CHECKBOX: checkbox
-                     --   PASSWORD: password
-                     --   <empty string>: TEXT is assumed
-  display_attributes TEXT, -- display attributes stored as a JSON serialized string
-                   -- conforming to the following schema:
-                   --
-                   -- { "reconfigurable": boolean, "editable": boolean, "unit": string }
-                   --     where:
-                   --
-                   --     "reconfigurable": whether the value can be edited during reconfiguration - default false if not set
-                   --     "editable": if editable on configurations page - default true if not set
-                   --     "unit": unit to show.  if not used, leave it undefined
-  PRIMARY KEY (key) ,
-  FOREIGN KEY (service_name) REFERENCES Services(service_name)
-);
-
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "dfs_name_dir", "", "NameNode directories", "NameNode directories for HDFS to store the file system image", "HDFS", "TEXT", '{ "reconfigurable": false, "editable": true }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "dfs_data_dir", "",  "DataNode directories", "DataNode directories for HDFS to store the data blocks", "HDFS", "TEXT", '{ "reconfigurable": false, "editable": true }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "fs_checkpoint_dir", "",  "SecondaryNameNode Checkpoint directory", "Directory on the local filesystem where the Secondary NameNode should store the temporary images to merge", "HDFS", "TEXT", '{ "reconfigurable": false, "editable": true }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapred_local_dir", "", "MapReduce local directories", "Directories for MapReduce to store intermediate data files", "MAPREDUCE", "TEXT", '{ "reconfigurable": false, "editable": true }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "oozie_data_dir", "", "Oozie DB directory", "Data directory in which the Oozie DB exists", "OOZIE", "TEXT", '{ "reconfigurable": false, "editable": true }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "zk_data_dir", "", "ZooKeeper directory", "Data directory for ZooKeeper", "ZOOKEEPER", "TEXT", '{ "reconfigurable": false, "editable": true }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hive_mysql_host", "", "MySQL host", "MySQL host on which the Hive Metastore is hosted. If left empty, the metastore will be set up on the same host as the Hive Server using the database name and user credentials specified", "HIVE" , "TEXT", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hive_database_name", "hive", "MySQL Database Name", "MySQL Database name used as the Hive Metastore", "HIVE", "TEXT", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hive_metastore_user_name", "hive", "MySQL user", "MySQL username to use to connect to the MySQL database", "HIVE", "TEXT", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hive_metastore_user_passwd", "", "MySQL password", "MySQL password to use to connect to the MySQL database", "HIVE", "PASSWORD", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "jdk_location", "", "URL to download 32/64-bit JDK", "URL from where the Java JDK binary can be downloaded", "MISCELLANEOUS", "TEXT", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "java32_home", "", "Path to 32-bit JAVA_HOME", "Path to 32-bit JAVA_HOME", "MISCELLANEOUS", "TEXT", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "java64_home", "", "Path to 64-bit JAVA_HOME", "Path to 64-bit JAVA_HOME", "MISCELLANEOUS", "TEXT", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hdfs_user", "hdfs", "HDFS User Name", "User to run HDFS as", "HDFS", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapred_user", "mapred", "MapRed User Name", "User to run MapReduce as", "MAPREDUCE", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "dfs_support_append", "true", "Append enabled", "Whether enable HDFS Append feature", "HDFS", "NODISPLAY", '{ "reconfigurable": true }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "dfs_webhdfs_enabled", "false", "WebHDFS enabled", "Whether to enable WebHDFS feature", "HDFS", "CHECKBOX", '{ "reconfigurable": true }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hadoop_logdirprefix", "/var/log/hadoop", "Hadoop Log DIR", "Directory for hadoop log files", "MISCELLANEOUS", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hadoop_piddirprefix", "/var/run/hadoop", "Hadoop PID DIR", "Directory in which the pid files for hadoop processes will be created", "MISCELLANEOUS", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "scheduler_name", "org.apache.hadoop.mapred.CapacityTaskScheduler", "MapReduce Capacity Scheduler", "The scheduler to use for scheduling of MapReduce jobs", "MAPREDUCE", "NODISPLAY", '{ "reconfigurable": true }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hbase_log_dir", "/var/log/hbase", "HBase Log DIR", "Directory for HBASE logs", "HBASE", "NODISPLAY", '{"reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hbase_pid_dir", "/var/run/hbase", "HBase PID DIR", "Directory in which the pid files for HBASE processes will be created", "HBASE", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hbase_user", "hbase", "HBase User Name", "User to run HBASE as", "HBASE", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "zk_log_dir", "/var/log/zookeeper", "ZooKeeper Log directory", "Directory for ZooKeeper log files", "ZOOKEEPER", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "zk_pid_dir", "/var/run/zookeeper", "ZooKeeper PID directory", "Directory in which the pid files for zookeeper processes will be created", "ZOOKEEPER", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "zk_user", "zookeeper", "ZooKeeper User", "User to run ZooKeeper as", "ZOOKEEPER", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hcat_logdirprefix", "/var/log/hcatalog", "HCAT Log Dir", "Directory for HCatalog logs", "HIVE", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hcat_logdirprefix", "/var/log/hcatalog", "HCAT Log Dir", "Directory in which the pid files for hcatalog processes will be created", "HIVE", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hcat_user", "hcat", "HCAT User Name", "User to run HCatalog as", "HIVE", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "templeton_user", "templeton", "Templeton User Name", "User to run Templeton as", "TEMPLETON", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "templeton_pid_dir", "/var/run/templeton", "Templeton PID Dir", "Directory in which the pid files for templeton processes will be created", "TEMPLETON", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "templeton_log_dir", "/var/log/templeton", "Templeton Log Dir", "Directory for templeton logs", "TEMPLETON", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "oozie_log_dir", "/var/log/oozie", "Oozie Log Dir", "Directory for oozie logs", "OOZIE", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "oozie_pid_dir", "/var/pid/oozie", "Oozie PID Dir", "Directory in which the pid files for oozie processes will be created", "OOZIE", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "oozie_user", "oozie", "Oozie User Name", "User to run Oozie as", "OOZIE", "NODISPLAY", '{ "reconfigurable": false }' );
-
--- Configurations for nagios
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "nagios_web_login", "nagiosadmin", "Nagios Admin username", "Nagios Web UI Admin username", "NAGIOS", "TEXT", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "nagios_web_password", "", "Nagios Admin password", "Nagios Web UI Admin password", "NAGIOS", "PASSWORD", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "nagios_contact", "", "Hadoop Admin email", "Hadoop Administrator email for alert notification", "NAGIOS", "TEXT", '{ "reconfigurable": true }' );
-
--- Configuration for local yum mirror support
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "yum_repo_file", "/etc/yum.repos.d/hdp.repo", "Path to YUM Repo file", "Path to YUM Repo file", "MISCELLANEOUS", "NODISPLAY", '{ "reconfigurable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "using_local_repo", "false", "Whether a local repo is being used", "Whether a local repo is being used", "MISCELLANEOUS", "NODISPLAY", '{ "reconfigurable": false }' );
-
---                                         gsCluster.properties keys
-
--- maps to hadoop_heap_size in gsCluster.properties in MB
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hadoop_heapsize", "1024", "Hadoop maximum Java heap size", "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)", "HDFS" , "TEXT", '{ "reconfigurable": true, "unit": "MB", "type":"int" }' );
-
--- maps to namenode_javaheap in gsCluster.properties in MB
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "namenode_heapsize", "1024", "NameNode Java heap size", "Initial and maximum Java heap size for NameNode (Java options -Xms and -Xmx)", "HDFS" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to namenode_opt_newsize in gscluster in MB
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "namenode_opt_newsize", "200", "NameNode new generation size", "Default size of Java new generation for NameNode (Java option -XX:NewSize)", "HDFS" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to datanode_du_reserved in gscluster in bytes.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "datanode_du_reserved", "1", "Reserved space for HDFS", "Reserved space in GB per volume", "HDFS" , "TEXT", '{ "reconfigurable": true, "unit":"GB" }' );
-
--- maps to dt_heapsize in gscluster in MB.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "dtnode_heapsize", "1024", "DataNode maximum Java heap size", "Maximum Java heap size for DataNode (Java option -Xmx)", "HDFS" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to jtnode_opt_newsize in gscluster in MB.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "jtnode_opt_newsize", "200", "JobTracker new generation size", "Default size of Java new generation size for JobTracker (Java option -XX:NewSize)", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to jtnode_opt_maxnewsize in gscluster in MB
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "jtnode_opt_maxnewsize", "200", "JobTracker maximum new generation size", "Maximum size of Java new generation for JobTracker (Java option -XX:MaxNewSize)", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to jt_heapsize in gscluster in MB.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "jtnode_heapsize", "1024", "JobTracker maximum Java heap size", "Maximum Java heap size for JobTracker in MB (Java option -Xmx)", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to ttnode_heapsize in gscluster in MB.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "ttnode_heapsize", "1024", "TaskTracker maximum Java heap size", "Maximum Java heap size for TaskTracker in MB (Java option -Xmx)", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to mapred_map_tasks_max in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapred_map_tasks_max", "4", "Number of Map slots per node", "Number of slots that Map tasks that run simultaneously can occupy on a TaskTracker", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
--- maps to mapred_red_tasks_max in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapred_red_tasks_max", "2", "Number of Reduce slots per node", "Number of slots that Reduce tasks that run simultaneously can occupy on a TaskTracker.", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
--- maps to mapred_cluster_map_mem_mb in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapred_cluster_map_mem_mb", "-1", "Cluster's Map slot size (virtual memory)", "The virtual memory size of a single Map slot in the MapReduce framework", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to mapred_cluster_red_mem_mb in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapred_cluster_red_mem_mb", "-1", "Cluster's Reduce slot size (virtual memory)", "The virtual memory size of a single Reduce slot in the MapReduce framework", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to mapred_cluster_max_map_mem_mb in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapred_cluster_max_map_mem_mb", "-1", "Upper limit on virtual memory for single Map task", "Upper limit on virtual memory size for a single Map task of any MapReduce job", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to mapred_cluster_max_red_mem_mb in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapred_cluster_max_red_mem_mb", "-1", "Upper limit on virtual memory for single Reduce task", "Upper limit on virtual memory size for a single Reduce task of any MapReduce job", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to mapred_job_map_mem_mb in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapred_job_map_mem_mb", "-1", "Default virtual memory for a job's map-task", "Virtual memory for single Map task", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to mapred_job_map_red_mb in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapred_job_red_mem_mb", "-1", "Default virtual memory for a job's reduce-task", "Virtual memory for single Reduce task", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to mapred_child_java_opts_sz in gscluster in MB.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapred_child_java_opts_sz", "768", "Java options for MapReduce tasks", "Java options for the TaskTracker child processes.", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to io_sort_mb in gscluster in MB
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "io_sort_mb", "200", "Map-side sort buffer memory", "The total amount of Map-side buffer memory to use while sorting files (Expert-only configuration)", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
-
--- maps to io_sort_spill_percent in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "io_sort_spill_percent", "0.9", "Limit on buffer", "Percentage of sort buffer used for record collection (Expert-only configuration)", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
-
--- maps to mapreduce_userlog_retainhours in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "mapreduce_userlog_retainhours", "24", "Job log retention (hours)", "The maximum time, in hours, for which the user-logs are to be retained after the job completion.", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"hours" }' );
-
--- maps to max_tasks_per_job in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "maxtasks_per_job", "-1", "Maximum number tasks for a Job", "Maximum number of tasks for a single Job", "MAPREDUCE" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
--- maps to dfs_datanode_failed_volume_tolerated in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "dfs_datanode_failed_volume_tolerated", "0", "DataNode volumes failure toleration", "The number of volumes that are allowed to fail before a datanode stops offering service", "HDFS" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
--- maps to tickTime in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "tickTime", "2000", "Length of single Tick", "The length of a single tick in milliseconds, which is the basic time unit used by ZooKeeper", "ZOOKEEPER" , "TEXT", '{ "reconfigurable": true, "unit":"ms" }' );
-
--- maps to initLimit in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "initLimit", "10", "Ticks to allow for sync at Init", "Amount of time, in ticks to allow followers to connect and sync to a leader", "ZOOKEEPER" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
--- maps to syncLimit in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "syncLimit", "5", "Ticks to allow for sync at Runtime", "Amount of time, in ticks to allow followers to connect an", "ZOOKEEPER" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
--- maps to clientPort in gscluster.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "clientPort", "2181", "Port for running ZK Server", "Port for running ZooKeeper server", "ZOOKEEPER" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
--- maps to hbase_regionserver_heapsize in gscluster in MB.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hbase_regionserver_heapsize", "1024", "HBase Region Servers maximum Java heap size", "Maximum Java heap size for HBase Region Servers (Java option -Xmx)", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
--- maps to hbase_master_heapsize in gscluster in MB.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hbase_master_heapsize", "1024", "HBase Master Maximum Java heap size", "Maximum Java heap size for HBase master (Java option -Xmx)", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"MB" }' );
-
---maps to hstore_compactionthreshold
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hstore_compactionthreshold", "3", "HBase HStore compaction threshold", "If more than this number of HStoreFiles in any one HStore then a compaction is run to rewrite all HStoreFiles files as one.", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
---maps to hfile_blockcache_size
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hfile_blockcache_size", "0.25", "HFile block cache size ", "Percentage of maximum heap (-Xmx setting) to allocate to block cache used by HFile/StoreFile. Set to 0 to disable but it's not recommended.", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
--- maps to hstorefile_maxsize. 
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hstorefile_maxsize", "1073741824", "Maximum HStoreFile Size", "If any one of a column families' HStoreFiles has grown to exceed this value, the hosting HRegion is split in two.", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"bytes" }' );
-
--- maps to regionserver_handlers. 
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "regionserver_handlers", "30", "HBase Region Server Handler", "Count of RPC Listener instances spun up on RegionServers", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
--- maps to hregion_majorcompaction.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hregion_majorcompaction", "86400000", "HBase Region Major Compaction", "The time between major compactions of all HStoreFiles in a region. Set to 0 to disable automated major compactions.", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"ms" }' );
-
--- maps to hregion_blockmultiplier.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hregion_blockmultiplier", "2", "HBase Region Block Multiplier", "Block updates if memstore has ""Multiplier * HBase Region Memstore Flush Size"" bytes. Useful preventing runaway memstore during spikes in update traffic", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
--- maps to hregion_memstoreflushsize.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hregion_memstoreflushsize", "134217728", "HBase Region Memstore Flush Size", "Memstore will be flushed to disk if size of the memstore exceeds this number of bytes.", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"bytes" }' );
-
--- maps to client_scannercaching.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "client_scannercaching", "100", "HBase Client Scanner Caching", "Number of rows that will be fetched when calling next on a scanner if it is not served from (local, client) memory. Do not set this value such that the time between invocations is greater than the scanner timeout", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"int" }' );
-
--- maps to zookeeper_sessiontimeout.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "zookeeper_sessiontimeout", "60000", "Zookeeper timeout for HBase Session", "HBase passes this to the zk quorum as suggested maximum time for a session", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"ms" }' );
-
--- maps to hfile_max_keyvalue_size.
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "hfile_max_keyvalue_size", "10485760", "HBase Client Maximum key-value Size", "Specifies the combined maximum allowed size of a KeyValue instance. It should be set to a fraction of the maximum region size.", "HBASE" , "TEXT", '{ "reconfigurable": true, "unit":"bytes" }' );
-
-
-
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "lzo_enabled", "false", "LZO compression", "LZO compression enabled", "MAPREDUCE" , "CHECKBOX", '{ "reconfigurable": true }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "snappy_enabled", "true", "Snappy compression", "Snappy compression enabled", "MAPREDUCE" , "NODISPLAY", '{ "reconfigurable": false }' );
-
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "fs_checkpoint_period", "21600", "HDFS Maximum Checkpoint Delay", "Maximum delay between two consecutive checkpoints for HDFS", "HDFS" , "TEXT", '{ "reconfigurable": false, "unit":"seconds", "editable": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "fs_checkpoint_size", "0.5", "HDFS Maximum Edit Log Size for Checkpointing", "Maximum size of the edits log file that forces an urgent checkpoint even if the maximum checkpoint delay is not reached", "HDFS" , "TEXT", '{ "reconfigurable": false, "unit":"GB", "editable": false }' );
-
--- Security related properties
-
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "security_enabled", "true", "Hadoop security", "Hadoop security enabled", "KERBEROS" , "NODISPLAY", '{ "reconfigurable": true, "noDisplay": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "kerberos_domain", "EXAMPLE.COM", "Kerberos realm", "Kerberos realm", "KERBEROS" , "TEXT", '{ "reconfigurable": false, "noDisplay": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "kadmin_pw", "bla123", "Kerberos Admin Password", "Kerberos admin password", "KERBEROS" , "SECRET", '{ "isPassword": true, "noDisplay": false, "reconfigurable": false, "displayType": "text" }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "keytab_path", "/etc/security/keytabs", "Keytab directory", "Keytab directory", "KERBEROS" , "TEXT", '{ "reconfigurable": false, "noDisplay": false }' );
-INSERT OR REPLACE INTO "ConfigProperties" ( key, default_value, display_name, description, service_name, display_type, display_attributes ) VALUES ( "kerberos_install_type", "AMBARI_SET_KERBEROS", "Kerberos installation", "Whether it is a user-configured or Ambari-configured Kerberos", "KERBEROS" , "NODISPLAY", '{ "reconfigurable": false, "editable": false, "noDisplay": false }' );
-
---                                        Done with gsCluster.properties
-
-CREATE TABLE  ServiceConfig (
-  cluster_name TEXT, -- foreign-key cluster_name
-  key TEXT, -- property key
-  value TEXT, -- property value
-  PRIMARY KEY (cluster_name, key),
-  FOREIGN KEY (key) REFERENCES ConfigProperties(key),
-  FOREIGN KEY (cluster_name) REFERENCES Clusters(cluster_name)
-);
-
-CREATE TABLE  "Hosts" (
-  cluster_name TEXT, -- foreign-key cluster_name
-  host_name TEXT,  -- host name
-  ip TEXT,  -- ip
-  total_mem   INTEGER,  -- total mem on host - in bytes
-  cpu_count   INTEGER,  -- cpu count - no. of cores
-  os_arch TEXT, -- os arch - i386, x86_64 etc
-  os_type TEXT, -- os type - searchable - defined set of supported OS types - RHEL5, RHEL6, CENTOS5, SLES, etc.
-  os BLOB, -- os info - type, version etc - uname -a?
-  disks_info BLOB, -- disk capacity json object, keys are mount-points
-  discovery_status TEXT, -- discovery state - if we could connect properly
-  bad_health_reason TEXT, -- failure reason if any
-  rack_info TEXT, -- rack information for host
-  attributes BLOB, -- attributes blob to store additional attributes that may be required for the host
-                   -- attributes stored currently:
-                      -- "publicFQDN" => public hostname in case of AWS ( same as hostname in other environments )
-                      -- "privateFQDN" => private hostname in case of AWS ( same as hostname in other environments )
-  PRIMARY KEY(host_name),
-  FOREIGN KEY (cluster_name) REFERENCES Clusters(cluster_name),
-  UNIQUE(ip)
-);
-CREATE INDEX  host_mem_index ON "Hosts" ( total_mem );
-
-CREATE TABLE  "HostRoles" (
-  role_id INTEGER, --autoincrement primary key
-  cluster_name TEXT, --foreign key
-  host_name TEXT, --foreign key
-  component_name TEXT, -- One component of a service running on this host, like DN of HDFS
-  state TEXT, -- current state of the host
-  desired_state TEXT, -- desired state of this host
-  PRIMARY KEY (role_id),
-  UNIQUE (host_name, component_name),
-  FOREIGN KEY (cluster_name) REFERENCES Clusters(cluster_name),
-  FOREIGN KEY (host_name) REFERENCES Hosts(host_name),
-  FOREIGN KEY (component_name) REFERENCES ServiceComponents(component_name)
-);
-
-CREATE TABLE "HostRoleConfig" (
-  cluster_name TEXT, --foreign key
-  host_name TEXT, --foreign key
-  component_name TEXT, -- One component of a service running on this host, like DN of HDFS
-  key TEXT, -- property key
-  value TEXT, -- property value
-  PRIMARY KEY (cluster_name, host_name, component_name, key),
-  FOREIGN KEY (key) REFERENCES ConfigProperties(key),
-  FOREIGN KEY (cluster_name) REFERENCES Clusters(cluster_name),
-  FOREIGN KEY (host_name) REFERENCES Hosts(host_name),
-  FOREIGN KEY (component_name) REFERENCES ServiceComponents(component_name)
-);
-
-CREATE TABLE  "ConfigHistory" (
-  cluster_name TEXT, -- foreign-key cluster_name
-  version INTEGER, -- auto inc version
-  config BLOB, -- config blob
-  change_log BLOB, -- changelog update message for change
-  update_time INTEGER, -- unix time when change was made
-  PRIMARY KEY (version),
-  FOREIGN KEY (cluster_name) REFERENCES Clusters(cluster_name)
-);
-
-CREATE TABLE  "TransactionStatus" (
-  cluster_name TEXT, -- cluster name foreign key
-  txn_id INTEGER, -- primary key auto-increment
-  create_time INTEGER, -- time when txn was created - unix time
-  status_info BLOB, -- blob containing all info pertaining to txn
-  pid_info BLOB, -- blob containing single or list of pids attached to txn
-  PRIMARY KEY (txn_id),
-  FOREIGN KEY (cluster_name) REFERENCES Clusters(cluster_name)
-);
-
-CREATE TABLE  "SubTransactionStatus" (
-  cluster_name TEXT, -- cluster name foreign key
-  txn_id INTEGER, -- txn id foreign key
-  sub_txn_id INTEGER, -- sub txn id
-  parent_sub_txn_id INTEGER, -- parent sub txn id
-  state TEXT, -- state info
-  description TEXT, -- additional description
-  progress TEXT, -- progress status of sub-txn
-  sub_txn_type TEXT, -- at what level is the txn taking place i.e cluster,svc,comp
-  op_status BLOB, -- status of operation - misc. info from puppet
-  PRIMARY KEY (cluster_name, txn_id, sub_txn_id),
-  FOREIGN KEY (txn_id) REFERENCES TransactionStatus(txn_id)
-);
-
-
-COMMIT;

+ 0 - 85
hmc/fileCombinator.php

@@ -1,85 +0,0 @@
-<?php
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-
-function deduceContentType ($fileToLoad)
-{
-  $contentType = '';
-
-  $fileExtension = pathinfo($fileToLoad, PATHINFO_EXTENSION);
-
-  if ($fileExtension == 'css')
-  {
-    $contentType = 'text/css';
-  }
-  elseif ($fileExtension == 'js' )
-  {
-    $contentType = 'application/x-javascript';
-  }
-
-  return $contentType;
-}
-
-/* main() */
-$filesToLoad = explode('&', $_SERVER['QUERY_STRING']);
-
-$contentType = '';
-$responseBody = '';
-$servingYuiFile = false;
-
-foreach ($filesToLoad as $fileToLoad) 
-{
-  /* Assumes a request has only homogenous file types, which holds true for 
-   * the combined requests YUI makes. 
-   */
-  if (empty($contentType))
-  {
-    $contentType = deduceContentType($fileToLoad);
-
-    if (preg_match('/^yui/', $fileToLoad))
-    {
-      $servingYuiFile = true;
-    }
-  }
-
-  $fileContents = file_get_contents('./' . $fileToLoad);
-
-  if ($fileContents)
-  {
-    $responseBody .= $fileContents;
-  }
-}
-
-header('Content-type: ' . $contentType);
-header('Content-Length: ' . strlen($responseBody));
-
-/* When we serve YUI files, make sure they're cached for a long time. */
-if( $servingYuiFile )
-{
-  $validitySecs = 24 * 60 * 60; /* 1 day */
-
-  header('Cache-Control: max-age=' . $validitySecs . ', must-revalidate, public');
-}
-
-echo $responseBody;
-
-?>

+ 0 - 169
hmc/fonts/iconic_fill.afm

@@ -1,169 +0,0 @@
-StartFontMetrics 2.0
-Comment Generated by FontForge 20110222
-Comment Creation Date: Thu Dec 29 18:55:15 2011
-FontName IconicFill
-FullName Untitled1
-FamilyName Untitled1
-Weight Medium
-Notice (Icons by PJ Onori, font creation script by Yann)
-ItalicAngle 0
-IsFixedPitch false
-UnderlinePosition -100
-UnderlineThickness 50
-Version 001.000
-EncodingScheme ISOLatin1Encoding
-FontBBox 15 -201 1016 801
-Descender -2147483648
-StartCharMetrics 150
-C 35 ; WX 905 ; N numbersign ; B 15 -200 890 800 ;
-C 63 ; WX 530 ; N question ; B 15 -200 515 800 ;
-C 64 ; WX 1030 ; N at ; B 15 -200 1015 800 ;
-C 182 ; WX 780 ; N paragraph ; B 15 -200 765 800 ;
-C -1 ; WX 530 ; N glyph4 ; B 15 -200 515 800 ;
-C -1 ; WX 1030 ; N glyph5 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph6 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph7 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph8 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph9 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph10 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph11 ; B 15 175 1015 800 ;
-C -1 ; WX 1030 ; N glyph12 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph13 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph14 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph15 ; B 15 -75 1015 800 ;
-C -1 ; WX 1030 ; N glyph16 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph17 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph18 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph19 ; B 15 -76 1016 800 ;
-C -1 ; WX 1030 ; N glyph20 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph21 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph22 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph23 ; B 15 -5 1015 800 ;
-C -1 ; WX 1030 ; N glyph24 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph25 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph26 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph27 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph28 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph29 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph30 ; B 15 550 1015 800 ;
-C -1 ; WX 1030 ; N glyph31 ; B 15 50 1015 800 ;
-C -1 ; WX 780 ; N glyph32 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph33 ; B 15 -200 1015 800 ;
-C -1 ; WX 530 ; N glyph34 ; B 15 -200 515 800 ;
-C -1 ; WX 1030 ; N glyph35 ; B 15 50 1016 800 ;
-C -1 ; WX 905 ; N glyph36 ; B 15 -200 890 800 ;
-C -1 ; WX 1030 ; N glyph37 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph38 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph39 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph40 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph41 ; B 15 -200 1015 800 ;
-C -1 ; WX 905 ; N glyph42 ; B 15 -200 890 800 ;
-C -1 ; WX 1030 ; N glyph43 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph44 ; B 15 -200 1015 800 ;
-C -1 ; WX 530 ; N glyph45 ; B 15 -200 515 800 ;
-C -1 ; WX 1030 ; N glyph46 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph47 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph48 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph49 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph50 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph51 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph52 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph53 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph54 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph55 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph56 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph57 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph58 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph59 ; B 15 -76 1015 800 ;
-C -1 ; WX 1030 ; N glyph60 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph61 ; B 15 -200 1015 800 ;
-C -1 ; WX 530 ; N glyph62 ; B 15 -200 515 800 ;
-C -1 ; WX 530 ; N glyph63 ; B 15 -200 515 800 ;
-C -1 ; WX 1030 ; N glyph64 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph65 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph66 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph67 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph68 ; B 15 -200 1015 800 ;
-C -1 ; WX 967 ; N glyph69 ; B 15 -200 953 800 ;
-C -1 ; WX 1030 ; N glyph70 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph71 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph72 ; B 15 -201 1015 800 ;
-C -1 ; WX 1030 ; N glyph73 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph74 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph75 ; B 15 -200 1015 801 ;
-C -1 ; WX 887 ; N glyph76 ; B 15 -200 873 800 ;
-C -1 ; WX 887 ; N glyph77 ; B 15 -200 873 800 ;
-C -1 ; WX 1030 ; N glyph78 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph79 ; B 15 -75 1015 800 ;
-C -1 ; WX 1030 ; N glyph80 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph81 ; B 15 50 1015 800 ;
-C -1 ; WX 905 ; N glyph82 ; B 15 -200 890 800 ;
-C -1 ; WX 1030 ; N glyph83 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph84 ; B 15 425 1015 800 ;
-C -1 ; WX 1030 ; N glyph85 ; B 15 425 1015 800 ;
-C -1 ; WX 1030 ; N glyph86 ; B 15 -200 1015 800 ;
-C -1 ; WX 405 ; N glyph87 ; B 15 -200 390 800 ;
-C -1 ; WX 405 ; N glyph88 ; B 15 -200 390 800 ;
-C -1 ; WX 1030 ; N glyph89 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph90 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph91 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph92 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph93 ; B 15 49 1015 800 ;
-C -1 ; WX 780 ; N glyph94 ; B 15 -200 765 800 ;
-C -1 ; WX 780 ; N glyph95 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph96 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph97 ; B 15 -200 1015 800 ;
-C -1 ; WX 905 ; N glyph98 ; B 15 -200 890 800 ;
-C -1 ; WX 780 ; N glyph99 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph100 ; B 15 -200 1015 800 ;
-C -1 ; WX 780 ; N glyph101 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph102 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph103 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph104 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph105 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph106 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph107 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph108 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph109 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph110 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph111 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph112 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph113 ; B 15 -76 1015 800 ;
-C -1 ; WX 1030 ; N glyph114 ; B 15 -75 1015 800 ;
-C -1 ; WX 1030 ; N glyph115 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph116 ; B 15 -195 1015 800 ;
-C -1 ; WX 1030 ; N glyph117 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph118 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph119 ; B 15 300 1015 800 ;
-C -1 ; WX 1030 ; N glyph120 ; B 15 300 1015 800 ;
-C -1 ; WX 1030 ; N glyph121 ; B 15 300 1015 800 ;
-C -1 ; WX 1030 ; N glyph122 ; B 15 -200 1015 800 ;
-C -1 ; WX 780 ; N glyph123 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph124 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph125 ; B 15 -75 1015 800 ;
-C -1 ; WX 780 ; N glyph126 ; B 15 -200 765 800 ;
-C -1 ; WX 655 ; N glyph127 ; B 15 -200 640 800 ;
-C -1 ; WX 1030 ; N glyph128 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph129 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph130 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph131 ; B 15 -200 1015 800 ;
-C -1 ; WX 655 ; N glyph132 ; B 15 -200 641 800 ;
-C -1 ; WX 905 ; N glyph133 ; B 15 -200 890 800 ;
-C -1 ; WX 1030 ; N glyph134 ; B 15 -75 1015 800 ;
-C -1 ; WX 1030 ; N glyph135 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph136 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph137 ; B 15 -75 1015 800 ;
-C -1 ; WX 780 ; N glyph138 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph139 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph140 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph141 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph142 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph143 ; B 15 300 1015 800 ;
-C -1 ; WX 1030 ; N glyph144 ; B 15 -200 1015 800 ;
-C -1 ; WX 780 ; N glyph145 ; B 15 -200 765 800 ;
-C -1 ; WX 780 ; N glyph146 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph147 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph148 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph149 ; B 15 -200 1015 800 ;
-EndCharMetrics
-EndFontMetrics

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 21
hmc/fonts/iconic_fill.css


BIN
hmc/fonts/iconic_fill.eot


BIN
hmc/fonts/iconic_fill.otf


+ 0 - 496
hmc/fonts/iconic_fill.svg

@@ -1,496 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-
--->
-
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg>
-<metadata>
-Created by FontForge 20110222 at Thu Dec 29 18:55:15 2011
- By PJ Onori,,,
-Icons by PJ Onori, font creation script by Yann
-</metadata>
-<defs>
-<font id="IconicFill" horiz-adv-x="1030" >
-  <font-face 
-    font-family="Untitled1"
-    font-weight="500"
-    font-stretch="normal"
-    units-per-em="1000"
-    panose-1="2 0 6 3 0 0 0 0 0 0"
-    ascent="800"
-    descent="-200"
-    bbox="15 -200.031 1015.02 800.008"
-    underline-thickness="50"
-    underline-position="-100"
-    unicode-range="U+0023-E079"
-  />
-    <missing-glyph />
-    <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="905" 
-d="M890 425h-172l-31.125 -250h203.125v-125h-218.75l-31.25 -250h-125.062l31.25 250h-249.938l-31.25 -250h-125l31.25 250h-156.25v125h171.875l31.1875 250h-203.062v125h218.688l31.25 250h125l-31.25 -250h249.938l31.25 250h125l-31.25 -250h156.375v-125z
-M561.812 175l31.1875 250h-249.938l-31.1875 -250h249.938z" />
-    <glyph glyph-name="question" unicode="?" horiz-adv-x="530" 
-d="M190 -137.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM254.875 -11.7812c-43.125 0 -79.9482 15.2607 -110.469 45.7812s-45.7812 67.3438 -45.7812 110.469s15.2607 79.9482 45.7812 110.469
-l209 209c24.3955 24.3633 36.5938 53.8223 36.5938 88.375c0 34.5645 -12.208 64.0225 -36.625 88.375c-24.3701 24.3857 -53.8223 36.585 -88.3555 36.5977s-63.9775 -12.1865 -88.332 -36.5977c-24.458 -24.3936 -36.6875 -53.8525 -36.6875 -88.375h-125
-c0 69.0439 24.458 127.992 73.375 176.844c47.1914 47.2305 106.077 70.8369 176.656 70.8203s129.496 -23.6445 176.75 -70.8828c48.8125 -48.748 73.2188 -107.676 73.2188 -176.781c0 -69.0322 -24.417 -127.949 -73.25 -176.75l-208.969 -209
-c-6.07812 -6.10938 -9.11719 -13.4736 -9.11719 -22.0938s3.03906 -15.9844 9.11719 -22.0938c6.10938 -6.10938 13.4736 -9.16406 22.0938 -9.16406s15.9844 3.05469 22.0938 9.16406c6.10449 6.10449 9.15625 13.4688 9.15625 22.0938h125
-c0 -43.125 -15.2607 -79.9482 -45.7812 -110.469s-67.3438 -45.7812 -110.469 -45.7812v0z" />
-    <glyph glyph-name="at" unicode="@" 
-d="M947.625 50h-182.625c-40.7812 0 -75.4375 21 -98.1562 51.2812c-42.2188 -32.4688 -94.4688 -52.625 -151.844 -52.625c-138.062 0 -250 111.938 -250 250s111.938 250 250 250h250v-373.656h101.188l1 -1.46875c14.2812 39.5625 22.8125 82.0312 22.8125 126.469
-c0 206.781 -168.219 375 -375 375s-375 -168.219 -375 -375s168.219 -375 375 -375c103.406 0 197.156 42 265 110l88.5 -88.5c-90.4375 -90.5938 -215.438 -146.5 -353.5 -146.5c-276.125 0 -500 223.875 -500 500s223.875 500 500 500s500 -223.875 500 -500
-c0 -91.3125 -24.5312 -176.406 -67.375 -250zM640 362.25v61.4062h-125c-68.8438 0 -125 -56.0312 -125 -125s56.1562 -125 125 -125s125 56.0312 125 125v63.5938z" />
-    <glyph glyph-name="paragraph" unicode="&#xb6;" horiz-adv-x="780" 
-d="M765 800v-125h-125v-875h-125v875h-125v-875h-125v500c-138.062 0 -250 111.938 -250 250s111.938 250 250 250h125h125h125h125z" />
-    <glyph glyph-name="glyph4" unicode="&#x2139;" horiz-adv-x="530" 
-d="M77.5 300h-62.5v125h375l0.25 -437.5c0 -34.5312 28.0625 -62.5 62.5 -62.5h62.25v-125h-500v125h62.5c34.5312 0 62.5 27.9688 62.5 62.5v250c0 34.5312 -27.9688 62.5 -62.5 62.5zM140 675c0 83.333 41.667 125 125 125s125 -41.667 125 -125s-41.667 -125 -125 -125
-s-125 41.667 -125 125z" />
-    <glyph glyph-name="glyph5" unicode="&#x2190;" 
-d="M514.5 -200l-499.5 500l499.5 500l177.25 -177.281l-197.25 -197.5h520.5v-250.719h-520.5l197.25 -197.25z" />
-    <glyph glyph-name="glyph6" unicode="&#x2191;" 
-d="M15 300.5l500.062 499.5l499.938 -499.5l-177.281 -177.25l-197.438 197.5v-520.75h-250.719v520.75c-97.875 -97.875 -197.312 -197.25 -197.312 -197.25z" />
-    <glyph glyph-name="glyph7" unicode="&#x2192;" 
-d="M515.5 800l499.5 -500l-499.5 -500l-177.25 177.281l197.375 197.375h-520.625v250.844h520.625l-197.25 197.25z" />
-    <glyph glyph-name="glyph8" unicode="&#x2193;" 
-d="M1015 299.5l-500 -499.5l-500 499.5l177.281 177.25l197.5 -197.5v520.75h250.719v-520.75l197.25 197.25z" />
-    <glyph glyph-name="glyph9" unicode="&#x2302;" 
-d="M515 800l500 -500h-125v-500h-750v500h-125zM765 -75v448.25l-250 176.75l-250 -176.75v-448.25h187.5v187.5h125v-187.5h187.5z" />
-    <glyph glyph-name="glyph10" unicode="&#x2600;" 
-d="M515 550v0c137.938 0 249.938 -111.938 249.938 -250s-112 -250 -249.938 -250c-138.188 0 -250 111.938 -250 250s111.812 250 250 250zM577.5 737.5c0 -34.5312 -28.0625 -62.5 -62.5 -62.5c-34.6562 0 -62.5 27.9688 -62.5 62.5s27.8438 62.5 62.5 62.5
-c34.4375 0 62.5 -27.9688 62.5 -62.5zM140 612.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM77.5 362.562c34.4375 0 62.5 -27.9688 62.5 -62.5c0 -34.5938 -28.0625 -62.5 -62.5 -62.5
-c-34.6562 0 -62.5 27.9062 -62.5 62.5c0 34.5312 27.8438 62.5 62.5 62.5zM140 -12.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM452.5 -137.5c0 34.6562 27.8438 62.5 62.5 62.5
-s62.5 -27.8438 62.5 -62.5c0 -34.5312 -27.8438 -62.5 -62.5 -62.5s-62.5 27.9688 -62.5 62.5zM783.5 -56.6875c-24.4062 24.4062 -24.4062 63.9688 0 88.375s63.9688 24.4062 88.375 0c24.6562 -24.4062 24.6562 -63.9688 0 -88.375
-c-24.4062 -24.4062 -63.9688 -24.4062 -88.375 0zM952.438 237.562c-34.4375 0 -62.5 27.9688 -62.5 62.4375c0 34.6562 28.0625 62.5 62.75 62.5c34.4375 0 62.5 -27.9062 62.25 -62.4375c0.25 -34.5938 -27.8438 -62.5625 -62.5 -62.5zM871.875 568.25
-c-24.4062 -24.3438 -63.9688 -24.3438 -88.375 0c-24.4062 24.5312 -24.4062 63.9688 0 88.4375c24.4062 24.3438 63.9688 24.4062 88.375 -0.0625c24.6562 -24.4062 24.6562 -64.0312 0 -88.375z" />
-    <glyph glyph-name="glyph11" unicode="&#x2601;" 
-d="M765 675c137.812 0 250 -112.125 250 -250c0 -137.938 -112.188 -250 -250 -250h-500c-137.812 0 -250 112.062 -250 250c0 137.875 112.188 250 250 250c11.0938 0 22.0938 -1.65625 33.0938 -3.125c42.9688 76.0625 123.531 128.125 216.906 128.125
-c91.4375 0 172 -51.4375 215.562 -128.469c11.375 1.5625 22.5938 3.46875 34.4375 3.46875zM765 300c68.9688 0 125 56.1562 125 125c0 68.9062 -56.0312 125 -125 125s-125 -56.0938 -125 -125h-125c0 81.4062 39.6875 153.125 99.9688 198.781
-c-22.9375 31.1875 -59.5625 51.2188 -99.9688 51.2188c-68.9688 0 -125 -56.0938 -125 -125c0 -15.0625 2.5625 -29.7812 7.8125 -43.6562l-117.062 -43.8125c-10.25 27.3438 -15.375 56.2812 -15.625 85.75c-64.4688 -1.875 -125.125 -54.75 -125.125 -123.281
-c0 -68.8438 56.0312 -125 125 -125h500z" />
-    <glyph glyph-name="glyph12" unicode="&#x2602;" 
-d="M515 800c275.812 0 499.938 -224.312 499.938 -500h-125c0 25.8125 -21 46.875 -46.875 46.875c-25.625 0 -46.875 -21.0625 -46.875 -46.875h-125c0 25.8125 -20.9375 46.875 -46.8125 46.875c-25.75 0 -46.875 -21.0625 -46.875 -46.875v-312.5
-c0 -103.406 -84 -187.5 -187.5 -187.5c-103.281 0 -187.5 84.0938 -187.5 187.5h125c0 -34.4375 28.0625 -62.5 62.5 -62.5c34.5312 0 62.5 28.0625 62.5 62.5v312.5c0 25.8125 -21 46.875 -46.875 46.875c-25.75 0 -46.875 -21.0625 -46.875 -46.875h-125
-c0 25.8125 -21 46.875 -46.875 46.875c-25.75 0 -46.875 -21.0625 -46.875 -46.875h-125c0 275.688 224.375 500 500 500z" />
-    <glyph glyph-name="glyph13" unicode="&#x2605;" 
-d="M706.781 186.719l120.969 -386.719l-312.25 240l-313 -240l121.094 387.688l-308.594 237.312h375l125 375l125 -375h375z" />
-    <glyph glyph-name="glyph14" unicode="&#x263e;" 
-d="M784.781 106.75c84.2188 0 162.094 24.1875 230.219 63.375c-61.5 -213.156 -255.969 -370.125 -489 -370.125c-282.25 0 -511 228.875 -511 511.094c0 233.031 156.875 427.375 370.125 488.875c-39.3125 -67.9688 -63.4688 -145.875 -63.4688 -230.094
-c0 -255.719 207.25 -463.125 463.125 -463.125z" />
-    <glyph glyph-name="glyph15" unicode="&#x2764;" 
-d="M515 679.875c50.4062 70.8125 129.031 120.125 222.281 120.125c153.219 0 277.719 -124.75 277.719 -277.844v-22.9375l-499.75 -574.219l-500.25 574.219v22.9375c0 153.094 124.5 277.844 277.719 277.844c93.25 0 171.875 -49.3125 222.281 -120.125z" />
-    <glyph glyph-name="glyph16" unicode="&#x2699;" 
-d="M1015 238.469l-149.438 -63.7188c-4.15625 -11.5938 -8.4375 -22.9688 -13.6875 -34.1875l61.5312 -149.156l-88.375 -88.375l-149.906 60.0625c-11.2188 -5.375 -22.9375 -10 -34.7812 -14.4062l-61.875 -148.688h-125l-63.2188 147.938
-c-12.4375 4.28125 -24.5312 8.78125 -36.375 14.4062l-147.594 -60.7812l-88.375 88.375l59.4375 148.188c-5.84375 12.0938 -10.7188 24.4375 -15.25 37.125l-147.094 61.2812v125l146.969 62.8438c4.53125 12.7188 9.28125 25.0312 15.1562 37.125l-60.5625 147.219
-l88.375 88.375l148.562 -59.6875c11.8438 5.625 23.8125 10.25 36.25 14.6562l61.7812 147.938h125l63.3438 -148.438c11.9688 -4.28125 23.5625 -8.90625 34.9062 -14.4062l148.812 61.2812l88.4062 -88.375l-60.3125 -150.156
-c5.375 -11.125 9.75 -22.4688 13.9062 -34.1875l149.406 -62.25v-125zM514.031 112.5c103.5 0 187.5 84 187.5 187.5s-84 187.5 -187.5 187.5s-187.5 -84 -187.5 -187.5s84 -187.5 187.5 -187.5z" />
-    <glyph glyph-name="glyph17" unicode="&#x26a1;" 
-d="M1015 800l-437.5 -500l187.5 -125l-750 -375l437.5 375l-187.5 125z" />
-    <glyph glyph-name="glyph18" unicode="&#x26bf;" 
-d="M702.5 800c172.594 0 312.5 -139.906 312.5 -312.5s-139.906 -312.5 -312.5 -312.5c-19.5312 0 -38.3438 2.3125 -56.75 5.75l-5.75 -5.75v-125h-125v-125h-125v-125h-375v250l380.75 380.75c-3.4375 18.4062 -5.75 37.2188 -5.75 56.75
-c0 172.594 139.906 312.5 312.5 312.5zM702.75 425c34.5312 0 62.5 27.9688 62.5 62.5s-27.9688 62.5 -62.5 62.5s-62.5 -27.9688 -62.5 -62.5s27.9688 -62.5 62.5 -62.5z" />
-    <glyph glyph-name="glyph19" unicode="&#x26c6;" 
-d="M765 674.992c137.946 0 250.016 -112.132 250.016 -250.016s-112.069 -250.016 -250.016 -250.016h-499.969c-137.821 0 -250.016 112.132 -250.016 250.016s112.194 250.016 250.016 250.016c11.0947 0 22.0947 -1.65625 33.0957 -3.125
-c42.9717 76.0674 123.539 128.133 216.92 128.133c91.4434 0 172.073 -51.4404 215.514 -128.477c11.5 1.5625 22.7197 3.46875 34.4395 3.46875zM765 299.969c69.0977 0 125.008 56.0977 125.008 125.008s-55.9102 125.008 -125.008 125.008
-c-68.8477 0 -124.945 -56.0977 -124.945 -125.008h-125.008c0 81.4111 39.6904 153.135 99.9746 198.794c-22.9385 31.1895 -59.5654 51.2217 -99.9746 51.2217c-68.9727 0 -125.008 -56.0977 -125.008 -125.008c0 -15.0635 2.5625 -29.7832 7.8125 -43.6592
-l-117.069 -43.8154c-10.251 27.3457 -15.376 56.2852 -15.626 85.7559c-64.4727 -1.875 -125.133 -54.7539 -125.133 -123.289c0 -68.9102 56.0352 -125.008 125.008 -125.008h499.969zM117.554 -57.4912c-23.4395 -23.4385 -61.5352 -23.4385 -84.9746 0
-c-23.4385 23.4395 -23.4385 61.5352 0 84.9746c23.4395 23.4385 169.948 84.9736 169.948 84.9736s-61.5352 -146.509 -84.9736 -169.948zM367.694 -57.4912c-23.4395 -23.4385 -61.4102 -23.4385 -84.9746 0c-23.4385 23.4395 -23.4385 61.5352 0 84.9746
-c23.5645 23.4385 169.948 84.9736 169.948 84.9736s-61.4102 -146.509 -84.9736 -169.948zM617.585 -57.4912c-23.4395 -23.4385 -61.5352 -23.4385 -84.9746 0c-23.4385 23.4395 -23.4385 61.5352 0 84.9746c23.4395 23.4385 169.886 84.9736 169.886 84.9736
-s-61.4727 -146.509 -84.9111 -169.948z" />
-    <glyph glyph-name="glyph20" unicode="&#x26d4;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM515 675c-206.781 0 -375 -168.219 -375 -375c0 -80.8125 26.25 -155.281 69.9375 -216.562l521.75 521.5
-c-61.2812 43.6875 -135.75 70.0625 -216.688 70.0625zM515 -75c206.781 0 375 168.219 375 375c0 80.8125 -26.25 155.281 -69.9375 216.562l-521.75 -521.5c61.2812 -43.6875 135.75 -70.0625 216.688 -70.0625z" />
-    <glyph glyph-name="glyph21" unicode="&#x2709;" 
-d="M517.438 441.969l-502.438 235.969v122.062h1000v-122.438zM517.688 303.781l497.312 235.469v-489.25h-1000v490z" />
-    <glyph glyph-name="glyph22" unicode="&#x270e;" 
-d="M941.75 726.75c97.6562 -97.6562 97.6562 -255.844 0 -353.5l-573.25 -573.25h-353.5l0.96875 354.5l572.281 572.25c48.8125 48.8438 112.781 73.25 176.75 73.25c64.0938 0 128.062 -24.4062 176.75 -73.25zM316.75 -75l536.625 536.625v0l-176.75 176.75v0
-l-535.781 -535.875l-0.125 -52.5h124.281v-125h51.75z" />
-    <glyph glyph-name="glyph23" unicode="&#x2713;" 
-d="M388.156 -4.8125l-373.156 373.188l177.969 177.969l195.188 -195.188l448.875 448.844l177.969 -177.969z" />
-    <glyph glyph-name="glyph24" unicode="&#x2714;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM437.5 69.2812l388.875 388.906l-88.375 88.375l-300.531 -300.531l-141.656 141.719l-88.375 -88.375z" />
-    <glyph glyph-name="glyph25" unicode="&#x2717;" 
-d="M1015 0.0712891l-200.071 -200.071l-299.929 300.071l-300.071 -300.071l-199.929 200.071l299.929 299.929l-299.929 299.929l199.929 200.071l300.071 -300.071l299.929 300.071l200.071 -200.071l-300.214 -299.929z" />
-    <glyph glyph-name="glyph26" unicode="&#x2718;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM762.312 141.062l-158.938 158.938l158.938 158.938l-88.375 88.375l-158.938 -158.938l-158.938 158.938l-88.375 -88.375l158.938 -158.938
-l-158.938 -158.938l88.375 -88.375l158.938 158.938l158.938 -158.938z" />
-    <glyph glyph-name="glyph27" unicode="&#x275d;" 
-d="M1015 50h-375v375c0 206.781 168.219 375 375 375v-125c-137.938 0 -250 -112.188 -250 -250h250v-375zM390 50h-375v375c0 206.781 168.219 375 375 375v-125c-137.938 0 -250 -112.188 -250 -250h250v-375z" />
-    <glyph glyph-name="glyph28" unicode="&#x275e;" 
-d="M15 800h375v-375c0 -206.781 -168.219 -375 -375 -375v125c137.938 0 250 112.188 250 250h-250v375zM640 800h375v-375c0 -206.781 -168.219 -375 -375 -375v125c137.938 0 250 112.188 250 250h-250v375z" />
-    <glyph glyph-name="glyph29" unicode="&#x2795;" 
-d="M1015 425v-250h-375v-375h-250v375h-375v250h375v375h250v-375h375z" />
-    <glyph glyph-name="glyph30" unicode="&#x2796;" 
-d="M15 550v250h1000v-250h-1000z" />
-    <glyph glyph-name="glyph31" unicode="&#x2935;" 
-d="M890 362.5v-62.5h125l-250 -250l-250 250h125v62.5c0 172.594 -139.906 312.5 -312.5 312.5s-312.5 -139.906 -312.5 -312.5c0 241.562 195.938 437.5 437.5 437.5s437.5 -195.938 437.5 -437.5z" />
-    <glyph glyph-name="glyph32" unicode="&#xe000;" horiz-adv-x="780" 
-d="M452.5 800l312.5 -312.438v-687.562h-750v1000h437.5zM387.438 425h250l-250 250v-250z" />
-    <glyph glyph-name="glyph33" unicode="&#xe001;" 
-d="M762.438 675h252.562v-125h-252.562h-125h-250h-125h-247.438v125h247.438v125h125v-125h250v125h125v-125zM140 50v125h750v-125h-750zM140 300v125h750v-125h-750zM765 -200h-625v125h750z" />
-    <glyph glyph-name="glyph34" unicode="&#xe002;" horiz-adv-x="530" 
-d="M265 800c138.062 0 250 -111.938 250 -250s-250 -750 -250 -750s-250 611.938 -250 750s111.938 250 250 250zM265 425c69.0312 0 125 55.9688 125 125s-55.9688 125 -125 125s-125 -55.9688 -125 -125s55.9688 -125 125 -125z" />
-    <glyph glyph-name="glyph35" unicode="&#xe003;" 
-d="M950.532 175h-497.938c-187.375 0 -187.375 0 -312.375 -125c-124.875 125 -324.219 750 374.875 750c250 0 499.906 -62.5 499.906 -375c0 -125 -64.4688 -250 -64.4688 -250z" />
-    <glyph glyph-name="glyph36" unicode="&#xe004;" horiz-adv-x="905" 
-d="M452.5 800c241.562 0 437.5 -195.938 437.5 -437.5s-195.938 -437.5 -437.5 -437.5c-35.6562 0 -69.8125 5.375 -103.031 13.5625l-209.469 -138.562l1.34375 255.375c-78 79.0938 -126.344 187.375 -126.344 307.125c0 241.562 195.938 437.5 437.5 437.5z" />
-    <glyph glyph-name="glyph37" unicode="&#xe005;" 
-d="M941.75 726.75c97.6562 -97.6562 97.6562 -255.844 0 -353.5l-573.25 -573.25h-353.5l0.96875 354.5l572.281 572.25c97.5312 97.6562 255.969 97.6562 353.5 0zM315.406 -75c48.8438 48.8125 48.8125 128.938 0 177.75s-127.938 48.8125 -176.75 0v-177.75h176.75z
-M851.062 461.625c48.8125 48.8125 48.8125 127.938 0 176.75s-127.938 48.8125 -176.75 0z" />
-    <glyph glyph-name="glyph38" unicode="&#xe006;" 
-d="M978.345 763.376c48.8428 -48.8105 48.8428 -127.934 0 -176.744l-472.642 -472.798c-10.9678 41.249 -31.499 80.5596 -63.7168 112.777c-31.7178 31.749 -70.7783 52.9678 -113.027 63.9668l472.642 472.798c48.8105 48.8115 127.934 48.8115 176.744 0z
-M353.614 -38.5049l-338.614 -161.495l161.87 338.239c48.8105 48.8115 127.934 48.8115 176.744 0c48.8115 -48.8105 48.8115 -127.934 0 -176.744z" />
-    <glyph glyph-name="glyph39" unicode="&#xe007;" 
-d="M764.875 425c0 -138.062 -111.812 -250 -249.875 -250c0 68.9688 -56.0312 125 -125 125h-125.125c-124.875 0 -249.875 70.3125 -249.875 250c0 183.594 125 250 249.875 250h250.125c125 0 249.875 -77.4688 249.875 -250v-125zM390 425zM390 425zM826.875 418.344
-c101.094 -19.5938 188.125 -90.4375 188.125 -243.344c0 -179.688 -125 -250 -250.125 -250h-124.875c-68.9688 0 -125 -55.9062 -125 -125c-138.062 0 -250.125 111.938 -250.125 250v125c0 22.4688 2.4375 43.1562 6.34375 62.5h118.781c34.4375 0 62.5 -28 62.5 -62.5
-v-62.5h62.5c169.938 0 308.219 136.719 311.875 305.844z" />
-    <glyph glyph-name="glyph40" unicode="&#xe008;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM765 237.5v125h-187.5v187.5h-125v-187.5h-187.5v-125h187.5v-187.5h125v187.5h187.5z" />
-    <glyph glyph-name="glyph41" unicode="&#xe009;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM765 237.5v125h-500v-125h500z" />
-    <glyph glyph-name="glyph42" unicode="&#xe00a;" horiz-adv-x="905" 
-d="M765 -200v1000h125v-1000h-125zM515 -200v750h125v-750h-125zM265 -200v500h125v-500h-125zM15 -200v250h125v-250h-125z" />
-    <glyph glyph-name="glyph43" unicode="&#xe00b;" 
-d="M389.625 424.031v125.969h249.75v-125.969h-249.75zM889.156 548.531l124.875 -125h-124.875v-623.531h-749.281c-68.9688 0 -124.875 55.9062 -124.875 125v750c0 69.0938 55.9062 125 124.875 125h749.281v-125.5h125.844zM764.281 -75h-0.03125v750h-499.5v-750
-h499.531z" />
-    <glyph glyph-name="glyph44" unicode="&#xe00c;" 
-d="M962.156 519.594c32.8125 -66.5312 52.8438 -140.438 52.8438 -219.594c0 -31.5 -3.65625 -62 -9.28125 -92.0625h-355.219zM672.969 323.75v448.281c104.969 -35.1562 195.312 -102.094 256.344 -192.062zM538.375 142.031h448.656
-c-35.1562 -105.094 -102.156 -195.562 -192.25 -256.469zM606.969 433l-313.219 313.219c66.9375 33.3438 141.406 53.7812 221.25 53.7812c31.5 0 62.0625 -3.71875 91.9688 -9.28125v-357.719zM423.031 164l311.344 -311.25
-c-66.5312 -32.7188 -140.281 -52.75 -219.375 -52.75c-31.5 0 -62.0625 3.65625 -91.9688 9.25v354.75zM356.969 275.844v-447.906c-104.844 35.1562 -195.125 102.062 -256.031 191.906zM24.2812 391.969v0.03125h355.531l-311.844 -311.844
-c-32.8125 66.5312 -52.9688 140.5 -52.9688 219.844c0 31.5 3.71875 62.0625 9.28125 91.9688zM233.625 713.094l255.094 -255.062h-445.75c34.9688 104.344 101.438 194.156 190.656 255.062z" />
-    <glyph glyph-name="glyph45" unicode="&#xe010;" horiz-adv-x="530" 
-d="M265.969 518.75c0 20.1875 10.0938 30.2812 30.2812 30.2812s30.2812 -10.0938 30.2812 -30.2812s-10.0938 -30.2812 -30.2812 -30.2812s-30.2812 10.0938 -30.2812 30.2812zM452.5 800c17 0 31.667 -6.16699 44 -18.5s18.5 -27 18.5 -44v-687.5
-c0 -69.333 -24.333 -128.333 -73 -177s-107.667 -73 -177 -73s-128.333 24.333 -177 73s-73 107.667 -73 177v687.5c0 17 6.16699 31.667 18.5 44s27 18.5 44 18.5h375zM172.219 175c8.35938 0 15.4961 2.95703 21.4102 8.87109s8.87109 13.0508 8.87109 21.4102
-s-2.95703 15.4961 -8.87109 21.4102s-13.0508 8.87109 -21.4102 8.87109s-15.4961 -2.95703 -21.4102 -8.87109s-8.87109 -13.0508 -8.87109 -21.4102s2.95703 -15.4961 8.87109 -21.4102s13.0508 -8.87109 21.4102 -8.87109zM327.5 50c17 0 31.667 6.16699 44 18.5
-s18.5 27 18.5 44s-6.16699 31.667 -18.5 44s-27 18.5 -44 18.5s-31.667 -6.16699 -44 -18.5s-18.5 -27 -18.5 -44s6.16699 -31.667 18.5 -44s27 -18.5 44 -18.5zM390 300v375h-250v-375h62.7812c0.234375 17.2881 6.50391 32.0273 18.8066 44.2158
-c12.3027 12.1895 27.1064 18.2842 44.4121 18.2842c17.3018 0 32.1016 -6.09375 44.3984 -18.2812c12.2988 -12.1875 18.5723 -26.9268 18.8203 -44.2188h60.7812z" />
-    <glyph glyph-name="glyph46" unicode="&#xe011;" 
-d="M1015 50h-375v375l375 375v-750zM390 50h-375v375l375 375v-750z" />
-    <glyph glyph-name="glyph47" unicode="&#xe012;" 
-d="M15 800h375v-375l-375 -375v750zM640 800h375v-375l-375 -375v750z" />
-    <glyph glyph-name="glyph48" unicode="&#xe013;" 
-d="M515 -200c-276.125 0 -500 223.875 -500 499.938c0 276.188 223.875 500.062 500 500.062s500 -223.875 500 -500.062c0 -276.062 -223.875 -499.938 -500 -499.938zM514.031 550l-249.031 -250.062l249.031 -248.969v186.531h250.969v124.938h-250.969v187.562z" />
-    <glyph glyph-name="glyph49" unicode="&#xe014;" 
-d="M15 300c0 276.188 223.875 500 500.125 500c276 0 499.875 -223.812 499.875 -500c0 -276.125 -223.875 -500 -499.875 -500c-276.25 0 -500.125 223.875 -500.125 500zM765 300.969l-249.875 249.094l-249.156 -249.094h186.531v-250.969h125v250.969h187.5z" />
-    <glyph glyph-name="glyph50" unicode="&#xe015;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM515.969 50l249.031 250l-249.031 249.031v-186.531h-250.969v-125h250.969v-187.5z" />
-    <glyph glyph-name="glyph51" unicode="&#xe016;" 
-d="M1015 300.062c0 -276.188 -223.875 -500.062 -500 -500.062s-500 223.875 -500 500.062c0 276.062 223.875 499.938 500 499.938s500 -223.875 500 -499.938zM265 299.094l250 -249.094l249.031 249.094h-186.531v250.906h-125v-250.906h-187.5z" />
-    <glyph glyph-name="glyph52" unicode="&#xe017;" 
-d="M515 -200c-276.125 0 -500 223.875 -500 500s223.875 500 500 500s500 -223.875 500 -500s-223.875 -500 -500 -500zM327.5 425l-125 -125l125 -125v62.5h500v125h-500v62.5z" />
-    <glyph glyph-name="glyph53" unicode="&#xe018;" 
-d="M1015 300c0 -276.125 -223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500s500 -223.875 500 -500zM390 112.5l125 -125l125 125h-62.5v500h-125v-500h-62.5z" />
-    <glyph glyph-name="glyph54" unicode="&#xe019;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM702.5 175l125 125l-125 125v-62.5h-500v-125h500v-62.5z" />
-    <glyph glyph-name="glyph55" unicode="&#xe01a;" 
-d="M15 300c0 276.125 223.875 500 500 500s500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500zM640 487.5l-125 125l-125 -125h62.5v-500h125v500h62.5z" />
-    <glyph glyph-name="glyph56" unicode="&#xe01b;" 
-d="M514.875 133.375h0.125c0 -184.094 -149.281 -333.375 -333.375 -333.375c-60.5312 0 -117.188 16.125 -166.125 44.1875l-0.5 0.625c99.5 57.5938 166.5 165.156 166.625 288.438l-0.125 0.125c0 92.0312 74.5938 166.625 166.625 166.625
-s166.75 -74.5938 166.75 -166.625zM978.312 763.375c48.8438 -48.8125 48.8438 -127.938 0 -176.75l-356.25 -356.312c-29.2812 82.5 -94.2188 147.469 -176.75 176.875l356.25 356.188c48.8125 48.8125 127.938 48.8125 176.75 0z" />
-    <glyph glyph-name="glyph57" unicode="&#xe01c;" 
-d="M390 50v0c0 -138.062 -111.938 -250 -250 -250c-45.4062 0 -87.875 12.0938 -124.5 33.1875l-0.5 0.375c74.7188 43.2188 125 123.781 125 216.188v0.25c0 69.0938 55.9062 125 125 125c68.9688 0 125 -55.9062 125 -125zM978.312 763.375
-c48.8438 -48.8125 48.8438 -127.938 0 -176.75l-472.594 -472.781c-22.9375 86.3125 -90.5625 153.812 -176.75 176.875l472.594 472.656c48.8125 48.8125 127.938 48.8125 176.75 0z" />
-    <glyph glyph-name="glyph58" unicode="&#xe01e;" 
-d="M941.719 372.375l-18.4375 -18.4375l89.9688 -89.9062l-88.25 -88.125l-89.8438 89.9062l-465.656 -465.812h-231.688l-122.812 124.75v226.5l467.312 467.594l-93.0312 92.9688l88.125 88.1875l92.9375 -93.0312l18.4375 18.4375
-c48.6875 48.7188 112.656 73.125 176.438 73.125c63.8438 0 127.781 -24.4062 176.5 -73.125c97.5312 -97.4062 97.5312 -255.562 0 -353.031zM337.5 -55.2188l409.406 409.406l-176.344 176.219l-403.719 -403.844c43.4688 -1.46875 86.6562 -17.7188 119.75 -50.9062
-c36 -36.0312 52.375 -83.5 50.9062 -130.875z" />
-    <glyph glyph-name="glyph59" unicode="&#xe01f;" 
-d="M15 174.961l500.031 -125.008l499.969 125.008v-125.008l-499.969 -125.008l-500.031 125.008v125.008zM15 424.977l500.031 -125.008l499.969 125.008v-125.008l-499.969 -125.008l-500.031 125.008v125.008zM15 674.992l500.031 125.008l499.969 -125.008v-125.008
-l-499.969 -125.008l-500.031 125.008v125.008z" />
-    <glyph glyph-name="glyph60" unicode="&#xe020;" 
-d="M15 50l500 -125l499.938 125v-125l-499.938 -125l-500 125v125zM15 300l500 -125l499.938 125v-125l-499.938 -125l-500 125v125zM15 550l500 -125l499.938 125v-125l-499.938 -125l-500 125v125zM15 800l500 -125l499.938 125v-125l-499.938 -125l-500 125v125z" />
-    <glyph glyph-name="glyph61" unicode="&#xe021;" 
-d="M515 675c-206.781 0 -375 -168.219 -375 -375s168.219 -375 375 -375s375 168.219 375 375s-168.219 375 -375 375zM515 800v0c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM581.406 366.281
-c-24.0625 24.0625 -57.625 30.7188 -88.375 23.125l271.969 160.594l-161.125 -275.688c9.03125 31.6562 2.4375 67 -22.4688 91.9688zM448.844 233.719c25.0312 -25.0312 60.4062 -31.625 92.1562 -22.4688l-276 -161.25l160.656 272.344
-c-7.5625 -30.8125 -0.96875 -64.5312 23.1875 -88.625z" />
-    <glyph glyph-name="glyph62" unicode="&#xe022;" horiz-adv-x="530" 
-d="M265 175c44.0625 0 85.6875 9.03125 125 23v-398l-125 125l-125 -125v398c39.3125 -13.9688 80.9375 -23 125 -23zM15 550c0 166.667 83.333 250 250 250s250 -83.333 250 -250s-83.333 -250 -250 -250s-250 83.333 -250 250z" />
-    <glyph glyph-name="glyph63" unicode="&#xe023;" horiz-adv-x="530" 
-d="M452.5 800c34.5312 0 62.5 -27.9688 62.5 -62.5v-687.5c0 -138.062 -111.938 -250 -250 -250s-250 111.938 -250 250v687.5c0 34.5312 27.9688 62.5 62.5 62.5h375zM327.5 50c34.5312 0 62.5 27.9688 62.5 62.5s-27.9688 62.5 -62.5 62.5s-62.5 -27.9688 -62.5 -62.5
-s27.9688 -62.5 62.5 -62.5zM390 300v375h-250v-375h62.7812c0.46875 34.5312 28.5625 62.5 63.2188 62.5s62.7188 -27.9688 63.2188 -62.5h60.7812z" />
-    <glyph glyph-name="glyph64" unicode="&#xe024;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM515 675c-162.719 0 -300.156 -104.812 -352.062 -250h704.125c-51.9062 145.188 -189.344 250 -352.062 250zM515 237.5
-c34.5312 0 62.5 27.9688 62.5 62.5s-27.9688 62.5 -62.5 62.5s-62.5 -27.9688 -62.5 -62.5s27.9688 -62.5 62.5 -62.5zM140 300c0 -185.188 135.25 -338.375 312 -368.656c-2.90625 204.094 -141.219 368.656 -312 368.656zM578 -68.6562
-c176.75 30.2812 312 183.469 312 368.656c-170.781 0 -309.094 -164.562 -312 -368.656z" />
-    <glyph glyph-name="glyph65" unicode="&#xe025;" 
-d="M515 800c276.125 0 500 -370.125 500 -370.125s-223.875 -379.875 -500 -379.875s-500 379.875 -500 379.875s223.875 370.125 500 370.125zM515 175c138.062 0 250 111.938 250 250s-111.938 250 -250 250s-250 -111.938 -250 -250s111.938 -250 250 -250zM390 424.5
-c0 83.333 41.667 125 125 125s125 -41.667 125 -125s-41.667 -125 -125 -125s-125 41.667 -125 125z" />
-    <glyph glyph-name="glyph66" unicode="&#xe026;" 
-d="M676.625 363.125l-252.625 427.719c29.5938 5.4375 59.8125 9.15625 91 9.15625c131.594 0 250.25 -51.8125 339.469 -134.875zM638.531 175l260.125 442.031c71.6562 -86.5 116.344 -196 116.344 -317.031c0 -43.4688 -7.3125 -84.8438 -17.7188 -125h-358.75z
-M530.625 487.5h-478.5c55.1562 136.062 168.875 240.406 309.5 286zM503.531 112.5h474.375c-54.6875 -134.875 -166.875 -238.531 -305.906 -284.906zM393.281 425l-260.906 -443.375c-72.2188 86.8125 -117.375 196.781 -117.375 318.375
-c0 43.4688 7.25 84.8438 17.6875 125h360.594zM356.188 238.719l253.781 -429.188c-30.75 -5.875 -62.4375 -9.53125 -94.9688 -9.53125c-130.969 0 -249.156 51.5 -338.312 133.781z" />
-    <glyph glyph-name="glyph67" unicode="&#xe027;" 
-d="M265 50v250l125 125l125 -125l250 250l250 -250v-250h-750zM140 -75h875l-125 -125h-750h-125v125v750l125 125v-875z" />
-    <glyph glyph-name="glyph68" unicode="&#xe028;" 
-d="M444.398 193.812l-312.75 -312.5c-155.531 179.812 -155.531 445.188 0 625zM639.961 670.062c211.438 -31.4375 375 -210.156 374.969 -430.719c0 -242.812 -196.781 -439.344 -439.688 -439.344c-97.6562 0 -186.031 34.4375 -258.781 88.75l323.5 323.625v457.688z
-M514.961 299.5l-358.656 358.719c99.375 81.2188 222.438 133.344 358.656 141.781v-500.5z" />
-    <glyph glyph-name="glyph69" unicode="&#xe029;" horiz-adv-x="967" 
-d="M469.148 193.062l-330.562 -330.562c-164.781 190.188 -164.781 470.938 0 661.125zM516.023 237.5l-403.062 403.062c111.562 91.3125 249.75 149.906 403.062 159.438v-562.5zM577.555 674.5c211.594 -32.4688 374.938 -211.656 374.938 -432.844
-c0 -243.906 -197.75 -441.656 -442.062 -441.656c-96.9375 0 -184.594 33.6875 -257.344 87.1562l324.469 324.469v462.875z" />
-    <glyph glyph-name="glyph70" unicode="&#xe02a;" 
-d="M578.219 363.281v180.906c88.625 -22.875 157.969 -92.2812 180.906 -180.906h-180.906zM578.219 236.719h180.906c-22.9375 -88.5625 -92.2812 -158.031 -180.906 -180.844v180.844zM451.656 363.281h-180.906c22.8125 88.625 92.2812 158.031 180.906 180.906v-180.906
-zM451.656 236.719v-180.844c-88.625 22.8125 -158.094 92.2812 -180.906 180.844h180.906zM578.219 673.344v126.656c228.531 -28.875 407.844 -208.25 436.781 -436.719h-126.719c-26.875 158.562 -151.5 283.219 -310.062 310.062zM141.594 363.281h-126.594
-c28.8125 228.469 208.25 407.844 436.656 436.719v-126.656c-158.594 -26.8438 -283.219 -151.469 -310.062 -310.062zM451.656 -73.2812v-126.719c-228.406 28.8125 -407.844 208.25 -436.656 436.719h126.594c26.875 -158.625 151.5 -283.156 310.062 -310z
-M888.281 236.719h126.719c-28.9375 -228.469 -208.25 -407.906 -436.781 -436.719v126.719c158.562 26.8438 283.219 151.375 310.062 310z" />
-    <glyph glyph-name="glyph71" unicode="&#xe02b;" 
-d="M429.906 800l585.094 -585.094h-415.031v-414.906l-584.969 585.094v414.906h414.906zM243.5 452.469c65.6875 0 118.906 53.2188 118.906 118.906s-53.2188 118.906 -118.906 118.906s-118.906 -53.2188 -118.906 -118.906s53.2188 -118.906 118.906 -118.906z" />
-    <glyph glyph-name="glyph72" unicode="&#xe02c;" 
-d="M15 -75c0 83.3545 41.6768 125.031 125.031 125.031s125.031 -41.6768 125.031 -125.031s-41.6768 -125.031 -125.031 -125.031s-125.031 41.6768 -125.031 125.031zM203.219 174.875v125.125c86.1514 0 159.783 -30.5771 220.895 -91.7305
-c61.1123 -61.1543 91.668 -134.827 91.668 -221.02h-125.062c0 51.7588 -18.3223 95.9697 -54.9678 132.632s-80.8223 54.9932 -132.532 54.9932zM202.375 425v125c76.1846 0 149.002 -14.8789 218.452 -44.6367c69.4512 -29.7578 129.301 -69.7666 179.549 -120.026
-c50.249 -50.2607 90.249 -110.123 119.998 -179.589c29.751 -69.4658 44.626 -142.298 44.626 -218.498h-125c0 59.2617 -11.5752 115.91 -34.7256 169.946c-23.1504 54.0371 -54.2705 100.604 -93.3623 139.701c-39.0908 39.0977 -85.6445 70.2227 -139.662 93.374
-c-54.0166 23.1523 -110.642 34.7285 -169.875 34.7285zM202.375 675v125c110.043 0 215.219 -21.4854 315.528 -64.4551s186.752 -100.746 259.328 -173.328c72.5762 -72.583 130.349 -159.038 173.316 -259.367s64.4521 -205.528 64.4521 -315.6h-125
-c0 93.1348 -18.1807 182.15 -54.543 267.049s-85.251 158.058 -146.665 219.479c-61.415 61.4199 -134.562 110.312 -219.439 146.677c-84.8789 36.3643 -173.871 54.5459 -266.978 54.5459z" />
-    <glyph glyph-name="glyph73" unicode="&#xe02d;" 
-d="M1015 -200h-142.812c0 472.656 -384.531 857.125 -857.188 857.125v142.875c551.281 0 1000 -448.594 1000 -1000v0zM729.219 -200h-142.812c0 315.062 -256.469 571.406 -571.406 571.406v142.875c393.812 0 714.219 -320.469 714.219 -714.281v0zM443.594 -200
-h-142.938c0 157.594 -128.062 285.656 -285.656 285.656v142.938c236.312 0 428.594 -192.281 428.594 -428.594v0zM157.812 -200h-142.812v142.812c78.9688 0 142.812 -63.9688 142.812 -142.812z" />
-    <glyph glyph-name="glyph74" unicode="&#xe02e;" 
-d="M889.938 50c69.0938 0 125 -56.0312 125 -125s-55.9062 -125 -125 -125s-125 56.0312 -125 125c0 15.75 3.65625 30.5312 9.03125 44.4375l-189.281 135.125c-33.9062 -33.6875 -80.6875 -54.5625 -132.188 -54.5625c-103.5 0 -187.5 84 -187.5 187.5
-c0 9.75 1.46875 19.1562 2.9375 28.5625l-149.656 49.9375c-11 -9.65625 -25.0312 -16 -40.7812 -16c-34.5312 0 -62.5 27.9688 -62.5 62.5s27.9688 62.5 62.5 62.5c29.9062 0 53.7188 -21.375 59.8125 -49.4375l150.5 -50.2812
-c31.625 59.0625 93.1562 99.7188 164.688 99.7188c40.5312 0 77.625 -13.0625 108.406 -35.0312l222.844 223.031c-10.75 18.5312 -18.8125 38.9375 -18.8125 62c0 69.0938 55.9062 125 125 125s125 -55.9062 125 -125s-55.9062 -125 -125 -125
-c-22.9375 0 -43.4688 7.9375 -62 18.8125l-222.844 -223.031c21.7188 -30.5312 34.9062 -67.875 34.9062 -108.281c0 -29.4062 -7.3125 -56.75 -19.4062 -81.6562l190.5 -136c21.7188 17.9375 48.5625 30.1562 78.8438 30.1562z" />
-    <glyph glyph-name="glyph75" unicode="&#xe02f;" 
-d="M894.82 683.788c77.4014 -77.4951 120.117 -180.52 120.117 -290.138s-42.7158 -212.643 -120.117 -290.325l-94.2441 -93.9941l-88.3701 88.3691l94.2441 94.1816c53.8408 53.9658 83.4951 125.492 83.4951 201.769c0 76.1826 -29.6543 147.709 -83.4951 201.519
-c-107.649 107.899 -295.388 107.899 -403.037 0.125l-170.396 -170.396h156.959v-125.117h-374.977v375.227h124.992v-166.239l174.896 175.02c154.803 155.022 425.036 154.897 579.933 0zM503.074 -111.463l88.4443 88.3193l88.3643 -88.4883l-88.4453 -88.3203z" />
-    <glyph glyph-name="glyph76" unicode="&#xe030;" horiz-adv-x="887" 
-d="M729.286 228.571h142.856c0 -236.75 -191.964 -428.571 -428.571 -428.571s-428.571 191.821 -428.571 428.571s191.964 428.571 428.571 428.571h84.8213l-42.1426 41.8574l101 101l214.714 -214.286l-214.714 -214.964l-101 101l41.5713 41.5713l-84.25 0.964844
-c-157.643 0 -285.714 -128.215 -285.714 -285.715s128.071 -285.714 285.714 -285.714s285.715 128.214 285.715 285.714z" />
-    <glyph glyph-name="glyph77" unicode="&#xe031;" horiz-adv-x="887" 
-d="M729.286 228.571h142.856c0 -236.607 -191.964 -428.571 -428.571 -428.571s-428.571 191.964 -428.571 428.571s191.964 428.571 428.571 428.571h143.679v142.857l214.714 -214.286l-214.714 -215v142.036l-143.679 1.53613
-c-157.643 0 -285.714 -128.072 -285.714 -285.715s128.071 -285.714 285.714 -285.714s285.715 128.071 285.715 285.714z" />
-    <glyph glyph-name="glyph78" unicode="&#xe032;" 
-d="M827.5 425l187.5 -187.5h-125c0 -103.406 -84.0938 -187.5 -187.5 -187.5h-375c-103.406 0 -187.5 84.0938 -187.5 187.5v62.5h125v-62.5c0 -34.4375 28.0625 -62.5 62.5 -62.5h375c34.4375 0 62.5 28.0625 62.5 62.5h-125zM702.5 800
-c103.406 0 187.5 -84.0938 187.5 -187.5v-62.5h-125v62.5c0 34.4375 -28.0625 62.5 -62.5 62.5h-375c-34.4375 0 -62.5 -28.0625 -62.5 -62.5v-1.9375h125l-187.5 -185.562l-187.5 185.562h125v1.9375c0 103.406 84.0938 187.5 187.5 187.5h375z" />
-    <glyph glyph-name="glyph79" unicode="&#xe033;" 
-d="M638.281 175l187.75 250l188.969 -250h-125v-62.5c0 -103.406 -84.0938 -187.5 -187.5 -187.5h-375c-103.406 0 -187.5 84.0938 -187.5 187.5v62.5h125v-62.5c0 -34.4375 28.0625 -62.5 62.5 -62.5h375c34.4375 0 62.5 28.0625 62.5 62.5v62.5h-126.719zM391.719 550
-l-187.75 -250l-188.969 250h125v62.5c0 103.406 84.0938 187.5 187.5 187.5h375c103.406 0 187.5 -84.0938 187.5 -187.5v-62.5h-125v62.5c0 34.4375 -28.0625 62.5 -62.5 62.5h-375c-34.4375 0 -62.5 -28.0625 -62.5 -62.5v-62.5h126.719z" />
-    <glyph glyph-name="glyph80" unicode="&#xe034;" 
-d="M890 425h125v-62.5c0 -103.281 -84.0938 -187.5 -187.5 -187.5h-437.625l0.125 -125l-250 187.5l250 187.5l-0.125 -125h437.625c34.4375 0 62.5 28.0625 62.5 62.5v62.5zM140 487.5v-62.5h-125v62.5c0 103.5 84.0938 187.5 187.5 187.5h437.5v125l249.75 -187.5
-l-249.75 -187.5v125h-437.5c-34.4375 0 -62.5 -27.9688 -62.5 -62.5z" />
-    <glyph glyph-name="glyph81" unicode="&#xe035;" 
-d="M890 362.5h125c0 -103.281 -84.0938 -187.5 -187.5 -187.5h-562.75v-125l-249.75 187.5l249.75 187.5v-125h562.75c34.4375 0 62.5 28.0625 62.5 62.5zM202.5 550c-34.4375 0 -62.5 -28.0625 -62.5 -62.5h-125c0 103.5 84.0938 187.5 187.5 187.5h562.5v125l250 -187.5
-l-250 -187.5v125h-562.5z" />
-    <glyph glyph-name="glyph82" unicode="&#xe036;" horiz-adv-x="905" 
-d="M761.344 609.812c83 -82.75 128.656 -192.75 128.656 -309.812c0 -241.219 -196.281 -437.5 -437.5 -437.5v-62.5l-125 125l125 125v-62.5c172.375 0 312.5 140.125 312.5 312.5c0 83.625 -32.7188 162.219 -91.7812 221.312zM577.5 675l-125 -125v62.5
-c-172.375 0 -312.5 -140.125 -312.5 -312.5c0 -83.625 32.7188 -162.219 91.7812 -221.312l-88.125 -88.5c-83 82.75 -128.656 192.75 -128.656 309.812c0 241.219 196.281 437.5 437.5 437.5v62.5z" />
-    <glyph glyph-name="glyph83" unicode="&#xe037;" 
-d="M161.594 -53.75c-94.5938 94.4688 -146.594 219.969 -146.594 353.75c0 275.625 224.25 500 500 500l62.5 -62.5l-62.5 -62.5c-206.781 0 -375 -168.219 -375 -375c0 -100.344 39.0625 -194.594 110 -265.375l-76.7812 -10l-11.625 -78.375v0zM515 -200l-62.5 62.25
-l62.5 62.75c206.781 0 375 168.219 375 375c0 100.094 -39.0625 194.344 -110.094 265.25l76.9062 10.125l11.4688 78.25c94.5938 -94.4688 146.719 -220.094 146.719 -353.625c0 -275.625 -224.375 -500 -500 -500v0z" />
-    <glyph glyph-name="glyph84" unicode="&#xe038;" 
-d="M390 550h-187.5v-125l-187.5 187.5l187.5 187.5v-125h187.5v-125zM640 675h187.5v125l187.5 -187.5l-187.5 -187.5v125h-187.5v125z" />
-    <glyph glyph-name="glyph85" unicode="&#xe039;" 
-d="M327.5 612.5l62.5 -62.5h-187.5v-125l-187.5 187.5l187.5 187.5v-125h187.5zM700.562 612.5l-60.5625 62.5h187.5v125l187.5 -187.5l-187.5 -187.5v125h-187.5z" />
-    <glyph glyph-name="glyph86" unicode="&#xe03a;" 
-d="M1015 300c0 -276.125 -223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500s500 -223.875 500 -500zM327.5 237.5h375v-62.5l125 125l-125 125v-62.5h-375v62.5l-125 -125l125 -125v62.5z" />
-    <glyph glyph-name="glyph87" unicode="&#xe03b;" horiz-adv-x="405" 
-d="M265 175v-187.5h125l-187.5 -187.5l-187.5 187.5h125v187.5h125zM140 425v187.5h-125l187.5 187.5l187.5 -187.5h-125v-187.5h-125z" />
-    <glyph glyph-name="glyph88" unicode="&#xe03c;" horiz-adv-x="405" 
-d="M202.5 112.5l62.5 62.5v-187.5h125l-187.5 -187.5l-187.5 187.5h125v187.5zM202.5 485.562l-62.5 -60.5625v187.5h-125l187.5 187.5l187.5 -187.5h-125v-187.5z" />
-    <glyph glyph-name="glyph89" unicode="&#xe03d;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM577.5 112.5v375h62.5l-125 125l-125 -125h62.5v-375h-62.5l125 -125l125 125h-62.5z" />
-    <glyph glyph-name="glyph90" unicode="&#xe03e;" 
-d="M577.5 175v-187.5h125l-187.5 -187.5l-187.5 187.5h125v187.5h125zM452.5 425v187.5h-125l187.5 187.5l187.5 -187.5h-125v-187.5h-125zM390 237.5h-187.5v-125l-187.5 187.5l187.5 187.5v-125h187.5v-125zM640 362.5h187.5v125l187.5 -187.5l-187.5 -187.5v125h-187.5
-v125z" />
-    <glyph glyph-name="glyph91" unicode="&#xe03f;" 
-d="M515 112.5l62.5 62.5v-187.5h125l-187.5 -187.5l-187.5 187.5h125v187.5zM515 485.562l-62.5 -60.5625v187.5h-125l187.5 187.5l187.5 -187.5h-125v-187.5zM327.5 300l62.5 -62.5h-187.5v-125l-187.5 187.5l187.5 187.5v-125h187.5zM700.562 300l-60.5625 62.5h187.5v125
-l187.5 -187.5l-187.5 -187.5v125h-187.5z" />
-    <glyph glyph-name="glyph92" unicode="&#xe040;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM702.5 175l125 125l-125 125v-62.5h-125v125h62.5l-125 125l-125 -125h62.5v-125h-125v62.5l-125 -125l125 -125v62.5h125v-125h-62.5l125 -125l125 125
-h-62.5v125h125v-62.5z" />
-    <glyph glyph-name="glyph93" unicode="&#xe041;" 
-d="M1015 174.961h-750.234v-125.008l-249.766 187.512l249.766 187.512v-125.008h750.234v-125.008zM15 549.984v125.008h749.984v125.008l250.016 -187.512l-250.016 -187.512v125.008h-749.984z" />
-    <glyph glyph-name="glyph94" unicode="&#xe042;" horiz-adv-x="780" 
-d="M15 -200v142.812h750v-142.812h-750zM515 228.594h125l-249.625 -285.781l-250.375 285.781h125v571.406h250v-571.406z" />
-    <glyph glyph-name="glyph95" unicode="&#xe043;" horiz-adv-x="780" 
-d="M15 657.125v142.875h750v-142.875h-750zM265 371.406h-125l249.625 285.719l250.375 -285.719h-125v-571.406h-250v571.406z" />
-    <glyph glyph-name="glyph96" unicode="&#xe044;" 
-d="M765 675c137.938 0 250 -112.188 250 -250s-112.062 -250 -250 -250h-187.5v-187.5h125l-187.562 -187.5l-187.438 187.5h125v187.5h-187.5c-137.875 0 -250 112.188 -250 250s112.125 250 250 250c11.1562 0 22.0938 -1.59375 33.0938 -3.0625
-c42.9062 75.9375 123.531 128.062 216.906 128.062c91.4375 0 172 -51.4062 215.562 -128.531c11.375 1.6875 22.7188 3.53125 34.4375 3.53125zM765 300c68.8438 0 125 56.0312 125 125s-56.1562 125 -125 125s-125 -56.0312 -125 -125h-125
-c0 81.4062 39.6875 153.188 100.094 198.844c-23.125 31.125 -59.625 51.1562 -100.094 51.1562c-68.9062 0 -125 -56.0312 -125 -125c0 -15 2.625 -29.7812 7.8125 -43.5938l-117.062 -43.9375c-10.25 27.3438 -15.375 56.4062 -15.625 85.8125
-c-64.4062 -1.8125 -125.125 -54.8125 -125.125 -123.281c0 -68.9688 56.0938 -125 125 -125h500z" />
-    <glyph glyph-name="glyph97" unicode="&#xe045;" 
-d="M765 675c137.938 0 250 -112.062 250 -250s-112.062 -250 -250 -250h-500c-137.875 0 -250 112.062 -250 250s112.125 250 250 250c11.1562 0 22.0938 -1.71875 33.0938 -3.1875c42.9062 76.1875 123.531 128.188 216.906 128.188c91.4375 0 172 -51.5 215.562 -128.406
-c11.375 1.46875 22.7188 3.40625 34.4375 3.40625zM765 300c68.8438 0 125 56.1562 125 125s-56.1562 125 -125 125s-125 -56.1562 -125 -125h-125c0 81.4062 39.6875 153.062 100.094 198.719c-23.125 31.25 -59.625 51.2812 -100.094 51.2812
-c-68.9062 0 -125 -56.1562 -125 -125c0 -15.125 2.625 -29.7812 7.8125 -43.7188l-117.062 -43.6875c-10.25 27.3438 -15.375 56.1562 -15.625 85.6875c-64.4062 -1.9375 -125.125 -54.6875 -125.125 -123.281c0 -68.8438 56.0938 -125 125 -125h500zM577.562 -12.5v-187.5
-h-125v187.5h-125l187.562 187.5l187.375 -187.5h-124.938z" />
-    <glyph glyph-name="glyph98" unicode="&#xe046;" horiz-adv-x="905" 
-d="M640 800h125v-121.094c0 -83.5 -32.4688 -161.875 -91.5625 -220.938l-353.625 -351.562c-32.0938 -32.25 -50.1875 -73.9688 -53.4688 -118.906h123.656l-187.5 -187.5l-187.5 187.5h126.469c3.40625 78.25 34.1875 151.5 90.0938 207.281l353.625 351.688
-c35.2812 35.2812 54.8125 82.375 54.8125 132.438v121.094zM763.531 -12.5h126.469l-187.5 -187.5l-187.5 187.5h123.656c-3.3125 44.9375 -21.375 86.8125 -53.5938 118.906l-70.0625 69.6875l88.625 88.1562l69.6875 -69.2188
-c55.9062 -56.0312 86.8125 -129.281 90.2188 -207.531z" />
-    <glyph glyph-name="glyph99" unicode="&#xe047;" horiz-adv-x="780" 
-d="M15 800l750 -500l-750 -500v1000z" />
-    <glyph glyph-name="glyph100" unicode="&#xe048;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM327.5 50l500.25 250l-500.25 250v-500z" />
-    <glyph glyph-name="glyph101" unicode="&#xe049;" horiz-adv-x="780" 
-d="M15 -200v1000h250v-1000h-250zM515 -200v1000h250v-1000h-250z" />
-    <glyph glyph-name="glyph102" unicode="&#xe04a;" 
-d="M15 -200v1000h1000v-1000h-1000z" />
-    <glyph glyph-name="glyph103" unicode="&#xe04b;" 
-d="M15 175l500 625l500 -625h-1000zM15 -200v250h998.656v-250h-998.656z" />
-    <glyph glyph-name="glyph104" unicode="&#xe04c;" 
-d="M1015 -200l-750 500l750 500v-1000zM15 -75v750h250v-750h-250z" />
-    <glyph glyph-name="glyph105" unicode="&#xe04d;" 
-d="M15 800l750 -500l-750 -500v1000zM765 -75v750h250v-750h-250z" />
-    <glyph glyph-name="glyph106" unicode="&#xe04e;" 
-d="M871.688 31.6875l143.312 143.312v-375h-375l143.312 143.312l-143.312 143.312l88.375 88.375zM390 800l-143.312 -143.312l141.969 -141.844l-88.375 -88.375l-141.969 141.844l-143.312 -143.312v375h375zM390 86.625l-143.312 -143.312l143.312 -143.312h-375v375
-l143.312 -143.312l143.312 143.312zM1015 800v-375l-143.312 143.312l-141.969 -141.844l-88.375 88.375l141.969 141.844l-143.312 143.312h375z" />
-    <glyph glyph-name="glyph107" unicode="&#xe04f;" 
-d="M934.188 -30.8125l80.8125 80.8125v-250h-250l80.8125 80.8125l-205.812 205.812l88.375 88.375zM95.8125 630.812l-80.8125 -80.8125v250h250l-80.8125 -80.8125l205.812 -205.812l-88.375 -88.375zM845.812 719.188l-80.8125 80.8125h250v-250l-80.8125 80.8125
-l-205.812 -205.812l-88.375 88.375zM390 86.625l-205.812 -205.812l80.8125 -80.8125h-250v250l80.8125 -80.8125l205.812 205.812z" />
-    <glyph glyph-name="glyph108" unicode="&#xe050;" 
-d="M783.312 -56.6875l-143.312 -143.312v375h375l-143.312 -143.312l143.312 -143.312l-88.375 -88.375zM15 425l143.312 143.312l-141.844 141.969l88.375 88.375l141.844 -141.969l143.312 143.312v-375h-375zM15 -111.625l143.312 143.312l-143.312 143.312h375v-375
-l-143.312 143.312l-143.312 -143.312zM640 425v375l143.312 -143.312l142.094 141.969l88.375 -88.375l-142.094 -141.969l143.312 -143.312h-375z" />
-    <glyph glyph-name="glyph109" unicode="&#xe051;" 
-d="M720.812 5.8125l-80.8125 -80.8125v250h250l-80.8125 -80.8125l205.812 -205.812l-88.375 -88.375zM219.594 507.156l-204.594 204.469l88.375 88.375l204.594 -204.469l82.0312 79.4688l-1.21875 -248.656l-248.781 -1.34375zM15 -111.625l205.812 205.812
-l-80.8125 80.8125h250v-250l-80.8125 80.8125l-205.812 -205.812zM890.969 425h-250.969v250.906l81.1875 -81.0938l205.188 205.188l88.625 -88.6875l-205.062 -205.188z" />
-    <glyph glyph-name="glyph110" unicode="&#xe052;" 
-d="M640 175v-125h-62.5v-187.5c0 -34.5312 -27.8438 -62.5 -62.5 -62.5c-34.4375 0 -62.5 27.9688 -62.5 62.5v187.5h-62.5v125h62.5v562.5c0 34.5312 28.0625 62.5 62.5 62.5c34.6562 0 62.5 -27.9688 62.5 -62.5v-562.5h62.5zM1015 550v-125h-62.5v-562.5
-c0 -34.5312 -27.8438 -62.5 -62.5 -62.5c-34.4375 0 -62.5 27.9688 -62.5 62.5v562.5h-62.5v125h62.5v187.5c0 34.5312 28.0625 62.5 62.5 62.5c34.6562 0 62.5 -27.9688 62.5 -62.5v-187.5h62.5zM265 425v-125h-62.5v-437.5c0 -34.5312 -27.8438 -62.5 -62.5 -62.5
-c-34.4375 0 -62.5 27.9688 -62.5 62.5v437.5h-62.5v125h62.5v312.5c0 34.5312 28.0625 62.5 62.5 62.5c34.6562 0 62.5 -27.9688 62.5 -62.5v-312.5h62.5z" />
-    <glyph glyph-name="glyph111" unicode="&#xe053;" 
-d="M1015 675h-1000v125h1000v-125zM640 425h-625v125h625v-125zM1015 50h-1000v125h1000v-125zM765 -200h-750v125h750v-125zM1015 -137.5c0 -34.5312 -28.0625 -62.5 -62.5 -62.5c-34.6562 0 -62.625 27.9688 -62.625 62.5s27.9688 62.5 62.625 62.5
-c34.4375 0 62.5 -27.9688 62.5 -62.5z" />
-    <glyph glyph-name="glyph112" unicode="&#xe054;" 
-d="M1015 675h-1000v125h1000v-125zM640 425h-625v125h625v-125zM1015 172.312h-1000v125h1000v-125zM15 -137.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM390 -137.5c0 -17 -6.16699 -31.667 -18.5 -44
-s-27 -18.5 -44 -18.5c-17.3223 0 -32.0898 6.09863 -44.3037 18.2959s-18.3213 26.9316 -18.3213 44.2041s6.10742 32.0068 18.3213 44.2041s26.9824 18.2959 44.3037 18.2959c17 0 31.667 -6.16699 44 -18.5s18.5 -27 18.5 -44zM515 -137.5
-c0.000976562 41.667 20.834 62.5 62.5 62.5c41.667 0 62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5z" />
-    <glyph glyph-name="glyph113" unicode="&#xe055;" 
-d="M15 737.496c0 41.6689 20.835 62.5039 62.5039 62.5039s62.5039 -20.835 62.5039 -62.5039s-20.835 -62.5039 -62.5039 -62.5039s-62.5039 20.835 -62.5039 62.5039zM15 487.48c0 41.6689 20.835 62.5039 62.5039 62.5039s62.5039 -20.835 62.5039 -62.5039
-s-20.835 -62.5039 -62.5039 -62.5039s-62.5039 20.835 -62.5039 62.5039zM15 237.465c0 41.6689 20.835 62.5039 62.5039 62.5039s62.5039 -20.835 62.5039 -62.5039s-20.835 -62.5039 -62.5039 -62.5039s-62.5039 20.835 -62.5039 62.5039zM15 -12.5508
-c0 41.6689 20.835 62.5039 62.5039 62.5039s62.5039 -20.835 62.5039 -62.5039s-20.835 -62.5039 -62.5039 -62.5039s-62.5039 20.835 -62.5039 62.5039zM265.016 674.992v125.008h749.984v-125.008h-749.984zM265.016 424.977v125.008h749.984v-125.008h-749.984z
-M265.016 174.961v125.008h749.984v-125.008h-749.984zM265.016 -75.0547v125.008h749.984v-125.008h-749.984z" />
-    <glyph glyph-name="glyph114" unicode="&#xe056;" 
-d="M15 737.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM265 675v125h750v-125h-750zM265 487.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5
-s-62.5 20.833 -62.5 62.5zM515 425v125h500v-125h-500zM265 -12.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM515 -75v125h500v-125h-500zM515 237.5c0.000976562 41.667 20.834 62.5 62.5 62.5
-c41.667 0 62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM765 175v125h250v-125h-250z" />
-    <glyph glyph-name="glyph115" unicode="&#xe057;" 
-d="M1015 -75l-125 -125l-437.5 437.625l-187.5 -187.5l-250 749.875l750 -250l-187.5 -187.5z" />
-    <glyph glyph-name="glyph116" unicode="&#xe058;" 
-d="M390 305.375c0 83.333 41.667 125 125 125s125 -41.667 125 -125s-41.667 -125 -125 -125s-125 41.667 -125 125zM907.344 611.031c71.7705 -90.8154 107.656 -192.701 107.656 -305.656c0 -67.8115 -13.2002 -132.582 -39.5996 -194.311
-c-26.4004 -61.7285 -61.916 -114.908 -106.549 -159.541s-97.8125 -80.1484 -159.541 -106.549c-61.7285 -26.3994 -126.499 -39.5996 -194.311 -39.5996s-132.582 13.2002 -194.311 39.5996c-61.7285 26.4004 -114.908 61.916 -159.541 106.549
-s-80.1484 97.8125 -106.549 159.541c-26.3994 61.7285 -39.5996 126.499 -39.5996 194.311c0 111.533 35.2812 212.929 105.844 304.188c11.6758 -8.79199 23.9258 -13.1875 36.75 -13.1875c17.3281 0 32.0771 6.08496 44.2461 18.2539s18.2539 26.918 18.2539 44.2461
-c0 12.7891 -4.52051 25.1641 -13.5625 37.125c72.4873 57.4258 154.883 92.0928 247.188 104c1.41699 -16.1016 7.9541 -29.6484 19.6133 -40.6387c11.6582 -10.9912 25.5479 -16.4863 41.668 -16.4863c16.0684 0 29.8965 5.4209 41.4834 16.2617
-c11.5879 10.8418 18.1865 24.2236 19.7979 40.1445c90.6689 -11.2656 172.294 -44.8799 244.875 -100.844c-10.083 -12.2812 -15.125 -25.4688 -15.125 -39.5625c0 -17.3027 6.10547 -32.0449 18.3174 -44.2275c12.2109 -12.1816 26.9385 -18.2725 44.1826 -18.2725
-c13.9131 0 26.8506 4.88574 38.8125 14.6562zM515 55.375c69.0459 0 127.974 24.3965 176.784 73.1904s73.2158 107.73 73.2158 176.81c0 69.1689 -24.5 128.169 -73.5 177l-176.5 176.5l-176.75 -176.75c-48.833 -48.833 -73.25 -107.75 -73.25 -176.75
-c0 -69.0312 24.4092 -127.956 73.2266 -176.773s107.742 -73.2266 176.773 -73.2266z" />
-    <glyph glyph-name="glyph117" unicode="&#xe059;" 
-d="M1015 800v-750h-250v-250h-750v750h250v250h750zM640 -75v125h-375v250h-125v-375h500zM890 175v375h-500v-375h500z" />
-    <glyph glyph-name="glyph118" unicode="&#xe05a;" 
-d="M890 675h125v-125h-125v-562.5c0 -103.5 -84 -187.5 -187.5 -187.5h-375c-103.5 0 -187.5 84 -187.5 187.5v562.5h-125v125h125h125c0 69.0938 55.9062 125 125 125h250c69.0938 0 125 -55.9062 125 -125h125zM390 50c34.5312 0 62.5 27.9688 62.5 62.5
-s-27.9688 62.5 -62.5 62.5s-62.5 -27.9688 -62.5 -62.5s27.9688 -62.5 62.5 -62.5zM390 300c34.5312 0 62.5 27.9688 62.5 62.5s-27.9688 62.5 -62.5 62.5s-62.5 -27.9688 -62.5 -62.5s27.9688 -62.5 62.5 -62.5zM640 50c34.5312 0 62.5 27.9688 62.5 62.5
-s-27.9688 62.5 -62.5 62.5s-62.5 -27.9688 -62.5 -62.5s27.9688 -62.5 62.5 -62.5zM640 300c34.5312 0 62.5 27.9688 62.5 62.5s-27.9688 62.5 -62.5 62.5s-62.5 -27.9688 -62.5 -62.5s27.9688 -62.5 62.5 -62.5z" />
-    <glyph glyph-name="glyph119" unicode="&#xe05b;" 
-d="M1015 675v-250h-125v-62.5c0 -34.4375 -28.0625 -62.5 -62.5 -62.5h-750c-34.4375 0 -62.5 28.0625 -62.5 62.5v375c0 34.375 28.0625 62.5 62.5 62.5h750c34.4375 0 62.5 -28.125 62.5 -62.5v-62.5h125zM765 425v250h-250v-250h250z" />
-    <glyph glyph-name="glyph120" unicode="&#xe05c;" 
-d="M1015 675v-250h-125v-62.5c0 -34.3125 -28.0625 -62.5 -62.5 -62.5h-750c-34.4375 0 -62.5 28.1875 -62.5 62.5v375c0 34.3125 28.0625 62.5 62.5 62.5h750c34.4375 0 62.5 -28.1875 62.5 -62.5v-62.5h125zM765 425v250h-625v-250h625z" />
-    <glyph glyph-name="glyph121" unicode="&#xe05d;" 
-d="M890 675h125v-250h-125v-62.5c0 -34.4375 -28.0625 -62.5 -62.5 -62.5h-750c-34.4375 0 -62.5 28.0625 -62.5 62.5v123.656h199.594c25.75 -72.625 94.5 -125 176.031 -125v63.8438h127.062v62.5h-127.062v125h124.5v62.5h-124.5v61.1562
-c-81.5625 0 -150.281 -52.375 -176.031 -125h-199.594v126.344c0 34.375 28.0625 62.5 62.5 62.5h750c34.4375 0 62.5 -28.125 62.5 -62.5v-62.5z" />
-    <glyph glyph-name="glyph122" unicode="&#xe05e;" 
-d="M764.875 425c125.125 0 250.125 -66.4062 250.125 -250c0 -179.688 -125 -250 -250.125 -250h-124.875c-68.9688 0 -125 -55.9062 -125 -125c-138.062 0 -250.125 111.938 -250.125 250v125c0 49.8125 11.375 90.625 29.0625 125h-29.0625
-c-124.875 0 -249.875 70.3125 -249.875 250c0 183.594 125 250 249.875 250h250.125c125 0 249.875 -77.4062 249.875 -250v-125zM264.875 425h125.125c81.5312 0 154.062 -39.3125 199.719 -100.031c30.625 22.8125 50.2812 59.1875 50.2812 100.031v125
-c0 108.75 -78.25 125 -125 125h-250.125c-124.875 0 -124.875 -87.5312 -124.875 -125c0 -30.875 0 -125 124.875 -125zM764.875 50c125.125 0 125.125 94.0625 125.125 125c0 37.4062 0 125 -125.125 125l-34.5312 0.0625l0.125 0.0625
-c-43.3438 -74.4688 -123.062 -125.125 -215.469 -125.125c0 48.2188 -28.1875 88.875 -68.25 109.75c-28.3125 -17.8438 -56.75 -52.5625 -56.75 -109.75v-125c0 -40.7812 19.6562 -77.1562 50.0625 -99.9688c45.625 60.6562 118.281 99.9688 199.938 99.9688h124.875z
-M756.219 362.688c-0.84375 -2.875 -1.84375 -5.6875 -2.6875 -8.46875c0.84375 2.78125 1.9375 5.59375 2.6875 8.46875z" />
-    <glyph glyph-name="glyph123" unicode="&#xe05f;" horiz-adv-x="780" 
-d="M390 300c-69.0938 0 -125 55.9688 -125 125v250c0 69.0312 55.9062 125 125 125s125 -55.9688 125 -125v-250c0 -69.0312 -55.9062 -125 -125 -125zM515 -75c69.0938 0 125 -55.9062 125 -125h-500c0 69.0938 55.9062 125 125 125h62.5v131.344
-c-177 29.9062 -312.5 183.281 -312.5 368.656v60.5625c0 34.5312 27.9688 62.5 62.5 62.5s62.5 -27.9688 62.5 -62.5v-60.5625c0 -137.875 112.062 -250 250 -250s250 112.125 250 250v60.5625c0 34.5312 27.9688 62.5 62.5 62.5s62.5 -27.9688 62.5 -62.5v-60.5625
-c0 -185.375 -135.5 -338.75 -312.5 -368.656v-131.344h62.5z" />
-    <glyph glyph-name="glyph124" unicode="&#xe060;" 
-d="M889.281 550l125.719 125l-122.562 125h122.562v-1000h-1000v1000h125.5l125.469 -125.5l-126.938 -124.5h125.25l127.656 125.5l-124.5 124.5h176.75l125.375 -125.5l-126.844 -124.5h147.594l127.688 125.5l-124.625 124.5h173.938l122.688 -125.5l-124.125 -124.5
-h123.406zM890 -73.6562v125h-750v-125h750zM890 175v125h-750v-125h750z" />
-    <glyph glyph-name="glyph125" unicode="&#xe061;" 
-d="M952.5 300c34.5312 0 62.5 -27.9688 62.5 -62.5v-250c0 -34.5312 -27.9688 -62.5 -62.5 -62.5h-187.5v375v125c0 137.938 -112.062 250 -250 250s-250 -112.062 -250 -250v-125v-375h-187.5c-34.5312 0 -62.5 27.9688 -62.5 62.5v250c0 34.5312 27.9688 62.5 62.5 62.5
-h62.5v125c0 207.031 167.969 375 375 375s375 -167.969 375 -375v-125h62.5z" />
-    <glyph glyph-name="glyph126" unicode="&#xe062;" horiz-adv-x="780" 
-d="M390 300c207.031 0 375 -167.969 375 -375c0 -69.0938 -55.9062 -125 -125 -125h-500c-69.0938 0 -125 55.9062 -125 125c0 207.031 167.969 375 375 375zM202.5 612.5c0 125 62.5 187.5 187.5 187.5s187.5 -62.5 187.5 -187.5s-62.5 -187.5 -187.5 -187.5
-s-187.5 62.5 -187.5 187.5z" />
-    <glyph glyph-name="glyph127" unicode="&#xe063;" horiz-adv-x="655" 
-d="M327.5 674.75c-103.469 0 -187.562 -84.3438 -187.562 -188c0 -59.1875 27.0938 -113.625 74.2188 -149.156c70.5312 -53.3438 99.125 -112.312 108.875 -161.875h8.9375c9.8125 49.5625 38.3125 108.531 108.875 161.875c47.1875 35.5 74.1562 89.9375 74.1562 149.156
-c0 103.656 -84.0312 188 -187.5 188zM327.5 800v0c172.594 0 312.5 -140.25 312.5 -313.219c0 -102.562 -48.2188 -192.156 -124.031 -249.281c-34.7812 -26.375 -63.5312 -60.3125 -63.5312 -107.188v-79.8438h-249.812v79.8438c0 46.875 -28.75 80.8125 -63.5938 107.188
-c-75.75 57.125 -124.031 146.719 -124.031 249.281c0 172.969 139.906 313.219 312.5 313.219zM202.625 -200v125.25h249.812v-125.25h-249.812z" />
-    <glyph glyph-name="glyph128" unicode="&#xe064;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM515.969 177.062c68.625 0 124.031 55.4375 124.031 123.906c0 68.625 -55.4062 124.031 -124.031 124.031
-c-68.375 0 -123.906 -55.4375 -123.906 -124.031c0 -68.5 55.5312 -123.906 123.906 -123.906z" />
-    <glyph glyph-name="glyph129" unicode="&#xe065;" 
-d="M1015 -137.5c0 -34.5312 -27.9688 -62.5 -62.5 -62.5h-875c-34.5312 0 -62.5 27.9688 -62.5 62.5v562.5h1000v-562.5zM390 674.938h625v-124.938h-1000v250h375v-125.062z" />
-    <glyph glyph-name="glyph130" unicode="&#xe066;" 
-d="M690.281 800l324.719 -321.906v-678.094l-250.125 207.281l-250.125 -207.281l-250.469 207.531l-249.281 -207.531v1000h675.281zM577.5 362.5h312.5l-312.5 312.5v-312.5z" />
-    <glyph glyph-name="glyph131" unicode="&#xe067;" 
-d="M1015 550c0 -93.9375 -52.5 -174.812 -129.156 -217.531c1 -10.5625 3.1875 -20.6875 3.1875 -31.5c0 -207.156 -167.844 -375 -375 -375c-77.2812 0 -149.062 23.4375 -208.75 63.4688l-290.281 -189.438l190.281 288.562
-c-41.625 60.3125 -66.2812 133.438 -66.2812 212.406c0 207.156 167.844 375 375 375c11.7188 0 22.8438 -2.375 34.3125 -3.46875c0 -0.0625 -0.125 -0.125 -0.125 -0.1875c43 75.875 123.562 127.688 216.812 127.688c137.938 0 250 -112 250 -250zM514.031 50.9688
-c137.562 0 249.375 111.594 249.875 249.156c-22.3438 0.125 -43.7188 4.03125 -64.3438 9.65625l-98.1562 -98.1562c-48.8125 -48.8125 -127.938 -48.8125 -176.75 0s-48.8125 127.938 0 176.75l99.125 99.1875c-5.125 20.0938 -8.78125 40.7188 -8.78125 62.4375
-c0 0.5 0.125 0.96875 0.125 1.46875c0 -0.1875 -0.125 -0.375 -0.125 -0.625c-0.25 0 -0.59375 0.125 -0.96875 0.125c-137.938 0 -250 -112.125 -250 -250c0 -137.938 112.062 -250 250 -250zM765 425c68.8438 0 125 56.0938 125 125s-56.1562 125 -125 125
-s-125 -56.0938 -125 -125s56.1562 -125 125 -125z" />
-    <glyph glyph-name="glyph132" unicode="&#xe068;" horiz-adv-x="655" 
-d="M548.453 708.438c122.094 -122 122.094 -319.938 0 -441.875c0 0 -220.938 -216.562 -220.938 -466.562c0 250 -220.938 466.562 -220.969 466.531c-122.062 121.969 -122.062 319.906 0 441.906c122.094 122.062 319.844 122.062 441.906 0zM327.516 362.312
-c69.0938 0 125 55.9062 125 125s-55.9062 125 -125 125s-125 -55.9062 -125 -125s55.9062 -125 125 -125z" />
-    <glyph glyph-name="glyph133" unicode="&#xe069;" horiz-adv-x="905" 
-d="M140 800h750v-1000h-750c-69.0312 0 -125 55.9062 -125 125v750c0 69.0938 55.9688 125 125 125zM765 -75v750h-124.531v-252.188l-125.969 125.969l-125 -125v251.219h-124.5v-750h500z" />
-    <glyph glyph-name="glyph134" unicode="&#xe06a;" 
-d="M515 675c0 0 125 125 500 125v-750c-378.906 0 -500 -125 -500 -125s-121.094 125 -500 125v750c375 0 500 -125 500 -125zM140 675v-503.406c158.875 -13.4375 256.344 -50.1875 312.5 -79.8438v503.406c-56.1562 29.7812 -153.625 66.5312 -312.5 79.8438zM890 171.594
-v503.406c-158.938 -13.3125 -256.344 -50.0625 -312.5 -79.8438v-503.406c56.1562 29.6875 153.562 66.4062 312.5 79.8438z" />
-    <glyph glyph-name="glyph135" unicode="&#xe06b;" 
-d="M15 -200v625h1000v-625h-1000zM577.5 550v250h312.5l125 -250h-437.5zM452.5 800v-250h-437.5l125 250h312.5z" />
-    <glyph glyph-name="glyph136" unicode="&#xe06c;" 
-d="M827.5 675h187.5v-875h-1000v875h187.5v-63.9688c0 -69.0938 55.9062 -125 125 -125s125 55.9062 125 125v63.9688h125v-63.9688c0 -69.0938 55.9062 -125 125 -125s125 55.9062 125 125v63.9688zM327.5 -75v125h-125v-125h125zM327.5 175v125h-125v-125h125zM577.5 -75
-v125h-125v-125h125zM577.5 174.75v125h-125v-125h125zM702.5 -75l125 125h-125v-125zM827.5 175v125h-125v-125h125zM265 612.5v125c0 34.5312 27.9688 62.5 62.5 62.5s62.5 -27.9688 62.5 -62.5v-125c0 -34.5312 -27.9688 -62.5 -62.5 -62.5s-62.5 27.9688 -62.5 62.5z
-M640 612.5v125c0 34.5312 27.9688 62.5 62.5 62.5s62.5 -27.9688 62.5 -62.5v-125c0 -34.5312 -27.9688 -62.5 -62.5 -62.5s-62.5 27.9688 -62.5 62.5z" />
-    <glyph glyph-name="glyph137" unicode="&#xe06d;" 
-d="M15 175v312.5c0 172.594 139.906 312.5 312.5 312.5h312.5c207.156 0 375 -167.969 375 -375s-167.844 -375 -375 -375h-250c-68.9688 0 -125 -55.9062 -125 -125c-137.938 0 -250 111.938 -250 250z" />
-    <glyph glyph-name="glyph138" unicode="&#xe06e;" horiz-adv-x="780" 
-d="M515 800c138.062 0 250 -111.938 250 -250v-500c0 -138.062 -111.938 -250 -250 -250h-250c-138.062 0 -250 111.938 -250 250v500c0 138.062 111.938 250 250 250h250zM390 -139.438c35.5938 0 64.4375 28.8125 64.4375 64.4375s-28.875 64.4375 -64.4375 64.4375
-s-64.4375 -28.8125 -64.4375 -64.4375s28.8438 -64.4375 64.4375 -64.4375zM640 50v500c0 68.8438 -56.1562 125 -125 125h-250c-68.9062 0 -125 -56.1562 -125 -125v-500h500z" />
-    <glyph glyph-name="glyph139" unicode="&#xe06f;" 
-d="M765 -200v1000h250v-1000h-250zM390 -200v750h250v-750h-250zM15 -200v500h250v-500h-250z" />
-    <glyph glyph-name="glyph140" unicode="&#xe070;" 
-d="M515 175c0 83.333 41.667 125 125 125s125 -41.667 125 -125s-41.667 -125 -125 -125s-125 41.667 -125 125zM890 550c34.667 0 64.167 -12.167 88.5 -36.5s36.5 -53.833 36.5 -88.5v-625h-1000v625c0 34.667 12.167 64.167 36.5 88.5s53.833 36.5 88.5 36.5h250.125
-l106.625 206.719c4.08496 12.7148 11.5781 23.1064 22.4785 31.1768c10.9023 8.06934 23.2432 12.1045 37.0215 12.1045h171.625c13.6172 0 25.8428 -3.94238 36.6758 -11.8262c10.834 -7.88477 18.3896 -18.0781 22.668 -30.5801zM202.5 300c17 0 31.667 6.16699 44 18.5
-s18.5 27 18.5 44s-6.16699 31.667 -18.5 44s-27 18.5 -44 18.5s-31.667 -6.16699 -44 -18.5c-12.334 -12.333 -18.5 -27 -18.5 -44s6.16699 -31.667 18.5 -44s27 -18.5 44 -18.5zM640 -75c69.333 0 128.333 24.333 177 73s73 107.667 73 177s-24.333 128.333 -73 177
-s-107.667 73 -177 73s-128.333 -24.333 -177 -73s-73 -107.667 -73 -177s24.333 -128.333 73 -177s107.667 -73 177 -73z" />
-    <glyph glyph-name="glyph141" unicode="&#xe071;" 
-d="M265 175c-138.062 0 -250 111.938 -250 250s111.938 250 250 250v-500zM390 675l250 125v-750l-250 125v500zM1015 362.5h-250v125h250v-125z" />
-    <glyph glyph-name="glyph142" unicode="&#xe072;" 
-d="M265 175c-138.062 0 -250 111.938 -250 250s111.938 250 250 250v-500zM390 675l250 125v-750l-250 125v500zM765.125 175.125v125c10.375 0 20.875 1.34375 31.375 3.90625c54.8125 13.9062 93.5 63.7188 93.5 120.969s-38.6875 106.938 -94.125 120.969
-c-9.875 2.4375 -20.375 3.78125 -30.75 3.78125v125c20.5 0 41 -2.5625 61.1562 -7.4375c111.219 -28.3125 188.719 -127.812 188.719 -242.312c0 -114.625 -77.5 -214.219 -188.344 -242.312c-20.75 -5 -41.2812 -7.5625 -61.5312 -7.5625v0z" />
-    <glyph glyph-name="glyph143" unicode="&#xe073;" 
-d="M1015 675v-250h-125v-62.5c0 -34.4375 -28.0625 -62.5 -62.5 -62.5h-750c-34.4375 0 -62.5 28.0625 -62.5 62.5v375c0 34.3125 28.0625 62.5 62.5 62.5h750c34.4375 0 62.5 -28.1875 62.5 -62.5v-62.5h125z" />
-    <glyph glyph-name="glyph144" unicode="&#xe074;" 
-d="M369.25 183.188c9.15625 -10.25 18.6875 -19.7812 28.6875 -28.8125c-57.875 -57.875 -137.938 -137.969 -177.625 -177.75c-13.5625 13.6875 -15.375 15.375 -28.8125 28.8125c39.8125 39.6875 119.781 119.875 177.75 177.75zM644.156 800
-c204.469 0 370.844 -166.25 370.812 -370.75c0 -204.344 -166.375 -370.594 -370.844 -370.594c-48.8125 0 -95.2188 10 -137.938 27.3438l-285.875 -286l-205.312 205.438l285.75 285.781c-17.2188 42.7188 -27.2188 89.125 -27.2188 138.062
-c0 204.469 166.281 370.719 370.625 370.719zM644.156 183.531c135.625 0 245.969 110.375 245.969 245.719c0 135.5 -110.344 245.844 -245.969 245.844c-135.375 0 -245.719 -110.344 -245.719 -245.844c0 -135.375 110.344 -245.719 245.719 -245.719z" />
-    <glyph glyph-name="glyph145" unicode="&#xe075;" horiz-adv-x="780" 
-d="M452.5 800c172.25 0 312.5 -140.125 312.5 -312.5v-500c0 -103.406 -84.0938 -187.5 -187.5 -187.5h-375c-103.406 0 -187.5 84.0938 -187.5 187.5v437.5h125.125v62.5c0 172.375 140.25 312.5 312.375 312.5zM389.875 50c34.5625 0 62.5 27.9688 62.5 62.5
-s-27.9688 62.5 -62.5 62.5c-34.4062 0 -62.375 -27.9688 -62.375 -62.5s27.9688 -62.5 62.375 -62.5zM640 425v62.5c0 103.406 -84.0938 187.5 -187.5 187.5c-103.281 0 -187.375 -84.0938 -187.375 -187.5v-62.5h374.875z" />
-    <glyph glyph-name="glyph146" unicode="&#xe076;" horiz-adv-x="780" 
-d="M452.625 800c172.125 0 312.375 -140.125 312.375 -312.5v-500c0 -103.406 -84.2188 -187.5 -187.5 -187.5h-375c-103.281 0 -187.5 84.0938 -187.5 187.5v437.5h625v62.5c0 103.406 -84.0938 187.5 -187.375 187.5c-103.5 0 -187.5 -84.0938 -187.5 -187.5h-124.875
-c0 172.375 140 312.5 312.375 312.5zM389.875 50c34.6562 0 62.5 27.9688 62.5 62.5s-27.8438 62.5 -62.5 62.5c-34.4375 0 -62.5 -27.9688 -62.5 -62.5s28.0625 -62.5 62.5 -62.5z" />
-    <glyph glyph-name="glyph147" unicode="&#xe077;" 
-d="M996.648 781.688c24.4062 -24.4062 24.4062 -63.9688 -0.03125 -88.375l-127.562 -127.312c80.3438 -121.219 67.1562 -286.375 -39.7812 -393.188l-187.125 -187.5c-61.0312 -61.0312 -140.969 -91.5625 -220.938 -91.5625c-60.0625 0 -120.25 17.2188 -172.375 51.875
-l-127.188 -127.312c-12.2188 -12.2188 -28.1875 -18.3125 -44.1875 -18.3125s-31.9688 6.09375 -44.1562 18.3125c-24.4062 24.4062 -24.4062 63.9688 0 88.375l127.188 127.312c-80.3438 121.219 -67.1562 286.375 39.7812 393.188l187.5 187.5
-c61.0312 61.0312 140.969 91.5625 220.938 91.5625c60.0625 0 119.875 -17.2188 172 -51.875l127.188 127.312c24.4062 24.4062 64.3438 24.4062 88.75 0zM795.836 393.75c0 28.4375 -6.8125 55.5312 -18.8125 80.3125l-94.9688 -95.2188
-c-12.1875 -12.2188 -28.1875 -18.3125 -44.0625 -18.3125c-16 0 -31.9688 6.09375 -44.1875 18.3125c-24.4062 24.4062 -24.4062 63.9688 0 88.375l95.0938 95.2188c-24.875 11.8438 -51.875 18.8125 -80.1875 18.8125c-50.0625 0 -97.1562 -19.5312 -132.562 -54.9375
-l-187.5 -187.5c-35.4062 -35.4062 -54.9375 -82.5 -54.9375 -132.562c0 -28.4375 6.84375 -55.5312 18.8125 -80.3125l93.25 93.25c24.4062 24.4062 63.9688 24.4062 88.375 0s24.4062 -63.9688 0 -88.375l-93.25 -93.25c24.9062 -11.8438 52 -18.8125 80.3125 -18.8125
-c50.0625 0 97.1562 19.5312 132.562 54.9375l187.125 187.5c35.4062 35.4062 54.9375 82.5 54.9375 132.562z" />
-    <glyph glyph-name="glyph148" unicode="&#xe078;" 
-d="M1002.72 623.656c7.34375 -23.4375 12.2188 -47.8438 12.2188 -73.6562c0 -138 -111.812 -250 -250 -250c-38.3438 0 -74.4688 9.46875 -107 24.9688l-500.719 -500.562c-14.9062 -15.125 -35.7812 -24.4062 -58.8438 -24.4062c-46.1562 0 -83.375 37.3438 -83.375 83.25
-c0 23.1875 9.40625 43.9375 24.4062 59.0938l500.625 500.469c-15.625 32.6562 -25.0312 68.6875 -25.0312 107.188c0 138 111.938 250 249.938 250c25.1562 0 48.8438 -4.8125 71.7812 -11.7188l-155.031 -154.969v-166.625h164.062z" />
-    <glyph glyph-name="glyph149" unicode="&#xe079;" 
-d="M515 675c-206.781 0 -375 -168.219 -375 -375s168.219 -375 375 -375s375 168.219 375 375s-168.219 375 -375 375zM515 800v0c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM684.438 219.438l-88.375 -88.375
-l-122.562 122.562c-13.0625 11.5938 -21.7188 27.8125 -21.7188 46.625v249.75h125.719v-223.5z" />
-  </font>
-</defs></svg>

BIN
hmc/fonts/iconic_fill.ttf


+ 0 - 169
hmc/fonts/iconic_stroke.afm

@@ -1,169 +0,0 @@
-StartFontMetrics 2.0
-Comment Generated by FontForge 20110222
-Comment Creation Date: Thu Dec 29 18:54:06 2011
-FontName IconicStroke
-FullName Untitled1
-FamilyName Untitled1
-Weight Medium
-Notice (Icons by PJ Onori, font creation script by Yann)
-ItalicAngle 0
-IsFixedPitch false
-UnderlinePosition -100
-UnderlineThickness 50
-Version 001.000
-EncodingScheme ISOLatin1Encoding
-FontBBox 15 -201 1016 801
-Descender -2147483648
-StartCharMetrics 150
-C 35 ; WX 905 ; N numbersign ; B 15 -200 890 800 ;
-C 63 ; WX 530 ; N question ; B 15 -200 515 800 ;
-C 64 ; WX 1030 ; N at ; B 15 -200 1015 800 ;
-C 182 ; WX 780 ; N paragraph ; B 15 -200 765 800 ;
-C -1 ; WX 530 ; N glyph4 ; B 15 -200 515 800 ;
-C -1 ; WX 1030 ; N glyph5 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph6 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph7 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph8 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph9 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph10 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph11 ; B 15 175 1015 800 ;
-C -1 ; WX 1030 ; N glyph12 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph13 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph14 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph15 ; B 15 -75 1015 800 ;
-C -1 ; WX 1030 ; N glyph16 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph17 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph18 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph19 ; B 15 -76 1016 800 ;
-C -1 ; WX 1030 ; N glyph20 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph21 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph22 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph23 ; B 15 -5 1015 800 ;
-C -1 ; WX 1030 ; N glyph24 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph25 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph26 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph27 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph28 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph29 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph30 ; B 15 550 1015 800 ;
-C -1 ; WX 1030 ; N glyph31 ; B 15 50 1015 800 ;
-C -1 ; WX 780 ; N glyph32 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph33 ; B 15 -200 1015 800 ;
-C -1 ; WX 530 ; N glyph34 ; B 15 -200 515 800 ;
-C -1 ; WX 1030 ; N glyph35 ; B 15 50 1016 800 ;
-C -1 ; WX 905 ; N glyph36 ; B 15 -200 890 800 ;
-C -1 ; WX 1030 ; N glyph37 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph38 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph39 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph40 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph41 ; B 15 -200 1015 800 ;
-C -1 ; WX 905 ; N glyph42 ; B 15 -200 890 800 ;
-C -1 ; WX 1030 ; N glyph43 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph44 ; B 15 -200 1015 800 ;
-C -1 ; WX 530 ; N glyph45 ; B 15 -200 515 800 ;
-C -1 ; WX 1030 ; N glyph46 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph47 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph48 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph49 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph50 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph51 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph52 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph53 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph54 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph55 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph56 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph57 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph58 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph59 ; B 15 -76 1015 800 ;
-C -1 ; WX 1030 ; N glyph60 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph61 ; B 15 -200 1015 800 ;
-C -1 ; WX 530 ; N glyph62 ; B 15 -200 515 800 ;
-C -1 ; WX 530 ; N glyph63 ; B 15 -200 515 800 ;
-C -1 ; WX 1030 ; N glyph64 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph65 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph66 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph67 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph68 ; B 15 -200 1015 800 ;
-C -1 ; WX 967 ; N glyph69 ; B 15 -200 953 800 ;
-C -1 ; WX 1030 ; N glyph70 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph71 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph72 ; B 15 -201 1015 800 ;
-C -1 ; WX 1030 ; N glyph73 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph74 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph75 ; B 15 -200 1015 801 ;
-C -1 ; WX 887 ; N glyph76 ; B 15 -200 873 800 ;
-C -1 ; WX 887 ; N glyph77 ; B 15 -200 873 800 ;
-C -1 ; WX 1030 ; N glyph78 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph79 ; B 15 -75 1015 800 ;
-C -1 ; WX 1030 ; N glyph80 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph81 ; B 15 50 1015 800 ;
-C -1 ; WX 905 ; N glyph82 ; B 15 -200 890 800 ;
-C -1 ; WX 1030 ; N glyph83 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph84 ; B 15 425 1015 800 ;
-C -1 ; WX 1030 ; N glyph85 ; B 15 425 1015 800 ;
-C -1 ; WX 1030 ; N glyph86 ; B 15 -200 1015 800 ;
-C -1 ; WX 405 ; N glyph87 ; B 15 -200 390 800 ;
-C -1 ; WX 405 ; N glyph88 ; B 15 -200 390 800 ;
-C -1 ; WX 1030 ; N glyph89 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph90 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph91 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph92 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph93 ; B 15 49 1015 800 ;
-C -1 ; WX 780 ; N glyph94 ; B 15 -200 765 800 ;
-C -1 ; WX 780 ; N glyph95 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph96 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph97 ; B 15 -200 1015 800 ;
-C -1 ; WX 905 ; N glyph98 ; B 15 -200 890 800 ;
-C -1 ; WX 780 ; N glyph99 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph100 ; B 15 -200 1015 800 ;
-C -1 ; WX 780 ; N glyph101 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph102 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph103 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph104 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph105 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph106 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph107 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph108 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph109 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph110 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph111 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph112 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph113 ; B 15 -76 1015 800 ;
-C -1 ; WX 1030 ; N glyph114 ; B 15 -75 1015 800 ;
-C -1 ; WX 1030 ; N glyph115 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph116 ; B 15 -195 1015 800 ;
-C -1 ; WX 1030 ; N glyph117 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph118 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph119 ; B 15 300 1015 800 ;
-C -1 ; WX 1030 ; N glyph120 ; B 15 300 1015 800 ;
-C -1 ; WX 1030 ; N glyph121 ; B 15 300 1015 800 ;
-C -1 ; WX 1030 ; N glyph122 ; B 15 -200 1015 800 ;
-C -1 ; WX 780 ; N glyph123 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph124 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph125 ; B 15 -75 1015 800 ;
-C -1 ; WX 780 ; N glyph126 ; B 15 -200 765 800 ;
-C -1 ; WX 655 ; N glyph127 ; B 15 -200 640 800 ;
-C -1 ; WX 1030 ; N glyph128 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph129 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph130 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph131 ; B 15 -200 1015 800 ;
-C -1 ; WX 655 ; N glyph132 ; B 15 -200 640 800 ;
-C -1 ; WX 905 ; N glyph133 ; B 15 -200 890 800 ;
-C -1 ; WX 1030 ; N glyph134 ; B 15 -75 1015 800 ;
-C -1 ; WX 1030 ; N glyph135 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph136 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph137 ; B 15 -75 1015 800 ;
-C -1 ; WX 780 ; N glyph138 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph139 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph140 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph141 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph142 ; B 15 50 1015 800 ;
-C -1 ; WX 1030 ; N glyph143 ; B 15 300 1015 800 ;
-C -1 ; WX 1030 ; N glyph144 ; B 15 -200 1015 800 ;
-C -1 ; WX 780 ; N glyph145 ; B 15 -200 765 800 ;
-C -1 ; WX 780 ; N glyph146 ; B 15 -200 765 800 ;
-C -1 ; WX 1030 ; N glyph147 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph148 ; B 15 -200 1015 800 ;
-C -1 ; WX 1030 ; N glyph149 ; B 15 -200 1015 800 ;
-EndCharMetrics
-EndFontMetrics

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 21
hmc/fonts/iconic_stroke.css


BIN
hmc/fonts/iconic_stroke.eot


BIN
hmc/fonts/iconic_stroke.otf


+ 0 - 513
hmc/fonts/iconic_stroke.svg

@@ -1,513 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-
--->
-
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg>
-<metadata>
-Created by FontForge 20110222 at Thu Dec 29 18:54:06 2011
- By PJ Onori,,,
-Icons by PJ Onori, font creation script by Yann
-</metadata>
-<defs>
-<font id="IconicStroke" horiz-adv-x="1030" >
-  <font-face 
-    font-family="Untitled1"
-    font-weight="500"
-    font-stretch="normal"
-    units-per-em="1000"
-    panose-1="2 0 6 3 0 0 0 0 0 0"
-    ascent="800"
-    descent="-200"
-    bbox="15 -200.031 1015.02 800.008"
-    underline-thickness="50"
-    underline-position="-100"
-    unicode-range="U+0023-E079"
-  />
-    <missing-glyph />
-    <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="905" 
-d="M890 425h-172l-31.125 -250h203.125v-125h-218.75l-31.25 -250h-125.062l31.25 250h-249.938l-31.25 -250h-125l31.25 250h-156.25v125h171.875l31.1875 250h-203.062v125h218.688l31.25 250h125l-31.25 -250h249.938l31.25 250h125l-31.25 -250h156.375v-125z
-M561.812 175l31.1875 250h-249.938l-31.1875 -250h249.938z" />
-    <glyph glyph-name="question" unicode="?" horiz-adv-x="530" 
-d="M190 -137.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM254.875 -11.7812c-43.125 0 -79.9482 15.2607 -110.469 45.7812s-45.7812 67.3438 -45.7812 110.469s15.2607 79.9482 45.7812 110.469
-l209 209c24.3955 24.3633 36.5938 53.8223 36.5938 88.375c0 34.5645 -12.208 64.0225 -36.625 88.375c-24.3701 24.3857 -53.8223 36.585 -88.3555 36.5977s-63.9775 -12.1865 -88.332 -36.5977c-24.458 -24.3936 -36.6875 -53.8525 -36.6875 -88.375h-125
-c0 69.0439 24.458 127.992 73.375 176.844c47.1914 47.2305 106.077 70.8369 176.656 70.8203s129.496 -23.6445 176.75 -70.8828c48.8125 -48.748 73.2188 -107.676 73.2188 -176.781c0 -69.0322 -24.417 -127.949 -73.25 -176.75l-208.969 -209
-c-6.07812 -6.10938 -9.11719 -13.4736 -9.11719 -22.0938s3.03906 -15.9844 9.11719 -22.0938c6.10938 -6.10938 13.4736 -9.16406 22.0938 -9.16406s15.9844 3.05469 22.0938 9.16406c6.10449 6.10449 9.15625 13.4688 9.15625 22.0938h125
-c0 -43.125 -15.2607 -79.9482 -45.7812 -110.469s-67.3438 -45.7812 -110.469 -45.7812v0z" />
-    <glyph glyph-name="at" unicode="@" 
-d="M947.625 50h-182.625c-40.7812 0 -75.4375 21 -98.1562 51.2812c-42.2188 -32.4688 -94.4688 -52.625 -151.844 -52.625c-138.062 0 -250 111.938 -250 250s111.938 250 250 250h250v-373.656h101.188l1 -1.46875c14.2812 39.5625 22.8125 82.0312 22.8125 126.469
-c0 206.781 -168.219 375 -375 375s-375 -168.219 -375 -375s168.219 -375 375 -375c103.406 0 197.156 42 265 110l88.5 -88.5c-90.4375 -90.5938 -215.438 -146.5 -353.5 -146.5c-276.125 0 -500 223.875 -500 500s223.875 500 500 500s500 -223.875 500 -500
-c0 -91.3125 -24.5312 -176.406 -67.375 -250zM640 362.25v61.4062h-125c-68.8438 0 -125 -56.0312 -125 -125s56.1562 -125 125 -125s125 56.0312 125 125v63.5938z" />
-    <glyph glyph-name="paragraph" unicode="&#xb6;" horiz-adv-x="780" 
-d="M765 800v-125h-125v-875h-125v875h-125v-875h-125v500c-138.062 0 -250 111.938 -250 250s111.938 250 250 250h125h125h125h125z" />
-    <glyph glyph-name="glyph4" unicode="&#x2139;" horiz-adv-x="530" 
-d="M77.5 300h-62.5v125h375l0.25 -437.5c0 -34.5312 28.0625 -62.5 62.5 -62.5h62.25v-125h-500v125h62.5c34.5312 0 62.5 27.9688 62.5 62.5v250c0 34.5312 -27.9688 62.5 -62.5 62.5zM140 675c0 83.333 41.667 125 125 125s125 -41.667 125 -125s-41.667 -125 -125 -125
-s-125 41.667 -125 125z" />
-    <glyph glyph-name="glyph5" unicode="&#x2190;" 
-d="M514.5 -200l-499.5 500l499.5 500l177.25 -177.281l-197.25 -197.5h520.5v-250.719h-520.5l197.25 -197.25z" />
-    <glyph glyph-name="glyph6" unicode="&#x2191;" 
-d="M15 300.5l500.062 499.5l499.938 -499.5l-177.281 -177.25l-197.438 197.5v-520.75h-250.719v520.75c-97.875 -97.875 -197.312 -197.25 -197.312 -197.25z" />
-    <glyph glyph-name="glyph7" unicode="&#x2192;" 
-d="M515.5 800l499.5 -500l-499.5 -500l-177.25 177.281l197.375 197.375h-520.625v250.844h520.625l-197.25 197.25z" />
-    <glyph glyph-name="glyph8" unicode="&#x2193;" 
-d="M1015 299.5l-500 -499.5l-500 499.5l177.281 177.25l197.5 -197.5v520.75h250.719v-520.75l197.25 197.25z" />
-    <glyph glyph-name="glyph9" unicode="&#x2302;" 
-d="M515 800l500 -500h-125v-500h-750v500h-125zM765 -75v448.25l-250 176.75l-250 -176.75v-448.25h187.5v187.5h125v-187.5h187.5z" />
-    <glyph glyph-name="glyph10" unicode="&#x2600;" 
-d="M515 425c-68.8438 0 -125 -56.0938 -125 -125s56.1562 -125 125 -125s125 56.0938 125 125s-56.1562 125 -125 125zM515 550v0c138.062 0 249.938 -111.938 249.938 -250s-111.875 -250 -249.938 -250s-250 111.938 -250 250s111.938 250 250 250zM452.5 737.5
-c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM140 612.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM77.5 362.562
-c34.5312 0 62.5 -27.9688 62.5 -62.5c0 -34.5938 -27.9688 -62.5 -62.5 -62.5s-62.5 27.9062 -62.5 62.5c0 34.5312 27.9688 62.5 62.5 62.5zM140 -12.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5z
-M452.5 -137.5c0 34.6562 27.9688 62.5 62.5 62.5c34.6562 0 62.5 -27.8438 62.5 -62.5c0 -34.4375 -27.8438 -62.5 -62.5 -62.5c-34.5312 0 -62.5 28.0625 -62.5 62.5zM783.5 -56.6875c-24.4062 24.4062 -24.4062 63.9688 0 88.375
-c24.6562 24.4062 63.9688 24.4062 88.375 0s24.6562 -63.9688 0 -88.375c-24.4062 -24.4062 -63.9688 -24.4062 -88.375 0zM952.438 237.562c-34.4375 0 -62.5 27.9688 -62.5 62.4375c0 34.6562 27.8438 62.5 62.5 62.5c34.4375 0 62.5 -27.9062 62.5 -62.4375
-c0 -34.5938 -28.0625 -62.5625 -62.5 -62.5zM871.875 568.25c-24.4062 -24.3438 -63.9688 -24.3438 -88.375 0c-24.4062 24.5312 -24.4062 63.9688 0 88.4375c24.4062 24.3438 63.9688 24.4062 88.375 -0.0625c24.4062 -24.4062 24.4062 -64.0312 0 -88.375z" />
-    <glyph glyph-name="glyph11" unicode="&#x2601;" 
-d="M765 675c137.812 0 250 -112.125 250 -250c0 -137.938 -112.188 -250 -250 -250h-500c-137.812 0 -250 112.062 -250 250c0 137.875 112.188 250 250 250c11.0938 0 22.0938 -1.65625 33.0938 -3.125c42.9688 76.0625 123.531 128.125 216.906 128.125
-c91.4375 0 172 -51.4375 215.562 -128.469c11.375 1.5625 22.5938 3.46875 34.4375 3.46875zM765 300c68.9688 0 125 56.1562 125 125c0 68.9062 -56.0312 125 -125 125s-125 -56.0938 -125 -125h-125c0 81.4062 39.6875 153.125 99.9688 198.781
-c-22.9375 31.1875 -59.5625 51.2188 -99.9688 51.2188c-68.9688 0 -125 -56.0938 -125 -125c0 -15.0625 2.5625 -29.7812 7.8125 -43.6562l-117.062 -43.8125c-10.25 27.3438 -15.375 56.2812 -15.625 85.75c-64.4688 -1.875 -125.125 -54.75 -125.125 -123.281
-c0 -68.8438 56.0312 -125 125 -125h500z" />
-    <glyph glyph-name="glyph12" unicode="&#x2602;" 
-d="M515 800c275.812 0 499.938 -224.312 499.938 -500h-125c0 25.8125 -21 46.875 -46.875 46.875c-25.625 0 -46.875 -21.0625 -46.875 -46.875h-125c0 25.8125 -20.9375 46.875 -46.8125 46.875c-25.75 0 -46.875 -21.0625 -46.875 -46.875v-312.5
-c0 -103.406 -84 -187.5 -187.5 -187.5c-103.281 0 -187.5 84.0938 -187.5 187.5h125c0 -34.4375 28.0625 -62.5 62.5 -62.5c34.5312 0 62.5 28.0625 62.5 62.5v312.5c0 25.8125 -21 46.875 -46.875 46.875c-25.75 0 -46.875 -21.0625 -46.875 -46.875h-125
-c0 25.8125 -21 46.875 -46.875 46.875c-25.75 0 -46.875 -21.0625 -46.875 -46.875h-125c0 275.688 224.375 500 500 500z" />
-    <glyph glyph-name="glyph13" unicode="&#x2605;" 
-d="M706.781 186.719l120.969 -386.719l-312.25 240l-313 -240l121.094 387.688l-308.594 237.312h375l125 375l125 -375h375z" />
-    <glyph glyph-name="glyph14" unicode="&#x263e;" 
-d="M199.219 514.125c-37.7188 -59.7188 -59.2188 -129.719 -59.2188 -203.062c0 -212.969 173.094 -386.062 386 -386.031c73.375 0 143.438 21.4688 203.125 59.3125c-279.906 26.375 -503.406 249.812 -529.906 529.781zM385.125 800v0
-c-39.3125 -68.0625 -63.5 -145.938 -63.4688 -230.156c0 -255.719 207.25 -463.188 463.125 -463.188c84.2188 0 162.094 24.1562 230.219 63.4688c-61.5 -213.156 -255.969 -370.125 -489 -370.125c-282.25 0 -511 228.75 -511 511.062
-c0 233.031 156.875 427.406 370.125 488.938z" />
-    <glyph glyph-name="glyph15" unicode="&#x2764;" 
-d="M737.281 675c-62.9688 0 -120.469 -67.625 -120.469 -67.625l-101.812 -108.156l-101.812 108.156s-57.4688 67.625 -120.469 67.625c-76.7812 0 -140.375 -56.875 -151.125 -130.875l373.531 -428.688l373.281 428.688c-10.75 74 -74.3438 130.875 -151.125 130.875z
-M737.281 800v0c153.219 0 277.719 -124.75 277.719 -277.844v-22.9375l-499.75 -574.219l-500.25 574.219v22.9375c0 153.094 124.5 277.844 277.719 277.844c93.25 0 171.875 -49.3125 222.281 -120.125c50.4062 70.8125 129.031 120.125 222.281 120.125z" />
-    <glyph glyph-name="glyph16" unicode="&#x2699;" 
-d="M1015 238.469l-149.438 -63.7188c-4.15625 -11.5938 -8.4375 -22.9688 -13.6875 -34.1875l61.5312 -149.156l-88.375 -88.375l-149.906 60.0625c-11.2188 -5.375 -22.9375 -10 -34.7812 -14.4062l-61.875 -148.688h-125l-63.2188 147.938
-c-12.4375 4.28125 -24.5312 8.78125 -36.375 14.4062l-147.594 -60.7812l-88.375 88.375l59.4375 148.188c-5.84375 12.0938 -10.7188 24.4375 -15.25 37.125l-147.094 61.2812v125l146.969 62.8438c4.53125 12.7188 9.28125 25.0312 15.1562 37.125l-60.5625 147.219
-l88.375 88.375l148.562 -59.6875c11.8438 5.625 23.8125 10.25 36.25 14.6562l61.7812 147.938h125l63.3438 -148.438c11.9688 -4.28125 23.5625 -8.90625 34.9062 -14.4062l148.812 61.2812l88.4062 -88.375l-60.3125 -150.156
-c5.375 -11.125 9.75 -22.4688 13.9062 -34.1875l149.406 -62.25v-125zM514.031 112.5c103.5 0 187.5 84 187.5 187.5s-84 187.5 -187.5 187.5s-187.5 -84 -187.5 -187.5s84 -187.5 187.5 -187.5z" />
-    <glyph glyph-name="glyph17" unicode="&#x26a1;" 
-d="M1015 800l-437.5 -500l187.5 -125l-750 -375l437.5 375l-187.5 125z" />
-    <glyph glyph-name="glyph18" unicode="&#x26bf;" 
-d="M702.5 675c-103.406 0 -187.5 -84.0938 -187.5 -187.5c0 -9.75 1.15625 -20.5 3.65625 -33.9375l11.9688 -64.6875l-46.5 -46.5l-344.125 -344.125v-73.25h125v125h125v125h125v51.75l36.625 36.625l5.75 5.75l46.5 46.5l64.6875 -11.9688
-c13.4375 -2.4375 24.1875 -3.65625 33.9375 -3.65625c103.406 0 187.5 84.0938 187.5 187.5s-84.0938 187.5 -187.5 187.5zM702.5 800v0c172.594 0 312.5 -139.906 312.5 -312.5s-139.906 -312.5 -312.5 -312.5c-19.5312 0 -38.3438 2.3125 -56.75 5.75l-5.75 -5.75v-125
-h-125v-125h-125v-125h-375v250l380.75 380.75c-3.4375 18.4062 -5.75 37.2188 -5.75 56.75c0 172.594 139.906 312.5 312.5 312.5zM640.25 487.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5z" />
-    <glyph glyph-name="glyph19" unicode="&#x26c6;" 
-d="M765 674.992c137.946 0 250.016 -112.132 250.016 -250.016s-112.069 -250.016 -250.016 -250.016h-499.969c-137.821 0 -250.016 112.132 -250.016 250.016s112.194 250.016 250.016 250.016c11.0947 0 22.0947 -1.65625 33.0957 -3.125
-c42.9717 76.0674 123.539 128.133 216.92 128.133c91.4434 0 172.073 -51.4404 215.514 -128.477c11.5 1.5625 22.7197 3.46875 34.4395 3.46875zM765 299.969c69.0977 0 125.008 56.0977 125.008 125.008s-55.9102 125.008 -125.008 125.008
-c-68.8477 0 -124.945 -56.0977 -124.945 -125.008h-125.008c0 81.4111 39.6904 153.135 99.9746 198.794c-22.9385 31.1895 -59.5654 51.2217 -99.9746 51.2217c-68.9727 0 -125.008 -56.0977 -125.008 -125.008c0 -15.0635 2.5625 -29.7832 7.8125 -43.6592
-l-117.069 -43.8154c-10.251 27.3457 -15.376 56.2852 -15.626 85.7559c-64.4727 -1.875 -125.133 -54.7539 -125.133 -123.289c0 -68.9102 56.0352 -125.008 125.008 -125.008h499.969zM117.554 -57.4912c-23.4395 -23.4385 -61.5352 -23.4385 -84.9746 0
-c-23.4385 23.4395 -23.4385 61.5352 0 84.9746c23.4395 23.4385 169.948 84.9736 169.948 84.9736s-61.5352 -146.509 -84.9736 -169.948zM367.694 -57.4912c-23.4395 -23.4385 -61.4102 -23.4385 -84.9746 0c-23.4385 23.4395 -23.4385 61.5352 0 84.9746
-c23.5645 23.4385 169.948 84.9736 169.948 84.9736s-61.4102 -146.509 -84.9736 -169.948zM617.585 -57.4912c-23.4395 -23.4385 -61.5352 -23.4385 -84.9746 0c-23.4385 23.4395 -23.4385 61.5352 0 84.9746c23.4395 23.4385 169.886 84.9736 169.886 84.9736
-s-61.4727 -146.509 -84.9111 -169.948z" />
-    <glyph glyph-name="glyph20" unicode="&#x26d4;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM515 675c-206.781 0 -375 -168.219 -375 -375c0 -80.8125 26.25 -155.281 69.9375 -216.562l521.75 521.5
-c-61.2812 43.6875 -135.75 70.0625 -216.688 70.0625zM515 -75c206.781 0 375 168.219 375 375c0 80.8125 -26.25 155.281 -69.9375 216.562l-521.75 -521.5c61.2812 -43.6875 135.75 -70.0625 216.688 -70.0625z" />
-    <glyph glyph-name="glyph21" unicode="&#x2709;" 
-d="M517.438 441.969l-502.438 235.969v122.062h1000v-122.438zM517.688 303.781l497.312 235.469v-489.25h-1000v490z" />
-    <glyph glyph-name="glyph22" unicode="&#x270e;" 
-d="M941.75 726.75c97.6562 -97.6562 97.6562 -255.844 0 -353.5l-573.25 -573.25h-353.5l0.96875 354.5l572.281 572.25c48.8125 48.8438 112.781 73.25 176.75 73.25c64.0938 0 128.062 -24.4062 176.75 -73.25zM316.75 -75l536.625 536.625v0l-176.75 176.75v0
-l-535.781 -535.875l-0.125 -52.5h124.281v-125h51.75z" />
-    <glyph glyph-name="glyph23" unicode="&#x2717;" 
-d="M388.156 -4.8125l-373.156 373.188l177.969 177.969l195.188 -195.188l448.875 448.844l177.969 -177.969z" />
-    <glyph glyph-name="glyph24" unicode="&#x2718;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM437.5 69.2812l388.875 388.906l-88.375 88.375l-300.531 -300.531l-141.656 141.719l-88.375 -88.375z" />
-    <glyph glyph-name="glyph25" unicode="&#x2713;" 
-d="M1015 0.0712891l-200.071 -200.071l-299.929 300.071l-300.071 -300.071l-199.929 200.071l299.929 299.929l-299.929 299.929l199.929 200.071l300.071 -300.071l299.929 300.071l200.071 -200.071l-300.214 -299.929z" />
-    <glyph glyph-name="glyph26" unicode="&#x2714;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM762.312 141.062l-158.938 158.938l158.938 158.938l-88.375 88.375l-158.938 -158.938l-158.938 158.938l-88.375 -88.375l158.938 -158.938
-l-158.938 -158.938l88.375 -88.375l158.938 158.938l158.938 -158.938z" />
-    <glyph glyph-name="glyph27" unicode="&#x275d;" 
-d="M1015 50h-375v375c0 206.781 168.219 375 375 375v-125c-137.938 0 -250 -112.188 -250 -250h250v-375zM390 50h-375v375c0 206.781 168.219 375 375 375v-125c-137.938 0 -250 -112.188 -250 -250h250v-375z" />
-    <glyph glyph-name="glyph28" unicode="&#x275e;" 
-d="M15 800h375v-375c0 -206.781 -168.219 -375 -375 -375v125c137.938 0 250 112.188 250 250h-250v375zM640 800h375v-375c0 -206.781 -168.219 -375 -375 -375v125c137.938 0 250 112.188 250 250h-250v375z" />
-    <glyph glyph-name="glyph29" unicode="&#x2795;" 
-d="M1015 425v-250h-375v-375h-250v375h-375v250h375v375h250v-375h375z" />
-    <glyph glyph-name="glyph30" unicode="&#x2796;" 
-d="M15 550v250h1000v-250h-1000z" />
-    <glyph glyph-name="glyph31" unicode="&#x2935;" 
-d="M890 362.5v-62.5h125l-250 -250l-250 250h125v62.5c0 172.594 -139.906 312.5 -312.5 312.5s-312.5 -139.906 -312.5 -312.5c0 241.562 195.938 437.5 437.5 437.5s437.5 -195.938 437.5 -437.5z" />
-    <glyph glyph-name="glyph32" unicode="&#xe000;" horiz-adv-x="780" 
-d="M452.5 800l312.5 -312.438v-687.562h-750v1000h437.5zM140 -75h500v500h-250v250h-250v-750z" />
-    <glyph glyph-name="glyph33" unicode="&#xe001;" 
-d="M762.438 675h252.562v-125h-252.562h-125h-250h-125h-247.438v125h247.438v125h125v-125h250v125h125v-125zM140 50v125h750v-125h-750zM140 300v125h750v-125h-750zM765 -200h-625v125h750z" />
-    <glyph glyph-name="glyph34" unicode="&#xe002;" horiz-adv-x="530" 
-d="M265 800c138.062 0 250 -111.938 250 -250s-250 -750 -250 -750s-250 611.938 -250 750s111.938 250 250 250zM265 425c69.0312 0 125 55.9688 125 125s-55.9688 125 -125 125s-125 -55.9688 -125 -125s55.9688 -125 125 -125z" />
-    <glyph glyph-name="glyph35" unicode="&#xe003;" 
-d="M515.095 675c-193.719 0 -313.344 -51.75 -355.562 -153.688c-36.25 -87.2812 -17.4688 -195.938 11.8438 -276.25c70.6875 48.8438 134.281 54.9375 281.25 54.9375h414.062c12.2188 37.3438 23.3125 83 23.3125 125c0 120.969 -28.9375 250 -374.906 250zM515.095 800
-v0c250 0 499.906 -62.5 499.906 -375c0 -125 -64.4688 -250 -64.4688 -250h-497.938c-187.375 0 -187.375 0 -312.375 -125c-124.875 125 -324.219 750 374.875 750z" />
-    <glyph glyph-name="glyph36" unicode="&#xe004;" horiz-adv-x="905" 
-d="M452.5 675c-172.375 0 -312.5 -140.125 -312.5 -312.5c0 -82.4062 32.0938 -160.281 90.3438 -219.344l36.25 -36.75l-0.25 -51.625l-0.125 -21.375l14.2812 9.40625l45.6562 30.25l53.2188 -13.1875c27.0938 -6.59375 51.0312 -9.875 73.125 -9.875
-c172.375 0 312.5 140.125 312.5 312.5s-140.125 312.5 -312.5 312.5zM452.5 800v0c241.562 0 437.5 -195.938 437.5 -437.5s-195.938 -437.5 -437.5 -437.5c-35.6562 0 -69.8125 5.375 -103.031 13.5625l-209.469 -138.562l1.34375 255.375
-c-78 79.0938 -126.344 187.375 -126.344 307.125c0 241.562 195.938 437.5 437.5 437.5z" />
-    <glyph glyph-name="glyph37" unicode="&#xe005;" 
-d="M941.75 726.75c97.6562 -97.6562 97.6562 -255.844 0 -353.5l-573.25 -573.25h-353.5l0.96875 354.5l572.281 572.25c48.8125 48.8438 112.781 73.25 176.75 73.25s127.938 -24.4062 176.75 -73.25zM316.75 -75l535.531 535.406l-176.75 176.75l-529.812 -529.781
-c49.0938 42.75 122.938 42.125 169.688 -4.625c48.8125 -48.8438 48.8125 -128.938 0 -177.75h1.34375z" />
-    <glyph glyph-name="glyph38" unicode="&#xe006;" 
-d="M978.345 763.376c48.8428 -48.8105 48.8428 -127.934 0 -176.744l-472.642 -472.798c-10.9678 41.249 -31.499 80.5596 -63.7168 112.777c-31.7178 31.749 -70.7783 52.9678 -113.027 63.9668l472.642 472.798c48.8105 48.8115 127.934 48.8115 176.744 0z
-M353.614 -38.5049l-338.614 -161.495l161.87 338.239c48.8105 48.8115 127.934 48.8115 176.744 0c48.8115 -48.8105 48.8115 -127.934 0 -176.744z" />
-    <glyph glyph-name="glyph39" unicode="&#xe007;" 
-d="M826.781 418.344c101.312 -19.5938 188.219 -90.4375 188.219 -243.344c0 -179.688 -125 -250 -249.875 -250h-125.125c-69.0938 0 -125 -55.9062 -125 -125c-138.062 0 -249.875 111.938 -249.875 250v125c0 22.4688 2.1875 43.1562 6.21875 62.5h118.656
-c3.90625 0 7.5625 -1.59375 11.2188 -2.25c-6.8125 -16.0625 -11.2188 -35.5938 -11.2188 -60.25v-125c0 -40.7812 19.7812 -77.1562 50.0625 -100.094c45.625 60.7812 118.531 100.094 199.938 100.094h125.125c124.875 0 124.875 94 124.875 125
-c0 33.4375 -0.71875 106.812 -90.8125 121.812c17.0938 37.3125 26.75 78.1875 27.5938 121.531zM515 675h-249.875c-125.125 0 -125.125 -87.6562 -125.125 -125c0 -30.9375 0 -125 125.125 -125h124.875c81.5312 0 154.312 -39.375 199.938 -100.031
-c30.2812 22.8125 50.0625 59.125 50.0625 100.031v125c0 108.75 -78.375 125 -125 125zM515 800v0c125 0 250.125 -77.4688 250.125 -250v-125c0 -138.062 -112.062 -250 -250.125 -250c0 68.9688 -55.9062 125 -125 125h-124.875c-125.125 0 -250.125 70.3125 -250.125 250
-c0 183.594 125 250 250.125 250h249.875z" />
-    <glyph glyph-name="glyph40" unicode="&#xe008;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM765 237.5v125h-187.5v187.5h-125v-187.5h-187.5v-125h187.5v-187.5h125v187.5h187.5z" />
-    <glyph glyph-name="glyph41" unicode="&#xe009;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM765 237.5v125h-500v-125h500z" />
-    <glyph glyph-name="glyph42" unicode="&#xe00a;" horiz-adv-x="905" 
-d="M765 -200v1000h125v-1000h-125zM515 -200v750h125v-750h-125zM265 -200v500h125v-500h-125zM15 -200v250h125v-250h-125z" />
-    <glyph glyph-name="glyph43" unicode="&#xe00b;" 
-d="M389.625 424.031v125.969h249.75v-125.969h-249.75zM889.156 548.531l124.875 -125h-124.875v-623.531h-749.281c-68.9688 0 -124.875 55.9062 -124.875 125v750c0 69.0938 55.9062 125 124.875 125h749.281v-125.5h125.844zM764.281 -75h-0.03125v750h-499.5v-750
-h499.531z" />
-    <glyph glyph-name="glyph44" unicode="&#xe00c;" 
-d="M962.156 519.594c32.8125 -66.5312 52.8438 -140.438 52.8438 -219.594c0 -31.5 -3.65625 -62 -9.28125 -92.0625h-355.219zM672.969 323.75v448.281c104.969 -35.1562 195.312 -102.094 256.344 -192.062zM538.375 142.031h448.656
-c-35.1562 -105.094 -102.156 -195.562 -192.25 -256.469zM606.969 433l-313.219 313.219c66.9375 33.3438 141.406 53.7812 221.25 53.7812c31.5 0 62.0625 -3.71875 91.9688 -9.28125v-357.719zM423.031 164l311.344 -311.25
-c-66.5312 -32.7188 -140.281 -52.75 -219.375 -52.75c-31.5 0 -62.0625 3.65625 -91.9688 9.25v354.75zM356.969 275.844v-447.906c-104.844 35.1562 -195.125 102.062 -256.031 191.906zM24.2812 391.969v0.03125h355.531l-311.844 -311.844
-c-32.8125 66.5312 -52.9688 140.5 -52.9688 219.844c0 31.5 3.71875 62.0625 9.28125 91.9688zM233.625 713.094l255.094 -255.062h-445.75c34.9688 104.344 101.438 194.156 190.656 255.062z" />
-    <glyph glyph-name="glyph45" unicode="&#xe010;" horiz-adv-x="530" 
-d="M265.969 518.75c0 20.1875 10.0938 30.2812 30.2812 30.2812s30.2812 -10.0938 30.2812 -30.2812s-10.0938 -30.2812 -30.2812 -30.2812s-30.2812 10.0938 -30.2812 30.2812zM452.5 800c17 0 31.667 -6.16699 44 -18.5s18.5 -27 18.5 -44v-687.5
-c0 -69.333 -24.333 -128.333 -73 -177s-107.667 -73 -177 -73s-128.333 24.333 -177 73s-73 107.667 -73 177v687.5c0 17 6.16699 31.667 18.5 44s27 18.5 44 18.5h375zM172.219 175c8.35938 0 15.4961 2.95703 21.4102 8.87109s8.87109 13.0508 8.87109 21.4102
-s-2.95703 15.4961 -8.87109 21.4102s-13.0508 8.87109 -21.4102 8.87109s-15.4961 -2.95703 -21.4102 -8.87109s-8.87109 -13.0508 -8.87109 -21.4102s2.95703 -15.4961 8.87109 -21.4102s13.0508 -8.87109 21.4102 -8.87109zM327.5 50c17 0 31.667 6.16699 44 18.5
-s18.5 27 18.5 44s-6.16699 31.667 -18.5 44s-27 18.5 -44 18.5s-31.667 -6.16699 -44 -18.5s-18.5 -27 -18.5 -44s6.16699 -31.667 18.5 -44s27 -18.5 44 -18.5zM390 300v375h-250v-375h62.7812c0.234375 17.2881 6.50391 32.0273 18.8066 44.2158
-c12.3027 12.1895 27.1064 18.2842 44.4121 18.2842c17.3018 0 32.1016 -6.09375 44.3984 -18.2812c12.2988 -12.1875 18.5723 -26.9268 18.8203 -44.2188h60.7812z" />
-    <glyph glyph-name="glyph46" unicode="&#xe011;" 
-d="M1015 50h-375v375l375 375v-750zM390 50h-375v375l375 375v-750z" />
-    <glyph glyph-name="glyph47" unicode="&#xe012;" 
-d="M15 800h375v-375l-375 -375v750zM640 800h375v-375l-375 -375v750z" />
-    <glyph glyph-name="glyph48" unicode="&#xe013;" 
-d="M515 -200c-276.125 0 -500 223.875 -500 499.938c0 276.188 223.875 500.062 500 500.062s500 -223.875 500 -500.062c0 -276.062 -223.875 -499.938 -500 -499.938zM514.031 550l-249.031 -250.062l249.031 -248.969v186.531h250.969v124.938h-250.969v187.562z" />
-    <glyph glyph-name="glyph49" unicode="&#xe014;" 
-d="M15 300c0 276.188 223.875 500 500.125 500c276 0 499.875 -223.812 499.875 -500c0 -276.125 -223.875 -500 -499.875 -500c-276.25 0 -500.125 223.875 -500.125 500zM765 300.969l-249.875 249.094l-249.156 -249.094h186.531v-250.969h125v250.969h187.5z" />
-    <glyph glyph-name="glyph50" unicode="&#xe015;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM515.969 50l249.031 250l-249.031 249.031v-186.531h-250.969v-125h250.969v-187.5z" />
-    <glyph glyph-name="glyph51" unicode="&#xe016;" 
-d="M1015 300.062c0 -276.188 -223.875 -500.062 -500 -500.062s-500 223.875 -500 500.062c0 276.062 223.875 499.938 500 499.938s500 -223.875 500 -499.938zM265 299.094l250 -249.094l249.031 249.094h-186.531v250.906h-125v-250.906h-187.5z" />
-    <glyph glyph-name="glyph52" unicode="&#xe017;" 
-d="M515 -200c-276.125 0 -500 223.875 -500 500s223.875 500 500 500s500 -223.875 500 -500s-223.875 -500 -500 -500zM327.5 425l-125 -125l125 -125v62.5h500v125h-500v62.5z" />
-    <glyph glyph-name="glyph53" unicode="&#xe018;" 
-d="M1015 300c0 -276.125 -223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500s500 -223.875 500 -500zM390 112.5l125 -125l125 125h-62.5v500h-125v-500h-62.5z" />
-    <glyph glyph-name="glyph54" unicode="&#xe019;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM702.5 175l125 125l-125 125v-62.5h-500v-125h500v-62.5z" />
-    <glyph glyph-name="glyph55" unicode="&#xe01a;" 
-d="M15 300c0 276.125 223.875 500 500 500s500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500zM640 487.5l-125 125l-125 -125h62.5v-500h125v500h62.5z" />
-    <glyph glyph-name="glyph56" unicode="&#xe01b;" 
-d="M514.875 133.375h0.125c0 -184.094 -149.281 -333.375 -333.375 -333.375c-60.5312 0 -117.188 16.125 -166.125 44.1875l-0.5 0.625c99.5 57.5938 166.5 165.156 166.625 288.438l-0.125 0.125c0 92.0312 74.5938 166.625 166.625 166.625
-s166.75 -74.5938 166.75 -166.625zM978.312 763.375c48.8438 -48.8125 48.8438 -127.938 0 -176.75l-356.25 -356.312c-29.2812 82.5 -94.2188 147.469 -176.75 176.875l356.25 356.188c48.8125 48.8125 127.938 48.8125 176.75 0z" />
-    <glyph glyph-name="glyph57" unicode="&#xe01c;" 
-d="M390 50v0c0 -138.062 -111.938 -250 -250 -250c-45.4062 0 -87.875 12.0938 -124.5 33.1875l-0.5 0.375c74.7188 43.2188 125 123.781 125 216.188v0.25c0 69.0938 55.9062 125 125 125c68.9688 0 125 -55.9062 125 -125zM978.312 763.375
-c48.8438 -48.8125 48.8438 -127.938 0 -176.75l-472.594 -472.781c-22.9375 86.3125 -90.5625 153.812 -176.75 176.875l472.594 472.656c48.8125 48.8125 127.938 48.8125 176.75 0z" />
-    <glyph glyph-name="glyph58" unicode="&#xe01e;" 
-d="M941.719 372.375l-18.4375 -18.4375l89.9688 -89.9062l-88.25 -88.125l-89.8438 89.9062l-465.656 -465.812h-231.688l-122.812 124.75v226.5l467.312 467.594l-93.0312 92.9688l88.125 88.1875l92.9375 -93.0312l18.4375 18.4375
-c48.6875 48.7188 112.656 73.125 176.438 73.125c63.8438 0 127.781 -24.4062 176.5 -73.125c97.5312 -97.4062 97.5312 -255.562 0 -353.031zM337.5 -55.2188l409.406 409.406l-176.344 176.219l-403.719 -403.844c43.4688 -1.46875 86.6562 -17.7188 119.75 -50.9062
-c36 -36.0312 52.375 -83.5 50.9062 -130.875z" />
-    <glyph glyph-name="glyph59" unicode="&#xe01f;" 
-d="M15 174.961l500.031 -125.008l499.969 125.008v-125.008l-499.969 -125.008l-500.031 125.008v125.008zM15 424.977l500.031 -125.008l499.969 125.008v-125.008l-499.969 -125.008l-500.031 125.008v125.008zM15 674.992l500.031 125.008l499.969 -125.008v-125.008
-l-499.969 -125.008l-500.031 125.008v125.008z" />
-    <glyph glyph-name="glyph60" unicode="&#xe020;" 
-d="M15 50l500 -125l499.938 125v-125l-499.938 -125l-500 125v125zM15 300l500 -125l499.938 125v-125l-499.938 -125l-500 125v125zM15 550l500 -125l499.938 125v-125l-499.938 -125l-500 125v125zM15 800l500 -125l499.938 125v-125l-499.938 -125l-500 125v125z" />
-    <glyph glyph-name="glyph61" unicode="&#xe021;" 
-d="M515 675c-206.781 0 -375 -168.219 -375 -375s168.219 -375 375 -375s375 168.219 375 375s-168.219 375 -375 375zM515 800v0c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM581.406 366.281
-c-24.0625 24.0625 -57.625 30.7188 -88.375 23.125l271.969 160.594l-161.125 -275.688c9.03125 31.6562 2.4375 67 -22.4688 91.9688zM448.844 233.719c25.0312 -25.0312 60.4062 -31.625 92.1562 -22.4688l-276 -161.25l160.656 272.344
-c-7.5625 -30.8125 -0.96875 -64.5312 23.1875 -88.625z" />
-    <glyph glyph-name="glyph62" unicode="&#xe022;" horiz-adv-x="530" 
-d="M265 175c44.0625 0 85.6875 9.03125 125 22.9375v-397.938l-125 125l-125 -125v397.938c39.3125 -13.9062 80.9375 -22.9375 125 -22.9375zM265 800c138.062 0 250 -111.938 250 -250s-111.938 -250 -250 -250s-250 111.938 -250 250s111.938 250 250 250zM265 425
-c69.0938 0 125 55.9688 125 125s-55.9062 125 -125 125s-125 -55.9688 -125 -125s55.9062 -125 125 -125z" />
-    <glyph glyph-name="glyph63" unicode="&#xe023;" horiz-adv-x="530" 
-d="M452.5 800c34.5312 0 62.5 -27.9688 62.5 -62.5v-687.5c0 -138.062 -111.938 -250 -250 -250s-250 111.938 -250 250v687.5c0 34.5312 27.9688 62.5 62.5 62.5h375zM327.5 50c34.5312 0 62.5 27.9688 62.5 62.5s-27.9688 62.5 -62.5 62.5s-62.5 -27.9688 -62.5 -62.5
-s27.9688 -62.5 62.5 -62.5zM390 300v375h-250v-375h62.7812c0.46875 34.5312 28.5625 62.5 63.2188 62.5s62.7188 -27.9688 63.2188 -62.5h60.7812z" />
-    <glyph glyph-name="glyph64" unicode="&#xe024;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM515 675c-162.719 0 -300.156 -104.812 -352.062 -250h704.125c-51.9062 145.188 -189.344 250 -352.062 250zM515 237.5
-c34.5312 0 62.5 27.9688 62.5 62.5s-27.9688 62.5 -62.5 62.5s-62.5 -27.9688 -62.5 -62.5s27.9688 -62.5 62.5 -62.5zM140 300c0 -185.188 135.25 -338.375 312 -368.656c-2.90625 204.094 -141.219 368.656 -312 368.656zM578 -68.6562
-c176.75 30.2812 312 183.469 312 368.656c-170.781 0 -309.094 -164.562 -312 -368.656z" />
-    <glyph glyph-name="glyph65" unicode="&#xe025;" 
-d="M515 800c276.125 0 500 -370.125 500 -370.125s-223.875 -379.875 -500 -379.875s-500 379.875 -500 379.875s223.875 370.125 500 370.125zM515 175c138.062 0 250 111.938 250 250s-111.938 250 -250 250s-250 -111.938 -250 -250s111.938 -250 250 -250zM390 424.5
-c0 83.333 41.667 125 125 125s125 -41.667 125 -125s-41.667 -125 -125 -125s-125 41.667 -125 125z" />
-    <glyph glyph-name="glyph66" unicode="&#xe026;" 
-d="M676.625 363.125l-252.625 427.719c29.5938 5.4375 59.8125 9.15625 91 9.15625c131.594 0 250.25 -51.8125 339.469 -134.875zM638.531 175l260.125 442.031c71.6562 -86.5 116.344 -196 116.344 -317.031c0 -43.4688 -7.3125 -84.8438 -17.7188 -125h-358.75z
-M530.625 487.5h-478.5c55.1562 136.062 168.875 240.406 309.5 286zM503.531 112.5h474.375c-54.6875 -134.875 -166.875 -238.531 -305.906 -284.906zM393.281 425l-260.906 -443.375c-72.2188 86.8125 -117.375 196.781 -117.375 318.375
-c0 43.4688 7.25 84.8438 17.6875 125h360.594zM356.188 238.719l253.781 -429.188c-30.75 -5.875 -62.4375 -9.53125 -94.9688 -9.53125c-130.969 0 -249.156 51.5 -338.312 133.781z" />
-    <glyph glyph-name="glyph67" unicode="&#xe027;" 
-d="M265 50v250l125 125l125 -125l250 250l250 -250v-250h-750zM140 -75h875l-125 -125h-750h-125v125v750l125 125v-875z" />
-    <glyph glyph-name="glyph68" unicode="&#xe028;" 
-d="M444.398 193.812l-312.75 -312.5c-155.531 179.812 -155.531 445.188 0 625zM639.961 670.062c211.438 -31.4375 375 -210.156 374.969 -430.719c0 -242.812 -196.781 -439.344 -439.688 -439.344c-97.6562 0 -186.031 34.4375 -258.781 88.75l323.5 323.625v457.688z
-M514.961 299.5l-358.656 358.719c99.375 81.2188 222.438 133.344 358.656 141.781v-500.5z" />
-    <glyph glyph-name="glyph69" unicode="&#xe029;" horiz-adv-x="967" 
-d="M469.148 193.062l-330.562 -330.562c-164.781 190.188 -164.781 470.938 0 661.125zM516.023 237.5l-403.062 403.062c111.562 91.3125 249.75 149.906 403.062 159.438v-562.5zM577.555 674.5c211.594 -32.4688 374.938 -211.656 374.938 -432.844
-c0 -243.906 -197.75 -441.656 -442.062 -441.656c-96.9375 0 -184.594 33.6875 -257.344 87.1562l324.469 324.469v462.875z" />
-    <glyph glyph-name="glyph70" unicode="&#xe02a;" 
-d="M578.219 363.281v180.906c88.625 -22.875 157.969 -92.2812 180.906 -180.906h-180.906zM578.219 236.719h180.906c-22.9375 -88.5625 -92.2812 -158.031 -180.906 -180.844v180.844zM451.656 363.281h-180.906c22.8125 88.625 92.2812 158.031 180.906 180.906v-180.906
-zM451.656 236.719v-180.844c-88.625 22.8125 -158.094 92.2812 -180.906 180.844h180.906zM578.219 673.344v126.656c228.531 -28.875 407.844 -208.25 436.781 -436.719h-126.719c-26.875 158.562 -151.5 283.219 -310.062 310.062zM141.594 363.281h-126.594
-c28.8125 228.469 208.25 407.844 436.656 436.719v-126.656c-158.594 -26.8438 -283.219 -151.469 -310.062 -310.062zM451.656 -73.2812v-126.719c-228.406 28.8125 -407.844 208.25 -436.656 436.719h126.594c26.875 -158.625 151.5 -283.156 310.062 -310z
-M888.281 236.719h126.719c-28.9375 -228.469 -208.25 -407.906 -436.781 -436.719v126.719c158.562 26.8438 283.219 151.375 310.062 310z" />
-    <glyph glyph-name="glyph71" unicode="&#xe02b;" 
-d="M380.594 530.844c0 -53.2188 -43.2188 -96.4375 -96.3125 -96.4375c-53.2188 0 -96.4375 43.2188 -96.4375 96.4375c0 53.0938 43.2188 96.1875 96.4375 96.1875c53.0938 0 96.3125 -43.0938 96.3125 -96.1875zM15 800h414.781l585.219 -585.312h-414.781v-414.688
-l-585.219 585.219v414.781zM383.656 688.688c-32.9688 0 -186.156 0 -257.344 -0.03125v-257.438c24.1875 -23.9062 246.219 -246.094 362.594 -362.281v257.094h257.312c-116.344 116.312 -338.406 338.594 -362.562 362.656z" />
-    <glyph glyph-name="glyph72" unicode="&#xe02c;" 
-d="M15 -75c0 83.3545 41.6768 125.031 125.031 125.031s125.031 -41.6768 125.031 -125.031s-41.6768 -125.031 -125.031 -125.031s-125.031 41.6768 -125.031 125.031zM203.219 174.875v125.125c86.1514 0 159.783 -30.5771 220.895 -91.7305
-c61.1123 -61.1543 91.668 -134.827 91.668 -221.02h-125.062c0 51.7588 -18.3223 95.9697 -54.9678 132.632s-80.8223 54.9932 -132.532 54.9932zM202.375 425v125c76.1846 0 149.002 -14.8789 218.452 -44.6367c69.4512 -29.7578 129.301 -69.7666 179.549 -120.026
-c50.249 -50.2607 90.249 -110.123 119.998 -179.589c29.751 -69.4658 44.626 -142.298 44.626 -218.498h-125c0 59.2617 -11.5752 115.91 -34.7256 169.946c-23.1504 54.0371 -54.2705 100.604 -93.3623 139.701c-39.0908 39.0977 -85.6445 70.2227 -139.662 93.374
-c-54.0166 23.1523 -110.642 34.7285 -169.875 34.7285zM202.375 675v125c110.043 0 215.219 -21.4854 315.528 -64.4551s186.752 -100.746 259.328 -173.328c72.5762 -72.583 130.349 -159.038 173.316 -259.367s64.4521 -205.528 64.4521 -315.6h-125
-c0 93.1348 -18.1807 182.15 -54.543 267.049s-85.251 158.058 -146.665 219.479c-61.415 61.4199 -134.562 110.312 -219.439 146.677c-84.8789 36.3643 -173.871 54.5459 -266.978 54.5459z" />
-    <glyph glyph-name="glyph73" unicode="&#xe02d;" 
-d="M1015 -200h-142.812c0 472.656 -384.531 857.125 -857.188 857.125v142.875c551.281 0 1000 -448.594 1000 -1000v0zM729.219 -200h-142.812c0 315.062 -256.469 571.406 -571.406 571.406v142.875c393.812 0 714.219 -320.469 714.219 -714.281v0zM443.594 -200
-h-142.938c0 157.594 -128.062 285.656 -285.656 285.656v142.938c236.312 0 428.594 -192.281 428.594 -428.594v0zM157.812 -200h-142.812v142.812c78.9688 0 142.812 -63.9688 142.812 -142.812z" />
-    <glyph glyph-name="glyph74" unicode="&#xe02e;" 
-d="M889.938 50c69.0938 0 125 -56.0312 125 -125s-55.9062 -125 -125 -125s-125 56.0312 -125 125c0 15.75 3.65625 30.5312 9.03125 44.4375l-189.281 135.125c-33.9062 -33.6875 -80.6875 -54.5625 -132.188 -54.5625c-103.5 0 -187.5 84 -187.5 187.5
-c0 9.75 1.46875 19.1562 2.9375 28.5625l-149.656 49.9375c-11 -9.65625 -25.0312 -16 -40.7812 -16c-34.5312 0 -62.5 27.9688 -62.5 62.5s27.9688 62.5 62.5 62.5c29.9062 0 53.7188 -21.375 59.8125 -49.4375l150.5 -50.2812
-c31.625 59.0625 93.1562 99.7188 164.688 99.7188c40.5312 0 77.625 -13.0625 108.406 -35.0312l222.844 223.031c-10.75 18.5312 -18.8125 38.9375 -18.8125 62c0 69.0938 55.9062 125 125 125s125 -55.9062 125 -125s-55.9062 -125 -125 -125
-c-22.9375 0 -43.4688 7.9375 -62 18.8125l-222.844 -223.031c21.7188 -30.5312 34.9062 -67.875 34.9062 -108.281c0 -29.4062 -7.3125 -56.75 -19.4062 -81.6562l190.5 -136c21.7188 17.9375 48.5625 30.1562 78.8438 30.1562z" />
-    <glyph glyph-name="glyph75" unicode="&#xe02f;" 
-d="M894.82 683.788c77.4014 -77.4951 120.117 -180.52 120.117 -290.138s-42.7158 -212.643 -120.117 -290.325l-94.2441 -93.9941l-88.3701 88.3691l94.2441 94.1816c53.8408 53.9658 83.4951 125.492 83.4951 201.769c0 76.1826 -29.6543 147.709 -83.4951 201.519
-c-107.649 107.899 -295.388 107.899 -403.037 0.125l-170.396 -170.396h156.959v-125.117h-374.977v375.227h124.992v-166.239l174.896 175.02c154.803 155.022 425.036 154.897 579.933 0zM503.074 -111.463l88.4443 88.3193l88.3643 -88.4883l-88.4453 -88.3203z" />
-    <glyph glyph-name="glyph76" unicode="&#xe030;" horiz-adv-x="887" 
-d="M729.286 228.571h142.856c0 -236.75 -191.964 -428.571 -428.571 -428.571s-428.571 191.821 -428.571 428.571s191.964 428.571 428.571 428.571h84.8213l-42.1426 41.8574l101 101l214.714 -214.286l-214.714 -214.964l-101 101l41.5713 41.5713l-84.25 0.964844
-c-157.643 0 -285.714 -128.215 -285.714 -285.715s128.071 -285.714 285.714 -285.714s285.715 128.214 285.715 285.714z" />
-    <glyph glyph-name="glyph77" unicode="&#xe031;" horiz-adv-x="887" 
-d="M729.286 228.571h142.856c0 -236.607 -191.964 -428.571 -428.571 -428.571s-428.571 191.964 -428.571 428.571s191.964 428.571 428.571 428.571h143.679v142.857l214.714 -214.286l-214.714 -215v142.036l-143.679 1.53613
-c-157.643 0 -285.714 -128.072 -285.714 -285.715s128.071 -285.714 285.714 -285.714s285.715 128.071 285.715 285.714z" />
-    <glyph glyph-name="glyph78" unicode="&#xe032;" 
-d="M827.5 425l187.5 -187.5h-125c0 -103.406 -84.0938 -187.5 -187.5 -187.5h-375c-103.406 0 -187.5 84.0938 -187.5 187.5v62.5h125v-62.5c0 -34.4375 28.0625 -62.5 62.5 -62.5h375c34.4375 0 62.5 28.0625 62.5 62.5h-125zM702.5 800
-c103.406 0 187.5 -84.0938 187.5 -187.5v-62.5h-125v62.5c0 34.4375 -28.0625 62.5 -62.5 62.5h-375c-34.4375 0 -62.5 -28.0625 -62.5 -62.5v-1.9375h125l-187.5 -185.562l-187.5 185.562h125v1.9375c0 103.406 84.0938 187.5 187.5 187.5h375z" />
-    <glyph glyph-name="glyph79" unicode="&#xe033;" 
-d="M638.281 175l187.75 250l188.969 -250h-125v-62.5c0 -103.406 -84.0938 -187.5 -187.5 -187.5h-375c-103.406 0 -187.5 84.0938 -187.5 187.5v62.5h125v-62.5c0 -34.4375 28.0625 -62.5 62.5 -62.5h375c34.4375 0 62.5 28.0625 62.5 62.5v62.5h-126.719zM391.719 550
-l-187.75 -250l-188.969 250h125v62.5c0 103.406 84.0938 187.5 187.5 187.5h375c103.406 0 187.5 -84.0938 187.5 -187.5v-62.5h-125v62.5c0 34.4375 -28.0625 62.5 -62.5 62.5h-375c-34.4375 0 -62.5 -28.0625 -62.5 -62.5v-62.5h126.719z" />
-    <glyph glyph-name="glyph80" unicode="&#xe034;" 
-d="M890 425h125v-62.5c0 -103.281 -84.0938 -187.5 -187.5 -187.5h-437.625l0.125 -125l-250 187.5l250 187.5l-0.125 -125h437.625c34.4375 0 62.5 28.0625 62.5 62.5v62.5zM140 487.5v-62.5h-125v62.5c0 103.5 84.0938 187.5 187.5 187.5h437.5v125l249.75 -187.5
-l-249.75 -187.5v125h-437.5c-34.4375 0 -62.5 -27.9688 -62.5 -62.5z" />
-    <glyph glyph-name="glyph81" unicode="&#xe035;" 
-d="M890 362.5h125c0 -103.281 -84.0938 -187.5 -187.5 -187.5h-562.75v-125l-249.75 187.5l249.75 187.5v-125h562.75c34.4375 0 62.5 28.0625 62.5 62.5zM202.5 550c-34.4375 0 -62.5 -28.0625 -62.5 -62.5h-125c0 103.5 84.0938 187.5 187.5 187.5h562.5v125l250 -187.5
-l-250 -187.5v125h-562.5z" />
-    <glyph glyph-name="glyph82" unicode="&#xe036;" horiz-adv-x="905" 
-d="M761.344 609.812c83 -82.75 128.656 -192.75 128.656 -309.812c0 -241.219 -196.281 -437.5 -437.5 -437.5v-62.5l-125 125l125 125v-62.5c172.375 0 312.5 140.125 312.5 312.5c0 83.625 -32.7188 162.219 -91.7812 221.312zM577.5 675l-125 -125v62.5
-c-172.375 0 -312.5 -140.125 -312.5 -312.5c0 -83.625 32.7188 -162.219 91.7812 -221.312l-88.125 -88.5c-83 82.75 -128.656 192.75 -128.656 309.812c0 241.219 196.281 437.5 437.5 437.5v62.5z" />
-    <glyph glyph-name="glyph83" unicode="&#xe037;" 
-d="M161.594 -53.75c-94.5938 94.4688 -146.594 219.969 -146.594 353.75c0 275.625 224.25 500 500 500l62.5 -62.5l-62.5 -62.5c-206.781 0 -375 -168.219 -375 -375c0 -100.344 39.0625 -194.594 110 -265.375l-76.7812 -10l-11.625 -78.375v0zM515 -200l-62.5 62.25
-l62.5 62.75c206.781 0 375 168.219 375 375c0 100.094 -39.0625 194.344 -110.094 265.25l76.9062 10.125l11.4688 78.25c94.5938 -94.4688 146.719 -220.094 146.719 -353.625c0 -275.625 -224.375 -500 -500 -500v0z" />
-    <glyph glyph-name="glyph84" unicode="&#xe038;" 
-d="M390 550h-187.5v-125l-187.5 187.5l187.5 187.5v-125h187.5v-125zM640 675h187.5v125l187.5 -187.5l-187.5 -187.5v125h-187.5v125z" />
-    <glyph glyph-name="glyph85" unicode="&#xe039;" 
-d="M327.5 612.5l62.5 -62.5h-187.5v-125l-187.5 187.5l187.5 187.5v-125h187.5zM700.562 612.5l-60.5625 62.5h187.5v125l187.5 -187.5l-187.5 -187.5v125h-187.5z" />
-    <glyph glyph-name="glyph86" unicode="&#xe03a;" 
-d="M1015 300c0 -276.125 -223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500s500 -223.875 500 -500zM327.5 237.5h375v-62.5l125 125l-125 125v-62.5h-375v62.5l-125 -125l125 -125v62.5z" />
-    <glyph glyph-name="glyph87" unicode="&#xe03b;" horiz-adv-x="405" 
-d="M265 175v-187.5h125l-187.5 -187.5l-187.5 187.5h125v187.5h125zM140 425v187.5h-125l187.5 187.5l187.5 -187.5h-125v-187.5h-125z" />
-    <glyph glyph-name="glyph88" unicode="&#xe03c;" horiz-adv-x="405" 
-d="M202.5 112.5l62.5 62.5v-187.5h125l-187.5 -187.5l-187.5 187.5h125v187.5zM202.5 485.562l-62.5 -60.5625v187.5h-125l187.5 187.5l187.5 -187.5h-125v-187.5z" />
-    <glyph glyph-name="glyph89" unicode="&#xe03d;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM577.5 112.5v375h62.5l-125 125l-125 -125h62.5v-375h-62.5l125 -125l125 125h-62.5z" />
-    <glyph glyph-name="glyph90" unicode="&#xe03e;" 
-d="M577.5 175v-187.5h125l-187.5 -187.5l-187.5 187.5h125v187.5h125zM452.5 425v187.5h-125l187.5 187.5l187.5 -187.5h-125v-187.5h-125zM390 237.5h-187.5v-125l-187.5 187.5l187.5 187.5v-125h187.5v-125zM640 362.5h187.5v125l187.5 -187.5l-187.5 -187.5v125h-187.5
-v125z" />
-    <glyph glyph-name="glyph91" unicode="&#xe03f;" 
-d="M515 112.5l62.5 62.5v-187.5h125l-187.5 -187.5l-187.5 187.5h125v187.5zM515 485.562l-62.5 -60.5625v187.5h-125l187.5 187.5l187.5 -187.5h-125v-187.5zM327.5 300l62.5 -62.5h-187.5v-125l-187.5 187.5l187.5 187.5v-125h187.5zM700.562 300l-60.5625 62.5h187.5v125
-l187.5 -187.5l-187.5 -187.5v125h-187.5z" />
-    <glyph glyph-name="glyph92" unicode="&#xe040;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM702.5 175l125 125l-125 125v-62.5h-125v125h62.5l-125 125l-125 -125h62.5v-125h-125v62.5l-125 -125l125 -125v62.5h125v-125h-62.5l125 -125l125 125
-h-62.5v125h125v-62.5z" />
-    <glyph glyph-name="glyph93" unicode="&#xe041;" 
-d="M1015 174.961h-750.234v-125.008l-249.766 187.512l249.766 187.512v-125.008h750.234v-125.008zM15 549.984v125.008h749.984v125.008l250.016 -187.512l-250.016 -187.512v125.008h-749.984z" />
-    <glyph glyph-name="glyph94" unicode="&#xe042;" horiz-adv-x="780" 
-d="M15 -200v142.812h750v-142.812h-750zM515 228.594h125l-249.625 -285.781l-250.375 285.781h125v571.406h250v-571.406z" />
-    <glyph glyph-name="glyph95" unicode="&#xe043;" horiz-adv-x="780" 
-d="M15 657.125v142.875h750v-142.875h-750zM265 371.406h-125l249.625 285.719l250.375 -285.719h-125v-571.406h-250v571.406z" />
-    <glyph glyph-name="glyph96" unicode="&#xe044;" 
-d="M765 675c137.938 0 250 -112.188 250 -250s-112.062 -250 -250 -250h-187.5v-187.5h125l-187.562 -187.5l-187.438 187.5h125v187.5h-187.5c-137.875 0 -250 112.188 -250 250s112.125 250 250 250c11.1562 0 22.0938 -1.59375 33.0938 -3.0625
-c42.9062 75.9375 123.531 128.062 216.906 128.062c91.4375 0 172 -51.4062 215.562 -128.531c11.375 1.6875 22.7188 3.53125 34.4375 3.53125zM765 300c68.8438 0 125 56.0312 125 125s-56.1562 125 -125 125s-125 -56.0312 -125 -125h-125
-c0 81.4062 39.6875 153.188 100.094 198.844c-23.125 31.125 -59.625 51.1562 -100.094 51.1562c-68.9062 0 -125 -56.0312 -125 -125c0 -15 2.625 -29.7812 7.8125 -43.5938l-117.062 -43.9375c-10.25 27.3438 -15.375 56.4062 -15.625 85.8125
-c-64.4062 -1.8125 -125.125 -54.8125 -125.125 -123.281c0 -68.9688 56.0938 -125 125 -125h500z" />
-    <glyph glyph-name="glyph97" unicode="&#xe045;" 
-d="M765 675c137.938 0 250 -112.062 250 -250s-112.062 -250 -250 -250h-500c-137.875 0 -250 112.062 -250 250s112.125 250 250 250c11.1562 0 22.0938 -1.71875 33.0938 -3.1875c42.9062 76.1875 123.531 128.188 216.906 128.188c91.4375 0 172 -51.5 215.562 -128.406
-c11.375 1.46875 22.7188 3.40625 34.4375 3.40625zM765 300c68.8438 0 125 56.1562 125 125s-56.1562 125 -125 125s-125 -56.1562 -125 -125h-125c0 81.4062 39.6875 153.062 100.094 198.719c-23.125 31.25 -59.625 51.2812 -100.094 51.2812
-c-68.9062 0 -125 -56.1562 -125 -125c0 -15.125 2.625 -29.7812 7.8125 -43.7188l-117.062 -43.6875c-10.25 27.3438 -15.375 56.1562 -15.625 85.6875c-64.4062 -1.9375 -125.125 -54.6875 -125.125 -123.281c0 -68.8438 56.0938 -125 125 -125h500zM577.562 -12.5v-187.5
-h-125v187.5h-125l187.562 187.5l187.375 -187.5h-124.938z" />
-    <glyph glyph-name="glyph98" unicode="&#xe046;" horiz-adv-x="905" 
-d="M640 800h125v-121.094c0 -83.5 -32.4688 -161.875 -91.5625 -220.938l-353.625 -351.562c-32.0938 -32.25 -50.1875 -73.9688 -53.4688 -118.906h123.656l-187.5 -187.5l-187.5 187.5h126.469c3.40625 78.25 34.1875 151.5 90.0938 207.281l353.625 351.688
-c35.2812 35.2812 54.8125 82.375 54.8125 132.438v121.094zM763.531 -12.5h126.469l-187.5 -187.5l-187.5 187.5h123.656c-3.3125 44.9375 -21.375 86.8125 -53.5938 118.906l-70.0625 69.6875l88.625 88.1562l69.6875 -69.2188
-c55.9062 -56.0312 86.8125 -129.281 90.2188 -207.531z" />
-    <glyph glyph-name="glyph99" unicode="&#xe047;" horiz-adv-x="780" 
-d="M15 800l750 -500l-750 -500v1000z" />
-    <glyph glyph-name="glyph100" unicode="&#xe048;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM327.5 50l500.25 250l-500.25 250v-500z" />
-    <glyph glyph-name="glyph101" unicode="&#xe049;" horiz-adv-x="780" 
-d="M15 -200v1000h250v-1000h-250zM515 -200v1000h250v-1000h-250z" />
-    <glyph glyph-name="glyph102" unicode="&#xe04a;" 
-d="M15 -200v1000h1000v-1000h-1000z" />
-    <glyph glyph-name="glyph103" unicode="&#xe04b;" 
-d="M15 175l500 625l500 -625h-1000zM15 -200v250h998.656v-250h-998.656z" />
-    <glyph glyph-name="glyph104" unicode="&#xe04c;" 
-d="M1015 -200l-750 500l750 500v-1000zM15 -75v750h250v-750h-250z" />
-    <glyph glyph-name="glyph105" unicode="&#xe04d;" 
-d="M15 800l750 -500l-750 -500v1000zM765 -75v750h250v-750h-250z" />
-    <glyph glyph-name="glyph106" unicode="&#xe04e;" 
-d="M871.688 31.6875l143.312 143.312v-375h-375l143.312 143.312l-143.312 143.312l88.375 88.375zM390 800l-143.312 -143.312l141.969 -141.844l-88.375 -88.375l-141.969 141.844l-143.312 -143.312v375h375zM390 86.625l-143.312 -143.312l143.312 -143.312h-375v375
-l143.312 -143.312l143.312 143.312zM1015 800v-375l-143.312 143.312l-141.969 -141.844l-88.375 88.375l141.969 141.844l-143.312 143.312h375z" />
-    <glyph glyph-name="glyph107" unicode="&#xe04f;" 
-d="M934.188 -30.8125l80.8125 80.8125v-250h-250l80.8125 80.8125l-205.812 205.812l88.375 88.375zM95.8125 630.812l-80.8125 -80.8125v250h250l-80.8125 -80.8125l205.812 -205.812l-88.375 -88.375zM845.812 719.188l-80.8125 80.8125h250v-250l-80.8125 80.8125
-l-205.812 -205.812l-88.375 88.375zM390 86.625l-205.812 -205.812l80.8125 -80.8125h-250v250l80.8125 -80.8125l205.812 205.812z" />
-    <glyph glyph-name="glyph108" unicode="&#xe050;" 
-d="M783.312 -56.6875l-143.312 -143.312v375h375l-143.312 -143.312l143.312 -143.312l-88.375 -88.375zM15 425l143.312 143.312l-141.844 141.969l88.375 88.375l141.844 -141.969l143.312 143.312v-375h-375zM15 -111.625l143.312 143.312l-143.312 143.312h375v-375
-l-143.312 143.312l-143.312 -143.312zM640 425v375l143.312 -143.312l142.094 141.969l88.375 -88.375l-142.094 -141.969l143.312 -143.312h-375z" />
-    <glyph glyph-name="glyph109" unicode="&#xe051;" 
-d="M720.812 5.8125l-80.8125 -80.8125v250h250l-80.8125 -80.8125l205.812 -205.812l-88.375 -88.375zM219.594 507.156l-204.594 204.469l88.375 88.375l204.594 -204.469l82.0312 79.4688l-1.21875 -248.656l-248.781 -1.34375zM15 -111.625l205.812 205.812
-l-80.8125 80.8125h250v-250l-80.8125 80.8125l-205.812 -205.812zM890.969 425h-250.969v250.906l81.1875 -81.0938l205.188 205.188l88.625 -88.6875l-205.062 -205.188z" />
-    <glyph glyph-name="glyph110" unicode="&#xe052;" 
-d="M640 175v-125h-62.5v-187.5c0 -34.5312 -27.8438 -62.5 -62.5 -62.5c-34.4375 0 -62.5 27.9688 -62.5 62.5v187.5h-62.5v125h62.5v562.5c0 34.5312 28.0625 62.5 62.5 62.5c34.6562 0 62.5 -27.9688 62.5 -62.5v-562.5h62.5zM1015 550v-125h-62.5v-562.5
-c0 -34.5312 -27.8438 -62.5 -62.5 -62.5c-34.4375 0 -62.5 27.9688 -62.5 62.5v562.5h-62.5v125h62.5v187.5c0 34.5312 28.0625 62.5 62.5 62.5c34.6562 0 62.5 -27.9688 62.5 -62.5v-187.5h62.5zM265 425v-125h-62.5v-437.5c0 -34.5312 -27.8438 -62.5 -62.5 -62.5
-c-34.4375 0 -62.5 27.9688 -62.5 62.5v437.5h-62.5v125h62.5v312.5c0 34.5312 28.0625 62.5 62.5 62.5c34.6562 0 62.5 -27.9688 62.5 -62.5v-312.5h62.5z" />
-    <glyph glyph-name="glyph111" unicode="&#xe053;" 
-d="M1015 675h-1000v125h1000v-125zM640 425h-625v125h625v-125zM1015 50h-1000v125h1000v-125zM765 -200h-750v125h750v-125zM1015 -137.5c0 -34.5312 -28.0625 -62.5 -62.5 -62.5c-34.6562 0 -62.625 27.9688 -62.625 62.5s27.9688 62.5 62.625 62.5
-c34.4375 0 62.5 -27.9688 62.5 -62.5z" />
-    <glyph glyph-name="glyph112" unicode="&#xe054;" 
-d="M1015 675h-1000v125h1000v-125zM640 425h-625v125h625v-125zM1015 172.312h-1000v125h1000v-125zM15 -137.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM390 -137.5c0 -17 -6.16699 -31.667 -18.5 -44
-s-27 -18.5 -44 -18.5c-17.3223 0 -32.0898 6.09863 -44.3037 18.2959s-18.3213 26.9316 -18.3213 44.2041s6.10742 32.0068 18.3213 44.2041s26.9824 18.2959 44.3037 18.2959c17 0 31.667 -6.16699 44 -18.5s18.5 -27 18.5 -44zM515 -137.5
-c0.000976562 41.667 20.834 62.5 62.5 62.5c41.667 0 62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5z" />
-    <glyph glyph-name="glyph113" unicode="&#xe055;" 
-d="M15 737.496c0 41.6689 20.835 62.5039 62.5039 62.5039s62.5039 -20.835 62.5039 -62.5039s-20.835 -62.5039 -62.5039 -62.5039s-62.5039 20.835 -62.5039 62.5039zM15 487.48c0 41.6689 20.835 62.5039 62.5039 62.5039s62.5039 -20.835 62.5039 -62.5039
-s-20.835 -62.5039 -62.5039 -62.5039s-62.5039 20.835 -62.5039 62.5039zM15 237.465c0 41.6689 20.835 62.5039 62.5039 62.5039s62.5039 -20.835 62.5039 -62.5039s-20.835 -62.5039 -62.5039 -62.5039s-62.5039 20.835 -62.5039 62.5039zM15 -12.5508
-c0 41.6689 20.835 62.5039 62.5039 62.5039s62.5039 -20.835 62.5039 -62.5039s-20.835 -62.5039 -62.5039 -62.5039s-62.5039 20.835 -62.5039 62.5039zM265.016 674.992v125.008h749.984v-125.008h-749.984zM265.016 424.977v125.008h749.984v-125.008h-749.984z
-M265.016 174.961v125.008h749.984v-125.008h-749.984zM265.016 -75.0547v125.008h749.984v-125.008h-749.984z" />
-    <glyph glyph-name="glyph114" unicode="&#xe056;" 
-d="M15 737.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM265 675v125h750v-125h-750zM265 487.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5
-s-62.5 20.833 -62.5 62.5zM515 425v125h500v-125h-500zM265 -12.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM515 -75v125h500v-125h-500zM515 237.5c0.000976562 41.667 20.834 62.5 62.5 62.5
-c41.667 0 62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM765 175v125h250v-125h-250z" />
-    <glyph glyph-name="glyph115" unicode="&#xe057;" 
-d="M1015 -75l-125 -125l-437.5 437.625l-187.5 -187.5l-250 749.875l750 -250l-187.5 -187.5z" />
-    <glyph glyph-name="glyph116" unicode="&#xe058;" 
-d="M390 305.375c0 83.333 41.667 125 125 125s125 -41.667 125 -125s-41.667 -125 -125 -125s-125 41.667 -125 125zM907.344 611.031c71.7705 -90.8154 107.656 -192.701 107.656 -305.656c0 -67.8115 -13.2002 -132.582 -39.5996 -194.311
-c-26.4004 -61.7285 -61.916 -114.908 -106.549 -159.541s-97.8125 -80.1484 -159.541 -106.549c-61.7285 -26.3994 -126.499 -39.5996 -194.311 -39.5996s-132.582 13.2002 -194.311 39.5996c-61.7285 26.4004 -114.908 61.916 -159.541 106.549
-s-80.1484 97.8125 -106.549 159.541c-26.3994 61.7285 -39.5996 126.499 -39.5996 194.311c0 111.533 35.2812 212.929 105.844 304.188c11.6758 -8.79199 23.9258 -13.1875 36.75 -13.1875c17.3281 0 32.0771 6.08496 44.2461 18.2539s18.2539 26.918 18.2539 44.2461
-c0 12.7891 -4.52051 25.1641 -13.5625 37.125c72.4873 57.4258 154.883 92.0928 247.188 104c1.41699 -16.1016 7.9541 -29.6484 19.6133 -40.6387c11.6582 -10.9912 25.5479 -16.4863 41.668 -16.4863c16.0684 0 29.8965 5.4209 41.4834 16.2617
-c11.5879 10.8418 18.1865 24.2236 19.7979 40.1445c90.6689 -11.2656 172.294 -44.8799 244.875 -100.844c-10.083 -12.2812 -15.125 -25.4688 -15.125 -39.5625c0 -17.3027 6.10547 -32.0449 18.3174 -44.2275c12.2109 -12.1816 26.9385 -18.2725 44.1826 -18.2725
-c13.9131 0 26.8506 4.88574 38.8125 14.6562zM515 55.375c69.0459 0 127.974 24.3965 176.784 73.1904s73.2158 107.73 73.2158 176.81c0 69.1689 -24.5 128.169 -73.5 177l-176.5 176.5l-176.75 -176.75c-48.833 -48.833 -73.25 -107.75 -73.25 -176.75
-c0 -69.0312 24.4092 -127.956 73.2266 -176.773s107.742 -73.2266 176.773 -73.2266z" />
-    <glyph glyph-name="glyph117" unicode="&#xe059;" 
-d="M1015 800v-750h-250v-250h-750v750h250v250h750zM640 -75v125h-375v250h-125v-375h500zM890 175v375h-500v-375h500z" />
-    <glyph glyph-name="glyph118" unicode="&#xe05a;" 
-d="M1015 675v-125h-125v-562.5c0 -103.5 -84 -187.5 -187.5 -187.5h-375c-103.5 0 -187.5 84 -187.5 187.5v562.5h-125v125h125h125c0 69.0938 55.9062 125 125 125h250c69.0938 0 125 -55.9062 125 -125h125h125zM765 -12.5v562.5h-500v-562.5
-c0 -34.4375 28.0625 -62.5 62.5 -62.5h375c34.4375 0 62.5 28.0625 62.5 62.5zM327.5 112.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM327.5 362.5c0 41.667 20.833 62.5 62.5 62.5
-s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM577.5 112.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5zM577.5 362.5c0 41.667 20.833 62.5 62.5 62.5
-s62.5 -20.833 62.5 -62.5s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5z" />
-    <glyph glyph-name="glyph119" unicode="&#xe05b;" 
-d="M1015 675v-250h-125v-62.5c0 -34.4375 -28.0625 -62.5 -62.5 -62.5h-750c-34.4375 0 -62.5 28.0625 -62.5 62.5v375c0 34.375 28.0625 62.5 62.5 62.5h750c34.4375 0 62.5 -28.125 62.5 -62.5v-62.5h125zM765 425v250h-250v-250h250z" />
-    <glyph glyph-name="glyph120" unicode="&#xe05c;" 
-d="M1015 675v-250h-125v-62.5c0 -34.3125 -28.0625 -62.5 -62.5 -62.5h-750c-34.4375 0 -62.5 28.1875 -62.5 62.5v375c0 34.3125 28.0625 62.5 62.5 62.5h750c34.4375 0 62.5 -28.1875 62.5 -62.5v-62.5h125zM765 425v250h-625v-250h625z" />
-    <glyph glyph-name="glyph121" unicode="&#xe05d;" 
-d="M890 675h125v-250h-125v-62.5c0 -34.4375 -28.0625 -62.5 -62.5 -62.5h-750c-34.4375 0 -62.5 28.0625 -62.5 62.5v123.656h199.594c25.75 -72.625 94.5 -125 176.031 -125v63.8438h127.062v62.5h-127.062v125h124.5v62.5h-124.5v61.1562
-c-81.5625 0 -150.281 -52.375 -176.031 -125h-199.594v126.344c0 34.375 28.0625 62.5 62.5 62.5h750c34.4375 0 62.5 -28.125 62.5 -62.5v-62.5z" />
-    <glyph glyph-name="glyph122" unicode="&#xe05e;" 
-d="M764.875 425c125.125 0 250.125 -66.4062 250.125 -250c0 -179.688 -125 -250 -250.125 -250h-124.875c-68.9688 0 -125 -55.9062 -125 -125c-138.062 0 -250.125 111.938 -250.125 250v125c0 49.8125 11.375 90.625 29.0625 125h-29.0625
-c-124.875 0 -249.875 70.3125 -249.875 250c0 183.594 125 250 249.875 250h250.125c125 0 249.875 -77.4062 249.875 -250v-125zM264.875 425h125.125c81.5312 0 154.062 -39.3125 199.719 -100.031c30.625 22.8125 50.2812 59.1875 50.2812 100.031v125
-c0 108.75 -78.25 125 -125 125h-250.125c-124.875 0 -124.875 -87.5312 -124.875 -125c0 -30.875 0 -125 124.875 -125zM764.875 50c125.125 0 125.125 94.0625 125.125 125c0 37.4062 0 125 -125.125 125l-34.5312 0.0625l0.125 0.0625
-c-43.3438 -74.4688 -123.062 -125.125 -215.469 -125.125c0 48.2188 -28.1875 88.875 -68.25 109.75c-28.3125 -17.8438 -56.75 -52.5625 -56.75 -109.75v-125c0 -40.7812 19.6562 -77.1562 50.0625 -99.9688c45.625 60.6562 118.281 99.9688 199.938 99.9688h124.875z
-M756.219 362.688c-0.84375 -2.875 -1.84375 -5.6875 -2.6875 -8.46875c0.84375 2.78125 1.9375 5.59375 2.6875 8.46875z" />
-    <glyph glyph-name="glyph123" unicode="&#xe05f;" horiz-adv-x="780" 
-d="M390 300c-69.0938 0 -125 55.9688 -125 125v250c0 69.0312 55.9062 125 125 125s125 -55.9688 125 -125v-250c0 -69.0312 -55.9062 -125 -125 -125zM515 -75c69.0938 0 125 -55.9062 125 -125h-500c0 69.0938 55.9062 125 125 125h62.5v131.344
-c-177 29.9062 -312.5 183.281 -312.5 368.656v60.5625c0 34.5312 27.9688 62.5 62.5 62.5s62.5 -27.9688 62.5 -62.5v-60.5625c0 -137.875 112.062 -250 250 -250s250 112.125 250 250v60.5625c0 34.5312 27.9688 62.5 62.5 62.5s62.5 -27.9688 62.5 -62.5v-60.5625
-c0 -185.375 -135.5 -338.75 -312.5 -368.656v-131.344h62.5z" />
-    <glyph glyph-name="glyph124" unicode="&#xe060;" 
-d="M889.281 550l125.719 125l-122.562 125h122.562v-1000h-1000v1000h125.5l125.469 -125.5l-126.938 -124.5h125.25l127.656 125.5l-124.5 124.5h176.75l125.375 -125.5l-126.844 -124.5h147.594l127.688 125.5l-124.625 124.5h173.938l122.688 -125.5l-124.125 -124.5
-h123.406zM890 -73.6562v125h-750v-125h750zM890 175v125h-750v-125h750z" />
-    <glyph glyph-name="glyph125" unicode="&#xe061;" 
-d="M952.5 300c34.5312 0 62.5 -27.9688 62.5 -62.5v-250c0 -34.5312 -27.9688 -62.5 -62.5 -62.5h-187.5v375v125c0 137.938 -112.062 250 -250 250s-250 -112.062 -250 -250v-125v-375h-187.5c-34.5312 0 -62.5 27.9688 -62.5 62.5v250c0 34.5312 27.9688 62.5 62.5 62.5
-h62.5v125c0 207.031 167.969 375 375 375s375 -167.969 375 -375v-125h62.5z" />
-    <glyph glyph-name="glyph126" unicode="&#xe062;" horiz-adv-x="780" 
-d="M390 300c207.031 0 375 -167.969 375 -375c0 -69.0938 -55.9062 -125 -125 -125h-500c-69.0938 0 -125 55.9062 -125 125c0 207.031 167.969 375 375 375zM202.5 612.5c0 125 62.5 187.5 187.5 187.5s187.5 -62.5 187.5 -187.5s-62.5 -187.5 -187.5 -187.5
-s-187.5 62.5 -187.5 187.5z" />
-    <glyph glyph-name="glyph127" unicode="&#xe063;" horiz-adv-x="655" 
-d="M327.5 674.75c-103.469 0 -187.562 -84.3438 -187.562 -188c0 -59.1875 27.0938 -113.625 74.2188 -149.156c70.5312 -53.3438 99.125 -112.312 108.875 -161.875h8.9375c9.8125 49.5625 38.3125 108.531 108.875 161.875c47.1875 35.5 74.1562 89.9375 74.1562 149.156
-c0 103.656 -84.0312 188 -187.5 188zM327.5 800v0c172.594 0 312.5 -140.25 312.5 -313.219c0 -102.562 -48.2188 -192.156 -124.031 -249.281c-34.7812 -26.375 -63.5312 -60.3125 -63.5312 -107.188v-79.8438h-249.812v79.8438c0 46.875 -28.75 80.8125 -63.5938 107.188
-c-75.75 57.125 -124.031 146.719 -124.031 249.281c0 172.969 139.906 313.219 312.5 313.219zM202.625 -200v125.25h249.812v-125.25h-249.812z" />
-    <glyph glyph-name="glyph128" unicode="&#xe064;" 
-d="M515 800c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM515.969 177.062c68.625 0 124.031 55.4375 124.031 123.906c0 68.625 -55.4062 124.031 -124.031 124.031
-c-68.375 0 -123.906 -55.4375 -123.906 -124.031c0 -68.5 55.5312 -123.906 123.906 -123.906z" />
-    <glyph glyph-name="glyph129" unicode="&#xe065;" 
-d="M515 674.938h500v-250.062v-125v-374.875c0 -69.0938 -56.0312 -125 -125 -125h-750c-69.0938 0 -125 55.9062 -125 125v394.406v105.469v375.125h500v-125.062zM390 675h-250v-250h750v124.938h-375h-125v125v0.0625zM890 -75v374.875v0.125h-750v-375h750z" />
-    <glyph glyph-name="glyph130" unicode="&#xe066;" 
-d="M703 800l312 -312.5v-687l-247.438 206.781l-250.375 -207.281l-250.594 207.5l-251.594 -205.562v998.062h688zM890.625 51.9375v250h-375.219v375h-375.25v-625l127.688 100.594l249.375 -206.531l249.875 206.781zM640.5 426.938h250.125
-c-50.0625 50.0625 -199.594 199.469 -250.125 250v-250z" />
-    <glyph glyph-name="glyph131" unicode="&#xe067;" 
-d="M1015 550c0 -93.9375 -52.5 -174.812 -129.156 -217.531c1 -10.5625 3.1875 -20.6875 3.1875 -31.5c0 -207.156 -167.844 -375 -375 -375c-77.2812 0 -149.062 23.4375 -208.75 63.4688l-290.281 -189.438l190.281 288.562
-c-41.625 60.3125 -66.2812 133.438 -66.2812 212.406c0 207.156 167.844 375 375 375c11.7188 0 22.8438 -2.375 34.3125 -3.46875c0 -0.0625 -0.125 -0.125 -0.125 -0.1875c43 75.875 123.562 127.688 216.812 127.688c137.938 0 250 -112 250 -250zM514.031 50.9688
-c137.562 0 249.375 111.594 249.875 249.156c-22.3438 0.125 -43.7188 4.03125 -64.3438 9.65625l-98.1562 -98.1562c-48.8125 -48.8125 -127.938 -48.8125 -176.75 0s-48.8125 127.938 0 176.75l99.125 99.1875c-5.125 20.0938 -8.78125 40.7188 -8.78125 62.4375
-c0 0.5 0.125 0.96875 0.125 1.46875c0 -0.1875 -0.125 -0.375 -0.125 -0.625c-0.25 0 -0.59375 0.125 -0.96875 0.125c-137.938 0 -250 -112.125 -250 -250c0 -137.938 112.062 -250 250 -250zM765 425c68.8438 0 125 56.0938 125 125s-56.1562 125 -125 125
-s-125 -56.0938 -125 -125s56.1562 -125 125 -125z" />
-    <glyph glyph-name="glyph132" unicode="&#xe068;" horiz-adv-x="655" 
-d="M327.484 675c-50.0625 0 -97.1562 -19.5312 -132.562 -54.9375s-54.9375 -82.5 -54.9375 -132.562s19.5312 -97.1562 54.9375 -132.5c4.875 -4.75 69.3438 -68.8438 132.562 -169.188c63.5 100.5 128.188 164.844 133.438 170.031
-c34.5312 34.5 54.0625 81.5938 54.0625 131.656s-19.5312 97.1562 -54.9375 132.5c-35.4062 35.4688 -82.5 55 -132.562 55zM327.484 800v0c79.9688 0 159.906 -30.5312 220.938 -91.5312c122.062 -122.031 122.062 -319.906 0 -441.906
-c0 0 -220.938 -216.562 -220.938 -466.562c0 250 -220.938 466.562 -220.938 466.531c-122.062 122.031 -122.062 319.906 0 441.906c61.0312 61.0312 140.969 91.5625 220.938 91.5625zM264.984 487.5c0 41.667 20.833 62.5 62.5 62.5s62.5 -20.833 62.5 -62.5
-s-20.833 -62.5 -62.5 -62.5s-62.5 20.833 -62.5 62.5z" />
-    <glyph glyph-name="glyph133" unicode="&#xe069;" horiz-adv-x="905" 
-d="M140 800h750v-1000h-750c-69.0312 0 -125 55.9062 -125 125v750c0 69.0938 55.9688 125 125 125zM765 -75v750h-124.531v-252.188l-125.969 125.969l-125 -125v251.219h-124.5v-750h500z" />
-    <glyph glyph-name="glyph134" unicode="&#xe06a;" 
-d="M515 675c0 0 125 125 500 125v-750c-378.906 0 -500 -125 -500 -125s-121.094 125 -500 125v750c375 0 500 -125 500 -125zM140 675v-503.406c158.875 -13.4375 256.344 -50.1875 312.5 -79.8438v503.406c-56.1562 29.7812 -153.625 66.5312 -312.5 79.8438zM890 171.594
-v503.406c-158.938 -13.3125 -256.344 -50.0625 -312.5 -79.8438v-503.406c56.1562 29.6875 153.562 66.4062 312.5 79.8438z" />
-    <glyph glyph-name="glyph135" unicode="&#xe06b;" 
-d="M15 -200v625h1000v-625h-1000zM577.5 550v250h312.5l125 -250h-437.5zM452.5 800v-250h-437.5l125 250h312.5z" />
-    <glyph glyph-name="glyph136" unicode="&#xe06c;" 
-d="M1015 -200h-1000v875h125v-750h750v750h125v-875zM202.5 300v125h125v-125h-125zM452.5 299.75v125h125v-125h-125zM702.5 300v125h125v-125h-125zM202.5 50v125h125v-125h-125zM452.5 50v125h125v-125h-125zM702.5 50v125h125zM265 612.5v125
-c0 34.5312 27.9688 62.5 62.5 62.5s62.5 -27.9688 62.5 -62.5v-125c0 -34.5312 -27.9688 -62.5 -62.5 -62.5s-62.5 27.9688 -62.5 62.5zM640 612.5v125c0 34.5312 27.9688 62.5 62.5 62.5s62.5 -27.9688 62.5 -62.5v-125c0 -34.5312 -27.9688 -62.5 -62.5 -62.5
-s-62.5 27.9688 -62.5 62.5z" />
-    <glyph glyph-name="glyph137" unicode="&#xe06d;" 
-d="M640 675h-312.5c-103.281 0 -187.5 -84.0938 -187.5 -187.5v-312.5c0 -40.7812 19.7812 -77.1562 50.1562 -100.094c45.6562 60.7812 118.312 100.094 199.844 100.094h250c137.938 0 250 112.062 250 250s-112.062 250 -250 250zM640 800v0
-c207.156 0 375 -167.969 375 -375s-167.844 -375 -375 -375h-250c-68.9688 0 -125 -55.9062 -125 -125c-137.938 0 -250 111.938 -250 250v312.5c0 172.594 139.906 312.5 312.5 312.5h312.5z" />
-    <glyph glyph-name="glyph138" unicode="&#xe06e;" horiz-adv-x="780" 
-d="M515 800c138.062 0 250 -111.938 250 -250v-500c0 -138.062 -111.938 -250 -250 -250h-250c-138.062 0 -250 111.938 -250 250v500c0 138.062 111.938 250 250 250h250zM390 -139.438c35.5938 0 64.4375 28.8125 64.4375 64.4375s-28.875 64.4375 -64.4375 64.4375
-s-64.4375 -28.8125 -64.4375 -64.4375s28.8438 -64.4375 64.4375 -64.4375zM640 50v500c0 68.8438 -56.1562 125 -125 125h-250c-68.9062 0 -125 -56.1562 -125 -125v-500h500z" />
-    <glyph glyph-name="glyph139" unicode="&#xe06f;" 
-d="M765 -200v1000h250v-1000h-250zM390 -200v750h250v-750h-250zM15 -200v500h250v-500h-250z" />
-    <glyph glyph-name="glyph140" unicode="&#xe070;" 
-d="M515 175c0 83.333 41.667 125 125 125s125 -41.667 125 -125s-41.667 -125 -125 -125s-125 41.667 -125 125zM890 550c34.667 0 64.167 -12.167 88.5 -36.5s36.5 -53.833 36.5 -88.5v-625h-1000v625c0 34.667 12.167 64.167 36.5 88.5s53.833 36.5 88.5 36.5h250.125
-l106.625 206.719c4.08496 12.7148 11.5781 23.1064 22.4785 31.1768c10.9023 8.06934 23.2432 12.1045 37.0215 12.1045h171.625c13.6172 0 25.8428 -3.94238 36.6758 -11.8262c10.834 -7.88477 18.3896 -18.0781 22.668 -30.5801zM202.5 300c17 0 31.667 6.16699 44 18.5
-s18.5 27 18.5 44s-6.16699 31.667 -18.5 44s-27 18.5 -44 18.5s-31.667 -6.16699 -44 -18.5c-12.334 -12.333 -18.5 -27 -18.5 -44s6.16699 -31.667 18.5 -44s27 -18.5 44 -18.5zM640 -75c69.333 0 128.333 24.333 177 73s73 107.667 73 177s-24.333 128.333 -73 177
-s-107.667 73 -177 73s-128.333 -24.333 -177 -73s-73 -107.667 -73 -177s24.333 -128.333 73 -177s107.667 -73 177 -73z" />
-    <glyph glyph-name="glyph141" unicode="&#xe071;" 
-d="M265 175c-138.062 0 -250 111.938 -250 250s111.938 250 250 250v-500zM390 675l250 125v-750l-250 125v500zM1015 362.5h-250v125h250v-125z" />
-    <glyph glyph-name="glyph142" unicode="&#xe072;" 
-d="M265 175c-138.062 0 -250 111.938 -250 250s111.938 250 250 250v-500zM390 675l250 125v-750l-250 125v500zM765.125 175.125v125c10.375 0 20.875 1.34375 31.375 3.90625c54.8125 13.9062 93.5 63.7188 93.5 120.969s-38.6875 106.938 -94.125 120.969
-c-9.875 2.4375 -20.375 3.78125 -30.75 3.78125v125c20.5 0 41 -2.5625 61.1562 -7.4375c111.219 -28.3125 188.719 -127.812 188.719 -242.312c0 -114.625 -77.5 -214.219 -188.344 -242.312c-20.75 -5 -41.2812 -7.5625 -61.5312 -7.5625v0z" />
-    <glyph glyph-name="glyph143" unicode="&#xe073;" 
-d="M1015 675v-250h-125v-62.5c0 -34.4375 -28.0625 -62.5 -62.5 -62.5h-750c-34.4375 0 -62.5 28.0625 -62.5 62.5v375c0 34.3125 28.0625 62.5 62.5 62.5h750c34.4375 0 62.5 -28.1875 62.5 -62.5v-62.5h125z" />
-    <glyph glyph-name="glyph144" unicode="&#xe074;" 
-d="M369.25 183.188c9.15625 -10.25 18.6875 -19.7812 28.6875 -28.8125c-57.875 -57.875 -137.938 -137.969 -177.625 -177.75c-13.5625 13.6875 -15.375 15.375 -28.8125 28.8125c39.8125 39.6875 119.781 119.875 177.75 177.75zM644.156 800
-c204.469 0 370.844 -166.25 370.812 -370.75c0 -204.344 -166.375 -370.594 -370.844 -370.594c-48.8125 0 -95.2188 10 -137.938 27.3438l-285.875 -286l-205.312 205.438l285.75 285.781c-17.2188 42.7188 -27.2188 89.125 -27.2188 138.062
-c0 204.469 166.281 370.719 370.625 370.719zM644.156 183.531c135.625 0 245.969 110.375 245.969 245.719c0 135.5 -110.344 245.844 -245.969 245.844c-135.375 0 -245.719 -110.344 -245.719 -245.844c0 -135.375 110.344 -245.719 245.719 -245.719z" />
-    <glyph glyph-name="glyph145" unicode="&#xe075;" horiz-adv-x="780" 
-d="M452.625 800c172.25 0 312.375 -140.125 312.375 -312.5v-500c0 -103.281 -84 -187.5 -187.5 -187.5h-375.062c-103.219 0 -187.438 84.2188 -187.438 187.5v437.5h125.188v62.5c0 172.375 140.25 312.5 312.438 312.5zM265.188 487.5v-62.5h374.812v62.5
-c0 103.5 -84 187.5 -187.375 187.5c-103.281 0 -187.438 -84 -187.438 -187.5zM577.5 -75c34.6562 0 62.5 28.0625 62.5 62.5v312.5h-500.062v-312.5c0 -34.4375 28.0625 -62.5 62.5 -62.5h375.062zM452.625 112.5c0 -34.4375 -28.0625 -62.5 -62.5 -62.5
-c-34.6562 0 -62.5 28.0625 -62.5 62.5c0 34.6562 27.8438 62.5 62.5 62.5c34.4062 0 62.5 -27.8438 62.5 -62.5z" />
-    <glyph glyph-name="glyph146" unicode="&#xe076;" horiz-adv-x="780" 
-d="M452.625 800c172.25 0 312.375 -140.25 312.375 -312.5v-500c0 -103.5 -84.0938 -187.5 -187.5 -187.5h-375.062c-103.344 0 -187.438 84 -187.438 187.5v437.5h625v62.5c0 103.281 -83.9688 187.5 -187.375 187.5s-187.438 -84.2188 -187.438 -187.5h-125
-c0 172.25 140.125 312.5 312.438 312.5zM577.5 -75c34.4375 0 62.5 27.9688 62.5 62.5v312.5h-500.062v-312.5c0 -34.5312 28.0625 -62.5 62.5 -62.5h375.062zM452.5 112.5c0 -34.6562 -27.9688 -62.5 -62.5 -62.5s-62.5 27.8438 -62.5 62.5
-c0 34.4375 27.9688 62.5 62.5 62.5s62.5 -28.0625 62.5 -62.5z" />
-    <glyph glyph-name="glyph147" unicode="&#xe077;" 
-d="M996.648 781.688c24.4062 -24.4062 24.4062 -63.9688 -0.03125 -88.375l-127.562 -127.312c80.3438 -121.219 67.1562 -286.375 -39.7812 -393.188l-187.125 -187.5c-61.0312 -61.0312 -140.969 -91.5625 -220.938 -91.5625c-60.0625 0 -120.25 17.2188 -172.375 51.875
-l-127.188 -127.312c-12.2188 -12.2188 -28.1875 -18.3125 -44.1875 -18.3125s-31.9688 6.09375 -44.1562 18.3125c-24.4062 24.4062 -24.4062 63.9688 0 88.375l127.188 127.312c-80.3438 121.219 -67.1562 286.375 39.7812 393.188l187.5 187.5
-c61.0312 61.0312 140.969 91.5625 220.938 91.5625c60.0625 0 119.875 -17.2188 172 -51.875l127.188 127.312c24.4062 24.4062 64.3438 24.4062 88.75 0zM795.836 393.75c0 28.4375 -6.8125 55.5312 -18.8125 80.3125l-94.9688 -95.2188
-c-12.1875 -12.2188 -28.1875 -18.3125 -44.0625 -18.3125c-16 0 -31.9688 6.09375 -44.1875 18.3125c-24.4062 24.4062 -24.4062 63.9688 0 88.375l95.0938 95.2188c-24.875 11.8438 -51.875 18.8125 -80.1875 18.8125c-50.0625 0 -97.1562 -19.5312 -132.562 -54.9375
-l-187.5 -187.5c-35.4062 -35.4062 -54.9375 -82.5 -54.9375 -132.562c0 -28.4375 6.84375 -55.5312 18.8125 -80.3125l93.25 93.25c24.4062 24.4062 63.9688 24.4062 88.375 0s24.4062 -63.9688 0 -88.375l-93.25 -93.25c24.9062 -11.8438 52 -18.8125 80.3125 -18.8125
-c50.0625 0 97.1562 19.5312 132.562 54.9375l187.125 187.5c35.4062 35.4062 54.9375 82.5 54.9375 132.562z" />
-    <glyph glyph-name="glyph148" unicode="&#xe078;" 
-d="M1002.72 623.656c7.34375 -23.4375 12.2188 -47.8438 12.2188 -73.6562c0 -138 -111.812 -250 -250 -250c-38.3438 0 -74.4688 9.46875 -107 24.9688l-500.719 -500.562c-14.9062 -15.125 -35.7812 -24.4062 -58.8438 -24.4062c-46.1562 0 -83.375 37.3438 -83.375 83.25
-c0 23.1875 9.40625 43.9375 24.4062 59.0938l500.625 500.469c-15.625 32.6562 -25.0312 68.6875 -25.0312 107.188c0 138 111.938 250 249.938 250c25.1562 0 48.8438 -4.8125 71.7812 -11.7188l-155.031 -154.969v-166.625h164.062z" />
-    <glyph glyph-name="glyph149" unicode="&#xe079;" 
-d="M515 675c-206.781 0 -375 -168.219 -375 -375s168.219 -375 375 -375s375 168.219 375 375s-168.219 375 -375 375zM515 800v0c276.125 0 500 -223.875 500 -500s-223.875 -500 -500 -500s-500 223.875 -500 500s223.875 500 500 500zM684.438 219.438l-88.375 -88.375
-l-122.562 122.562c-13.0625 11.5938 -21.7188 27.8125 -21.7188 46.625v249.75h125.719v-223.5z" />
-  </font>
-</defs></svg>

BIN
hmc/fonts/iconic_stroke.ttf


+ 0 - 42
hmc/html/_bootstrapJs.php

@@ -1,42 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<link type="text/css" rel="stylesheet" href="/hmc/css/yuiCombined.css">
-<script src="/hmc/js/ext/yui-min.js"></script>
-<script src="/hmc/js/ext/yuiCombined.js"></script>
-<script src="/hmc/js/ext/jquery.min.js"></script>
-<script src="/hmc/js/ext/bootstrap.min.js"></script>
-
-<script type="text/javascript">
-  var globalYui, Y;
-  globalYui = Y = YUI().use("*", function (Y) {
-
-    for (var jsFile in jsFilesToLoad) {
-      var dynamicJsScript = document.createElement("script");
-      dynamicJsScript.type = "text/javascript";
-      dynamicJsScript.src = '/hmc/' + jsFilesToLoad[jsFile];
-      dynamicJsScript.async = false;
-      document.getElementsByTagName("head")[0].appendChild(dynamicJsScript);
-    }
-  });
-
-  // disable console logging
-  Y.log = function () {};
-</script>

+ 0 - 25
hmc/html/_footer.php

@@ -1,25 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<!-- START FOOTER -->
-	<div class="container">
-		<footer><?php echo $RES['page.footer.body'] ?></footer>
-	</div>
-<!-- END FOOTER -->

+ 0 - 25
hmc/html/_head.php

@@ -1,25 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-    <title id="pageTitleId"><?php echo $RES['page.title'] ?></title>
-    <link type="text/css" rel="stylesheet" href="/hmc/css/cssreset-min.css">
-    <link type="text/css" rel="stylesheet" href="/hmc/css/bootstrap.css" media="screen"/>
-    <link type="text/css" rel="stylesheet" href="/hmc/css/app.css" media="screen"/>
-    <link rel="shortcut icon" href="/hmc/images/logo-micro.gif">

+ 0 - 132
hmc/html/_router.php

@@ -1,132 +0,0 @@
-<?php
-/*
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-
-*/
-
-// Do not cache pages.  Otherwise handling browser back/forward
-// can cause problems due to stale content.
-header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
-header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
-
-$BASE_DIR = dirname(__FILE__);
-require_once $BASE_DIR.'/../php/conf/MessageResources-en.inc';
-require_once $BASE_DIR.'/../php/util/Logger.php';
-require_once $BASE_DIR.'/../php/conf/Config.inc';
-require_once $BASE_DIR.'/../php/util/lock.php';
-require_once $BASE_DIR.'/../php/db/HMCDBAccessor.php';
-require_once $BASE_DIR.'/../php/util/clusterState.php';
-
-
-function redirectToPage($requestPage, $targetPage) {
-  $bypassRouter = $GLOBALS['BYPASS_ROUTER'] || (isset($_GET['bypassRouter']) && $_GET['bypassRouter']);
-  if (!$bypassRouter) {
-    return "header('Location: /hmc/html/$targetPage'); exit;";
-  } else {
-    // do not redirect/forward.  fall through
-    return "";
-  }
-}
-
-$logger = new HMCLogger("Router");
-$db = new HMCDBAccessor($GLOBALS["DB_PATH"]);
-$appDir = "/hmc/html/";
-
-$res = $db->getAllClusters();
-$clusters = $res['clusters'];
-$requestPage = str_replace($appDir, '', $_SERVER['SCRIPT_NAME']);
-$logger->log_trace('requestPage=' . $requestPage);
-
-if (sizeof($clusters) == 0) {
-  if ($requestPage != 'welcome.php' && $requestPage != 'initializeCluster.php') {
-    eval(redirectToPage($requestPage, 'welcome.php'));
-  }
-  $clusterState = 'NOT_CONFIGURED';
-} else {
-  foreach ($clusters as $cluster) {
-    $clusterName = $cluster['clusterName'];
-    $state = json_decode($cluster['state'], true);
-    $logger->log_trace('cluster state=' . print_r($state, 1));
-    $clusterState = $state['state'];
-
-    switch ($clusterState) {
-      case 'NOT_CONFIGURED':
-        if ($requestPage != 'welcome.php' &&
-          $requestPage != 'initializeCluster.php'
-        ) {
-          eval(redirectToPage($requestPage, 'welcome.php'));
-        }
-        break;
-      case 'DEPLOYED':
-        if ($state['context']['status']) {
-          if ($requestPage == 'initializeCluster.php' || $requestPage == 'welcome.php') {
-            eval(redirectToPage($requestPage, 'index.php'));
-          }
-          $clusterState = 'OPERATIONAL';
-        } else {
-          if ($requestPage != 'installFailed.php' && $requestPage != 'uninstallWizard.php') {
-            eval(redirectToPage($requestPage, 'installFailed.php'));
-          }
-          $clusterState = 'DEPLOY_FAILED';
-        }
-        break;
-      case 'CONFIGURATION_IN_PROGRESS':
-        if ($requestPage != 'welcome.php' && $requestPage != 'initializeCluster.php') {
-          eval(redirectToPage($requestPage, 'welcome.php'));
-        }
-        break;
-      case 'DEPLOYMENT_IN_PROGRESS':
-        if ($requestPage != 'showDeployProgress.php') {
-          eval(redirectToPage($requestPage, 'showDeployProgress.php'));
-        }
-        break;
-      case 'NODE_ADDITION_IN_PROGRESS':
-        if ($requestPage != 'showDeployAddedNodesProgress.php') {
-          eval(redirectToPage($requestPage, 'showDeployAddedNodesProgress.php'));
-        }
-        break;
-      case 'SERVICE_MANAGEMENT_IN_PROGRESS':
-        if ($requestPage != 'showManageServicesProgress.php') {
-          eval(redirectToPage($requestPage, 'showManageServicesProgress.php'));
-        }
-        break;
-      case 'UNINSTALLATION_IN_PROGRESS':
-        if ($requestPage != 'showUninstallProgress.php') {
-          eval(redirectToPage($requestPage, 'showUninstallProgress.php'));
-        }
-        break;
-      case 'UNINSTALLED':
-        if ($requestPage != 'uninstallFailed.php') {
-          eval(redirectToPage($requestPage, 'uninstallFailed.php'));
-        }
-        $clusterState = 'UNINSTALL_FAILED';
-        break;
-      case 'UPGRADE_STACK_STARTED':
-      case 'UPGRADE_STACK_UNINSTALL_IN_PROGRESS':
-      case 'UPGRADE_STACK_UNINSTALL_FAILED':
-      case 'UPGRADE_STACK_DEPLOY_IN_PROGRESS':
-      case 'UPGRADE_STACK_DEPLOY_FAILED':
-        if ($requestPage != 'upgradeStack/showUpgradeProgress.php') {
-          eval(redirectToPage($requestPage, 'upgradeStack/showUpgradeProgress.php'));
-        }
-        break;
-    }
-  }
-}
-?>

+ 0 - 47
hmc/html/_subnav.php

@@ -1,47 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php
-switch ($requestPage) {
-case 'html':
-case 'index.php':
-  $activeTab = 'SUMMARY';
-  break;
-case 'manageServices.php':
-  $activeTab = 'SERVICES';
-  break;
-case 'addNodesWizard.php':
-  $activeTab = 'ADD_NODES';
-  break;
-case 'uninstallWizard.php':
-  $activeTab = 'UNINSTALL';
-  break;
-default:
-  $activeTab = '';
-}
-?>
-<div id="subnav">
-  <ul class="nav nav-tabs">
-    <li class="<?php echo ($activeTab == 'SUMMARY') ? 'active' : '' ?>"><a id="subNavSummaryLink" href="index.php">Cluster Summary</a></li>
-    <li class="<?php echo ($activeTab == 'SERVICES') ? 'active' : '' ?>"><a id="subNavServicesLink" href="manageServices.php?clusterName=<?php echo $clusterName ?>">Manage Services</a></li>
-    <li class="<?php echo ($activeTab == 'ADD_NODES') ? 'active' : '' ?>"><a id="subAddNodesLink" href="addNodesWizard.php?clusterName=<?php echo $clusterName ?>">Add Nodes</a></li>
-    <li class="<?php echo ($activeTab == 'UNINSTALL') ? 'active' : '' ?>"><a id="subNavUninstallLink" href="uninstallWizard.php?clusterName=<?php echo $clusterName ?>">Uninstall</a></li>
-  </ul>
-</div>

+ 0 - 43
hmc/html/_topnav.php

@@ -1,43 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<!-- START TOPNAV -->
-<?php
-  $homeUrl = '/hmc/html';
-?>
-	<div class="navbar">
-		<div class="navbar-inner">
-			<div class="container">
-				<a href="<?php echo $homeUrl ?>"><img id="logo" src="/hmc/images/logo-small.gif"></a>
-				<a class="brand" href="<?php echo $homeUrl ?>"><?php echo $RES['app.name'] ?></a>
-        <ul class="nav">
-				<?php if (isset($clusterState) && $clusterState == 'OPERATIONAL') { ?> 
-					<li class="active"><a href="<?php echo $homeUrl ?>">Cluster Management</a>
-					</li>
-					<li><a href="/hdp/dashboard/ui/home.html">Monitoring</a></li>
-				<?php } ?>
-          <li class="right"><a class="help" href="<?php echo $RES['topnav.help.link'] ?>" target="_blank">Help</a></li>
-				</ul>         
-			</div>
-		</div>
-	</div>
-	
-	
-<!-- END TOPNAV -->

+ 0 - 32
hmc/html/_txnUtils.php

@@ -1,32 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<div id="txnProgressCoreDivId" style="display:none">
-  <div id="txnProgressBox">
-    <div id="txnProgressHeader"></div>
-    <div id="txnProgressContentDivId"></div>    
-    <!-- Used to render informational/status messages (error, success reports and such like) -->
-    <div id="txnProgressStatusDivId" class="formStatusBar" style="display:none">
-      <div id="txnProgressStatusMessageDivId"></div>
-      <div id="txnProgressStatusActionsDivId"></div>
-    </div>
-  </div>
-</div>
-<!-- End of txnProgressCoreDivId -->

+ 0 - 35
hmc/html/_utils.php

@@ -1,35 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<!-- The mechanism by which we black out the screen and affix the
-     the spotlight on a smaller portion of it. -->
-<div id="blackScreenDivId" style="display:none"></div>
-
-<!-- The image we use to let users know something is loading, and 
-     that they should wait. Starts off showing by default, so it's
-     up to the container application to hide this using the 
-     App.ui.hideLoadingOverlay() method from utils.js. -->
-<div id="loadingDivId">
-  <div id="loadingBlackScreenDivId"></div>
-  <img id="loadingImgId" src="/hmc/images/loadingLarge.gif"/>
-</div>
-
-<!-- Placeholder for our informational YUI panel. -->
-<div id="informationalPanelContainerDivId"></div>

+ 0 - 149
hmc/html/addNodesWizard.php

@@ -1,149 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php" ?>
-<!DOCTYPE html>
-<html>
-  <head>
-    <?php require "./_head.php" ?>
-  </head>
-
-  <body class="yui3-skin-sam">
-    <div id="container">
-      <?php require "./_topnav.php"; ?>
-      <?php require "./_utils.php"; ?>
-      <?php require "./_txnUtils.php"; ?>
-
-      <div id="content">
-        <?php require "./_subnav.php"; ?>
-
-        <!-- Installation Wizard -->
-        <div name="installationWizardDiv" id="installationWizardDivId" style="display:block">
-          <div name="installationWizardProgressBarDiv" id="installationWizardProgressBarDivId">
-            <ol id="installationWizardProgressBarListId">
-              <li id="addNodesStageId" class="installationWizardCurrentStage">
-                <div>
-                  <span class="installationWizardStageNumber">
-                    1
-                  </span>
-                  Add nodes
-                </div>
-              </li>
-              <li id="selectServicesStageId" class="installationWizardUnvisitedStage">
-                <div>
-                  <span class="installationWizardStageNumber">
-                    2
-                  </span>
-                  Install Services
-                </div>
-              </li>
-            </ol>
-          </div>
-
-          <div name="installationMainFormsDiv" id="installationMainFormsDivId">
-            <div id="addNodesCoreDivId" style="display:block">
-              <div class="pageSummary">
-                <h2><?php echo $RES['addNodesWizard.addNodes.pageSummary.header'] ?></h2>
-                <p><?php echo $RES['addNodesWizard.addNodes.pageSummary.body'] ?></p>
-              </div>
-              <div id="formStatusDivId" class="formStatusBar" style="display:none">
-              </div>
-              <div class="pageContent">
-
-                <fieldset>
-                  <form id="addNodesFilesFormId" enctype="multipart/form-data" method="post">
-                    <input type="hidden" name="ClusterDeployUser" id="clusterDeployUserId" value="root" placeholder="">
-                    <p>
-                    <label for="clusterDeployUserIdentityFileId"><?php echo $RES['common.sshPrivateKeyFile.label'] ?></label>
-                    <input type="file" name="clusterDeployUserIdentityFile" id="clusterDeployUserIdentityFileId" value="" placeholder="">
-                    </p>
-                    <br/>
-                    <p>
-                    <label for="clusterHostsFileId"><?php echo $RES['common.hostsFile.label'] ?></label>
-                    <input type="file" name="clusterHostsFile" id="clusterHostsFileId" value="" placeholder="">
-                    </p>
-
-                    <div id="fileUploadWrapperDivId">
-                      <iframe name="fileUploadTarget" id="fileUploadTargetId" src="about:blank" style="display:none"></iframe>
-                    </div>
-                  </form>
-                </fieldset>
-                <button class="btn btn-large" id="addNodesSubmitButtonId"><?php echo $RES['addNodesWizard.addNodes.submit.label'] ?></button>
-              </div>
-            </div>
-
-            <div name="selectServicesCoreDiv" id="selectServicesCoreDivId" style="display:none">
-              <div class="pageSummary">
-                <h2><?php echo $RES['addNodesWizard.selectServices.pageSummary.header'] ?></h2>
-                <p><?php echo $RES['addNodesWizard.selectServices.pageSummary.body'] ?></p>
-              </div>
-              <div id="formStatusDivId" class="formStatusBar" style="display:none">
-              </div>
-              <fieldset>
-                <!--<legend>Select Services</legend>-->
-                <form id="addNodesDataFormId">
-                  <div name="selectComponentsDynamicRenderDiv" id="selectComponentsDynamicRenderDivId"></div>
-                </form>
-              </fieldset>
-              <button class="btn btn-large" id="deployAddedNodesSubmitButtonId"><?php echo $RES['addNodesWizard.selectServices.submit.label'] ?></button>
-            </div>
-          </div>
-        </div>
-        <!-- End of installation Wizard -->
-
-      </div>
-      <?php require "./_footer.php"; ?>
-    </div>
-
-    <!-- Javascript Scaffolding -->
-    <script type="text/javascript">
-
-    var freshInstall = false;
-    var clusterName = "<?php echo $clusterName; ?>";
-    var nodesAction = "addNodes";
-
-    var InstallationWizard = {
-  
-      AddNodes: 
-      {},
-      AddNodesProgress:
-      {},
-      SelectComponents: 
-      {},
-      DeployProgress:
-      {}
-    };
-  
-    var jsFilesToLoad = [ 
-        'js/utils.js', 
-        'js/txnUtils.js',
-        'js/addNodes.js', 
-        'js/addNodesProgress.js', 
-        'js/selectComponents.js', 
-        'js/deployAddedNodesProgress.js', 
-        'js/addNodesWizardInit.js'
-      ];
-    </script>
-  
-    <?php require "./_bootstrapJs.php"; ?>
-    <!-- End of Javascript Scaffolding -->
-
-  </body>
-</html> 

+ 0 - 61
hmc/html/index.php

@@ -1,61 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php" ?>
-<!DOCTYPE html>
-<html>
-  <head>
-    <?php require "./_head.php" ?>
-  </head>
-
-  <body class="yui3-skin-sam">
-    <div id="container">
-      <?php require "./_topnav.php"; ?>
-      <?php require "./_utils.php"; ?>
-
-      <div id="content">
-        <?php require "./_subnav.php"; ?>
-
-        <div id="clusterInfo">
-          <div id="clusterInfoContent"></div>
-        </div>
-        <div id="clusterHostRoleMapping" style="display:none;margin-top:0">
-          <div id="clusterHostRoleMappingContent">
-          </div>
-        </div>
-        <div style="clear:both"></div>
-      </div>
-
-      <?php require "./_footer.php"; ?>
-    </div>
-
-    <!-- Javascript Scaffolding -->
-    <script type="text/javascript">
-
-      var jsFilesToLoad = [ 
-        'js/utils.js',
-        'js/clustersList.js' 
-      ];
-    </script>
-
-    <?php require "./_bootstrapJs.php"; ?>
-    <!-- End of Javascript Scaffolding -->
-  </body>
-</html> 

+ 0 - 341
hmc/html/initializeCluster.php

@@ -1,341 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php"; ?>
-<!DOCTYPE html>
-<html>
-<head>
-  <?php require "./_head.php" ?>
-</head>
-
-<body class="yui3-skin-sam">
-  <div id="container">
-    <?php require "./_topnav.php"; ?>
-    <?php require "./_utils.php"; ?>
-    <?php require "./_txnUtils.php"; ?>
-
-    <div id="content">
-
-      <!-- Installation Wizard -->
-      <div id="installationWizardDivId" style="display:block">
-        <div id="installationWizardProgressBarDivId">
-          <ol id="installationWizardProgressBarListId">
-            <li id="createClusterStageId" class="installationWizardFirstStage installationWizardCurrentStage">
-              <div>
-                <span class="installationWizardStageNumber">
-                  1
-                </span>
-                Create Cluster
-              </div>
-            </li>
-            <li id="addNodesStageId" class="installationWizardUnvisitedStage">
-              <div>
-                <span class="installationWizardStageNumber">
-                  2
-                </span>
-                Add Nodes
-              </div>
-            </li>
-            <li id="selectServicesStageId" class="installationWizardUnvisitedStage">
-              <div>
-                <span class="installationWizardStageNumber">
-                  3
-                </span>
-                Select Services
-              </div>
-            </li>
-            <li id="assignHostsStageId" class="installationWizardUnvisitedStage">
-              <div>
-                <span class="installationWizardStageNumber">
-                  4
-                </span>
-                Assign Hosts
-              </div>
-            </li>
-            <li id="configureClusterStageId" class="installationWizardUnvisitedStage">
-              <div>
-                <span class="installationWizardStageNumber">
-                  5
-                </span>
-                Select Mount Points
-              </div>
-            </li>
-            <li id="configureClusterAdvancedStageId" class="installationWizardUnvisitedStage">
-              <div>
-                <span class="installationWizardStageNumber">
-                  6
-                </span>
-                Custom Config
-              </div>
-            </li>
-            <li id="deployClusterStageId" class="installationWizardLastStage installationWizardUnvisitedStage">
-              <div>
-                <span class="installationWizardStageNumber">
-                  7
-                </span>
-                Review &amp; Deploy
-              </div>
-            </li>
-          </ol>
-        </div>
-
-        <div id="installationMainFormsDivId">
-          <div id="createClusterCoreDivId">
-            <div class="pageSummary">
-              <h2><?php echo $RES['initWizard.createCluster.pageSummary.header'] ?></h2>
-              <p><?php echo $RES['initWizard.createCluster.pageSummary.body'] ?></p>
-            </div>
-            <div id="formStatusDivId" class="formStatusBar" style="display:none">
-            </div>
-            <div class="pageContent">
-              <form id="createClusterFormId">
-                <label for="clusterNameId"><?php echo $RES['initWizard.createCluster.clusterName.label'] ?></label>
-                <input type="text" name="clusterName" id="clusterNameId" placeholder="cluster name" value="">
-              </form>
-              <a href="javascript:void 0" class="btn btn-large" id="createClusterSubmitButtonId"><?php echo $RES['initWizard.createCluster.submit.label'] ?></a>
-            </div>
-          </div>
-          <div id="addNodesCoreDivId" style="display:none">
-              <div class="pageSummary">
-                <h2><?php echo $RES['initWizard.addNodes.pageSummary.header'] ?></h2>
-                <?php echo $RES['initWizard.addNodes.pageSummary.body'] ?>
-              </div>
-              <div id="formStatusDivId" class="alert alert-error" style="display:none">
-              </div>
-              <div class="pageContent">
-              <form id="addNodesFilesFormId" enctype="multipart/form-data" method="post">
-                <input type="hidden" name="ClusterDeployUser" id="clusterDeployUserId" value="root" placeholder="">
-                <label for="clusterDeployUserIdentityFileId"><?php echo $RES['common.sshPrivateKeyFile.label'] ?></label>
-                <input type="file" name="clusterDeployUserIdentityFile" id="clusterDeployUserIdentityFileId" value="" placeholder="">
-                <div class="separator"></div>
-                <label for="clusterHostsFileId"><?php echo $RES['common.hostsFile.label'] ?></label>
-                <input type="file" name="clusterHostsFile" id="clusterHostsFileId" value="" placeholder="">
-                <div class="separator"></div>
-                <div id="yumMirrorSupportFormId">
-                  <div id="yumMirrorSupportFormButtonWrapperId">
-                    <label class="checkbox" for="yumMirrorSupportFormButtonId"><?php echo $RES['initWizard.addNodes.useLocalYum.label'] ?>
-                      <input type="checkbox" name="YumMirrorSupportFormButton" id="yumMirrorSupportFormButtonId" value="" placeholder="">
-                    </label>
-                  </div>
-                  <div id="yumMirrorSupportFormFieldsId" style="display:none">
-                    <label for="yumRepoFilePathId"><?php echo $RES['initWizard.addNodes.yumRepoFilePath.label'] ?></label>
-                    <input type="text" name="YumRepoFilePath" id="yumRepoFilePathId" value="" placeholder="">
-                  </div>
-                </div>
-                <div id="fileUploadWrapperDivId">
-                  <iframe name="fileUploadTarget" id="fileUploadTargetId" src="about:blank" style="display:none"></iframe>
-                </div>
-              </form>
-              <div class="separator"></div>
-              <a href="javascript:void 0" class="btn btn-large" id="addNodesSubmitButtonId"><?php echo $RES['initWizard.addNodes.submit.label'] ?></a>
-              </div>
-          </div>
-
-          <div id="selectServicesCoreDivId" style="display:none">
-            <fieldset>
-            <div class="pageSummary">
-              <h2><?php echo $RES['initWizard.selectServices.pageSummary.header'] ?></h2>
-              <p><?php echo $RES['initWizard.selectServices.pageSummary.body'] ?></p>
-            </div>
-            <div style="width:400px;height:40px;float:right;">
-              <div id="formStatusDivId" class="formStatusBar" style="display:none">
-              </div>
-            </div>
-            <div class="pageContent" style="margin-top:14px">
-              <div id="selectCoreServicesListId">
-               <ul id="selectCoreServicesListUlId">
-                  <div id="selectCoreServicesDynamicRenderDivId">
-                  </div>
-                </ul>
-              </div>
-              <div id="selectOptionalServicesListId">
-                <ul id="selectOptionalServicesListUlId">
-                  <div id="selectOptionalServicesDynamicRenderDivId">
-                  </div>
-                </ul>
-              </div>
-              <div id="selectNonSelectableServicesListId">
-                <ul id="selectNonSelectableServicesListUlId">
-                  <div id="selectNonSelectableServicesDynamicRenderDivId">
-                  </div>
-                </ul>
-              </div>
-            </div>
-            </fieldset>
-            <a href="javascript:void 0" class="btn btn-large" style="margin:10px 0 0 60px" id="selectServicesSubmitButtonId"><?php echo $RES['initWizard.selectServices.submit.label'] ?></a>
-
-          </div>
-          <!-- End of selectServicesCoreDivId -->
-
-          <div id="assignHostsCoreDivId" style="display:none" class="clearfix">
-            <div id="statusDivId">
-            </div>
-            <div class="pageSummary">
-              <h2><?php echo $RES['initWizard.assignMasters.pageSummary.header'] ?></h2>
-              <p><?php echo $RES['initWizard.assignMasters.pageSummary.body'] ?></p>
-            </div>
-            <div id="formStatusDivId" class="formStatusBar" style="display:none">
-            </div>
-            <div id="masterServices">
-              <div id="masterServicesToHostsContainer">
-                <div id="masterServicesToHosts"></div>
-                <a href="javascript:void 0" class="btn btn-large" id="selectServiceMastersSubmitButtonId"><?php echo $RES['initWizard.assignMasters.submit.label'] ?></a>
-              </div>
-              <div id="hostsToMasterServices"></div>
-            </div>
-          </div>
-
-          <div id="configureClusterCoreDivId" style="display:none" class="clearfix">
-            <div class="pageSummary">
-              <h2><?php echo $RES['initWizard.configureCluster.pageSummary.header'] ?></h2>
-              <p><?php echo $RES['initWizard.configureCluster.pageSummary.body'] ?></p>
-            </div>
-            <div id="formStatusDivId" class="formStatusBar" style="display:none">
-            </div>
-
-            <div id="configureClusterInputContainerDivId">
-              <form id="configureClusterFormId">
-                <div name="configureClusterInputDiv" id="configureClusterInputDivId">
-                    <fieldset id="configureClusterInputFieldSetId">
-                      <!--<legend>Select mount points</legend>-->
-                      <div name="configureClusterMountPointsInputDiv" id="configureClusterMountPointsInputDivId">
-                        <div id="configureClusterMountPointsDynamicRenderDivId"></div>
-                        <p>
-                          <label for="customMountPoints"><?php echo $RES['initWizard.configureCluster.customMountPoints.label'] ?></label>
-                          <input type="text" name="customMountPoints" id="customMountPointsId" value="" placeholder="Comma-Separated List">
-                        </p>
-                      </div>
-                      <!-- Additional <div>s for other categories of cluster configuration go here -->
-                    </fieldset>
-                </div>
-                <a id="previewLinkId" href="javascript:void 0"><?php echo $RES['initWizard.configureCluster.preview.label'] ?></a>
-              </form>
-              <a href="javascript:void 0" class="btn btn-large" id="configureClusterSubmitButtonId"><?php echo $RES['initWizard.configureCluster.submit.label'] ?></a>
-            </div>
-            <div id="configureClusterDisplayDivId" style="display:none">
-              <fieldset>
-                <!--<legend>Effective mount points</legend>-->
-                <div name="configureClusterMountPointsDisplayDiv" id="configureClusterMountPointsDisplayDivId">
-                </div>
-              </fieldset>
-            </div>
-          </div>
-
-            <div id="configureClusterAdvancedCoreDivId" style="display:none">
-              <div class="pageSummary">
-                <h2><?php echo $RES['initWizard.configureClusterAdvanced.pageSummary.header'] ?></h2>
-                <p><?php echo $RES['initWizard.configureClusterAdvanced.pageSummary.body'] ?></p>
-              </div>
-              <div id="formStatusDivId" class="formStatusBar" style="display:none">
-              </div>
-              <form id="configureClusterAdvancedFormId">
-                <fieldset id="configureClusterAdvancedFieldSetId">
-                  <!--<legend>Advanced configuration</legend>-->
-                  <div id="configureClusterAdvancedDynamicRenderDivId"></div>
-                </fieldset>
-              </form>
-              <div id="buttonAreaDivId" class="clearfix">
-                <div id="buttonGroupDivId">
-                  <?php /*
-                  <div id="backNextDivId" class="btn-group">
-                    <a href="javascript:void 0" class="btn btn-large" id="configureClusterAdvancedBackButtonId"><?php echo $RES['initWizard.configureClusterAdvanced.back.label'] ?></a>
-                    <a href="javascript:void 0" class="btn btn-large" id="configureClusterAdvancedNextButtonId"><?php echo $RES['initWizard.configureClusterAdvanced.next.label'] ?></a>
-                  </div>
-                  */ ?>
-                  <a href="javascript:void 0" class="btn btn-large" id="configureClusterAdvancedSubmitButtonId"><?php echo $RES['initWizard.configureClusterAdvanced.submit.label'] ?></a>
-                </div>
-              </div>
-            </div>
-
-            <div id="deployCoreDivId" style="display:none">
-              <div class="pageSummary">
-                <h2><?php echo $RES['initWizard.reviewAndDeploy.pageSummary.header'] ?></h2>
-                <p><?php echo $RES['initWizard.reviewAndDeploy.pageSummary.body'] ?></p>
-              </div>
-              <div id="formStatusDivId" class="formStatusBar" style="display:none">
-              </div>
-              <form id="deployFormId">
-                <fieldset id="deployFieldSetId">
-                  <!--<legend>Review your settings</legend>-->
-                  <div id="deployDynamicRenderDivId"></div>
-                </fieldset>
-              </form>
-              <label></label>
-              <a href="javascript:void 0" class="btn btn-large" id="deploySubmitButtonId" value="Deploy"><?php echo $RES['initWizard.reviewAndDeploy.submit.label'] ?></a>
-            </div>
-          </div>
-        </div>
-        <!-- End of installation Wizard -->
-    </div>
-    <?php require "./_footer.php"; ?>
-  </div>
-
-  <!-- Javascript Scaffolding -->
-  <script type="text/javascript">
-
-  var freshInstall = true;
-  var nodesAction = "addNodes";
-
-  var InstallationWizard = {
-
-    CreateCluster:
-    {},
-    AddNodes:
-    {},
-    AddNodesProgress:
-    {},
-    SelectServices:
-    {},
-    AssignMasters:
-    {},
-    ConfigureCluster:
-    {},
-    ConfigureServices:
-    {},
-    ReviewAndDeploy:
-    {},
-    DeployProgress:
-    {}
-  };
-
-  var jsFilesToLoad = [
-      'js/utils.js',
-      'js/txnUtils.js',
-      'js/installationWizard.js',
-      'js/createCluster.js',
-      'js/addNodes.js',
-      'js/addNodesProgress.js',
-      'js/selectServices.js',
-      'js/assignMasters.js',
-      'js/configureCluster.js',
-      'js/configureServicesUtils.js',
-      'js/configureServices.js',
-      'js/reviewAndDeploy.js',
-      'js/deployProgress.js'
-    ];
-
-  // uncomment to allow jumping to a specified stage for development
-  // jsFilesToLoad.push('js/test/initializeClusterTest.js');
-  </script>
-
-  <?php require "./_bootstrapJs.php"; ?>
-  <!-- End of Javascript Scaffolding -->
-</body>
-</html>

+ 0 - 42
hmc/html/installFailed.php

@@ -1,42 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php" ?>
-<!DOCTYPE html>
-<html>
-  <head>
-    <?php require "./_head.php" ?>
-  </head>
-  <body class="yui3-skin-sam">
-    <div id="container">
-      <?php require "./_topnav.php"; ?>
-      <div id="content">
-        <div class="container">
-          <div class="alert alert-important" style="margin-top:40px;padding:20px">
-            <h2 style="margin-bottom:10px"><?php echo $RES['installFailed.header'] ?></h2>
-            <p><?php echo $RES['installFailed.body'] ?></p>
-            <a id="submitLinkId" class="btn btn-large" style="margin-top:20px" href="uninstallWizard.php?clusterName=<?php echo $clusterName ?>"><?php echo $RES['installFailed.submit.label'] ?></a>
-          </div>
-        </div>
-      </div>
-      <?php require "./_footer.php"; ?>
-    </div>
-  </body>
-</html>

+ 0 - 72
hmc/html/manageServices.php

@@ -1,72 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php" ?>
-<!DOCTYPE html>
-<html>
-  <head>
-    <?php require "./_head.php" ?>
-  </head>
-
-  <body class="yui3-skin-sam">
-    <div id="container">
-      <?php require "./_topnav.php"; ?>
-
-      <div id="content">
-        <?php require "./_subnav.php"; ?>
-        <?php require "./_utils.php"; ?>
-        <?php require "./_txnUtils.php"; ?>
-
-        <!-- Service Management: The Main Event -->
-        <div id="serviceManagementCoreDivId">
-          <ul id="serviceManagementListId">
-            <div id="serviceManagementDynamicRenderDivId">
-            </div>
-          </ul>
-          <div id="serviceManagementGlobalActionsDivId" style="display:none">
-            <button class="btn btn-large" id="serviceManagementGlobalActionsStartAllButtonId" name="startAll" style="margin-right:10px"><i class="iconic-play" style="margin-right:10px"></i>Start All</button>
-            <button class="btn btn-large" id="serviceManagementGlobalActionsStopAllButtonId" name="stopAll"><i class="iconic-stop" style="margin-right:10px"></i>Stop All</button>
-          </div>
-        </div>
-        <!-- End of serviceManagementCoreDivId -->
-      </div>
-
-      <?php require "./_footer.php"; ?>
-    </div>
-
-    <!-- Javascript Scaffolding -->
-    <script type="text/javascript">
-      /* Minimal data required to bootstrap manageServices.js. */
-      var clusterName = '<?php echo $clusterName; ?>';
-
-      var jsFilesToLoad = [
-        'js/utils.js',
-        'js/txnUtils.js',
-        'js/configureServicesUtils.js',
-        'js/manageServices.js',
-        'js/manageServicesProgress.js'
-      ];
-    </script>
-
-    <?php require "./_bootstrapJs.php"; ?>
-    <!-- End of Javascript Scaffolding -->
-
-  </body>
-</html> 

+ 0 - 55
hmc/html/showDeployAddedNodesProgress.php

@@ -1,55 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php" ?>
-<!DOCTYPE html>
-<html>
-  <head>
-    <?php require "./_head.php" ?>
-  </head>
-
-  <body class="yui3-skin-sam">
-    <div id="container">
-      <?php require "./_topnav.php"; ?>
-      <?php require "./_utils.php"; ?>
-      <?php require "./_txnUtils.php"; ?>
-
-      <div id="content">
-      </div>
-
-      <?php require "./_footer.php"; ?>
-    </div>
-
-    <!-- Javascript Scaffolding -->
-    <script type="text/javascript">
-      var clusterName = '<?php echo $clusterName; ?>';
-
-      var jsFilesToLoad = [
-        'js/utils.js',
-        'js/txnUtils.js',
-        'js/deployAddedNodesProgress.js',
-        'js/showDeployAddedNodesProgress.js'
-      ];
-    </script>
-
-    <?php require "./_bootstrapJs.php"; ?>
-    <!-- End of Javascript Scaffolding -->
-  </body>
-</html> 

+ 0 - 55
hmc/html/showDeployProgress.php

@@ -1,55 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php" ?>
-<!DOCTYPE html>
-<html>
-  <head>
-    <?php require "./_head.php" ?>
-  </head>
-
-  <body class="yui3-skin-sam">
-    <div id="container">
-      <?php require "./_topnav.php"; ?>
-      <?php require "./_utils.php"; ?>
-      <?php require "./_txnUtils.php"; ?>
-
-      <div id="content">
-      </div>
-
-      <?php require "./_footer.php"; ?>
-    </div>
-
-    <!-- Javascript Scaffolding -->
-    <script type="text/javascript">
-      var clusterName = '<?php echo $clusterName; ?>';
-
-      var jsFilesToLoad = [
-        'js/utils.js',
-        'js/txnUtils.js',
-        'js/deployProgress.js',
-        'js/showDeployProgress.js'
-      ];
-    </script>
-
-    <?php require "./_bootstrapJs.php"; ?>
-    <!-- End of Javascript Scaffolding -->
-  </body>
-</html> 

+ 0 - 55
hmc/html/showManageServicesProgress.php

@@ -1,55 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php" ?>
-<!DOCTYPE html>
-<html>
-  <head>
-    <?php require "./_head.php" ?>
-  </head>
-
-  <body class="yui3-skin-sam">
-    <div id="container">
-      <?php require "./_topnav.php"; ?>
-      <?php require "./_utils.php"; ?>
-      <?php require "./_txnUtils.php"; ?>
-
-      <div id="content">
-      </div>
-
-      <?php require "./_footer.php"; ?>
-    </div>
-
-    <!-- Javascript Scaffolding -->
-    <script type="text/javascript">
-      var clusterName = '<?php echo $clusterName; ?>';
-
-      var jsFilesToLoad = [ 
-        'js/utils.js',
-        'js/txnUtils.js',
-        'js/manageServicesProgress.js',
-        'js/showManageServicesProgress.js' 
-      ];
-    </script>
-
-    <?php require "./_bootstrapJs.php"; ?>
-    <!-- End of Javascript Scaffolding -->
-  </body>
-</html> 

+ 0 - 55
hmc/html/showUninstallProgress.php

@@ -1,55 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php" ?>
-<!DOCTYPE html>
-<html>
-  <head>
-    <?php require "./_head.php" ?>
-  </head>
-
-  <body class="yui3-skin-sam">
-    <div id="container">
-      <?php require "./_topnav.php"; ?>
-      <?php require "./_utils.php"; ?>
-      <?php require "./_txnUtils.php"; ?>
-
-      <div id="content">
-      </div>
-
-      <?php require "./_footer.php"; ?>
-    </div>
-
-    <!-- Javascript Scaffolding -->
-    <script type="text/javascript">
-      var clusterName = '<?php echo $clusterName; ?>';
-
-      var jsFilesToLoad = [
-        'js/utils.js',
-        'js/txnUtils.js',
-        'js/uninstallProgress.js',
-        'js/showUninstallProgress.js' 
-      ];
-    </script>
-
-    <?php require "./_bootstrapJs.php"; ?>
-    <!-- End of Javascript Scaffolding -->
-  </body>
-</html> 

+ 0 - 44
hmc/html/uninstallFailed.php

@@ -1,44 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php" ?>
-<!DOCTYPE html>
-<html>
-  <head>
-    <?php require "./_head.php" ?>
-  </head>
-  <body class="yui3-skin-sam">
-    <div id="container">
-      <?php require "./_topnav.php"; ?>
-      <div id="content">
-        <div class="container">
-          <div class="alert alert-important" style="margin-top:40px;padding:20px">
-            <h2 style="margin-bottom:10px"><?php echo $RES['uninstallFailed.header'] ?></h2>
-            <p><?php echo $RES['uninstallFailed.body'] ?></p>
-            <?php /*
-            <a id="submitLinkId" class="btn btn-large" style="margin-top:20px" href="uninstallWizard.php?clusterName=<?php echo $clusterName ?>"><?php echo $RES['uninstallFailed.submit.label'] ?></a>
-            */ ?>
-          </div>
-        </div>
-      </div>
-      <?php require "./_footer.php"; ?>
-    </div>
-  </body>
-</html>

+ 0 - 102
hmc/html/uninstallWizard.php

@@ -1,102 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php" ?>
-<!DOCTYPE html>
-<html>
-<head>
-  <?php require "./_head.php" ?>
-</head>
-
-<body class="yui3-skin-sam">
-  <div id="container">
-    <?php require "./_topnav.php"; ?>
-    <?php require "./_utils.php"; ?>
-    <?php require "./_txnUtils.php"; ?>
-    <?php include_once "../php/util/clusterState.php"; ?>
-    
-    <div id="content">
-      <?php require "./_subnav.php"; ?>
-
-      <!-- Uninstallation Wizard -->
-      <div id="installationWizardDivId" style="display:block">
-        <div class="pageSummary" style="margin-top:0px">
-          <h2><?php echo $RES['uninstallWizard.pageSummary.header'] ?></h2>
-          <p><?php echo $RES['uninstallWizard.pageSummary.body'] ?></p>
-        </div>
-        <div id="installationMainFormsDivId">    
-          <div id="formStatusDivId" class="alert alert-error" style="display:none">					
-          </div>        
-          <div class="pageContent">
-            <div id="addNodesCoreDivId" style="display:block">
-              <fieldset>
-                <form id="addNodesFilesFormId" enctype="multipart/form-data" method="post">
-                <input type="hidden" name="ClusterDeployUser" id="clusterDeployUserId" value="root" placeholder="">
-                <label for="clusterDeployUserIdentityFileId"><?php echo $RES['common.sshPrivateKeyFile.label'] ?></label>
-                <input type="file" name="clusterDeployUserIdentityFile" id="clusterDeployUserIdentityFileId" value="" placeholder="">
-                <div class="separator"></div>
-                <div id="fileUploadWrapperDivId">
-                  <iframe name="fileUploadTarget" id="fileUploadTargetId" src="about:blank" style="display:none"></iframe>
-                </div>              
-                <div class="separator"></div>
-                <div id="confirmWipeOutDivId">
-                  <label class="checkbox" for="confirmWipeOutId"><?php echo $RES['uninstallWizard.wipeout.label'] ?>
-                    <input type="checkbox" id="confirmWipeOutCheckId" value="false">
-                  </label>
-                </div>
-                <div class="separator"></div>
-                <input type="button" class="btn btn-large" id="addNodesSubmitButtonId" value="<?php echo $RES['uninstallWizard.submit.label'] ?>">
-              </fieldset>
-            </div>
-          </div>
-        </div>
-      </div>
-      <!-- End of Uninstallation Wizard -->
-    </div>            
-    <?php require "./_footer.php"; ?>
-  </div>
-
-  <!-- Javascript Scaffolding -->
-  <script type="text/javascript">
-
-  var nodesAction = "uninstall";
-  var clusterName = "<?php echo $clusterName; ?>";
-
-  var InstallationWizard = {
-
-    AddNodes:
-    {},
-    AddNodesProgress:
-    {}
-  };
-
-  var jsFilesToLoad = [
-      'js/utils.js',
-      'js/txnUtils.js',
-      'js/uninstall.js',
-      'js/uninstallProgress.js'
-    ];
-  </script>
-
-  <?php require "./_bootstrapJs.php"; ?>
-  <!-- End of Javascript Scaffolding -->
-
-</body>
-</html> 

+ 0 - 61
hmc/html/upgradeStack/_stageMenu.php

@@ -1,61 +0,0 @@
-<?php
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-switch ($requestPage) {
-  case 'upgradeStack/uninstall.php':
-    $uninstallStageClass = 'current';
-    $reconfigureStageClass = 'unvisited';
-    $deployStageClass = 'unvisited';
-    break;
-  case 'upgradeStack/reconfigure.php':
-    $uninstallStageClass = 'visited';
-    $reconfigureStageClass = 'current';
-    $deployStageClass = 'unvisited';
-    break;
-  case 'upgradeStack/deploy.php':
-    $uninstallStageClass = 'visited';
-    $reconfigureStageClass = 'visited';
-    $deployStageClass = 'current';
-    break;
-}
-
-?>
-  <div id="stageTabsContainer">
-    <ul id="stageTabs">
-      <li id="uninstallStage" class="<?php echo $uninstallStageClass ?>">
-        <div>
-          <span class="stageNumber">1.</span>
-          Uninstall Services
-        </div>
-      </li>
-      <li id="reconfigureStage" class="<?php echo $reconfigureStageClass ?>">
-        <div>
-          <span class="stageNumber">2.</span>
-          Reconfigure Services
-        </div>
-      </li>
-      <li id="deployStage" class="<?php echo $deployStageClass ?>">
-        <div>
-          <span class="stageNumber">3.</span>
-          Deploy New Version
-        </div>
-      </li>
-    </ul>
-  </div>

+ 0 - 79
hmc/html/upgradeStack/deploy.php

@@ -1,79 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once '../_router.php' ?>
-<!DOCTYPE html>
-<html>
-<head>
-  <?php require "../_head.php" ?>
-</head>
-
-<body class="yui3-skin-sam">
-  <div id="container">
-    <?php require "../_topnav.php"; ?>
-    <?php require "../_utils.php"; ?>
-    <?php require "../_txnUtils.php"; ?>
-
-    <div id="content">
-      <?php require '_stageMenu.php'; ?>
-
-      <!-- Begin Wizard -->
-      <div id="upgradeStackWizard">
-        <div id="deployPanel">
-          <div class="pageSummary" style="margin-top:0px">
-            <h2><?php echo $RES['upgradeStack.deploy.pageSummary.header'] ?></h2>
-            <p><?php echo $RES['upgradeStack.deploy.pageSummary.body'] ?></p>
-          </div>
-          <div id="formStatusDivId" class="alert alert-error" style="display:none">
-          </div>
-          <form id="deployFormId">
-            <fieldset id="deployFieldSetId">
-              <!--<legend>Review your settings</legend>-->
-              <div id="deployDynamicRenderDivId"></div>
-            </fieldset>
-          </form>
-          <!--<a href="reconfigure.php" class="btn btn-large" id="backToReconfigureButton"><?php echo $RES['upgradeStack.deploy.backButton.label'] ?></a>-->
-          <a href="javascript:void 0" class="btn btn-large btn-success" id="deploySubmitButton" style="margin:0 0 40px 320px"><?php echo $RES['upgradeStack.deploy.submit.label'] ?></a>
-        </div>
-      </div>
-      <!-- End Wizard -->
-
-    </div>
-    <?php require "../_footer.php"; ?>
-  </div>
-  <!-- Javascript Scaffolding -->
-  <script type="text/javascript">
-
-    var clusterName = '<?php echo $clusterName; ?>';
-
-    var jsFilesToLoad = [
-      'js/ext/sinon.min.js',
-      'js/utils.js',
-      'js/txnUtils.js',
-      'js/configureServicesUtils.js',
-      'js/upgradeStack/deploy.js'
-    ];
-  </script>
-
-  <?php require "../_bootstrapJs.php"; ?>
-  <!-- End of Javascript Scaffolding -->
-
-</body>
-</html> 

+ 0 - 74
hmc/html/upgradeStack/index.php

@@ -1,74 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once '../_router.php' ?>
-<!DOCTYPE html>
-<html>
-<head>
-  <?php require "../_head.php" ?>
-</head>
-<body class="yui3-skin-sam">
-  <div id="container">
-    <?php require "../_topnav.php"; ?>
-    <?php require "../_utils.php"; ?>
-    <?php require "../_txnUtils.php"; ?>
-
-    <div id="content">
-      <div class="alert alert-info" style="margin-top:40px;padding:20px">
-        <h2><?php echo $RES['upgradeStack.index.pageSummary.header'] ?></h2>
-        <p><?php echo $RES['upgradeStack.index.pageSummary.body'] ?></p>
-        <p id="versionInfo" style="font-weight:bold"></p>
-      </div>
-      <div id="formStatusDivId" class="formStatusBar" style="display:none"></div>
-      <div id="pageContent" style="margin:40px 0 0 40px">
-        <fieldset>
-          <form id="upgradeStackForm" enctype="multipart/form-data" method="post">
-            <input type="hidden" name="sshUser" id="sshUser" value="root">
-            <label for="sshPrivateKeyFile"><?php echo $RES['common.sshPrivateKeyFile.label'] ?></label>
-            <input type="file" name="sshPrivateKeyFile" id="sshPrivateKeyFile" value="" placeholder="">
-            <div class="separator"></div>
-            <div id="fileUploadWrapper">
-              <iframe name="fileUploadTarget" id="fileUploadTarget" src="about:blank" style="display:none"></iframe>
-            </div>
-            <div class="separator"></div>
-            <div id="buttonGroup" style="margin-top:20px">
-              <a href="javascript:void 0" class="btn btn-large btn-success" id="upgradeButton"><?php echo $RES['upgradeStack.index.submit.label'] ?></a>
-              <a href="../" class="btn btn-large" id="cancelButton" style="margin-left:10px"><?php echo $RES['upgradeStack.index.cancel.label'] ?></a>
-            </div>
-          </form>
-        </fieldset>
-      </div>
-    </div>
-    <?php require "../_footer.php"; ?>
-  </div>
-  <script type="text/javascript">
-
-    var clusterName = '<?php echo $clusterName; ?>';
-
-    var jsFilesToLoad = [
-      'js/utils.js',
-      'js/upgradeStack/index.js'
-    ];
-  </script>
-
-  <?php require "../_bootstrapJs.php"; ?>
-
-</body>
-</html> 

+ 0 - 88
hmc/html/upgradeStack/reconfigure.php

@@ -1,88 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once '../_router.php' ?>
-<!DOCTYPE html>
-<html>
-<head>
-  <?php require "../_head.php" ?>
-</head>
-
-<body class="yui3-skin-sam">
-  <div id="container">
-    <?php require "../_topnav.php"; ?>
-    <?php require "../_utils.php"; ?>
-    <?php require "../_txnUtils.php"; ?>
-
-    <div id="content">
-      <?php require '_stageMenu.php'; ?>
-
-      <!-- Begin Wizard -->
-      <div id="upgradeStackWizard">
-        <div id="reconfigurePanel">
-          <div class="pageSummary" style="margin-top:0px">
-            <h2><?php echo $RES['upgradeStack.reconfigure.pageSummary.header'] ?></h2>
-            <p><?php echo $RES['upgradeStack.reconfigure.pageSummary.body'] ?></p>
-          </div>
-          <div id="formStatusDivId" class="alert alert-error" style="display:none">
-          </div>
-          <div id="configureClusterAdvancedCoreDivId">
-            <form id="configureClusterAdvancedFormId">
-              <fieldset id="configureClusterAdvancedFieldSetId">
-                <div id="configureClusterAdvancedDynamicRenderDivId"></div>
-              </fieldset>
-            </form>
-            <div id="buttonAreaDivId" class="clearfix">
-              <div id="buttonGroupDivId">
-                <?php /*
-                            <div id="backNextDivId" class="btn-group">
-                              <a href="javascript:void 0" class="btn btn-large" id="configureClusterAdvancedBackButtonId"><?php echo $RES['initWizard.configureClusterAdvanced.back.label'] ?></a>
-                              <a href="javascript:void 0" class="btn btn-large" id="configureClusterAdvancedNextButtonId"><?php echo $RES['initWizard.configureClusterAdvanced.next.label'] ?></a>
-                            </div>
-                            */ ?>
-                <a href="javascript:void 0" class="btn btn-large btn-success" id="reconfigureSubmitButton"><?php echo $RES['upgradeStack.reconfigure.submit.label'] ?></a>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <!-- End Wizard -->
-    </div>
-    <?php require "../_footer.php"; ?>
-  </div>
-  <!-- Javascript Scaffolding -->
-  <script type="text/javascript">
-
-    var clusterName = '<?php echo $clusterName; ?>';
-
-    var jsFilesToLoad = [
-      'js/ext/sinon.min.js',
-      'js/utils.js',
-      'js/txnUtils.js',
-      'js/configureServicesUtils.js',
-      'js/upgradeStack/reconfigure.js'
-    ];
-  </script>
-
-  <?php require "../_bootstrapJs.php"; ?>
-  <!-- End of Javascript Scaffolding -->
-
-</body>
-</html> 

+ 0 - 62
hmc/html/upgradeStack/showUpgradeProgress.php

@@ -1,62 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once '../_router.php' ?>
-<!DOCTYPE html>
-<html>
-<head>
-  <?php require "../_head.php" ?>
-</head>
-<body class="yui3-skin-sam">
-  <div id="container">
-    <?php require "../_topnav.php"; ?>
-    <?php require "../_utils.php"; ?>
-    <?php require "../_txnUtils.php"; ?>
-
-    <div id="content">
-      <div class="alert alert-info" style="margin-top:40px;padding:20px">
-        <h2><?php echo $RES['upgradeStack.index.pageSummary.header'] ?></h2>
-        <p><?php echo $RES['upgradeStack.index.pageSummary.body'] ?></p>
-        <p id="versionInfo" style="font-weight:bold"></p>
-        <?php /*
-        <div id="buttonGroup" style="margin-top:20px">
-          <a href="uninstall.php" class="btn btn-large btn-success" id="upgradeButton"><?php echo $RES['upgradeStack.index.submit.label'] ?></a>
-          <a href="../" class="btn btn-large" id="cancelButton" style="margin-left:10px"><?php echo $RES['upgradeStack.index.cancel.label'] ?></a>
-        </div>
-        <?php */ ?>
-      </div>
-    </div>
-    <?php require "../_footer.php"; ?>
-  </div>
-  <script type="text/javascript">
-
-    var clusterName = '<?php echo $clusterName; ?>';
-
-    var jsFilesToLoad = [
-      'js/ext/sinon.min.js',
-      'js/utils.js',
-      'js/txnUtils.js',
-      'js/upgradeStack/showUpgradeProgress.js'
-    ];
-  </script>
-
-  <?php require "../_bootstrapJs.php"; ?>
-</body>
-</html> 

+ 0 - 69
hmc/html/upgradeStack/uninstall.php

@@ -1,69 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once '../_router.php' ?>
-<!DOCTYPE html>
-<html>
-<head>
-  <?php require "../_head.php" ?>
-</head>
-<body class="yui3-skin-sam">
-  <div id="container">
-    <?php require "../_topnav.php"; ?>
-    <?php require "../_utils.php"; ?>
-    <?php require "../_txnUtils.php"; ?>
-
-    <div id="content">
-      <?php require '_stageMenu.php'; ?>
-
-      <!-- Begin Wizard -->
-      <div id="upgradeStackWizard">
-        <div id="uninstallPanel">
-          <div class="pageSummary" style="margin-top:0px">
-            <h2><?php echo $RES['upgradeStack.uninstall.pageSummary.header'] ?></h2>
-            <p><?php echo $RES['upgradeStack.uninstall.pageSummary.body'] ?></p>
-          </div>
-          <div id="formStatusDivId" class="alert alert-error" style="display:none">
-          </div>
-          <a href="javascript:void 0" class="btn btn-large btn-success" id="uninstallSubmitButton"><?php echo $RES['upgradeStack.uninstall.submit.label'] ?></a>
-        </div>
-      </div>
-      <!-- End Wizard -->
-    </div>
-    <?php require "../_footer.php"; ?>
-  </div>
-  <!-- Javascript Scaffolding -->
-  <script type="text/javascript">
-
-  var clusterName = '<?php echo $clusterName; ?>';
-
-  var jsFilesToLoad = [
-      'js/ext/sinon.min.js',
-      'js/utils.js',
-      'js/txnUtils.js',
-      'js/upgradeStack/uninstall.js'
-    ];
-  </script>
-
-  <?php require "../_bootstrapJs.php"; ?>
-  <!-- End of Javascript Scaffolding -->
-
-</body>
-</html> 

+ 0 - 43
hmc/html/welcome.php

@@ -1,43 +0,0 @@
-<?php
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-?>
-<?php require_once "./_router.php"; ?>
-<!DOCTYPE html>
-<html>
-  <head>
-    <?php require "./_head.php" ?>
-  </head>
-
-  <body class="yui3-skin-sam">
-    <div id="container">
-      <?php require "./_topnav.php"; ?>
-
-      <div id="content">
-        <div class="alert alert-info" style="margin-top:40px;padding:20px">
-          <h2 style="margin-bottom:10px"><?php echo $RES['welcome.header'] ?></h2>
-          <p><?php echo $RES['welcome.body'] ?></p>
-          <p><span class='label label-info'>Note</span><span style='margin-left:10px;'><?php echo $RES['welcome.note'] ?></span></p>
-          <a id="submitLinkId" class='btn btn-large' style='margin-top:20px' href='initializeCluster.php'><?php echo $RES['welcome.submit.label'] ?></a>
-        </div>
-      </div>
-      <?php require "./_footer.php"; ?>
-    </div>
-  </body>
-</html>

BIN
hmc/images/loading.gif


BIN
hmc/images/loadingLarge.gif


BIN
hmc/images/loading_orange.gif


BIN
hmc/images/loading_yellow.gif


BIN
hmc/images/logo-micro.gif


BIN
hmc/images/logo-small.gif


BIN
hmc/images/logo.jpg


BIN
hmc/images/orange-loader.gif


+ 0 - 285
hmc/js/addNodes.js

@@ -1,285 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-InstallationWizard.AddNodes = {
-
-  renderData:
-    {},
-
-  render:
-    function (addNodesRenderData) {
-
-      /* Always update the object's renderData first. */
-      InstallationWizard.AddNodes.renderData = addNodesRenderData;
-
-      /* Since this screen is completely statically rendered, nothing else
-       * needs to be done here.
-       */
-      if (globalYui.one("#yumMirrorSupportFormButtonId")) {
-        if (globalYui.one("#yumMirrorSupportFormButtonId").get('checked')) {
-          globalYui.one('#yumMirrorSupportFormFieldsId').setStyle('display', 'block');
-        } else {
-          globalYui.one('#yumMirrorSupportFormFieldsId').setStyle('display', 'none');
-          globalYui.one("#yumRepoFilePathId").set('value', '');
-        }
-      }
-      globalYui.one("#addNodesCoreDivId").setStyle('display', 'block');
-
-      App.ui.hideLoadingOverlay();
-    }
-};
-
-if (globalYui.one("#yumMirrorSupportFormButtonId")) {
-  globalYui.one("#yumMirrorSupportFormButtonId").on('click', function(e) {
-    if (globalYui.one("#yumMirrorSupportFormButtonId").get('checked')) {
-      globalYui.one('#yumMirrorSupportFormFieldsId').setStyle('display', 'block');
-    } else {
-      globalYui.one('#yumMirrorSupportFormFieldsId').setStyle('display', 'none');
-    }
-  });
-}
-
-globalYui.one('#addNodesSubmitButtonId').on('click',function (e) {
-
-  var focusId = '';
-  var message = '';
-  var errCount = 0;
-
-  var userId = globalYui.Lang.trim(globalYui.one("#clusterDeployUserId").get('value'));
-  if (userId == '') {
-    errCount++;
-    focusId = '#clusterDeployUserId';
-    message += 'SSH Username cannot be empty';
-    globalYui.one("#clusterDeployUserId").addClass('formInputError');
-  } else {
-    globalYui.one("#clusterDeployUserId").removeClass('formInputError');
-  }
-
-  var fileName = globalYui.one("#clusterDeployUserIdentityFileId").get('value');
-  if (fileName == '') {
-    errCount++;
-    if (focusId == '') {
-      focusId = '#clusterDeployUserIdentityFileId';
-    }
-    if (message != '') {
-      message += '. ';
-    }
-    message += 'SSH Private Key File not specified';
-    globalYui.one("#clusterDeployUserIdentityFileId").addClass('formInputError');
-  } else {
-    globalYui.one("#clusterDeployUserIdentityFileId").removeClass('formInputError');
-  }
-
-  fileName = globalYui.one("#clusterHostsFileId").get('value');
-  if (fileName == '') {
-    errCount++;
-    if (focusId == '') {
-      focusId = '#clusterHostsFileId';
-    }
-    if (message != '') {
-      message += '. ';
-    }
-    message += 'Hosts File not specified';
-    globalYui.one("#clusterHostsFileId").addClass('formInputError');
-  } else {
-    globalYui.one("#clusterHostsFileId").removeClass('formInputError');
-  }
-
-  if (globalYui.one("#yumMirrorSupportFormButtonId")) {
-    if (globalYui.one("#yumMirrorSupportFormButtonId").get('checked')) {
-      // local yum mirror support
-      var repoFile = globalYui.Lang.trim(globalYui.one("#yumRepoFilePathId").get('value'));
-      if (repoFile == '') {
-        errCount++;
-        if (focusId == '') {
-          focusId = '#yumRepoFilePathId';
-        }
-        if (message != '') {
-          message += '. ';
-        }
-        message += 'Yum Repo file not specified';
-        globalYui.one("#yumRepoFilePathId").addClass('formInputError');
-      }
-    }
-  }
-
-  if (errCount != 0) {
-    globalYui.one(focusId).focus();
-    App.ui.setFormStatus(message, true);
-    return;
-  }
-
-  App.ui.clearFormStatus();
-
-  App.ui.showLoadingOverlay();
-
-  globalYui.log("About to upload files.");
-  e.target.set('disabled', true);
-
-  var addNodesFilesForm = globalYui.one("#addNodesFilesFormId");
-
-  addNodesFilesForm.set('action', '../php/frontend/addNodes.php?clusterName=' +
-    InstallationWizard.AddNodes.renderData.clusterName);
-
-  /* Set the target of the first form's upload to be a hidden iframe
-   * on the page so as not to redirect to the PHP page we're POSTing
-   * to.
-   *
-   * See http://www.openjs.com/articles/ajax/ajax_file_upload/ for
-   * more on this.
-   */
-  addNodesFilesForm.set('target', 'fileUploadTarget');
-
-  /* And then programmatically submit the first of the 2 forms. */
-  doPostUpload = true;
-  addNodesFilesForm.submit();
-  globalYui.log("Files submitted to server.");
-
-  e.target.set('disabled', false);
-});
-
-var setupNodesJson = "";
-var doPostUpload = false; // this flag is to prevent the #fileUploadTargetId iframe onload event from being invoked on browser back action
-
-globalYui.one("#fileUploadTargetId").on('load', function (e) {
-
-    if (!doPostUpload) {
-  	  return;
-    }
-    globalYui.log("File upload finished");
-
-    if (freshInstall == false) {
-      // Do checks only in case of addNodesWizard
-      var myIFrame = globalYui.one("#fileUploadTargetId"); 
-      var myIFrameContent = myIFrame.get('contentWindow.document.body');
-      var content = myIFrameContent.one('pre:first-child');
-      var responseText = content.get('text');
-
-      var responseJson = globalYui.JSON.parse(responseText);
-
-      if (responseJson.result != 0) {
-        // This means we hit an error
-      if (responseJson.result == 3) {
-        info =
-          '<p>' +
-            responseJson.error + '. ' +
-            '<a href="javascript:void(null)" id=errorHostInfoLinkId>' +
-            'Show me the duplicates</a>' +
-          '</p>';
-
-          App.ui.setFormStatus(info, true);
-          var infoPanel = App.ui.createInfoPanel("Duplicate nodes");
-          infoPanel.set('centered', true);
-          var infoPanelContent = '';
-          for (cluster in responseJson.hosts) {
-            infoPanelContent += 'Cluster: <b>' + cluster + '</b><ul>';
-            for (host in responseJson.hosts[cluster]) {
-              infoPanelContent += '<li>' + responseJson.hosts[cluster][host] + '</li>';
-            }
-
-            infoPanelContent += '</ul><br/>';
-          }
-          infoPanel.set('bodyContent', infoPanelContent);
-          infoPanel.addButton({
-            value: 'Close',
-            action: function(e) {
-              e.preventDefault();
-              infoPanel.hide();
-            },
-
-            className: '',
-            section: 'footer'
-          });
-
-          globalYui.one('#errorHostInfoLinkId').on("click", function(e) {
-            infoPanel.show();
-          });
-          App.ui.hideLoadingOverlay();
-          return;
-
-      } else {
-        alert('Got and error ' + responseJson.error);
-        App.ui.hideLoadingOverlay();
-        return;
-      }
-      }
-    }
-
-    doPostUpload = false;
-    
-    var repoFile = '';
-    var localYumRepo = '';
-
-    if (globalYui.one("#yumMirrorSupportFormButtonId")) {
-      if (globalYui.one("#yumMirrorSupportFormButtonId").get('checked')) {
-        localYumRepo = 'true';
-        // local yum mirror support
-        repoFile = globalYui.Lang.trim(globalYui.one("#yumRepoFilePathId").get('value'));
-      }
-    }
-
-    var addNodesRequestData = {
-      "ClusterDeployUser" : globalYui.Lang.trim(globalYui.one("#clusterDeployUserId").get('value')),
-      "useLocalYumRepo" : localYumRepo,
-      "yumRepoFilePath": repoFile
-    }
-
-    // Trigger the execution of setting up nodes
-    var url = "../php/frontend/nodesAction.php?clusterName=" + InstallationWizard.AddNodes.renderData.clusterName + "&action=addNodes";
-    globalYui.io(url, {
-      method: 'POST',
-      data: addNodesRequestData,
-      timeout : App.io.DEFAULT_AJAX_TIMEOUT_MS,
-      on: {
-        success: function (x,o) {
-          	
-          globalYui.log("RAW JSON DATA: " + o.responseText);
-          // Process the JSON data returned from the server
-          try {
-            setupNodesJson = globalYui.JSON.parse(o.responseText);
-          } catch (e) {
-            alert("JSON Parse failed!");
-            return;
-          }
-          globalYui.log("PARSED DATA: " + globalYui.Lang.dump(setupNodesJson));
-          if (setupNodesJson.result != 0) {
-            // Error!
-            alert("Got error! " + setupNodesJson.error);
-            App.ui.hideLoadingOverlay();
-            return;
-          }
-          setupNodesJson = setupNodesJson.response;
-
-
-          App.ui.hideLoadingOverlay();
-
-          globalYui.one("#blackScreenDivId").setStyle("display", "block");
-
-          renderProgress( setupNodesJson );
-
-        },
-        failure: function (x,o) {
-          alert(App.io.DEFAULT_AJAX_ERROR_MESSAGE);
-        }
-      }
-    });
-
-});

+ 0 - 336
hmc/js/addNodesProgress.js

@@ -1,336 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-
-function cleanUpTxnProgress () {
-  globalYui.one('#installationWizardProgressBarDivId').setStyle('display', 'block');
-  globalYui.one('#txnProgressStatusMessageDivId').setContent('');
-  globalYui.one('#blackScreenDivId').setStyle('display', 'none');
-  globalYui.one('#txnProgressStatusDivId').setStyle('display', 'none');
-  globalYui.one('#addNodesCoreDivId').setStyle('display', 'none');
-  globalYui.one('#txnProgressCoreDivId').setStyle('display', 'none');
-  //globalYui.one('#txnProgressContentDivId').setContent
-  //  ( '<img id=txnProgressLoadingImgId class=loadingImg src=../images/loading.gif />' );
-}
-
-function generateSingleDiscoverProgressStateMarkup(discoverProgressStateTitle, progressState) {
-  var stateClass;
-  var barClass;
-    
-  switch (progressState) {
-  case "SUCCESS":
-    stateClass = 'txnProgressStateDone';
-    barClass = 'progress progress-success';
-    break;
-
-  case "STARTING":
-  case "STARTED":
-  case "IN_PROGRESS":
-     stateClass = 'txnProgressStateInProgress';
-     //barClass = 'progress progress-striped active';
-     barClass = 'progress';
-     break;
-
-  case "FAILED":
-    stateClass = 'txnProgressStateWarning';
-    barClass = 'progress progress-warning';
-    break;
-  case "TOTALFAILURE":
-    stateClass = 'txnProgressStateError';
-    barClass = 'progress progress-danger';
-    break;
-
-  default: // PENDING
-    stateClass = 'txnProgressStatePending';
-    barClass = 'progress';
-    break;
-  }
-  
-  var barMarkup = '<div class="' + barClass + '"><div class="bar"></div></div>';
-  if (stateClass == 'txnProgressStateInProgress') {
-    barMarkup = '<div id="activeProgressBarContainer">' + barMarkup + '</div>';
-  }
-  
-  var markup = '<li><label class="' + stateClass + '">' + discoverProgressStateTitle + '</label>' + barMarkup + '</li>';
-  //globalYui.log('progress state=' + progressState + ', markup=' + markup);
-  return markup;
-}
-
-function renderProgress (discoverProgressInfo) {
-
-  var txnProgressShown = false;
-  var pollingStopped = false;
-  
-  var discoverProgressDataSource = new globalYui.DataSource.IO ({
-    source: '../php/frontend/nodesActionProgress.php'
-  });
-
-  discoverProgressDataSource.plug(globalYui.Plugin.DataSourceJSONSchema, {
-    schema: {
-      metaFields: {
-        progressStates: 'progressStates',
-        currentProgressStateIndex: 'currentProgressStateIndex',
-        encounteredError: 'encounteredError',
-        stateInfo: 'stateInfo'
-      }
-    }
-  });
-  
-  function clearActiveProgressBar() {
-    var bar = globalYui.one('#activeProgressBar');
-    if (bar != null) {
-      bar.remove();
-    }
-    globalYui.on('windowresize', function(e) {
-      setActiveProgressBarInPlace();
-    });
-  }
-  
-  function setActiveProgressBarInPlace() {
-    // Puts an active progress bar where the placeholder with the DIV ID of "activeProgressBarSpot" is located.
-    // Creates an instance of the active progress bar if one does not already exist
-    // so that we can keep reusing it and moving it in place, rather than dynamically rendering it
-    // on every successful callback to avoid flickering/disconnect due to animation.
-    
-    var bar = globalYui.one('#activeProgressBar');
-    var barContainer = globalYui.one('#activeProgressBarContainer');    
-    
-    if (barContainer != null) {
-      if (bar == null) {
-        globalYui.one("body").append('<div id="activeProgressBar" class="wrapped progress progress-striped active" style="position:absolute;top:-50px;left:0;z-index:99;"><div style="width:100%" class="bar"></div></div>');
-        bar = globalYui.one('#activeProgressBar');
-      }      
-      bar.setStyle('display', 'block');
-      if (bar.getX() != barContainer.getX() || bar.getY() != barContainer.getY()) {      
-        bar.setXY(barContainer.getXY());
-      }
-    } else if (bar != null) {
-      bar.setStyle('display', 'none');
-    }    
-  }
-  
-  function runPollTask() {
-    discoverProgressDataSource.sendRequest({
-      request: '?clusterName=' + discoverProgressInfo.clusterName + '&txnId=' + discoverProgressInfo.txnId + '&action=addNodes',
-      callback: {
-        success: function (e) {
-  
-          if (pollingStopped) {
-            return;
-          }
-  
-          globalYui.one("#txnProgressHeader").setContent('Node Discovery and Preparation');
-  
-          var stateInfo = e.response.meta.stateInfo;
-          var discoverProgressStates = e.response.meta.progressStates;
-          var stateInfoLength = 0;
-          var count = 0;
-          var lastTxnId = 0;
-          var discoverProgressMarkup = '<ul id="steps" class="wrapped">';
-  
-          var overallFail = false;
-          var numSubTxns = 0;
-          for (txnId in stateInfo.subTxns) {
-            numSubTxns++;
-          }
-
-          if (numSubTxns == 0) {
-            var errorInfoPanelBodyContent = 
-              '<img id="errorInfoPanelLoadingImgId" class="loadingImg" src="../images/loading.gif" />';
-  
-            globalYui.one('#txnProgressContentDivId').setContent( errorInfoPanelBodyContent );
-            globalYui.one("#txnProgressCoreDivId").setStyle("display", "block");
-            poll();
-            return;
-          }
-  
-          for (var txnId in stateInfo.subTxns) {
-            var currentProgressState = stateInfo.subTxns[txnId].opStatus;
-            // If all states are in pending or just the first one, let's mark the first one as in progress
-            if (numSubTxns == 1 && currentProgressState != 'FAILED' && currentProgressState != 'TOTALFAILURE') {
-              currentProgressState = "IN_PROGRESS";
-            }
-            
-            discoverProgressMarkup += 
-              generateSingleDiscoverProgressStateMarkup(
-                stateInfo.subTxns[txnId].description + stateInfo.subTxns[txnId].progress,
-                currentProgressState);
-            stateInfoLength++;
-            count++;
-            lastTxnId = txnId;
-            overallFail |= (currentProgressState == 'FAILED' || currentProgressState == 'TOTALFAILURE');
-          }
-  
-          // Render the remaining stages as pending
-          if (stateInfoLength < discoverProgressStates.length) {
-            for (; count < discoverProgressStates.length; count++ ) {     
-              discoverProgressMarkup += 
-                generateSingleDiscoverProgressStateMarkup(
-                  discoverProgressStates[count],
-                  'PENDING');
-            }
-          }
-  
-          var noNeedForFurtherPolling = false;
-          var totalFailure = false;
-          var installationStatusDivContent = '';
-  
-          if (stateInfo.subTxns[lastTxnId].opStatus == "TOTALFAILURE") {
-            noNeedForFurtherPolling = true;
-            totalFailure = true;
-          } else if (stateInfoLength == discoverProgressStates.length) {
-            if ((stateInfo.subTxns[lastTxnId].opStatus == "SUCCESS") 
-            || (stateInfo.subTxns[lastTxnId].opStatus == "FAILED")) {
-              noNeedForFurtherPolling = true;
-            } else {
-              noNeedForFurtherPolling = false;
-            }
-          }
-  
-          if( noNeedForFurtherPolling ) {
-  
-            /* We've made all the progress we could have, so stop polling. */
-            pollingStopped = true;
-              
-            if (!overallFail) {
-              statusContent =             
-                '<p>' +
-                  'Finished node discovery and preparation. ' +
-                  '<a class="btn btn-large" href="javascript:void(null)" id="successInfoLinkId">' +
-                    'Proceed to Select Services' +
-                  '</a>' +
-                '</p>';
-                globalYui.one('#txnProgressStatusDivId').removeClass('statusError');
-                globalYui.one('#txnProgressStatusDivId').addClass('statusOk');
-                globalYui.one('#txnProgressStatusMessageDivId').setContent(statusContent);    
-                globalYui.one("#successInfoLinkId").on( "click", function(e) {
-                  cleanUpTxnProgress();
-                  App.transition.transitionToNextStage( "#txnProgressCoreDivId", discoverProgressInfo,
-                    "#selectServicesCoreDivId", discoverProgressInfo, renderSelectServicesBlock);
-              });
-            } else {
-              statusContent = 
-                '<p>' +
-                  'An error was encountered with some of the nodes.<br>' +
-                  'Take a look at the <a href="javascript:void(null)" id=errorInfoLinkId>' +
-                  'error logs</a> to see what might have happened.<br>'; 
-      
-                statusContent += '<a class="btn btn-large" style="margin:10px 0" href="javascript:void(null)"' +
-                  'id="errorBackNavLinkId">Back to Add Nodes</a>';
-                if (totalFailure == false) {
-                  statusContent += ' <a class="btn btn-large" href=' + 
-                    '"javascript:void(null)" id="errorFwdNavLinkId" style="margin:10px 0 10px 20px">Ignore and Continue</a>';
-                }
-                statusContent += '</p>';
-                globalYui.one('#txnProgressStatusDivId').removeClass('statusOk');
-                globalYui.one('#txnProgressStatusDivId').addClass('statusError');
-                globalYui.one('#txnProgressStatusMessageDivId').setContent(statusContent);
-                // now can add the on-click feature for the links
-                globalYui.one("#errorBackNavLinkId").on( "click", function(e) {
-                  cleanUpTxnProgress();
-                  errorInfoPanel.destroy();
-                  // give cleanup option
-                  // cleanupInstall();
-                  globalYui.one("#txnProgressStatusActionsDivId").setContent("");
-                  globalYui.one('#txnProgressCoreDivId').setStyle('display', 'none');
-                  globalYui.one("#addNodesCoreDivId").setStyle('display', 'block');
-                 });
-      
-                if (totalFailure == false) {
-                  globalYui.one("#errorFwdNavLinkId").on( "click", function(e) {
-                    cleanUpTxnProgress();
-                    errorInfoPanel.destroy();
-                    //REZYYY globalYui.one("#progressErrorInfoNavigateDivId").setContent("");
-                    globalYui.one("#txnProgressStatusActionsDivId").setContent("");
-                    App.transition.transitionToNextStage( "#txnProgressCoreDivId", discoverProgressInfo,
-                      "#selectServicesCoreDivId", discoverProgressInfo, renderSelectServicesBlock);
-                  });
-                }
-                /* If we stopped polling due to error, we need to do more work. */
-                
-                /* Create the panel that'll display our error info. */
-                var errorInfoPanel = 
-                  App.ui.createInfoPanel('Node Discovery and Preparation Logs');
-    
-                  globalYui.one("#errorInfoLinkId").on( "click", function(err) {
-                    var bodyContent = "";
-                    for (subTxn in e.response.meta.stateInfo.subTxns) {
-                      var subTxnInfo = e.response.meta.stateInfo.subTxns[subTxn];
-                      var additionalInfoTable = '<table>' +
-                                                   '<thead><tr><th>Host</th><th>Info</th></tr></thead>';
-                      for (hostName in subTxnInfo.state) {
-                        additionalInfoTable +=     '<tr><td>' + hostName + '</td><td><pre>' +subTxnInfo.state[hostName] + '</pre></td></tr>'
-                      }
-                      additionalInfoTable +=    '</table>';
-                      bodyContent += '<div class="logEntry">' +
-                                       '<div class="logEntryHeader">' + subTxnInfo.description + '</div>' +
-                                       '<div class="logEntryBody">' +
-                                         '<ul>' + 
-                                           '<li>Entry Id : ' + subTxnInfo.subTxnId + '</li>' +
-                                           '<li>Final result : ' + subTxnInfo.opStatus + '</li>' +
-                                           '<li>Progress at the end : ' + subTxnInfo.progress + '</li>' +
-                                           '<li>Additional information : ' + additionalInfoTable + '</li>' +
-                                         '</ul>' +
-                                       '</div>' +
-                                     '</div>';
-                    }
-                    errorInfoPanel.set('bodyContent' , bodyContent);
-                    //errorInfoPanel.set( 'bodyContent', '<pre>' + 
-                    //  globalYui.JSON.stringify( e.response.meta.stateInfo, null, 4) + '</pre>' );
-                    errorInfoPanel.show();
-                    //REZYYY globalYui.one("#progressErrorInfoNavigateDivId").setStyle( 'display', 'block' );
-                });
-            } // end if error
-            
-            globalYui.one('#txnProgressStatusDivId').setStyle('display', 'block');            
-  
-          } // end no need for further polling
-  
-          discoverProgressMarkup += '</ul>';
-          globalYui.log('About to generate markup: ' + discoverProgressMarkup);
-          globalYui.one('#txnProgressContentDivId').setContent(discoverProgressMarkup);
-          
-          if (!txnProgressShown) {
-            globalYui.one('#txnProgressCoreDivId').setStyle('display','block');
-            txnProgressShown = true;
-          }
-          setActiveProgressBarInPlace();
-          if (!pollingStopped) {
-            poll();
-          }
-        },
-        failure: function (e) {
-          alert('Failed to fetch more progress!');
-          /* No point making any more attempts. */
-          pollingStopped = true;
-        }
-      }
-    });
-  }
-
-  function poll() {
-    window.setTimeout(runPollTask, 3000);
-  }
-  
-  clearActiveProgressBar();
-
-  runPollTask();
-} 

+ 0 - 91
hmc/js/addNodesWizard.js

@@ -1,91 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var addNodesWizardStages = {
-
-  /* The keys in 'stages' need to be kept in-sync with the <li> elements in 
-   * the markup.
-   */
-
-  stages : {
-    'addNodesStageId' : {
-      divSelector : '#addNodesCoreDivId'
-    },
-    'selectServicesStageId' : {
-      divSelector : '#selectServicesCoreDivId'
-    }
-  },
-
-  transitionToCachedStage : 
-    function (currentStageId, cachedStageId) {
-
-      App.ui.clearFormStatus();
-
-      globalYui.log("In transitionToCachedStage: " + currentStageId + "->" + cachedStageId);
-      App.transition.swapStageVisibilities( this.stages[currentStageId].divSelector,
-      this.stages[cachedStageId].divSelector );
-    }
-};
-
-/* Setup the behavior for #installationWizardProgressBarListId */
-globalYui.one('#installationWizardProgressBarListId').delegate('click', function (e) {
-
-  /* Important: When we specify CSS filters to delegate, we need to access 
-   * the filtered CSS element (which is what we really care to get at) via
-   * 'this', not e.target. 
-   *
-   * Only do anything with clicks on stages that have previously been visited.
-   */
-  if( this.hasClass('installationWizardVisitedStage') ) {
-
-    var newCurrentStage = this;
-    var nextStage = null;
-
-    /* Mark the clicked-on stage as 'current'. */
-    newCurrentStage.replaceClass( 'installationWizardVisitedStage', 'installationWizardCurrentStage' );
-    globalYui.log("Marked " + newCurrentStage.get('id') + "from visited to current");
-
-    var currentStage = newCurrentStage;
-
-    while( nextStage = currentStage.next('.installationWizardVisitedStage') ) {
-
-      /* Mark all the following 'visited' stages as 'unvisited'. */
-      nextStage.replaceClass( 'installationWizardVisitedStage', 'installationWizardUnvisitedStage' );
-    globalYui.log("Marked " + nextStage.get('id') + "from visited to unvisited");
-
-      currentStage = nextStage;
-    }
-
-    var previouslyCurrentStage = currentStage.next();
-
-    /* And finally, also mark the up-until-now 'current' stage as unvisited. 
-     * We know at this point that currentStage points to the last 
-     * previously-visited stage, and the last previously-visited stage is always
-     * followed immediately by the up-until-now 'current' stage, so no fancier
-     * checks are required - just depend on the invariants.
-     */
-    previouslyCurrentStage.replaceClass( 'installationWizardCurrentStage', 'installationWizardUnvisitedStage' );
-    globalYui.log("Marked " + previouslyCurrentStage.get('id') + "from current to unvisited");
-
-    /* Finally, flip to this newly 'current' stage, from the previously current one. */
-    addNodesWizardStages.transitionToCachedStage( previouslyCurrentStage.get('id'), newCurrentStage.get('id') );
-  }
-}, 'li' ); 

+ 0 - 31
hmc/js/addNodesWizardInit.js

@@ -1,31 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-// The values of clusterName and freshInstall come from html/addNodesWizard.php
-var addNodesRequestData = {
-  "clusterName": clusterName,
-  "freshInstall": freshInstall
-};
-
-InstallationWizard.AddNodes.render(addNodesRequestData);
-
-/* Signify that the containing application is ready for business. */
-App.ui.hideLoadingOverlay();

+ 0 - 329
hmc/js/assignMasters.js

@@ -1,329 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-function AssignMasters() {
-
-  var managerHostName;
-  var allHosts;
-  var masterServices;
-  var hostsToMasterServices;
-  
-  function getNodeInfo(nodeName) {
-    // Y.log("nodename: " + nodeName);
-    if (nodeName == null) {
-      return null;
-    }
-    for (var host in allHosts) {
-      if (allHosts[host].hostName == nodeName) {
-        // Y.log("Get node info: " + allHosts[host].hostName);
-        return allHosts[host];
-      }
-    }
-  
-    return null;
-  }
-  
-  function addCommasToInt(num) {
-  	return num.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
-  }
-  
-  function getTotalMemForDisplay(totalMem) {
-  	return Math.round(totalMem / 102.4)/10 + "GB";
-  }
-  
-  function renderHostsToMasterServices(hostsToMasterServices) {
-  	var markup = '';
-  	for (var host in hostsToMasterServices) {
-  	  var hostInfo = getNodeInfo(host);
-  	  markup += '<div class="hostToMasterServices"><h3>' + host + '<span class="hostInfo">' + getTotalMemForDisplay(hostInfo.totalMem) + ', ' + hostInfo.cpuCount + ' cores</span></h3><ul>';
-  	  for (var j in hostsToMasterServices[host]) {
-        if (j === "KERBEROS_SERVER" && Y.one("#useExistingKerberos").get('checked') === true) {
-          continue;
-        }
-  	    markup += '<li>' + hostsToMasterServices[host][j] + '</li>';
-  	  }
-      markup += '</ul><div style="clear:both"></div></div>';
-  	}
-  	$('#hostsToMasterServices').html(markup);
-  }
-  
-  function addMasterServiceToHost(masterName, hostName, hostsToMasterServices, masterServices) {
-    // enforce constraints on what services can be co-hosted (unless those suggestions were made by the server initially)
-    // we currently disallow:
-    // 1. namenode and secondary namenode to be on the same host
-    // 2. more than one zookeeper server to be on the same host
-  
-    if (hostsToMasterServices[hostName] != null) {
-      for (var service in hostsToMasterServices[hostName]) {
-        if (masterName == 'NAMENODE' && service == 'SNAMENODE' || masterName == 'SNAMENODE' && service == 'NAMENODE') {
-          alert('NameNode and Secondary NameNode cannot be hosted on the same host.');
-          return false;
-        }
-        if (masterName.indexOf('ZOOKEEPER') == 0 && service.indexOf('ZOOKEEPER') == 0) {
-          alert('You cannot put more than one ZooKeeper Server on the same host.');
-          return false;
-        }
-      }
-    }
-  	if (hostsToMasterServices[hostName] == null) {
-  		hostsToMasterServices[hostName] = {};
-  	}
-  	hostsToMasterServices[hostName][masterName] = masterServices[masterName].displayName;
-  	return true;
-  }
-  
-  function removeMasterServiceFromHost(masterName, hostName, hostsToMasterServices) {
-  	for (var i in hostsToMasterServices[hostName]) {
-  		if (i == masterName) {
-  			delete hostsToMasterServices[hostName][i];
-  			//alert(Object.keys(hostsToMasterServices[hostName]).length);
-  			if (Object.keys(hostsToMasterServices[hostName]).length == 0) {
-  				//alert('remove');
-  				delete hostsToMasterServices[hostName];
-  			}
-  			return;
-  		}
-  	}
-  }
-  
-  function getHostInfoForDisplay(host) {
-    return host.hostName + ' - ' + getTotalMemForDisplay(host.totalMem) + ', ' + host.cpuCount + ' cores';
-  }
-  
-  function getMasterHostSelect(masterName, chosenHostName) {
-  	var chosenHost = getNodeInfo(chosenHostName);
-  	var markup = '<select name="' + masterName + '">'; 
-  	markup += '<option selected="selected" value="' + chosenHost.hostName + '">' + getHostInfoForDisplay(chosenHost) + '</option>';
-  	for (var i in allHosts) {
-        var host = allHosts[i];
-  	  if (host.hostName != chosenHost.hostName) {
-  	    markup += '<option value="' + host.hostName + '">' + host.hostName + ' - ' + getTotalMemForDisplay(host.totalMem) + ', ' + host.cpuCount + ' cores</option>';
-  	  }
-  	}
-  	markup += '</select><div style="clear:both"></div><input type="hidden" style="display:none" id="' + masterName + 'ChosenHost" value="' + chosenHost.hostName + '">';
-  	return markup;
-  }
-
-  function attachEventHandlers() {
-    var submitButton = Y.one('#selectServiceMastersSubmitButtonId');
-    submitButton.detach();
-    submitButton.on('click', function (e) {
-      Y.log('clicked select service submit');
-      e.target.set('disabled', true);
-      var assignHostsRequestData = {};
-      for (var masterName in masterServices) {
-        var hostName = $('select[name=' + masterName + ']').val();
-        if (masterName.indexOf("ZOOKEEPER_SERVER") == 0) {
-          if (assignHostsRequestData['ZOOKEEPER_SERVER'] == null) {
-            assignHostsRequestData['ZOOKEEPER_SERVER'] = [];
-          }
-          assignHostsRequestData['ZOOKEEPER_SERVER'].push(hostName);
-        } else {
-          if (assignHostsRequestData[masterName] == null) {
-            assignHostsRequestData[masterName] = [];
-          }
-          if (masterName === 'KERBEROS_SERVER') {
-
-            var checked = Y.one("#useExistingKerberos").get('checked');
-            if (checked) {
-              App.props.securityType = "USER_SET_KERBEROS";
-              hostName = Y.one("#existingKerberosHostname").get('value');
-            } else {
-              App.props.securityType = "AMBARI_SET_KERBEROS";
-            }
-          }
-          assignHostsRequestData[masterName].push(hostName);
-        }
-        // Y.log("Assignment for " + masterName + " is " + assignHostsRequestData[masterName]);
-      };
-
-      Y.io("../php/frontend/assignMasters.php?clusterName=" + App.props.clusterName, {
-        method: 'POST',
-        data: Y.JSON.stringify(assignHostsRequestData),
-        timeout : App.io.DEFAULT_AJAX_TIMEOUT_MS,
-        on: {
-          start: function(x, o) {
-            App.ui.showLoadingOverlay();
-          },
-          complete: function(x, o) {
-            e.target.set('disabled', false);
-            App.ui.hideLoadingOverlay();
-          },
-
-          success: function (x,o) {
-            var clusterConfigJson;
-            e.target.set('disabled', false);
-            Y.log("RAW JSON DATA: " + o.responseText);
-
-            // Process the JSON data returned from the server
-            try {
-              clusterConfigJson = Y.JSON.parse(o.responseText);
-            }
-            catch (e) {
-              alert("JSON Parse failed!");
-              return;
-            }
-
-            //Y.log("PARSED DATA: " + Y.Lang.dump(clusterConfigJson));
-
-            if (clusterConfigJson.result != 0) {
-              // Error!
-              alert("Got error!" + clusterConfigJson.error);
-              return;
-            }
-
-            clusterConfigJson = clusterConfigJson.response;
-
-            /* Done with this stage, transition to the next. */
-            App.transition.transitionToNextStage( "#assignHostsCoreDivId", assignHostsRequestData,
-              "#configureClusterCoreDivId", clusterConfigJson, renderConfigureCluster );
-          },
-          failure: function (x,o) {
-            e.target.set('disabled', false);
-            alert(App.io.DEFAULT_AJAX_ERROR_MESSAGE);
-          }
-        }
-      });
-    });
-
-    // prevValue is used to undo user selection in case we prevent the user from assigning a service
-    var prevValue = '';
-
-    $('#masterServicesToHosts select').off('click');
-    $('#masterServicesToHosts select').click(function() {
-      prevValue = $(this).val();
-    }).change(function(event) {
-        var masterName = $(this).attr('name');
-        // masterServices[masterName] = $(this).val();
-        var prevChosenHost = $('#' + masterName + 'ChosenHost').val();
-        var newChosenHost = $(this).val();
-        if (addMasterServiceToHost(masterName, newChosenHost, hostsToMasterServices, masterServices)) {
-          removeMasterServiceFromHost(masterName, prevChosenHost, hostsToMasterServices);
-          renderHostsToMasterServices(hostsToMasterServices);
-          $('#' + masterName + 'ChosenHost').val(newChosenHost);
-        } else {
-          $(this).val(prevValue);
-        }
-      });
-
-  }
-
-  this.render = function (clusterInfo) {
-  
-    App.ui.hideLoadingOverlay();
-    Y.log("Render assign hosts data " + Y.Lang.dump(clusterInfo));
-    Y.one('#assignHostsCoreDivId').setStyle("display", "block");
-    App.props.clusterName = clusterInfo.clusterName;
-
-    allHosts = clusterInfo.allHosts;
-    managerHostName = clusterInfo.managerHostName;
-    
-    var servicesInfo = Y.Array( clusterInfo.services );
-    masterServices = {};
-  
-    Y.Array.each(servicesInfo, function(serviceInfo) {
-      if( serviceInfo.enabled == true ) {
-        var zkIndex = 1;
-        Y.Array.each(serviceInfo.masters, function(masterInfo) {
-                  
-          for (var i in masterInfo.hostNames) {
-            var masterHostInfo = {
-                'name' : masterInfo.name,
-                'displayName' : masterInfo.displayName,
-                'host' : masterInfo.hostNames[i]
-            };
-            // there could be multiple zookeepers
-            if (masterInfo.name == 'ZOOKEEPER_SERVER') {
-              masterHostInfo.name = 'ZOOKEEPER_SERVER_' + zkIndex;
-              masterHostInfo.displayName = masterHostInfo.displayName + ' ' + zkIndex;
-              zkIndex++;
-            }
-            masterServices[masterHostInfo.name] = masterHostInfo;
-          }
-        });
-      }
-    });
-    
-    hostsToMasterServices = {};
-    var markup = '';
-    for (var i in masterServices) {
-  	  markup += '<div class="masterServiceSelect" id=' + masterServices[i].name + 'Id' + '><label><b>'
-  	  	+ masterServices[i].displayName
-  	    + '</b></label>' + getMasterHostSelect(masterServices[i].name, masterServices[i].host)
-  		  + '</div>';
-  	  if (hostsToMasterServices[masterServices[i].host] == null) {
-  		  hostsToMasterServices[masterServices[i].host] = {};
-  	  } 
-  	  hostsToMasterServices[masterServices[i].host][masterServices[i].name] = masterServices[i].displayName;
-    }
-    // add manager server
-    if (hostsToMasterServices[managerHostName] == null) {
-      hostsToMasterServices[managerHostName] = {};
-    }
-    hostsToMasterServices[managerHostName].MANAGER_SERVER = App.props.managerServiceName + ' Server';
-
-    Y.one('#masterServicesToHosts').setContent(markup);
-
-    // BEGIN KERBEROS HANDLING
-    // At the time of load of the page if Kerberos selection div is already
-    // present then remove it
-    var kerbPresent = Y.one("#existingKerberosServerId");
-    if (kerbPresent) {
-      Y.one("#masterServicesToHostsContainer").removeChild(kerbPresent);
-    }
-
-    kerbPresent = Y.one("#KERBEROS_SERVERId");
-    if (kerbPresent) {
-      var markup = '<div name="existingKerberosServer" id="existingKerberosServerId" style="clear:both;float:none;margin-bottom:12px">'
-        + '<label class="checkbox" for="useExistingKerberos" style="padding-left:70px; display:block;">'
-        + '<em>'
-        + 'Use self-configured Kerberos Server'
-        + '</em>'
-        + '<input type="checkbox" name="useExistingKerberos" id="useExistingKerberos" style="position:relative;">'
-        + '</label>'
-        + '</div>';
-      Y.one("#masterServicesToHostsContainer").prepend(markup);
-
-      markup = '<input class type="text" name="existingKerberosHostname" id="existingKerberosHostname" placeholder="Enter host name" value="" style="display:none;">';
-      kerbPresent.one('label').insert(markup, 'after');
-
-      Y.one('#useExistingKerberos').on('click', function(e) {
-        var selectKerbNode = Y.one('#KERBEROS_SERVERId select');
-        var existingKerberosHostname =  Y.one('#existingKerberosHostname');
-
-        if (this.get('checked')) {
-          selectKerbNode.hide();
-          existingKerberosHostname.show();
-        } else {
-          selectKerbNode.show();
-          existingKerberosHostname.hide();
-        }
-        renderHostsToMasterServices(hostsToMasterServices);
-      });
-    }
-    // END KERBEROS HANDLING
-
-    renderHostsToMasterServices(hostsToMasterServices);
-
-    attachEventHandlers();
-  };  // end render
-
-};

+ 0 - 242
hmc/js/clustersList.js

@@ -1,242 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-function ClustersList() {
-
-  var managerHostName = '';
-
-  function populateHostToMasterRoleMapping(clusterServices, hostMap) {
-
-    var hostName;
-
-    for (var serviceName in clusterServices) {
-      if (clusterServices.hasOwnProperty(serviceName)) {
-
-        if (clusterServices[serviceName].isEnabled == "1" &&
-          clusterServices[serviceName].attributes.runnable &&
-          !clusterServices[serviceName].attributes.noDisplay) {
-
-          Y.Array.each( clusterServices[serviceName].components, function (serviceComponent) {
-            if (serviceComponent.isMaster) {
-              // just add the master to the hostname object
-              for (var i in serviceComponent.hostNames) {
-                hostName = serviceComponent.hostNames[i];
-                if ( !( hostName in hostMap ) ) {
-                  hostMap[hostName] = [];
-                }
-                hostMap[hostName].push({ serviceName: serviceComponent.displayName, isMaster: true });
-              }
-            }
-          });
-        }
-      }
-    }
-    hostName = managerHostName;
-    if (!(hostName in hostMap)) {
-      hostMap[hostName] = [];
-    }
-    hostMap[hostName].push({ serviceName: App.props.managerServiceName + ' Server', isMaster: true });
-  }
-
-  function populateHostToClientRoleMapping(clusterServices, hostMap) {
-
-    for (var serviceName in clusterServices) {
-      if (clusterServices.hasOwnProperty(serviceName)) {
-
-        if (clusterServices[serviceName].isEnabled == "1" &&
-          !clusterServices[serviceName].attributes.noDisplay) {
-
-          Y.Array.each( clusterServices[serviceName].components, function (serviceComponent) {
-            if (serviceComponent.isClient) {
-              // just add the client to the hostname object
-              for (var i in serviceComponent.hostNames) {
-                var hostName = serviceComponent.hostNames[i];
-                if ( !( hostName in hostMap ) ) {
-                  hostMap[hostName] = [];
-                  hostMap[hostName].push({ serviceName: serviceComponent.displayName, isMaster: false });
-                } else {
-                  hostMap[hostName].push({ serviceName: serviceComponent.displayName, isMaster: false });
-                }
-              }
-            }
-          });
-        }
-      }
-    }
-  }
-
-  function generateHostRoleMappingMarkup( clusterServices ) {
-
-    var hostMap = {};
-    var markup = '';
-
-    populateHostToMasterRoleMapping(clusterServices, hostMap);
-    populateHostToClientRoleMapping(clusterServices, hostMap);
-
-    markup += '<div>';
-    for (var hostName in hostMap) {
-      markup += '<div class="hostToServices clearfix"><h3>' + hostName + '</h3>' + '<ul>';
-      for (var service in hostMap[hostName]) {
-        markup += '<li class="' + ((hostMap[hostName][service].isMaster) ? 'master' : 'client') + '">' + hostMap[hostName][service].serviceName + '</li>';
-      }
-      markup += '</ul></div>';
-    }
-    markup += '</div>';
-
-    return markup;
-  }
-
-  this.render = function() {
-
-    Y.io("/hmc/php/frontend/listClusters.php", {
-      method: 'GET',
-      timeout : App.io.DEFAULT_AJAX_TIMEOUT_MS,
-      on: {
-        success: function (x,o) {
-          var clusterListInfoJson;
-          
-          Y.log("RAW JSON DATA: " + o.responseText);
-
-          // Process the JSON data returned from the server
-          try {
-            clusterListInfoJson = Y.JSON.parse(o.responseText);
-          }
-          catch (e) {
-            alert("JSON Parse failed!");
-            return;
-          }
-
-          Y.log("PARSED DATA: " + Y.Lang.dump(clusterListInfoJson));
-
-          if (clusterListInfoJson.result != 0) {
-            // Error!
-            alert("Got error!" + clusterListInfoJson.error);
-            return;
-          }
-
-          clusterListInfoJson = clusterListInfoJson.response;
-          var numClusters = clusterListInfoJson.length;
-          var clustersListMarkup;
-          var clusterId;
-          var multipleClustersSupported = false;
-
-          if (numClusters == 0) {
-            clustersListMarkup = "";
-          } else {
-            if (multipleClustersSupported) {
-              clustersListMarkup =    "<table>" +
-                "<caption>List of clusters</caption>" +
-                "<thead><tr><th>Name of the cluster</th><th>Cluster status</th><th>Actions</th></tr></thead>";
-
-              for (clusterId in clusterListInfoJson) {
-                clustersListMarkup += "<tr><td><a href='manageServices.php?clusterId=" + clusterId + "' id='existingClusterLinkDivId'>" + clusterId + "</a></td><td>" + clusterListInfoJson[clusterId] + "</td><td>Uninstall</td></tr>" ;
-              }
-              clustersListMarkup += "</table>";
-            } else {
-              var clusterName; var clusterInfo;
-              for (clusterId in clusterListInfoJson) {
-                clusterName = clusterId;
-                clusterInfo = clusterListInfoJson[clusterName];
-                Y.log( "Cluster Info: " + Y.Lang.dump(clusterInfo.displayName));
-              }
-            }
-          }
-
-          var newClusterLinkHTML = "";
-          if (multipleClustersSupported || numClusters == 0) {
-            document.location.href = "/hmc/html/welcome.php";
-            return;
-          }
-
-          /* Beginning of adding Role Topology information. */
-          Y.io( "/hmc/php/frontend/fetchClusterServices.php?clusterName=" + clusterName + "&getConfigs=true&getComponents=true", {
-            timeout: App.io.DEFAULT_AJAX_TIMEOUT_MS,
-            on: {
-              success: function(x1, o1) {
-
-                App.ui.hideLoadingOverlay();
-
-                Y.log("RAW JSON DATA: " + o1.responseText);
-
-                var responseJson;
-
-                try {
-                  responseJson = Y.JSON.parse(o1.responseText);
-                }
-                catch (e) {
-                  alert("JSON Parse failed");
-                  return;
-                }
-
-                managerHostName = responseJson.response.managerHostName;
-
-                Y.log(Y.Lang.dump(responseJson));
-
-                /* Check that responseJson actually indicates success. */
-                if (responseJson.result == 0) {
-
-                  var clusterServices = responseJson.response.services;
-                  var versionInfo = responseJson.response.versionInfo;
-
-                  var clusterInfoMarkup =
-                    '<div><label>Cluster:</label> ' + clusterName + '</div>' +
-                    '<div><label>Hadoop Stack:</label> HDP ' + versionInfo.currentStackVersion +
-                    ((App.util.compareVersionStrings(versionInfo.currentStackVersion, versionInfo.latestStackVersion) < 0) ? ' (<a href="upgradeStack">Upgrade available</a>)' : '') +
-                    '</div>' +
-                    '<div style="clear:both"></div>';
-
-                  var markup =
-                    '<div class="clearfix">' +
-                      '<div id="serviceLegend">' +
-                      '<span class="masterLegend">Master</span><span class="clientLegend">Client</span>' +
-                      '</div>' +
-                      '</div>';
-
-                  Y.one('#clusterInfoContent').setContent(clusterInfoMarkup);
-
-                  Y.one("#clusterHostRoleMappingContent").setContent(
-                    markup + generateHostRoleMappingMarkup(clusterServices) );
-                  Y.one("#clusterHostRoleMapping").show();
-                }
-                else {
-                  alert("Fetching Cluster Services failed");
-                }
-              },
-              failure: function(x1, o1) {
-                App.ui.hideLoadingOverlay();
-                alert(App.io.DEFAULT_AJAX_ERROR_MESSAGE);
-              }
-            }
-          });
-          /* End of adding Role Topology information. */
-
-        },
-        failure: function (x,o) {
-          //    e.target.set('disabled', false);
-          alert(App.io.DEFAULT_AJAX_ERROR_MESSAGE);
-        }
-      }
-    });
-  }; // end render
-};
-
-new ClustersList().render();
-

+ 0 - 277
hmc/js/configureCluster.js

@@ -1,277 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-function generateEligibleMountPoints () {
-
-    /* The list we're about to build up. */
-    var desiredMountPoints = [];
-
-    var selections = Y.all("#configureClusterMountPointsDynamicRenderDivId input[type=checkbox]");
-    selections.each( function(selection) {
-
-      if( selection.get('checked') == true ) {
-        desiredMountPoints.push( selection.get('value') );
-      }
-    });
-
-    Y.log("desired mount points: "+Y.Lang.dump(desiredMountPoints));
-    var customMountPointsString = Y.Lang.trim( Y.one("#customMountPointsId").get('value') );
-
-    if( customMountPointsString.length != 0 ) {
-
-      Y.log("custom string = " + customMountPointsString);
-
-      /* Merge the split version of customMountPointsString into our final list
-       * of mount points to send back to the server for committing...
-       */
-      desiredMountPoints.push.apply( desiredMountPoints, Y.Array.filter(customMountPointsString.split(','), function (elem) {
-          if (Y.Lang.trim(elem).length > 0) {
-            return true;
-          } else {
-            return false;
-          }
-      } ));
-    
-      Y.log(desiredMountPoints.join(','));
-    }
-
-    /* ...But not before performing a de-dupe, just to be safe. */
-    return Y.Array.dedupe( desiredMountPoints );
-}
-
-function generateServiceDirs (servicesInfo) {
-
-  var generatedServiceDirs = {};
-
-  var eligibleMountPoints = generateEligibleMountPoints();
-
-  for (var items in servicesInfo) {
-    for (var serviceName in servicesInfo[items]) {
-      for (var component in servicesInfo[items][serviceName]) {
-
-      var serviceInfo = servicesInfo[items][serviceName][component];
-
-      var serviceDirs = [];
-
-      for (var currentDirNum = 0; currentDirNum < eligibleMountPoints.length; ++currentDirNum ) {
-
-        /* serviceInfo.maxDirectoriesNeeded that we get from the server is a cap 
-         * on how many directories need to be generated for that service - the
-         * user can always pick fewer than that, so guard against going out of
-         * bounds.
-         */
-         if ((serviceInfo.maxDirectoriesNeeded != -1) && 
-             (currentDirNum >= serviceInfo.maxDirectoriesNeeded)) {
-           break;
-         }
-
-          var currentDirName = eligibleMountPoints[currentDirNum];
-          
-          /* Add a trailing slash if it doesn't exist already. */
-          if( currentDirName.substr(-1) != '/' ) {
-            currentDirName += '/';
-          }
-
-          serviceDirs.push( currentDirName + serviceInfo.suffix );
-      }
-
-      var serviceDirValue = serviceDirs.join(',');
-
-      generatedServiceDirs[component] = { 
-        "serviceName" : serviceName,
-        'value'       : serviceDirValue, 
-        'displayName' : serviceInfo.displayName 
-      };
-    }
-    }
-  }
-
-  Y.log("Generated Service Dirs: "+Y.Lang.dump(generatedServiceDirs));
-
-  return generatedServiceDirs;
-}
-
-function renderEffectiveClusterConfig (generatedClusterConfig) {
-
-  var clusterConfigDisplayMarkup = "";
-
-  for (var configKey in generatedClusterConfig) {
-    if (generatedClusterConfig.hasOwnProperty( configKey )) {
-
-      var configElement = generatedClusterConfig[configKey];
-
-      var configElementName = configKey;
-      var configElementIdName = configElementName + 'Id';
-
-      var dirsArray = configElement.value.split(',');
-
-      /* Inefficient, with all the string concatenations, but clear to read. */
-      clusterConfigDisplayMarkup += 
-        '<div class="formElement">' + 
-          '<label for=' + configElementIdName + '>' + configElement.displayName + '</label>' +
-          '<ul style="list-style-type: none;float:left;" id=' + configElementIdName + '>'; 
-        for (var dirs in dirsArray) {
-          clusterConfigDisplayMarkup += 
-          '<li>' + dirsArray[dirs] + '</li>';
-        } 
-
-        clusterConfigDisplayMarkup += '</ul>' + '<div style="clear:both"></div></div>';
-        Y.log("HTML GENERATED: " + clusterConfigDisplayMarkup);
-    }
-  }
-
-  /* Link the newly-generated clusterConfigInputMarkup into the DOM (making 
-   * sure it comes before the existing #configureClusterSubmitButtonId), thus
-   * rendering it.
-   */
-  Y.one("#configureClusterMountPointsDisplayDivId").setContent( clusterConfigDisplayMarkup );
-}
-
-/* Modify the working version of generatedClusterConfig to make it fit for
- * sending to our backend.
- */  
-function polishClusterConfig (generatedClusterConfig) {
-
-  var polishedClusterConfig = {};
-
-  for (var configKey in generatedClusterConfig) {
-    if (generatedClusterConfig.hasOwnProperty( configKey )) {
-      serviceName = generatedClusterConfig[configKey]["serviceName"];
-      if (!polishedClusterConfig.hasOwnProperty(serviceName)) {
-        polishedClusterConfig[serviceName] = {};
-      }
-      polishedClusterConfig[serviceName][configKey] = generatedClusterConfig[configKey].value;
-    }
-  }
-
-  return polishedClusterConfig;
-}
-
-var globalServicesInfo = null;
-
-function eventHandlerFunc (e)
-{
-  renderEffectiveClusterConfig(generateServiceDirs(globalServicesInfo));
-}
-
-var registeredConfigureClusterEventHandlers = false;
-
-function renderConfigureCluster (clusterConfig) {
-
-  globalServicesInfo = Y.Array( clusterConfig.servicesInfo );
-
-  /* Clear out the contents of #customMountPointsId each time we render this
-   * screen, to maintain our guarantee of invalidating all forward pages once
-   * the user moves back.
-   */
-  Y.one("#customMountPointsId").set('value', '');
-
-  if( !registeredConfigureClusterEventHandlers ) {
-
-    Y.one('#configureClusterSubmitButtonId').on('click',function (e) {
-
-        e.target.set('disabled', true);
-
-        var itemsExist = false;
-        var selections = Y.all("#configureClusterMountPointsDynamicRenderDivId input[type=checkbox]");
-        selections.each( function(selection) {
-          if( selection.get('checked') == true ) {
-            itemsExist = true;
-          }
-        });
-        if (Y.Lang.trim( Y.one("#customMountPointsId").get('value') ) != '') {
-          itemsExist = true;
-        }
-        if (!itemsExist) {
-          alert("Please select one mount point at the least");
-          e.target.set('disabled', false);
-          return;
-        }
-
-        /* For now, our cluster config consists solely of the generated service directories. */
-        var generatedClusterConfig = generateServiceDirs(globalServicesInfo);
-
-        var configureClusterRequestData = { 
-            mountPoints : generateEligibleMountPoints(), 
-            clusterConfig : polishClusterConfig(generatedClusterConfig) 
-        };
-
-        Y.log(Y.Lang.dump(configureClusterRequestData.clusterConfig));
-
-        var url = "../php/frontend/configureCluster.php?clusterName="+clusterConfig.clusterName;
-        var requestData = configureClusterRequestData;
-        var submitButton = e.target;
-        var thisScreenId = "#configureClusterCoreDivId";
-        var nextScreenId = "#configureClusterAdvancedCoreDivId";
-        var nextScreenRenderFunction = renderOptionsPage;
-        App.transition.submitDataAndProgressToNextScreen(url, requestData, submitButton, thisScreenId, nextScreenId, nextScreenRenderFunction);
-     });
-    
-    Y.one('#previewLinkId').on('click', function(e) {
-      var previewPanel = App.ui.createInfoPanel('Preview Directories to be used by Hadoop');
-      previewPanel.set('centered', true);
-      previewPanel.set('bodyContent', Y.one('#configureClusterDisplayDivId').getContent());
-      var okButton = {
-          value: 'OK',
-          action: function (e) {
-            e.preventDefault();
-            App.ui.destroyInfoPanel(previewPanel);
-          },
-          section: 'footer'
-        };
-      previewPanel.addButton(okButton);
-      previewPanel.show();
-    });
-
-    /* event on mountPoints to be checked. */
-    Y.one('#configureClusterMountPointsInputDivId').delegate(
-        { 
-        'click': eventHandlerFunc, 
-        'keyup' : eventHandlerFunc
-        }, 
-        "input[type=checkbox],input[type=text]");
-
-    registeredConfigureClusterEventHandlers = true;
-  }
-
-  /* Generate the key form elements into clusterConfigInputMarkup. */
-  var mountPoints = Y.Array( clusterConfig.mountPoints.sort(Y.ArraySort.compare) );
-
-  var clusterConfigInputMarkup = "";
-
-  Y.Array.each(mountPoints, function(mountPoint) {
-
-      /* Inefficient, with all the string concatenations, but clear to read. */
-      clusterConfigInputMarkup += 
-          '<label class="checkbox" for="">' + mountPoint + 
-          '<input type=checkbox name=mountPoints id=mountPointsId checked=true value=' + mountPoint + '>' +
-          '</label><br/>'; 
-    });
-
-  /* Link the newly-generated clusterConfigInputMarkup into the DOM. */
-  Y.one("#configureClusterMountPointsDynamicRenderDivId").setContent( clusterConfigInputMarkup );
-
-  App.ui.hideLoadingOverlay();
-  Y.one('#configureClusterCoreDivId').show();
-
-  renderEffectiveClusterConfig(generateServiceDirs(globalServicesInfo));
-
-}

+ 0 - 97
hmc/js/configureServices.js

@@ -1,97 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-function validate() {
-  var opts = App.ui.configureServicesUtil.generateUserOpts();
-
-  $.ajax({
-    type: 'POST',
-    url: '../php/frontend/configureServices.php?clusterName=' + App.props.clusterName + "&validateOnly=1",
-    data: JSON.stringify(opts),
-    dataType: 'json',
-    timeout: App.io.DEFAULT_AJAX_TIMEOUT_MS,
-    success: function (data) {
-      if (data.result != 0) {
-        App.ui.configureServicesUtil.handleConfigureServiceErrors(data);
-      }
-    },
-    failure: function (data) {
-      alert(App.io.DEFAULT_AJAX_ERROR_MESSAGE);
-    }
-  });
-}
-
-Y.one('#configureClusterAdvancedSubmitButtonId').on('click',function (e) {
-  
-  if (this.hasClass('disabled')) {
-    return;
-  }
-  
-  var opts = App.ui.configureServicesUtil.generateUserOpts();
-
-  e.target.set('disabled', true);
-  var url = "../php/frontend/configureServices.php?clusterName=" + App.props.clusterName;
-  var requestData = opts;
-  var submitButton = e.target;
-  var thisScreenId = "#configureClusterAdvancedCoreDivId";
-  var nextScreenId = "#deployCoreDivId";
-  var nextScreenRenderFunction = renderDeploy;
-  var errorFunction = App.ui.configureServicesUtil.handleConfigureServiceErrors;
-  App.transition.submitDataAndProgressToNextScreen(url, requestData, submitButton,
-      thisScreenId, nextScreenId, nextScreenRenderFunction, errorFunction);
-});
-
-// register event handlers for dynamic validation
-// when a key is pressed on a password field, perform password validation
-Y.one("#configureClusterAdvancedDynamicRenderDivId").delegate(
-  {
-    'keyup' : function (e) {
-      App.ui.configureServicesUtil.checkPasswordCorrectness();
-      App.ui.configureServicesUtil.updateServiceErrorCount(e.target.get('name'));
-    }
-  },
-  "input[type=password]"
-);
-// when a key is pressed on a text field, just clear the error
-Y.one("#configureClusterAdvancedDynamicRenderDivId").delegate(
-  {
-    'keyup' : function (e) {
-      App.ui.configureServicesUtil.clearErrorReason('#' + e.target.get('id'));
-      App.ui.configureServicesUtil.updateServiceErrorCount(e.target.get('name'));
-    }
-  },
-  "input[type=text],input[type=password]:not(.retypePassword)"
-);
-
-function renderConfigureServicesInternal (optionsInfo) {
-  optionsInfo.services.KERBEROS.properties.kerberos_install_type.value = App.props.securityType;
-  Y.one("#configureClusterAdvancedDynamicRenderDivId").setContent(App.ui.configureServicesUtil.getOptionsSummaryMarkup(optionsInfo, false));
-  $('#configureServicesTabs a:first').tab('show');
-  Y.one("#configureClusterAdvancedCoreDivId").show();
-  validate();
-  App.ui.hideLoadingOverlay();
-}
-
-function renderOptionsPage (optionsInfo) {
-  App.props.clusterName = optionsInfo.clusterName;
-  var inputUrl = "../php/frontend/fetchClusterServices.php?clusterName=" + optionsInfo.clusterName + "&getConfigs=true";
-  App.transition.executeStage(inputUrl, renderConfigureServicesInternal);
-}

+ 0 - 431
hmc/js/configureServicesUtils.js

@@ -1,431 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-(function() {
-  function ConfigureServicesUtil() {
-
-    var passwordsArray = [];
-
-    function convertDisplayType(displayType) {
-      switch (displayType) {
-        case "NODISPLAY":
-          return "hidden";
-        case "TEXT":
-          return "text";
-        case "PASSWORD":
-          return "password";
-        case "CHECKBOX":
-          return "checkbox";
-        default:
-          return "text";
-      }
-    }
-
-    function generateDivForService (option, type, service, property, unit, displayAttributes, isReconfigure) {
-
-      var unitClass = (unit != null) ? 'unit' : '';
-      var unitLabel = (unit != null && unit != 'int') ? unit : '';
-
-      // default: if this is reconfiguration, default to NOT editable
-      // if this is not reconfiguration (original config), default to editable
-      var readOnlyFlag = isReconfigure;
-
-      if (displayAttributes != null) {
-        if (isReconfigure && displayAttributes.reconfigurable != null && displayAttributes.reconfigurable) {
-          readOnlyFlag = false;
-        } else if (!isReconfigure && displayAttributes.editable != null && !displayAttributes.editable) {
-          readOnlyFlag = true;
-        }
-      }
-
-      var checked = (type === 'checkbox' && option.value === 'true') ? 'checked' : '';
-
-      var retString = '<div class="formElement"';
-      if (type === "hidden") {
-        retString += 'style = "display:none"';
-      }
-      retString += '>' +
-        '<label for="' + service + '">' + option.displayName + '</label>' +
-        '<input class="' + unitClass + '" type="' + type + '" id="' + property + '" name="' + service + '" value="' + option.value + '" ' + checked;
-      if (readOnlyFlag) {
-        retString += ' readonly="readonly" ';
-      }
-
-      retString += '><label class="unit">' + unitLabel + '</label>' +
-        '<div class="contextualHelp">' + option.description + '</div>' +
-        '<div class="formInputErrorReason" id="' + property + 'ErrorReason' + '" style="display:none"></div>' +
-        '</div>';
-      if (type == "password" && !isReconfigure) {
-        retString += '<div class="formElement">' +
-          '<label for="' + service + '"> Retype ' + option.displayName + '</label>' +
-          '<input type="' + type + '" id="' + property + 'SecretService" class="retypePassword" name="' + service + '" value="' + option.value + '">' +
-          '<div class="contextualHelp">' + option.description + '</div>' +
-          '<div class="formInputErrorReason" id="' + property + 'SecretServiceErrorReason' + '" style="display:none"></div>' +
-          '</div>';
-
-        /// Put it in the global passwd array
-        passwordsArray[passwordsArray.length] = {
-          "passwordDivId"     : property,
-          "verificationDivId" : property + 'SecretService'
-        };
-        // Y.log("Global Passwords Array: " + Y.Lang.dump(passwordsArray));
-
-      }
-      return retString;
-    }
-
-    /**
-     * isReconfigure: true if this is for reconfiguring parameters on services; false if this is on "Advanced Config" page
-     */
-    this.getOptionsSummaryMarkup = function(optionsInfo, isReconfigure) {
-      /* Reset passwordsArray at the beginning of each render cycle to
-       * avoid using stale data from the last run
-       */
-      passwordsArray = [];
-      var tabs = '<ul id="configureServicesTabs" class="nav nav-tabs">';
-      var optionsSummary = (isReconfigure) ? '<div>': '<div class="tab-content">';
-
-      var setServiceMarkup = function(service) {
-        if (service.isEnabled === '1') {
-          var serviceNeedsRender = false;
-          var propertiesMarkup = "";
-          for (var property in service.properties) {
-            // service has configs, so needs render
-            var type = convertDisplayType(service.properties[property].type);
-            // Y.log("TYPE: " + type + "Property: " + property);
-            serviceNeedsRender = true;
-            var unit = service.properties[property].unit;
-            var displayAttributes = null;
-            if (service.properties[property].displayAttributes) {
-               displayAttributes = service.properties[property].displayAttributes;
-            }
-
-            propertiesMarkup += generateDivForService(service.properties[property], type, service.serviceName, property, unit, displayAttributes, isReconfigure);
-          }
-          if (serviceNeedsRender) {
-            tabs += '<li><a data-toggle="tab" href="#' + service.serviceName + '">' + service.displayName + '<span id="' + service.serviceName + 'ErrorCount" class="serviceErrorCount"></span></a></li>';
-            // optionsSummary += "<fieldset> <legend>" + service.serviceName + "</legend>";
-            optionsSummary += '<div class="tab-pane" name=\"configureClusterAdvancedPerServiceDiv\" id=\"' + service.serviceName + '\">';
-            optionsSummary += propertiesMarkup;
-            // optionsSummary += '</fieldset></div>';
-            optionsSummary += '</div>';
-          }
-        }
-      };
-
-      if (optionsInfo.services.NAGIOS !== undefined) {
-        setServiceMarkup(optionsInfo.services.NAGIOS);
-      }
-      if (optionsInfo.services.HIVE !== undefined) {
-        setServiceMarkup(optionsInfo.services.HIVE);
-      }
-
-      for (var servicesKey in optionsInfo.services) {
-        if (servicesKey !== 'NAGIOS' && servicesKey !== 'HIVE') {
-          setServiceMarkup(optionsInfo.services[servicesKey]);
-        }
-      }
-
-      tabs += '</ul>';
-      optionsSummary += '</div>';
-      return (isReconfigure) ? optionsSummary : tabs + optionsSummary;
-    };
-
-
-    /////////////////// End of rendering related functions /////////////////////////////
-
-    /////////////////// Submit related functions /////////////////////////////
-
-    var submitButtonSelector = '#configureClusterAdvancedSubmitButtonId';
-
-    this.setSubmitButtonSelector = function (selector) {
-      submitButtonSelector = selector;
-    };
-
-    this.clearPasswordErrors = function () {
-      for (var count = 0; count < passwordsArray.length; count++) {
-        divId = "#" + passwordsArray[count]['verificationDivId'];
-        this.clearErrorReason(divId);
-      }
-    };
-
-    this.clearErrorReasons = function (opts) {
-      for (serviceName in opts) {
-        for (propKey in opts[serviceName]['properties']) {
-          this.clearErrorReason('#' + propKey);
-        }
-      }
-      // clear the error count displayed in all service tabs
-      Y.all('.serviceErrorCount').setContent('');
-    };
-
-    this.setErrorReason = function(fieldDivId, errorReason) {
-      Y.one(fieldDivId).addClass('formInputError');
-      errorDivId = fieldDivId + 'ErrorReason';
-      Y.one(errorDivId).setContent(errorReason);
-      Y.one(errorDivId).show();
-    };
-
-    this.clearErrorReason = function(fieldDivId) {
-      Y.one(fieldDivId).removeClass('formInputError');
-      errorDivId = fieldDivId + 'ErrorReason';
-      Y.one(errorDivId).setContent('');
-      Y.one(errorDivId).hide();
-    };
-
-    this.checkPasswordCorrectness = function () {
-      var count = 0;
-      var focusId = '';
-      var passwdMatch = true;
-      var errCount = 0;
-      var errString = ''; //"<ul>";
-
-      for (count = 0; count < passwordsArray.length; count++) {
-        var divId = "#" + passwordsArray[count]['passwordDivId'];
-        var passwd = Y.one(divId).get('value');
-        divId = "#" + passwordsArray[count]['verificationDivId'];
-        var verifyPasswd = Y.one(divId).get('value');
-
-        if (passwd !== verifyPasswd) {
-          errCount++;
-          errString = "Password does not match";
-          this.setErrorReason(divId, errString);
-          if (focusId === '') {
-            focusId = divId;
-          }
-          passwdMatch = false;
-        } else {
-          this.clearErrorReason(divId, '');
-        }
-      }
-
-      errString += ''; //"</ul>";
-
-      retArray = {
-        "passwdMatched" : passwdMatch,
-        "focusOn"       : focusId,
-        "errorCount"    : errCount,
-        "errorString"   : errString
-      };
-
-      return retArray;
-    };
-
-    this.generateUserOpts = function () {
-
-      var desiredOptions = {};
-
-      var temp = Y.all("#configureClusterAdvancedDynamicRenderDivId div[name=configureClusterAdvancedPerServiceDiv]");
-      temp.each(function (selection) {
-
-        var selectionStr = "#configureClusterAdvancedDynamicRenderDivId input[name=" + selection.get('id') + "]";
-        var prop = Y.all(selectionStr);
-        var properties = {};
-        prop.each(function (proper) {
-          for (var i = 0; i < passwordsArray.length; i++) {
-            if (proper.get('id') == passwordsArray[i]['verificationDivId']) {
-              return;
-            }
-          }
-
-          var value = Y.Lang.trim(proper.get('value'));
-          if ((proper.get('type') == "checkbox")) {
-            value = proper.get('checked').toString();
-          }
-
-          var keyName = Y.Lang.trim(proper.get('id'));
-          properties[keyName] = {
-          "value" : value
-          };
-
-       });
-
-        desiredOptions[selection.get('id')] = {
-        "properties" : properties
-        };
-
-      });
-
-      App.ui.clearFormStatus();
-      this.clearErrorReasons(desiredOptions);
-
-      return desiredOptions;
-    };
-
-    // update the error count displayed in the tab for the specified service.
-    // also toggle the disabled status of the submit button.
-    this.updateServiceErrorCount = function (serviceName) {
-      var errorCount = 0;
-      var serviceDivId = '#' + serviceName;
-      var serviceDiv = Y.one(serviceDivId);
-      var errorFields = serviceDiv.all('.formInputErrorReason');
-      errorFields.each(function (errorField) {
-        if (errorField.getStyle('display') !== 'none') {
-          errorCount++;
-        }
-      });
-
-      var submitButton = Y.one(submitButtonSelector);
-
-      if (errorCount > 0) {
-        Y.one(serviceDivId + 'ErrorCount').setContent('<span style="margin-left:4px" class="badge badge-important">' + errorCount + '</span>');
-        // there is at least one error.  disable the submit button
-        submitButton.addClass('disabled');
-      } else {
-        Y.one(serviceDivId + 'ErrorCount').setContent('');
-        // if no errors at all, enable the submit button and clear error message at the top
-        if (this.getTotalErrorCount() === 0) {
-          submitButton.removeClass('disabled');
-          App.ui.clearFormStatus();
-        }
-      }
-    };
-
-    this.getTotalErrorCount = function () {
-      var totalErrorCount = 0;
-      var tabsDiv = Y.one('#configureServicesTabs');
-      var errorCountBadges = tabsDiv.all('span.badge');
-      errorCountBadges.each(function (errorCountBadge) {
-        totalErrorCount += parseInt(errorCountBadge.getHTML(), 10);
-      });
-      return totalErrorCount;
-    };
-
-    this.handleConfigureServiceErrors = function (errorResponse) {
-      var errorCounts = {};
-      var message = errorResponse.error;
-      var serviceName = '';
-      App.ui.setFormStatus(message, true, true);
-      for (propKey in errorResponse.properties)  {
-        var errorReason = errorResponse.properties[propKey].error;
-        var propDom = Y.one('#' + propKey);
-        serviceName = propDom.get('name');
-        if (errorCounts[serviceName] == null) {
-          errorCounts[serviceName] = 1;
-        } else {
-          errorCounts[serviceName] += 1;
-        }
-
-        this.setErrorReason('#' + propKey, errorReason);
-      }
-
-      // if this is being invoked from cluster install wizard, update tabs with error counts.
-      // else this is being invoked from reconfigure services so there are no tabs to update.
-      var tabs = $('#configureServicesTabs');
-      if (tabs.length > 0) {
-        var firstServiceName = null;
-        // show error counts in the tab for each service that had errors
-        for (serviceName in errorCounts) {
-          if (firstServiceName === null) {
-            firstServiceName = serviceName;
-          }
-          this.updateServiceErrorCount(serviceName, errorCounts[serviceName]);
-        }
-        // open the first tab that has an error
-        tabs.find('a[href="#' + firstServiceName + '"]').tab('show');
-      }
-      Y.one('#formStatusDivId').scrollIntoView();
-
-    }.bind(this);
-
-    this.getDeploySummaryMarkup = function (deployInfo) {
-      var deploySummary = "";
-
-      var unit, unitClass, unitLabel;
-
-      for (var serviceName in deployInfo.services) {
-        var serviceHasToBeRendered = false;
-        var masterSummary = "";
-        var propertySummary = "";
-
-        if (deployInfo.services.hasOwnProperty( serviceName )) {
-
-          var perServiceInfo = deployInfo.services[serviceName];
-
-          var configElementName = serviceName;
-          var configElementIdName = configElementName + 'Id';
-
-          if (perServiceInfo.isEnabled == false) {
-            continue;
-          }
-
-          // Render all master components
-          for (var componentIndex in perServiceInfo.components) {
-            if (!perServiceInfo.components[componentIndex].isMaster) {
-              continue;
-            }
-            var component = perServiceInfo.components[componentIndex];
-            serviceHasToBeRendered = true;
-            masterSummary += '<div class="formElement">' +
-              '<label for=' + component.componentName + 'Id>' + component.displayName + '&nbsp; : &nbsp;</label>' +
-              '<input type=text name=' + component.componentName + 'Name id=' + component.componentName + 'Id readonly=readonly value=\"' + component.hostNames.join(',') + '\">' +
-              '</div>';
-          }
-
-          for (var mPropertiesKey in perServiceInfo.properties) {
-            if (perServiceInfo.properties[mPropertiesKey].type == "NODISPLAY") {
-              continue;
-            }
-            serviceHasToBeRendered = true;
-
-            var readOnlyAttr = 'readonly=readonly';
-            var valueAttr = 'value=\"' + perServiceInfo.properties[mPropertiesKey].value + '\"';
-            var type = convertDisplayType(perServiceInfo.properties[mPropertiesKey].type);
-            if (type == "checkbox") {
-              readOnlyAttr = 'disabled="disabled"';
-              var checkVal = perServiceInfo.properties[mPropertiesKey].value;
-              if (checkVal == 'true') {
-                valueAttr = 'checked=yes';
-              } else {
-                valueAttr = '';
-              }
-            }
-
-            unit = perServiceInfo.properties[mPropertiesKey].unit;
-            unitClass = (unit != null) ? 'unit' : '';
-            unitLabel = (unit != null && unit != 'int') ? unit : '';
-
-            propertySummary += '<div class="formElement">' +
-              '<label for=' + mPropertiesKey  + 'Id>' + perServiceInfo.properties[mPropertiesKey].displayName + '</label>' +
-              '<input class="' + unitClass + '" type=' + type + ' name=' + mPropertiesKey + 'Name id=' + mPropertiesKey + 'Id ' + readOnlyAttr + ' ' + valueAttr + '>' +
-              '<label class="unit">' + unitLabel + '</label>' +
-              '</div>';
-          }
-        }
-
-        if (serviceHasToBeRendered) {
-          deploySummary += '<fieldset>' + '<legend>' + perServiceInfo.displayName + '</legend>';
-          deploySummary += masterSummary;
-          deploySummary += propertySummary;
-          deploySummary += '</fieldset><br/>';
-        }
-      }
-
-      return deploySummary;
-
-    };
-
-  };
-
-  // export
-  App.ui.configureServicesUtil = new ConfigureServicesUtil();
-})();
-

+ 0 - 54
hmc/js/createCluster.js

@@ -1,54 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-function handleCreateClusterError (errorResponse) {
-  globalYui.one("#clusterNameId").addClass('formInputError');
-  App.ui.setFormStatus(errorResponse.error, true);
-  globalYui.one("#clusterNameId").focus();
-}
-
-globalYui.one('#createClusterSubmitButtonId').on('click',function (e) {
-
-      var createClusterData = {
-        "clusterName" : globalYui.Lang.trim(globalYui.one("#clusterNameId").get('value')),
-      };
-
-      globalYui.log("Cluster Name: "+globalYui.Lang.dump(createClusterData));
-
-      /* Always clear the slate with each submit. */
-      App.ui.clearFormStatus();
-      globalYui.one("#clusterNameId").removeClass('formInputError');
-
-      App.transition.submitDataAndProgressToNextScreen(
-        '../php/frontend/createCluster.php', createClusterData, e.target, 
-        '#createClusterCoreDivId', '#addNodesCoreDivId', InstallationWizard.AddNodes.render,
-        handleCreateClusterError );
-});
-
-/* Signify that the containing application is ready for business. */
-App.ui.hideLoadingOverlay();
-
-/* At the end of the installation wizard, we hide 
- * #installationWizardProgressBarDivId, so make sure we explicitly show
- * it at the beginning, to ensure we work correctly when user flow 
- * (potentially) cycles back here.
- */
-globalYui.one('#installationWizardProgressBarDivId').setStyle('display', 'block');

+ 0 - 58
hmc/js/deployAddedNodesProgress.js

@@ -1,58 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-renderDeployAddedNodesProgress = function (context) {
-
-  /* At this point, our users are done with the installation wizard
-   * and have asked for a deploy, so there's no going back - remove
-   * all traces of #installationWizardProgressBarDivId.
-   */
-  var progressBarDiv = Y.one('#installationWizardProgressBarDivId');
-  if (progressBarDiv) {
-    progressBarDiv.hide();
-  }
-
-  var successMessage =
-    '<p>' +
-      'Successfully added new nodes to your cluster.<br><a href="index.php" id="addMoreNodesSuccessLink" style="margin-top:10px" class="btn btn-large">Continue</a>' +
-      '</p>';
-
-  var failureMessage =
-    '<p>' +
-      'Failed to add new nodes to the cluster.<br>Take a look at the ' +
-      '<a href="javascript:void(null)" id="txnProgressWidgetShowLogsLink">deploy logs</a>' +
-      ' to find out what might have gone wrong.' +
-      '<a href="index.php" class="btn btn-large" style="margin-top:10px" id="addMoreNodesFailedLink">' +
-      'Continue' +
-      '</a>' +
-      '</p>';
-
-  var config = {
-    context: context,
-    title: 'Add Nodes Progress',
-    successMessage: successMessage,
-    failureMessage: failureMessage
-  };
-
-  var progressWidget = new App.ui.TxnProgressWidget(config);
-
-  progressWidget.show();
-};

+ 0 - 87
hmc/js/deployProgress.js

@@ -1,87 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-renderDeployProgress = function (context) {
-
-  /* At this point, our users are done with the installation wizard
-   * and have asked for a deploy, so there's no going back - remove
-   * all traces of #installationWizardProgressBarDivId.
-   */
-  var progressBarDiv = Y.one('#installationWizardProgressBarDivId');
-  if (progressBarDiv) {
-    progressBarDiv.hide();
-  }
-
-  var hmcRestartMsg = '';
-  if (context.nagiosGangliaCoHosted != null && context.nagiosGangliaCoHosted) {
-    hmcRestartMsg = '<span style="color:red"><strong>Note:</strong> You need to restart '
-      + App.props.managerServiceName + ' as Nagios/Ganglia are co-hosted on this server.<br>Restart '
-      + App.props.managerServiceName + ' by executing <i>sudo service ' + App.props.managerServiceName.toLowerCase()
-      + ' restart</i> from the shell.</span><br>After that is done, ';
-  } else {
-    hmcRestartMsg = 'Please ';
-  }
-
-  hmcRestartMsg +=
-    '<a href="javascript:void(null)" id="clustersListLinkId">' +
-      'click here to start managing your cluster.' +
-      '</a>';
-
-  var successMessage =
-    '<p>' +
-      'Your cluster is ready! <br/>' + hmcRestartMsg +
-      '</p>';
-
-  var failureMessage =
-    '<p>' +
-      'Failed to finish setting up the cluster.<br>Take a look at the ' +
-      '<a href="javascript:void(null)" id="txnProgressWidgetShowLogsLink">deploy logs</a>' +
-      ' to find out what might have gone wrong.' +
-      '<a href="javascript:void(null)" class="btn btn-large" style="margin-top:10px" id="restartInstallationWizardLinkId">' +
-      'Reinstall Cluster' +
-      '</a>' +
-      '</p>';
-
-  var onSuccess = function (txnProgressWidget) {
-    Y.one('#clustersListLinkId').on('click', function (e) {
-      document.location.href = App.props.homeUrl;
-    });
-  };
-
-  var onFailure = function (txnProgressWidget) {
-    Y.one('#restartInstallationWizardLinkId').on('click', function (e) {
-      document.location.href = App.props.homeUrl;
-    });
-  };
-
-  var config = {
-    context: context,
-    title: 'Deployment Progress',
-    successMessage: successMessage,
-    failureMessage: failureMessage,
-    onSuccess: onSuccess,
-    onFailure: onFailure
-  };
-
-  var progressWidget = new App.ui.TxnProgressWidget(config);
-
-  progressWidget.show();
-};

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 6
hmc/js/ext/bootstrap.min.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 1
hmc/js/ext/jquery.min.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 33
hmc/js/ext/sinon.min.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 6
hmc/js/ext/yui-min.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 6
hmc/js/ext/yuiCombined.js


+ 0 - 124
hmc/js/installationWizard.js

@@ -1,124 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var InstallationWizardStages = {
-
-  /* The keys in 'stages' need to be kept in-sync with the <li> elements in 
-   * the markup.
-   */
-
-  stages : {
-    'createClusterStageId' : {
-      divSelector : '#createClusterCoreDivId'
-    },
-    'addNodesStageId' : {
-      divSelector : '#addNodesCoreDivId'
-    },
-    'selectServicesStageId' : {
-      divSelector : '#selectServicesCoreDivId'
-    },
-    'assignHostsStageId' : {
-      divSelector : '#assignHostsCoreDivId'
-    },
-    'configureClusterStageId' : {
-      divSelector : '#configureClusterCoreDivId'
-    },
-    'configureClusterAdvancedStageId' : {
-      divSelector : '#configureClusterAdvancedCoreDivId'
-    },
-    'deployClusterStageId' : {
-      divSelector : '#deployCoreDivId'
-    }
-  },
-
-  transitionToCachedStage : 
-    function (currentStageId, cachedStageId) {
-
-      App.ui.clearFormStatus();
-
-      globalYui.log("In transitionToCachedStage: " + currentStageId + "->" + cachedStageId);
-      App.transition.swapStageVisibilities( this.stages[currentStageId].divSelector,
-      this.stages[cachedStageId].divSelector );
-    }
-};
-
-/* Setup the behavior for #installationWizardProgressBarListId */
-globalYui.one('#installationWizardProgressBarListId').delegate('click', function (e) {
-
-  /* Important: When we specify CSS filters to delegate, we need to access 
-   * the filtered CSS element (which is what we really care to get at) via
-   * 'this', not e.target. 
-   *
-   * Only do anything with clicks on stages that have previously been visited.
-   */
-  if( this.hasClass('installationWizardVisitedStage') ) {
-
-    var newCurrentStage = this;
-    var nextStage = null;
-
-    /* Mark the clicked-on stage as 'current'. */
-    newCurrentStage.replaceClass( 'installationWizardVisitedStage', 'installationWizardCurrentStage' );
-    globalYui.log("Marked " + newCurrentStage.get('id') + "from visited to current");
-
-    var currentStage = newCurrentStage;
-
-    while( nextStage = currentStage.next('.installationWizardVisitedStage') ) {
-
-      /* Mark all the following 'visited' stages as 'unvisited'. */
-      nextStage.replaceClass( 'installationWizardVisitedStage', 'installationWizardUnvisitedStage' );
-    globalYui.log("Marked " + nextStage.get('id') + "from visited to unvisited");
-
-      currentStage = nextStage;
-    }
-
-    var previouslyCurrentStage = currentStage.next();
-
-    /* And finally, also mark the up-until-now 'current' stage as unvisited. 
-     * We know at this point that currentStage points to the last 
-     * previously-visited stage, and the last previously-visited stage is always
-     * followed immediately by the up-until-now 'current' stage, so no fancier
-     * checks are required - just depend on the invariants.
-     */
-    previouslyCurrentStage.replaceClass( 'installationWizardCurrentStage', 'installationWizardUnvisitedStage' );
-    globalYui.log("Marked " + previouslyCurrentStage.get('id') + "from current to unvisited");
-
-    /* Finally, flip to this newly 'current' stage, from the previously current one. */
-    InstallationWizardStages.transitionToCachedStage( previouslyCurrentStage.get('id'), newCurrentStage.get('id') );
-  }
-}, 'li' ); 
-
-globalYui.one('#installationMainFormsDivId').delegate('key', function (e) {
-    /* Prevent the refresh of the page. */
-    e.preventDefault();
-
-    /* We don't have identically structured markup around all our 
-     * 'a.btn' elements, so we need this bubble-up search logic. 
-     */
-    var currentButtonSibling = e.target.ancestor();
-
-    while( !currentButtonSibling.next('a.btn') ) {
-      currentButtonSibling = currentButtonSibling.ancestor();
-    }
-
-    /* Generate the click. */
-    currentButtonSibling.next('a.btn').simulate('click');
-
-}, 'enter' );

+ 0 - 638
hmc/js/manageServices.js

@@ -1,638 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/* Declarations of global data. */
-var fetchClusterServicesPoller;
-var clusterServices;
-
-// Storing globally for the sake of multiple screens in reconfigure
-var localReconfigureServiceData = {};
-var remoteReconfigureServiceData = {};
-var confirmationDataPanelBodyContent = '';
-
-var confirmationDataPanel;
-
-var panelNoButton = {
-  value: 'Cancel',
-  action: function (e) {
-    e.preventDefault();
-    hideAndDestroyPanel();
-  },
-  section: 'footer'
-};
-
-var panelYesButton;
-
-// Only one service can be reconfigured at a time.
-var reconfigLevelOneYesButton;
-var reconfigLevelTwoNoButton;
-
-function showPanel() {
-  showPanel(function() {});
-}
-
-function showPanel(postShowFn) {
-  confirmationDataPanel.set('y', 200);
-  confirmationDataPanel.set('x', (globalYui.one('body').get('region').width - confirmationDataPanel.get('width'))/2);
-  confirmationDataPanel.show();
-  if (postShowFn != null) {
-    postShowFn.call();
-  }
-}
-
-function hidePanel(postHideFn) {
-  if (postHideFn != null) {
-    postHideFn.call();
-  }
-}
-
-function hideAndDestroyPanel() {
-  hidePanel(function() {
-    confirmationDataPanel.hide();
-    confirmationDataPanel.destroy();
-  });
-}
-
-function getTitleForReconfiguration(serviceName) {
-  return 'Make Configuration Changes for ' + serviceName;
-}
-
-function setupReconfigureFirstScreen(serviceName) {
-  var panelTitle = getTitleForReconfiguration(serviceName);
-  confirmationDataPanel.set( 'headerContent', panelTitle);
-  confirmationDataPanel.set( 'bodyContent', confirmationDataPanelBodyContent);
-  // Remove buttons from previous stage
-  confirmationDataPanel.removeButton(0);
-  confirmationDataPanel.removeButton(0);
-  confirmationDataPanel.addButton( panelNoButton );
-  confirmationDataPanel.addButton( reconfigLevelOneYesButton );
-}
-
-function setupReconfigureSecondScreen(serviceName) {
-  var affectedServices = clusterServices[serviceName].dependencies;
-  var dependents = clusterServices[serviceName].dependents;
-  for (dep in dependents) {
-    affectedServices.push(dependents[dep]);
-  }
-  var panelContent = 'Affected services:' + getAffectedDependenciesMarkup(affectedServices, serviceName, 'reconfigure');
-  var panelTitle = 'Review changes to ' + serviceName + '\'s configuration';
-  confirmationDataPanel.set( 'headerContent', panelTitle);
-  confirmationDataPanel.set( 'bodyContent', panelContent);
-  // Remove buttons from previous stage
-  confirmationDataPanel.removeButton(0);
-  confirmationDataPanel.removeButton(0);
-  confirmationDataPanel.addButton( reconfigLevelTwoNoButton );
-  confirmationDataPanel.addButton( panelYesButton );
-}
-
-// Clean up the affected-services list to only include appropriate installed long-running services
-function getAffectedDependenciesMarkup(affectedServices, serviceName, action) {
-
-  var affectedDependenciesMarkup = '';
-
-  var serviceDisplayName = clusterServices[serviceName].displayName;
-
-  var deps = affectedServices;
-  affectedServices = [];
-  for (dep in deps) {
-    var svc = deps[dep];
-    if (clusterServices.hasOwnProperty(svc) && (clusterServices[svc].isEnabled == 1) && clusterServices[svc].attributes.runnable ) {
-      affectedServices.push(svc);
-    }
-  }
-
-  var dependencyMarkup = "";
-  for (affectedSrvc in affectedServices) {
-    if (clusterServices[affectedServices[affectedSrvc]].attributes.runnable) {
-      dependencyMarkup += '<tr><td>' + clusterServices[affectedServices[affectedSrvc]].displayName + '</td><td>' + App.util.titleCase(clusterServices[affectedServices[affectedSrvc]].state) + '</td></tr>';
-    }
-  }
-  if (dependencyMarkup != '') {
-    // Add this service at the top of the list
-    dependencyMarkup = '<table><thead><th>Service name</th><th>Current state</th></thead><tr><td>' + serviceDisplayName + '</td><td>' + App.util.titleCase(clusterServices[serviceName].state) + '</td></tr>' + dependencyMarkup + '</table>';
-    affectedDependenciesMarkup += 'Including this service and all its recursive dependencies, the following is the list of services that will be affected by ' + action + ' of ' + serviceName + ' :' +
-      '<br/>' +
-      '<div id="manageServicesDisplayDepsOnAction">' +
-      dependencyMarkup +
-      '</div>';
-  }
-  return affectedDependenciesMarkup;
-}
-
-function setupStartServiceScreen(serviceName) {
-  setupStartStopServiceScreen('start', serviceName);
-}
-
-function setupStopServiceScreen(serviceName) {
-  setupStartStopServiceScreen('stop', serviceName);
-}
-
-function setupStartStopServiceScreen(action, serviceName) {
-
-  var serviceDisplayName = clusterServices[serviceName].displayName;
-  var affectedServices;
-  var confirmationDataPanelTitle;
-
-  if ( action == 'start') {
-    confirmationDataPanelTitle = 'Starting ' + serviceDisplayName;
-    confirmationDataPanelBodyContent = "We are now going to start " + serviceDisplayName + "...<br/><br/>";
-    affectedServices = clusterServices[serviceName].dependencies;
-  } else if (action == 'stop') {
-    confirmationDataPanelTitle = 'Stopping ' + serviceDisplayName;
-    confirmationDataPanelBodyContent = "We are now going to stop " + serviceDisplayName + "...<br/><br/>";
-    affectedServices = clusterServices[serviceName].dependents;
-  }
-
-  confirmationDataPanelBodyContent += getAffectedDependenciesMarkup(affectedServices, serviceName, action);
-  confirmationDataPanelBodyContent = '<div id="confirmationDataPanelBodyContent">' + confirmationDataPanelBodyContent + '</div>';
-
-  confirmationDataPanel.set( 'headerContent', confirmationDataPanelTitle);
-  confirmationDataPanel.set( 'bodyContent', confirmationDataPanelBodyContent);
-  confirmationDataPanel.set( 'height', 400);
-  confirmationDataPanel.set( 'width', 800);
-
-  confirmationDataPanel.addButton( panelNoButton);
-  confirmationDataPanel.addButton( panelYesButton );
-
-  showPanel();
-}
-
-function setupStartAllServicesScreen() {
-  setupStartStopAllServicesScreen('startAll');
-}
-
-function setupStopAllServicesScreen() {
-  setupStartStopAllServicesScreen('stopAll');
-}
-
-function setupStartStopAllServicesScreen(action) {
-  var confirmationDataPanelTitle;
-  var confirmationDataPanelBodyContent;
-
-  if ( action == 'startAll' ) {
-    confirmationDataPanelTitle = 'Start All Services';
-    confirmationDataPanelBodyContent = "We are now going to start all services in the cluster";
-  } else if ( action == 'stopAll' ) {
-    confirmationDataPanelTitle = 'Stop All Services';
-    confirmationDataPanelBodyContent = "We are now going to stop all the services in the cluster";
-  }
-
-  confirmationDataPanel.set( 'headerContent', confirmationDataPanelTitle);
-  confirmationDataPanel.set( 'bodyContent', confirmationDataPanelBodyContent);
-  confirmationDataPanel.set( 'height', 400);
-  confirmationDataPanel.set( 'width', 800);
-
-  confirmationDataPanel.addButton( panelNoButton);
-  confirmationDataPanel.addButton( panelYesButton );
-  showPanel();
-}
-
-function setupReconfigureScreens(serviceName) {
-  // TODO: Needed for others too?
-  /* First, (temporarily) stop any further fetches. */
-  fetchClusterServicesPoller.stop();
-
-  reconfigLevelOneYesButton = {
-    value: 'Apply Changes',
-    action: function (e) {
-      e.preventDefault();
-
-      localReconfigureServiceData = App.ui.configureServicesUtil.generateUserOpts();
-      var remoteProps = remoteReconfigureServiceData.services[serviceName].properties;
-      var localProps = localReconfigureServiceData[serviceName].properties;
-      var allEqual = true;
-      for (key in localProps) {
-        var remoteValue = remoteProps[key].value;
-        var localValue = localProps[key]["value"];
-        if ( localValue != remoteValue) {
-          allEqual = false;
-        }
-      }
-      if (allEqual) {
-        alert("You haven't made any changes");
-        return;
-      }
-      hidePanel(function() {
-
-        // Store the requestData and the html
-        confirmationDataPanelBodyContent = confirmationDataPanel.get( 'bodyContent' );
-        setupReconfigureSecondScreen(serviceName);
-        showPanel();
-      });
-    },
-    classNames: 'okButton',
-    section: 'footer'
-  };
-
-  reconfigLevelTwoNoButton = {
-    value: 'Go back and re-edit',
-    action: function (e) {
-      e.preventDefault();
-
-      hidePanel(function() {
-        setupReconfigureFirstScreen(serviceName);
-        showPanel();
-      });
-    },
-    section: 'footer'
-  };
-
-  // Render first with a loading image and then get config items
-  confirmationDataPanelBodyContent = 
-    "<img id=errorInfoPanelLoadingImgId class=loadingImg src=../images/loading.gif />";
-  var confirmationDataPanelTitle = getTitleForReconfiguration(serviceName);
-  confirmationDataPanel.set( 'height', 500);
-  confirmationDataPanel.set( 'width', 1000);
-  confirmationDataPanel.set( 'headerContent', confirmationDataPanelTitle);
-  confirmationDataPanel.set( 'bodyContent', confirmationDataPanelBodyContent );
-  showPanel();
-
-  App.transition.executeStage( '../php/frontend/fetchClusterServices.php?clusterName=' + clusterName +
-    '&getConfigs=true&serviceName=' + serviceName, function (serviceConfigurationData) {
-
-    // Store the remote data
-    remoteReconfigureServiceData = serviceConfigurationData;
-
-    var serviceConfigurationMarkup = App.ui.configureServicesUtil.getOptionsSummaryMarkup(serviceConfigurationData, true);
-
-    if( globalYui.Lang.trim( serviceConfigurationMarkup).length == 0 ) {
-      serviceConfigurationMarkup = '<p>There is nothing to reconfigure for this service.</p>';
-    }
-    else {
-      /* Augment confirmationDataPanel with the relevant buttons only if there 
-       * is something of value to show. 
-       */
-      confirmationDataPanel.addButton( panelNoButton );
-      confirmationDataPanel.addButton( reconfigLevelOneYesButton );
-    }
-
-    /* XXX Note that this must be kept in-sync with the corresponding markup
-     * on the InstallationWizard page.
-     */
-    confirmationDataPanelBodyContent = 
-      '<div id=formStatusDivId class=formStatusBar style="display:none">'+
-        'Placeholder' +
-      '</div>' +
-      '<div id=configureClusterAdvancedCoreDivId>' + 
-        '<form id=configureClusterAdvancedFormId>' +
-          '<fieldset id=configureClusterAdvancedFieldSetId>' +
-            '<div id=configureClusterAdvancedDynamicRenderDivId>' +
-              serviceConfigurationMarkup +
-            '</div>' +
-          '</fieldset>' +
-        '</form>' +
-      '</div>';
-
-    confirmationDataPanelBodyContent = '<div id="confirmationDataPanelBodyContent">' + confirmationDataPanelBodyContent + '</div>';
-
-    confirmationDataPanel.set( 'bodyContent', confirmationDataPanelBodyContent );
-  });
-}
-
-function performServiceManagement( action, serviceName, confirmationDataPanel ) {
-
-  /* First, (temporarily) stop any further fetches. */
-  fetchClusterServicesPoller.stop();
-
-  var manageServicesRequestData = {
-    action: action, 
-    services: {}
-  };
-
-  if( action == "reconfigure" ) {
-    manageServicesRequestData.services = localReconfigureServiceData;
-  }
-  else {
-    /* Need to explicitly set a key named for serviceName this way because it's
-     * a variable - in the future, the value will be a filled-out array (for
-     * now, we only support managing a single service at a time). 
-     */
-    manageServicesRequestData.services[serviceName] = {};
-  }
-
-  globalYui.io( "../php/frontend/manageServices.php?clusterName=" + clusterName, {
-    method: 'POST',
-    data: globalYui.JSON.stringify(manageServicesRequestData),
-    timeout: App.io.DEFAULT_AJAX_TIMEOUT_MS,
-    on: {
-      success: function(x, o) {
-
-        globalYui.log("RAW JSON DATA: " + o.responseText);
-
-        var manageServicesResponseJson;
-
-        try {
-          manageServicesResponseJson = globalYui.JSON.parse(o.responseText);
-        }
-        catch (e) {
-          alert("JSON Parse failed!");
-          return;
-        }
-
-        globalYui.log(globalYui.Lang.dump(manageServicesResponseJson));
-
-        /* Check that manageServicesResponseJson actually indicates success. */
-        if( manageServicesResponseJson.result == 0 ) {
-
-          /* Only on success should we destroy confirmationDataPanel - on 
-           * failure, we depend on the fact that there'll be errors shown 
-           * inside the panel that the user will want/need to interact with.
-           */
-          hideAndDestroyPanel();
-
-          renderManageServicesProgress( manageServicesResponseJson.response );
-        }
-        else {
-          /* No need to hide confirmationDataPanel here - there are errors 
-           * that need to be handled. 
-           */
-          if (action == 'reconfigure') {
-
-            hidePanel(function() {
-              setupReconfigureFirstScreen(serviceName);
-              showPanel( function() {
-                App.ui.configureServicesUtil.handleConfigureServiceErrors( manageServicesResponseJson );
-            });
-          });
-          } else {
-            // Can't do anything for others
-            alert('Got error during ' + action + ' : ' + globalYui.Lang.dump(manageServicesResponseJson));
-          }
-        }
-      },
-      failure: function(x, o) {
-        alert(App.io.DEFAULT_AJAX_ERROR_MESSAGE);
-      }
-    }
-  });
-}
-
-function getServiceConfigurationMarkup( serviceConfigurationData ) {
-
-  return serviceConfigurationMarkup;
-}
-
-function serviceManagementActionClickHandler( action, serviceName ) {
-
-  // Reinit the global content
-  confirmationDataPanelBodyContent = '';
-
-  var confirmationDataPanelTitle = ''; // Set title later
-
-  /* Create the panel that'll display our confirmation/data dialog. */
-  confirmationDataPanel = 
-      App.ui.createInfoPanel(confirmationDataPanelTitle);
-
-  panelYesButton = {
-    value: 'OK',
-    action: function (e) {
-      e.preventDefault();
-      performServiceManagement( action, serviceName, confirmationDataPanel );
-    },
-    classNames: 'okButton',
-    section: 'footer'
-  };
-
-  if ( action == 'start') {
-    setupStartServiceScreen(serviceName);
-  } else if ( action == 'stop') {
-    setupStopServiceScreen(serviceName);
-  } else if( action == 'startAll' ) {
-    setupStartAllServicesScreen();
-  } else if( action == 'stopAll' ) {
-    setupStopAllServicesScreen();
-  } else if( action == 'reconfigure' ) {
-    setupReconfigureScreens(serviceName);
-  }
-}
-
-function deduceServiceManagementEntryCssClass( serviceInfo ) {
-
-  var serviceManagementEntryCssClass = '';
-
-  var serviceState = serviceInfo.state;
-
-  if( serviceState.match(/^stop/i) || serviceState.match(/^fail/i) ) {
-    serviceManagementEntryCssClass = "serviceManagementEntryStopped";
-  }
-  else if( serviceState.match(/^start/i) ) {
-    serviceManagementEntryCssClass = "serviceManagementEntryStarted";
-  }
-  else if( serviceState.match(/^install/i) ) {
-    serviceManagementEntryCssClass = "serviceManagementEntryInstalled";
-  }
-  else if( serviceState.match(/^uninstall/i) ) {
-    serviceManagementEntryCssClass = "serviceManagementEntryUninstalled";
-  }
-
-//  globalYui.log( "Picking CSS class for" + serviceInfo.serviceName + ": " + serviceManagementEntryCssClass );
-
-  return serviceManagementEntryCssClass;
-}
-
-function generateServiceManagementEntryMarkup( serviceName, serviceInfo ) {
-  
-  var generatedServiceManagementEntryMarkup = '';
-
-  var serviceAttributes = serviceInfo.attributes;
-
-  /* Only generate a Service Management entry for services that are:
-   *
-   * a) enabled
-   * b) runnable 
-   * c) meant to be displayed
-   */
-  if( (serviceInfo.isEnabled == true) && !serviceAttributes.noDisplay ) {
-
-    var serviceManagementEntryCssClass = deduceServiceManagementEntryCssClass( serviceInfo );
-
-    generatedServiceManagementEntryMarkup += 
-
-      '<li class="serviceManagementEntry '+ serviceManagementEntryCssClass + '">' + 
-        '<div id="serviceManagementFor' + serviceName + '">' + 
-          '<span class="serviceManagementEntryNameContainer">' +
-            '<a href="javascript:void(null)" name="' + serviceName + '" class="serviceManagementEntryName">' + 
-              serviceInfo.displayName +
-            '</a>' +
-          '</span>' +
-          '<div class="serviceManagementEntryStateContainer">' +
-            App.util.titleCase(serviceInfo.state) +
-          '</div>' +
-          '<div class="serviceManagementEntryActionsContainer">';
-
-    if( serviceAttributes.runnable ) {
-
-      var serviceManagementEntryAnchorName = '';
-      var serviceManagementEntryAnchorTitle = '';
-      var serviceManagementEntryAnchorCssClasses = 'serviceManagementEntryAction btn '; 
-      var serviceManagementEntryIconCssClass = '';
-
-      /* Already-started/stopped services shouldn't allow a start/stop operation on them. */
-      if( serviceInfo.state == 'STOPPED' || serviceInfo.state == 'FAILED') {
-        serviceManagementEntryAnchorName = 'start';
-        serviceManagementEntryAnchorTitle = 'Start';
-        serviceManagementEntryAnchorCssClasses += 'serviceManagementEntryActionStart';
-        serviceManagementEntryIconCssClass = 'iconic-play';
-      } 
-      else if ( serviceInfo.state == 'STARTED' ) {
-        serviceManagementEntryAnchorName = 'stop';
-        serviceManagementEntryAnchorTitle = 'Stop';
-        serviceManagementEntryAnchorCssClasses += 'serviceManagementEntryActionStop';
-        serviceManagementEntryIconCssClass = 'iconic-stop';
-      }
-      else if ( serviceInfo.state == 'STOPPING') {
-        serviceManagementEntryAnchorName = 'start';
-        serviceManagementEntryAnchorTitle = 'Start';
-        serviceManagementEntryAnchorCssClasses += 'serviceManagementEntryActionStart disabled';
-        serviceManagementEntryIconCssClass = 'iconic-start disabled';
-      }
-      else if ( serviceInfo.state == 'STARTING') {
-        serviceManagementEntryAnchorName = 'stop';
-        serviceManagementEntryAnchorTitle = 'Stop';
-        serviceManagementEntryAnchorCssClasses += 'serviceManagementEntryActionStop disabled';
-        serviceManagementEntryIconCssClass = 'iconic-stop disabled';
-      }
-      
-      generatedServiceManagementEntryMarkup += 
-        '<a href="javascript:void(null)" name="' + serviceManagementEntryAnchorName + '" ' +
-        'title="' + serviceManagementEntryAnchorTitle + '" ' +
-        'class="' + serviceManagementEntryAnchorCssClasses + '"><i class="' + serviceManagementEntryIconCssClass + '"></i></a> ';
-    }
-
-    var notReconfigurable = [ 'PIG', 'SQOOP', 'OOZIE', 'TEMPLETON', 'GANGLIA', 'HIVE' ];
-    var reconfigureClass;
-    if (globalYui.Array.indexOf(notReconfigurable, serviceName) >= 0) {
-      reconfigureClass = 'serviceManagementEntryActionReconfigure disabled';
-    } else {
-      reconfigureClass = 'serviceManagementEntryActionReconfigure';
-    }
-  
-    generatedServiceManagementEntryMarkup += '<a href="javascript:void(null)" name="reconfigure" title="Reconfigure" ' +
-              'class="btn serviceManagementEntryAction ' + reconfigureClass + '"><i class="iconic-cog"></i></a>' +
-            '</div>' +
-          '</div>' +
-        '</li>';
-  }
-
-  return generatedServiceManagementEntryMarkup;
-}
-
-// Do Not Remove --> We'll uncomment this section when the Service names link to something meaningful.
-//
-// /* Register click handlers for the service links themselves. */
-// globalYui.one('#serviceManagementListId').delegate('click', function (e) {
-//     alert(this.getAttribute('name'));
-// }, 'li.serviceManagementEntry span.serviceManagementEntryNameContainer a.serviceManagementEntryName' );
-
-/* Register click handlers for the global-action buttons. */
-globalYui.one('#serviceManagementGlobalActionsDivId').delegate('click', function (e) {
-    var action = this.getAttribute('name');
-
-    serviceManagementActionClickHandler( action );
-}, 'button' );
-
-/* Register click handlers for the action links for each service. */
-globalYui.one('#serviceManagementListId').delegate('click', function (e) {
-    var action = this.getAttribute('name');
-    var serviceName = this.ancestor('li.serviceManagementEntry').
-                    one('span.serviceManagementEntryNameContainer a.serviceManagementEntryName').getAttribute('name');
-
-    serviceManagementActionClickHandler( action, serviceName );
-}, 'li.serviceManagementEntry div.serviceManagementEntryActionsContainer a.serviceManagementEntryAction' );
-
-/* Main() */
-
-/* The clusterName variable is set in the Javascript scaffolding spit out by manageServices.php */
-var fetchClusterServicesPollerContext = {
-  source: '../php/frontend/fetchClusterServices.php',
-  schema: {
-    metaFields: {
-      services: 'response.services'
-    }
-  },
-  request: '?clusterName=' + clusterName,
-  /* TODO XXX Change this from 5 seconds to 1 minute. */
-  pollInterval: App.io.DEFAULT_POLLING_INTERVAL_MS,
-  maxFailedAttempts: 5
-};
-
-var fetchClusterServicesPollerResponseHandler = {
-  success: function (e, pdp) {
-    /* Clear the screen of the loading image (in case it's currently showing). */
-    App.ui.hideLoadingOverlay();
-
-    /* The data from our backend. */
-    clusterServices = e.response.meta.services;
-
-    /* What we're here to render. */
-    var serviceManagementMarkup = '';
-
-    // Separate block for client-only software
-    /*
-    var clientOnlySoftwareMarkup = '';
-    for (var serviceName in clusterServices) {
-      var serviceInfo = clusterServices[serviceName];
-      if (clusterServices.hasOwnProperty(serviceName) && !serviceInfo.attributes.runnable) {
-        clientOnlySoftwareMarkup += generateServiceManagementEntryMarkup( serviceName, serviceInfo );
-      }
-    }
-    if (clientOnlySoftwareMarkup != '') {
-      serviceManagementMarkup += '<div class="serviceManagementGroup"><h2>Client-only software</h2><ul>';
-      serviceManagementMarkup += clientOnlySoftwareMarkup;
-      serviceManagementMarkup += '</div>';
-    }
-    */
-
-    // Real services with server side components
-    serviceManagementMarkup += '<div class="serviceManagementGroup" style="margin-top:30px"><ul>';
-    for (var serviceName in clusterServices) {
-      var serviceInfo = clusterServices[serviceName];
-      if (clusterServices.hasOwnProperty(serviceName) && serviceInfo.attributes.runnable) {
-        serviceManagementMarkup += generateServiceManagementEntryMarkup( serviceName, serviceInfo );
-      }
-    }
-    serviceManagementMarkup += '</ul></div>';
-
-    /* Link the newly-generated serviceManagementMarkup into the DOM. */
-    globalYui.one("#serviceManagementDynamicRenderDivId").setContent( serviceManagementMarkup );
-
-    /* If serviceManagementMarkup is non-empty, unveil the contents of 
-     * #serviceManagementGlobalActionsDivId (which contains the StartAll 
-     * and StopAll buttons) as well.
-     */
-    if( globalYui.Lang.trim( serviceManagementMarkup ).length > 0 ) {
-      globalYui.one("#serviceManagementGlobalActionsDivId").setStyle( 'display', 'block' );
-    }
-  },
-
-  failure: function (e, pdp) {
-    /* Clear the screen of the loading image (in case it's currently showing). */
-    App.ui.hideLoadingOverlay();
-
-    alert('Failed to fetch cluster services!');
-  }
-};
-
-fetchClusterServicesPoller = new App.io.PeriodicDataPoller
-  ( fetchClusterServicesPollerContext, fetchClusterServicesPollerResponseHandler );
-
-/* Kick the polling loop off. */
-fetchClusterServicesPoller.start();

+ 0 - 50
hmc/js/manageServicesProgress.js

@@ -1,50 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-renderManageServicesProgress = function (context) {
-
-  var onSuccess = function (txnProgressWidget) {
-    /* Resume polling for information about the cluster's services. */
-    if (typeof fetchClusterServicesPoller != 'undefined') {
-      fetchClusterServicesPoller.start();
-    }
-  };
-
-  var onClose = function (e) {
-    var uriPath = '/hmc/html/manageServices.php';
-    var uriPathRegEx = new RegExp(uriPath);
-
-    if (!window.location.pathname.match(uriPathRegEx)) {
-      document.location.href = uriPath + '?clusterName=' + context.clusterName;
-    }
-  };
-
-  var config = {
-    context: context,
-    title: 'Manage Services',
-    onSuccess: onSuccess,
-    onClose: onClose
-  };
-
-  var progressWidget = new App.ui.TxnProgressWidget(config);
-
-  progressWidget.show();
-};

+ 0 - 85
hmc/js/reviewAndDeploy.js

@@ -1,85 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var kerbConfirmDataPanel;
-var panelOkButton = {
-  value: 'DEPLOY',
-  action: function (e) {
-    e.preventDefault();
-    App.ui.destroyInfoPanel(kerbConfirmDataPanel);
-    deployServices();
-  },
-  classNames: 'okButton',
-  section: 'footer'
-};
-
-function renderDeploySummary(deployInfo) {
-  App.props.securityType = deployInfo.services.KERBEROS.properties.kerberos_install_type.value;
-  var deploySummary = App.ui.configureServicesUtil.getDeploySummaryMarkup(deployInfo);
-  Y.log("Final HTML: " + Y.Lang.dump(deploySummary));
-  Y.one("#deployDynamicRenderDivId").setContent( deploySummary );
-  App.ui.hideLoadingOverlay();
-  Y.one("#deployCoreDivId").show();
-  kerbConfirmDataPanel = App.ui.createInfoPanel("A note on kerberos settings:");
-  var panelbody = '<div>'
-    + '<h1>'
-    + 'Keytab Path '
-    + deployInfo.services.KERBEROS.properties.keytab_path.value
-    + '</h1>';
-  kerbConfirmDataPanel.set('bodyContent',panelbody);
-  kerbConfirmDataPanel.addButton( panelOkButton );
-}
-
-function deployServices (){
-  var deployRequestData = {};
-  var url = "../php/frontend/deploy.php?clusterName=" + App.props.clusterName;
-  var requestData = deployRequestData;
-  var submitButton = Y.one('#deploySubmitButtonId');
-  var thisScreenId = "#deployCoreDivId";
-  var nextScreenId = "#txnProgressCoreDivId";
-  var nextScreenRenderFunction = renderDeployProgress;
-  App.transition.submitDataAndProgressToNextScreen(url, requestData, submitButton, thisScreenId, nextScreenId, nextScreenRenderFunction);
-}
-
-function showKerbPanel(postShowFn, confirmationDataPanel) {
-  confirmationDataPanel.set('y', 200);
-  confirmationDataPanel.set('x', (globalYui.one('body').get('region').width - confirmationDataPanel.get('width')) / 2);
-  confirmationDataPanel.show();
-  if (postShowFn != null) {
-    postShowFn.call();
-  }
-}
-
-Y.one('#deploySubmitButtonId').on('click',function (e) {
-  e.target.set('disabled', true);
-  if (App.props.securityType === "USER_SET_KERBEROS") {
-    showKerbPanel(function() {}, kerbConfirmDataPanel);
-    e.target.set('disabled', false);
-  } else {
-    deployServices();
-  }
-});
-
-function renderDeploy(deployInfo) {
-  App.props.clusterName = deployInfo.clusterName;
-  var inputUrl = "../php/frontend/fetchClusterServices.php?clusterName=" + App.props.clusterName + "&getConfigs=true&getComponents=true";
-  App.transition.executeStage(inputUrl, renderDeploySummary);
-}

+ 0 - 131
hmc/js/selectComponents.js

@@ -1,131 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-InstallationWizard.SelectServicesForNewNodes = {
-  renderData: {},
-  render: function (deployAddedNodesData) {
-    InstallationWizard.SelectServicesForNewNodes.renderData = deployAddedNodesData;
-    getServiceComponentListAndRender(clusterName);
-  }
-};
-
-function getServiceComponentListAndRender(clusterName) {
-  globalYui.io("../php/frontend/fetchClusterServices.php?clusterName=" + clusterName + "&getComponents=true", {
-  method: 'GET',
-  timeout: App.io.DEFAULT_AJAX_TIMEOUT_MS,
-  on: {
-    success: function (x,o) {
-    globalYui.log("RAW JSON DATA: " + o.responseText);
-    // Process the JSON data returned from the server
-    try {
-      responseJson = globalYui.JSON.parse(o.responseText);
-    } 
-    catch (e) {
-      alert("JSON Parse failed!");
-      return;
-    }
-
-    globalYui.log("PARSED DATA: " + globalYui.Lang.dump(responseJson));
-
-    if (responseJson.result != 0) {
-      // Error!
-      alert("Got error during fetching services !" + responseJson.error); 
-      return;
-    }
-    data = responseJson.response;
-
-    var divContent = '<ul>';
-    // for each service that is enabled, find all the slave components 
-    // and display them. 
-    // At this phase, we do not worry about dependencies because these are
-    // just slaves and each slave is independent of the other
-    for (serviceName in data['services'])  {
-      if (data['services'][serviceName]['isEnabled'] != "0" && data['services'][serviceName]['attributes']['noDisplay'] == false) {
-        component = data['services'][serviceName]['components'];
-        for (componentIndex in component) {
-          if (component[componentIndex]['isMaster'] == null && 
-              (component[componentIndex]['isClient'] == null)) {
-            continue;
-          }
-          if (!component[componentIndex]['isMaster'] && 
-              !component[componentIndex]['isClient'] &&
-              component[componentIndex].componentName != 'HIVE_MYSQL') {
-            divContent += '<li class="selectServicesEntry" name=try>';
-            divContent +=   '<label class="checkbox" for="install' + serviceName + 'Id">' 
-                        +   '<input type="checkbox" disabled="disabled" checked="yes" name="' + serviceName + '" id="install' + serviceName + 'Id" value="' + component[componentIndex].componentName + '"/>'
-                        + component[componentIndex].displayName + '</label>'
-                        +   '<div class="contextualhelp">' + component[componentIndex].description + '</div>'
-                        + '</li>';
-          } else {
-            continue;
-          }
-        }
-      } else {
-        continue;
-      }
-    }
-
-    divContent += '</ul>';
-
-    globalYui.one("#selectComponentsDynamicRenderDivId").setContent(divContent);
-    globalYui.one('#selectServicesCoreDivId').setStyle("display", "block");
-    },
-   
-    failure: function (x,o) {
-      alert(App.io.DEFAULT_AJAX_ERROR_MESSAGE);
-    }
-  }
-  });
-
-}
-
-function getSelectedComponents () {
-  var desiredComponents = [];
-  
-  var selections = 
-    globalYui.all("#selectComponentsDynamicRenderDivId input[type=checkbox]");
-    selections.each(function(selection) {
-      if (selection.get('checked') == true) {
-        desiredComponents.push(selection.get('value'));
-      }
-    });
-
-    return desiredComponents;
-}
-
-function renderSelectServicesBlock( selectServicesInfo ) {
-  InstallationWizard.SelectServicesForNewNodes.render(selectServicesInfo);
-}
-
-globalYui.one('#deployAddedNodesSubmitButtonId').on('click',function (e) {
-
-    e.target.set('disabled', true);
-
-    var deployRequestData = getSelectedComponents();
-
-    var url = "../php/frontend/deployAddedNodes.php?clusterName=" + InstallationWizard.SelectServicesForNewNodes.renderData.clusterName;
-    var requestData = deployRequestData;
-    var submitButton = e.target;
-    var thisScreenId = "#selectServicesCoreDivId";
-    var nextScreenId = "#txnProgressCoreDivId";
-    var nextScreenRenderFunction = renderDeployAddedNodesProgress;
-    App.transition.submitDataAndProgressToNextScreen(url, requestData, submitButton, thisScreenId, nextScreenId, nextScreenRenderFunction);
-});

+ 0 - 350
hmc/js/selectServices.js

@@ -1,350 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-InstallationWizard.SelectServices = {
-
-  renderData: {},
-
-  render:
-    function (selectServicesInfo) {
-
-      InstallationWizard.SelectServices.renderData = selectServicesInfo;
-
-    }
-};
-
-var data;
-var allBoxesSelected = true;
-
-function renderServiceList(responseJson) {
-  data = responseJson;
-  var divContent = '';
-  var coreContent = '';
-  var optionalContent = '';
-  var nonSelectableContent = '';
-  for (serviceName in data['services'])  {
-    data['services'][serviceName]['refCount'] = 0;
-    if (data['services'][serviceName]['reverseDependencies'] == null) {
-      data['services'][serviceName]['reverseDependencies'] = new Array();
-    }
-    for (var i = 0; i < data['services'][serviceName]['dependencies'].length; i++) {
-      svcDep = data['services'][serviceName]['dependencies'][i];
-      if (data['services'][svcDep]['reverseDependencies'] == null) {
-        data['services'][svcDep]['reverseDependencies'] = new Array();
-      }
-      var found = false;
-      for (var j = 0; j < data['services'][svcDep]['reverseDependencies'].length; j++) {
-        if (data['services'][svcDep]['reverseDependencies'][j] == serviceName) {
-          found = true;
-          break;
-        }
-      }
-      if (!found) {
-        data['services'][svcDep]['reverseDependencies'].push(serviceName);
-      }
-    }
-
-    // globalYui.log("Handling service : " + serviceName);
-    var content = '';
-    content = generateSelectServiceCheckbox(data['services'][serviceName]);
-
-    if (data['services'][serviceName].attributes.mustInstall) {
-      coreContent += content;
-    } else {
-      if (data['services'][serviceName].attributes.editable) {
-        optionalContent += content;
-      }
-      else {
-        nonSelectableContent += content;
-      }
-    } 
-
-  } 
-
-  //            divContent += coreContent + optionalContent + nonSelectableContent;
-   coreContent = '<div>' +
-                  '<label class="checkbox" for="selectAllCheckBoxId"><span id="labelForSelectAllId">Select all</span>' +
-                  '<input type="checkbox" name="selectAll" id="selectAllCheckBoxId"/></label>' +
-                '</div>' +
-                coreContent;
-  globalYui.one("#selectCoreServicesDynamicRenderDivId").setContent(coreContent);     
-  globalYui.one("#selectOptionalServicesDynamicRenderDivId").setContent(optionalContent);
-  globalYui.one("#selectNonSelectableServicesDynamicRenderDivId").setContent(nonSelectableContent);
-  globalYui.one('#selectServicesCoreDivId').setStyle("display", "block");
-
-  // For now, we want all services to be enabled by default
-  selectDelectAll(true);
-  displayStatusOnSelectDeselectAll(true, false);
-  globalYui.one("#selectAllCheckBoxId").set('checked', true);
-}
-
-function generateSelectServiceCheckbox(serviceInfo) {
-
-  var dContent = '<div class="formElement" name="' + serviceInfo.serviceName + '" id="'
-      + 'selectServicesEntry' + serviceInfo.serviceName + 'DivId"';
-
-  if (!serviceInfo.attributes.editable
-      && !serviceInfo.attributes.mustInstall) {
-    dContent += ' style="display:none" ';
-  }
-  dContent += '><label class="checkbox" for="install' + serviceInfo.serviceName + 'Id"'
-      + '>' + serviceInfo.displayName
-      + '<input type="checkbox" name="' + serviceInfo.serviceName + '"'
-      + ' id="installService' + serviceInfo.serviceName + 'Id" value="install'
-      + serviceInfo.serviceName + 'Value"';
-
-  if (serviceInfo.attributes != null) {
-     if (serviceInfo.attributes.noDisplay) {
-        return '';
-     }
-     if (!serviceInfo.attributes.editable) {
-       dContent += ' disabled="disabled"';
-     }
-     if (serviceInfo.attributes.mustInstall) {
-       dContent += ' checked="yes"';
-     }
-  }
- 
-  dContent += '/> - <span class="description">' + serviceInfo['description'] + '</span></label>' +
-          //'<div class="description">' + serviceInfo['description'] + '</div>' +
-        '</div>';
-
-  // globalYui.log("Handling service entry: " + dContent);
-  return dContent;
-}
-
-function getButtonId(serviceName) {
-  return 'installService' + serviceName + 'Id';
-}
-
-function setRefCounts(serviceName) {
-
-  var buttonId = getButtonId(serviceName);
-
-  // Set the refCount for 'this' service
-  if (!globalYui.one('#' + buttonId).get('checked')) {
-     data['services'][serviceName]['refCount'] = 0;
-  } else if (data['services'][serviceName]['refCount'] == 0) {
-     data['services'][serviceName]['refCount'] = 1;
-  }
-
-  // Set the refCounts for 'this' service's dependencies
-  var selectYes = true;
-  if (!globalYui.one('#' + buttonId).get('checked')) {
-     selectYes = false;
-  }
-  for (var i = 0; i < data['services'][serviceName]['dependencies'].length; i++) {
-     var serviceDep = data['services'][serviceName]['dependencies'][i];
-     if (selectYes) {
-        data['services'][serviceDep]['refCount']++;
-     } else {
-        data['services'][serviceDep]['refCount']--;
-        if (data['services'][serviceDep]['refCount'] < 0) {
-           data['services'][serviceDep]['refCount'] = 0;
-        }
-     }
-  }
-}
-
-function displayStatusOnSuccess(serviceName) {
-
-  var buttonId = getButtonId(serviceName);
-
-  var selectYes = true;
-  if (!globalYui.one('#' + buttonId).get('checked')) {
-     selectYes = false;
-  }
-
-  var statusString = "Selected " + data['services'][serviceName].displayName + " for installation. ";
-  if (!globalYui.one('#' + buttonId).get('checked')) {
-     statusString = "Deselected " + data['services'][serviceName].displayName + " and all its dependencies.";
-  }
-  // Generate the status string for dependencies
-  var dependencies = "";
-  for (var i = 0; i < data['services'][serviceName]['dependencies'].length; i++) {
-     var serviceDep = data['services'][serviceName]['dependencies'][i];
-     if (selectYes) {
-        if (!data['services'][serviceDep].attributes.mustInstall) {
-          dependencies += data['services'][serviceDep].displayName + " ";
-        }
-     }
-  }
-  if(selectYes) {
-    if(dependencies != "") {
-      statusString += "Also added  " + dependencies + " as dependencies.";
-    }
-  }
-  App.ui.setFormStatus(statusString, false);
-}
-
-function updateRendering() {
-
-  var currentAllBoxesSelected = true;
-
-  for (svcName in data['services']) {
-
-     if (data['services'][svcName].attributes.noDisplay) {
-       continue;
-     }
-
-     // globalYui.log('Svc ref count : ' + svcName + ' : ' + data['services'][svcName]['refCount']);
-
-     var itemId = getButtonId(svcName);
-     if (data['services'][svcName].attributes.mustInstall ||
-         data['services'][svcName]['refCount'] > 0) {
-        globalYui.one('#' + itemId).set('checked' ,'yes');
-        if (!data['services'][svcName].attributes.editable) {
-           var divId = 'selectServicesEntry' + svcName + 'DivId';
-           globalYui.one('#' + divId).setStyle('display', '');
-        }
-     } else {
-        currentAllBoxesSelected = false;
-        globalYui.one('#' + itemId).set('checked' ,'');
-        if (!data['services'][svcName].attributes.editable) {
-           var divId = 'selectServicesEntry' + svcName + 'DivId';
-           globalYui.one('#' + divId).setStyle('display', 'none');
-        }
-     }
-  }
-
-  if (allBoxesSelected != currentAllBoxesSelected) {
-    allBoxesSelected = currentAllBoxesSelected;
-    // Update the selectAll button
-    globalYui.one("#selectAllCheckBoxId").set('checked', allBoxesSelected);
-    displayStatusOnSelectDeselectAll(allBoxesSelected, false);
-  }
-}
-
-function displayStatusOnSelectDeselectAll(selectAll, setFormStatusAlso) {
-  var labelNode = globalYui.one("#labelForSelectAllId");
-  if (selectAll) {
-    labelNode.setContent("Select all");
-  } else {
-    labelNode.setContent("Select all");
-  }
-  if (setFormStatusAlso) {
-    if (selectAll) {
-      App.ui.setFormStatus("Selected all services", false);
-    } else {
-      App.ui.setFormStatus("Deselected all optional services", false);
-    }
-  }
-}
-
-function selectDelectAll(selectAll) {
-  var node = globalYui.one("#selectAllCheckBoxId");
-  var labelNode = globalYui.one("#labelForSelectAllId");
-  for (svcName in data['services']) {
-    if (!data['services'][svcName].attributes.noDisplay && !data['services'][svcName].attributes.mustInstall && data['services'][svcName].attributes.editable) {
-      var itemId = getButtonId(svcName);
-      if ( selectAll != globalYui.one('#' + itemId).get('checked')) {
-        globalYui.one('#' + itemId).set('checked' , selectAll);
-        setRefCounts(svcName);
-      }
-    }
-  }
-  // All done, update our rendering
-  updateRendering();
-}
-
-globalYui.one('#selectServicesCoreDivId').delegate('click', function (e) {
-
-    // Select-all checkbox
-    if (this.get('id') == 'selectAllCheckBoxId') {
-      var node = globalYui.one("#selectAllCheckBoxId");
-      var selectAll = node.get('checked');
-      selectDelectAll(selectAll);
-      displayStatusOnSelectDeselectAll(selectAll, true);
-      return;
-    }
-    //// End of select-all checkbox
-
-    // globalYui.log(globalYui.Lang.dump(this));
-    var serviceName = this.getAttribute('name');
-    var buttonId = getButtonId(serviceName);
-
-    // Deselecting an already selected service
-    if (!globalYui.one('#' + buttonId).get('checked')) {
-      var invalidDep = false;
-      var invalidDepReason = "";
-      for (var i = 0; i < data['services'][serviceName]['reverseDependencies'].length; i++) {
-        var nm = data['services'][serviceName]['reverseDependencies'][i];
-        if (data['services'][nm]['refCount'] > 0) {
-          invalidDep = true;
-          invalidDepReason = "Cannot deselect: " + data['services'][serviceName].displayName + " is needed by " + data['services'][nm].displayName;
-          break;
-        }
-      }
-      if (invalidDep) {
-        App.ui.setFormStatus(invalidDepReason, true);
-        globalYui.one('#' + buttonId).set('checked', 'yes');
-        return;
-      }
-
-      // Some things are deselected, so update the selectAll button
-      globalYui.one("#selectAllCheckBoxId").set('checked', false);
-    }
-
-    setRefCounts(serviceName);
-
-    // Display status as to what we have done now.
-    displayStatusOnSuccess(serviceName);
-
-    // All done, update our rendering
-    updateRendering();
-
-//}, 'li.selectServicesEntry');
-}, 'input[type=checkbox]');
-
-globalYui.one('#selectServicesSubmitButtonId').on('click',function (e) {
-    var selectServicesRequestData = {
-        "services" : [ ] } ;
-    for (svcName in data['services']) {
-       /* if (data['services'][svcName].attributes.noDisplay) {
-         continue;
-       }*/
-       var svcObj = { "serviceName" : svcName,
-                      "isEnabled": (data['services'][svcName].attributes.mustInstall || data['services'][svcName]['refCount'] > 0) };
-       selectServicesRequestData.services.push(svcObj);
-    }
-
-    // alert(globalYui.Lang.dump(selectServicesRequestData));
-
-    var url = "../php/frontend/selectServices.php?clusterName=" + InstallationWizard.SelectServices.renderData.clusterName;
-    var requestData = selectServicesRequestData;
-    var submitButton = globalYui.one('#selectServicesSubmitButtonId');
-    var thisScreenId = "#selectServicesCoreDivId";
-    var nextScreenId  = "#assignHostsCoreDivId";
-    var nextScreenRenderFunction = new AssignMasters().render;
-
-    App.transition.submitDataAndProgressToNextScreen(url, requestData, submitButton, thisScreenId, nextScreenId, nextScreenRenderFunction);
-
-});
-
-function renderSelectServicesBlock(infoInitializeCluster) {
-
-  InstallationWizard.SelectServices.renderData = infoInitializeCluster;
-
-  //////// Get the list of services and relevant information for rendering them.
-  var clusterName = InstallationWizard.SelectServices.renderData.clusterName;
-  var inputUrl = "../php/frontend/fetchClusterServices.php?clusterName=" + clusterName ;
-  App.transition.executeStage(inputUrl, renderServiceList);
-}

+ 0 - 23
hmc/js/showDeployAddedNodesProgress.js

@@ -1,23 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/* Main() */
-App.transition.executeStage( '../php/frontend/deployAddedNodes.php?clusterName=' + App.props.clusterName, renderDeployAddedNodesProgress );

+ 0 - 23
hmc/js/showDeployProgress.js

@@ -1,23 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/* Main() */
-App.transition.executeStage( '../php/frontend/deploy.php?clusterName=' + App.props.clusterName, renderDeployProgress );

+ 0 - 23
hmc/js/showManageServicesProgress.js

@@ -1,23 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/* Main() */
-App.transition.executeStage( '../php/frontend/manageServices.php?clusterName=' + App.props.clusterName, renderManageServicesProgress );

+ 0 - 23
hmc/js/showUninstallProgress.js

@@ -1,23 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/* Main() */
-App.transition.executeStage( '../php/frontend/uninstall.php?clusterName=' + App.props.clusterName, renderUninstallProgress );

+ 0 - 67
hmc/js/test/initializeClusterTest.js

@@ -1,67 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-// This is to aid development by jumping to a specified stage on page load
-// so that the developer does not have to run through each page to see code
-// changes made to the stage (assuming the developer has already run the wizard
-// up to that stage and all the necessary data are in the database).
-// This is a stop-gap measure until we implement actual state/history management
-// so that a browser refresh reloads the current stage, rather than forcing
-// the user back to the first stage.
-(function() {  
-  var clusterName = 'test';
-  //var stage ='createCluster';
-  //var stage = 'selectServices';
-  var stage = 'configureServices';
-  Y.one("#createClusterCoreDivId").hide();
-  
-  var hitCurrentStage = false;
-  
-  Y.all('#installationWizardProgressBarListId li').each(function(tab) {
-    if (tab.get('id') === (stage + 'StageId')) {
-      hitCurrentStage = true;
-      tab.set('className', 'installationWizardCurrentStage');
-    } else if (!hitCurrentStage) {
-      tab.set('className', 'installationWizardVisitedStage');
-    }
-  });
-
-  switch (stage) {
-  case 'createCluster':
-    globalYui.one("#createClusterCoreDivId").show();
-    break;
-  case 'selectServices':
-    renderSelectServicesBlock({ "clusterName": clusterName, "txnId":1 });
-    break;
-  case 'assignMasters':
-    // TODO
-    break;
-  case 'selectMountPoints':
-    // TODO
-    renderConfigureCluster({ "clusterName": clusterName});
-    break;
-  case 'configureServices':
-    renderOptionsPage({ "clusterName": clusterName});
-    break;
-  default:
-    break;
-  }
-})();

+ 0 - 504
hmc/js/txnUtils.js

@@ -1,504 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-App.ui.TxnProgressWidget = function (config) {
-
-  var CONTAINER_DOM_ID = 'txnProgressCoreDivId';
-  var CLOSE_LINK_DOM_ID = 'txnProgressWidgetCloseLink';
-  var SHOW_LOGS_LINK_DOM_ID = 'txnProgressWidgetShowLogsLink';
-
-  var periodicDataPoller = null;
-  var isLogFetched = false;
-  var errorInfoPanel = null;
-  var targetUrl = null;
-
-  config.successMessage = config.successMessage ||
-    '<p>' +
-      'Successfully completed the operation.' +
-      '<a href="javascript:void(null)" id="' + CLOSE_LINK_DOM_ID + '" style="margin-left:10px" class="btn btn-large">' +
-      'Continue' +
-      '</a>' +
-      '</p>';
-
-  config.failureMessage = config.failureMessage ||
-    '<p>' +
-      'Failed to complete the operation.  Please ' +
-      '<a href="javascript:void(null)" id="' + SHOW_LOGS_LINK_DOM_ID + '">take a look at Operation Logs</a>' +
-      ' to see what might have gone wrong.  ' +
-      '<a href="javascript:void(null)" id="' + CLOSE_LINK_DOM_ID + '">' +
-      'Close' +
-      '</a>' +
-      '</p>';
-
-  config.onSuccess = config.onSuccess || function (widget) {
-  };
-
-  config.onFailure = config.onFailure || function (widget) {
-  };
-
-  config.onClose = config.onClose || function (widget) {
-  };
-
-  this.setTargetUrl = function (url) {
-    targetUrl = url;
-  };
-
-  var txnProgressStateShouldBeSkipped = function (txnProgressState) {
-
-    var skipIt = false;
-
-    if ((txnProgressState.subTxnType != 'CLUSTER') &&
-      (txnProgressState.subTxnType != 'SERVICE') &&
-      (txnProgressState.subTxnType != 'SERVICE-SMOKETEST')) {
-
-      skipIt = true;
-    }
-
-    return skipIt;
-  };
-
-  var getTxnElementMarkup = function (txnProgressStateTitle, txnProgressState) {
-
-    var stateClass;
-    var barClass;
-    var status;
-
-    switch (txnProgressState) {
-      case 'COMPLETED':
-        stateClass = 'txnProgressStateDone';
-        barClass = 'progress progress-success';
-        status = 'Completed';
-        break;
-
-      case 'IN_PROGRESS':
-        stateClass = 'txnProgressStateInProgress';
-        //barClass = 'progress progress-striped active';
-        barClass = 'progress';
-        status = 'In Progress';
-        break;
-
-      case 'FAILED':
-        stateClass = 'txnProgressStateError';
-        barClass = 'progress progress-danger';
-        status = 'Failed';
-        break;
-
-      default:
-        stateClass = 'txnProgressStatePending';
-        barClass = 'progress';
-        status = 'Pending';
-        break;
-    }
-
-    var barMarkup = '<div class="' + barClass + '"><div class="bar"></div></div>';
-
-    if (stateClass == 'txnProgressStateInProgress') {
-      barMarkup = '<div id="activeProgressBarContainer">' + barMarkup + '</div>';
-    }
-
-    var markup = '<li class="clearfix"><label class="' + stateClass + '">' + txnProgressStateTitle + '</label>' + barMarkup + '<div class="status ' + stateClass + '">' + status + '</div>' + '</li>';
-
-    return markup;
-  };
-
-  var clearActiveProgressBar = function () {
-    var bar = Y.one('#activeProgressBar');
-    if (bar != null) {
-      bar.remove();
-    }
-    Y.on('windowresize', function (e) {
-      setActiveProgressBarInPlace();
-    });
-  };
-
-  var setActiveProgressBarInPlace = function () {
-    var bar = Y.one('#activeProgressBar');
-    var barContainer = Y.one('#activeProgressBarContainer');
-    var marginTop = 3;
-
-    // Puts an active progress bar where the placeholder with the DIV ID of "activeProgressBarSpot" is located.
-    // Creates an instance of the active progress bar if one does not already exist
-    // so that we can keep reusing it and moving it in place, rather than dynamically rendering it
-    // on every successful callback to avoid flickering/disconnect due to animation.
-    if (barContainer != null) {
-      if (bar == null) {
-        Y.one("body").append('<div id="activeProgressBar" class="progress progress-striped active" style="position:absolute;top:-50px;left:0;z-index:99;"><div style="width:100%" class="bar"></div></div>');
-        bar = Y.one('#activeProgressBar');
-      }
-      bar.show();
-      if (bar.getX() != barContainer.getX() || bar.getY() != barContainer.getY() + marginTop) {
-        bar.setXY([ barContainer.getX(), barContainer.getY() + marginTop ]);
-      }
-    } else if (bar != null) {
-      bar.hide();
-    }
-  };
-
-  var requestStr = '?clusterName=' + config.context.clusterName + '&txnId=' + config.context.txnId;
-  if ("deployUser" in config.context) {
-    requestStr += '&deployUser=' + config.context.deployUser;
-  }
-
-  var pdpDataSourceContext = {
-    source: '/hmc/php/frontend/fetchTxnProgress.php',
-    schema: {
-      metaFields: {
-        progress: 'progress'
-      }
-    },
-    request: requestStr,
-    pollInterval: 3000,
-    maxFailedAttempts: 5
-  };
-
-  var pdpResponseHandler = {
-    success: function (e, pdp) {
-
-      var txnProgressMarkup =
-        '<img id=txnProgressLoadingImgId class=loadingImg src=/hmc/images/loading.gif />';
-
-      var noNeedForFurtherPolling = false;
-      var txnProgressStatusDivContent = '';
-      var txnProgressStatusDivCssClass = '';
-
-      var txnProgress = e.response.meta.progress;
-
-      /* Guard against race conditions where txnProgress is null because the
-       * txn hasn't had time to be kicked off yet.
-       */
-      if (txnProgress) {
-
-        /* The first time we get back meaningful progress data, pause the
-         * automatic polling to avoid race conditions where response N+1
-         * is made (and returns with fresh data) while request N hasn't
-         * yet been fully processed.
-         *
-         * We'll unpause at the end, after we've performed the rendering
-         * of the updated states.
-         */
-        pdp.pause();
-
-        var txnProgressStates = txnProgress.subTxns || [];
-        Y.log(Y.Lang.dump(txnProgressStates));
-
-        txnProgressMarkup = '<ul>';
-
-        var progressStateIndex = 0;
-
-        /* Generate markup for all the "done" states. */
-        for (; progressStateIndex < txnProgressStates.length; ++progressStateIndex) {
-
-          var presentTxnProgressState = txnProgressStates[ progressStateIndex ];
-
-          /* Step over any progress states that don't deserve to be shown. */
-          if (txnProgressStateShouldBeSkipped(presentTxnProgressState)) {
-            continue;
-          }
-
-          /* The first sign of a state that isn't done, and we're outta here. */
-          if (presentTxnProgressState.progress != 'COMPLETED') {
-            break;
-          }
-
-          Y.log('Done loop - ' + progressStateIndex);
-
-          txnProgressMarkup += getTxnElementMarkup
-            (presentTxnProgressState.description, 'COMPLETED');
-
-          Y.log("Currently, markup is:" + txnProgressMarkup);
-        }
-
-        /* Next, generate markup for the first "in-progress" state. */
-        for (; progressStateIndex < txnProgressStates.length; ++progressStateIndex) {
-
-          var presentTxnProgressState = txnProgressStates[ progressStateIndex ];
-
-          /* Step over any progress states that don't deserve to be shown. */
-          if (txnProgressStateShouldBeSkipped(presentTxnProgressState)) {
-            continue;
-          }
-
-          /* The first state that shouldn't be skipped is marked as being
-           * "in-progress", even if presentTxnProgressState.progress is
-           * not explicitly set to "IN_PROGRESS".
-           *
-           * This is to take care of race conditions where the poll to the
-           * backend is made at a time when the previous state has
-           * "COMPLETED" but the next state hasn't been started yet (which
-           * means it's "PENDING") - if we were explicitly looking for
-           * "IN_PROGRESS", there'd be nothing to show in this loop and it
-           * would run to the end of txnProgressStates hunting for that
-           * elusive "IN_PROGRESS", thus not even showing any of the
-           * "PENDING" states, causing a momentary jitter in the rendering
-           * (see AMBARI-344 for an example).
-           */
-          Y.log('In-progress/failed - ' + progressStateIndex);
-
-          /* Decide upon what CSS class to assign to the currently-in-progress
-           * state - if an error was marked as having been encountered, assign
-           * the fitting .txnProgressStateError, else just annoint it with
-           * .txnProgressStateInProgress
-           */
-          var currentProgressState = 'IN_PROGRESS';
-
-          /* The 2 possible indications of error are:
-           *
-           * a) presentTxnProgressState.progress is 'IN_PROGRESS' but
-           *    txnProgress.encounteredError is true.
-           * b) presentTxnProgressState.progress is 'FAILED'.
-           */
-          if ((txnProgress.encounteredError) ||
-            (presentTxnProgressState.progress == 'FAILED')) {
-
-            currentProgressState = 'FAILED';
-          }
-
-          /* And generate markup for this "in-progress" state. */
-          txnProgressMarkup += getTxnElementMarkup
-            (presentTxnProgressState.description, currentProgressState);
-
-          /* It's important to manually increment progressStateIndex here,
-           * to set it up correctly for the upcoming loop.
-           */
-          ++progressStateIndex;
-
-          /* Remember, we only care for the FIRST "in-progress" state.
-           *
-           * Any following "in-progress" states will all be marked as
-           * "pending", so as to avoid the display from becoming
-           * disorienting (with multiple states "in-progress").
-           */
-          break;
-        }
-
-        /* Finally, generate markup for all the "pending" states. */
-        for (; progressStateIndex < txnProgressStates.length; ++progressStateIndex) {
-
-          var presentTxnProgressState = txnProgressStates[ progressStateIndex ];
-
-          /* Step over any progress states that don't deserve to be shown. */
-          if (txnProgressStateShouldBeSkipped(presentTxnProgressState)) {
-            continue;
-          }
-
-          Y.log('Pending loop - ' + progressStateIndex);
-
-          txnProgressMarkup += getTxnElementMarkup
-            (presentTxnProgressState.description, 'PENDING');
-
-        }
-
-        txnProgressMarkup += '</ul>';
-
-        /* Make sure we have some progress data to show - if not,
-         * we'll just show a loading image until this is non-null.
-         *
-         * The additional check for txnProgress.processRunning is to account
-         * for cases where there are no subTxns (because it's all a no-op at
-         * the backend) - the loading image should only be shown as long as
-         * the backend is still working; after that, we should break out of
-         * the loading image loop and let the user know that there was
-         * nothing to be done.
-         */
-        if (txnProgress.subTxns == null) {
-          if (txnProgress.processRunning == 0) {
-            txnProgressMarkup =
-              '<br/>' +
-                '<div class="txnNoOpMsg">' +
-                'There are no tasks for this transaction.' +
-                '</div>' +
-                '<br/>';
-          }
-          else {
-            txnProgressMarkup =
-              '<img id="txnProgressLoadingImgId" class="loadingImg" src="/hmc/images/loading.gif" />';
-          }
-        }
-
-        /* We can break this polling cycle in one of 2 ways:
-         *
-         * 1) If we are explicitly told by the backend that we're done.
-         */
-        if (txnProgress.processRunning == 0) {
-
-          noNeedForFurtherPolling = true;
-          /* Be optimistic and assume that no errors were encountered (we'll
-           * get more in touch with reality further below).
-           */
-          txnProgressStatusDivContent = config.successMessage;
-          txnProgressStatusDivCssClass = 'statusOk';
-        }
-
-        /* 2) If we encounter an error.
-         *
-         * Note how this is placed after the previous check, so as to serve
-         * as an override in case the backend explicitly told us that we're
-         * done, but an error was encountered in that very last progress report.
-         */
-        if (txnProgress.encounteredError) {
-
-          noNeedForFurtherPolling = true;
-          txnProgressStatusDivContent = config.failureMessage;
-          txnProgressStatusDivCssClass = 'statusError';
-        }
-      }
-
-      /* Render txnProgressMarkup before making any decisions about the
-       * future state of pdp.
-       */
-      Y.log('About to generate markup: ' + txnProgressMarkup);
-      Y.one('#txnProgressContentDivId').setContent(txnProgressMarkup);
-      setActiveProgressBarInPlace();
-
-      /* And before checking out, decide whether we're done with this txn
-       * or whether any more polling is required.
-       */
-      if (noNeedForFurtherPolling) {
-
-        /* We've made all the progress we could have, so stop polling. */
-        pdp.stop();
-
-        var txnProgressStatusDiv = Y.one('#txnProgressStatusDivId');
-
-        txnProgressStatusDiv.addClass(txnProgressStatusDivCssClass);
-        txnProgressStatusDiv.one('#txnProgressStatusMessageDivId').setContent(txnProgressStatusDivContent);
-        txnProgressStatusDiv.show();
-
-        /* Run the post-completion callback. */
-        if (txnProgressStatusDivCssClass == 'statusOk') {
-          if (config.onSuccess) {
-            config.onSuccess(this);
-          }
-        }
-        else if (txnProgressStatusDivCssClass == 'statusError') {
-          if (config.onFailure) {
-            config.onFailure(this);
-          }
-        }
-      }
-      else {
-        /* There's still more progress to be made, so unpause. */
-        pdp.unPause();
-      }
-
-    }.bind(this),
-
-    failure: function (e, pdp) {
-      alert('Failed to fetch more progress!');
-    }.bind(this)
-  };
-
-  this.show = function () {
-    // start with a clean slate to clear any mess left by previous invocations
-    var statusDiv = Y.one('#txnProgressStatusDivId');
-    statusDiv.one('#txnProgressStatusMessageDivId').setContent('');
-    statusDiv.one('#txnProgressStatusActionsDivId').setContent('');
-    statusDiv.removeClass('statusOk');
-    statusDiv.removeClass('statusError');
-    statusDiv.hide();
-    Y.one('#txnProgressContentDivId').setContent
-      ('<ul class="wrapped"><li><img id="txnProgressLoadingImgId" class="loadingImg" src="/hmc/images/loading.gif" /></li></ul>');
-
-    // clear active progress bar if one already exists
-    clearActiveProgressBar();
-
-    App.ui.hideLoadingOverlay();
-
-    Y.one("#txnProgressHeader").setContent(config.title);
-    Y.one('#blackScreenDivId').show();
-    Y.one('#txnProgressCoreDivId').show();
-    Y.one('#txnProgressBox').scrollIntoView();
-
-    periodicDataPoller.start();
-  };
-
-  this.hide = function () {
-    periodicDataPoller.stop();
-
-    Y.one('#txnProgressCoreDivId').hide();
-    Y.one('#blackScreenDivId').hide();
-  };
-
-  // initialize this object
-
-  periodicDataPoller = new App.io.PeriodicDataPoller(pdpDataSourceContext, pdpResponseHandler);
-
-  var onClick = function (e) {
-    switch (e.target.get('id')) {
-      case CLOSE_LINK_DOM_ID:
-        if (config.onClose) {
-          config.onClose();
-          if (targetUrl != null) {
-            document.location.href = targetUrl;
-          }
-          this.hide();
-        }
-        break;
-      case SHOW_LOGS_LINK_DOM_ID:
-
-        if (!isLogFetched) {
-          errorInfoPanel = App.ui.createInfoPanel('Operation Logs');
-
-          var bodyContent =
-            '<img id="errorInfoPanelLoadingImgId" class="loadingImg" src="/hmc/images/loading.gif" />';
-
-          errorInfoPanel.set('bodyContent', bodyContent);
-          errorInfoPanel.show();
-
-          Y.io('/hmc/php/frontend/fetchTxnLogs.php?clusterName=' +
-            config.context.clusterName + '&txnId=' + config.context.txnId, {
-
-            timeout: App.io.FETCH_LOG_TIMEOUT_MS,
-            on: {
-              success: function (x, o) {
-
-                var errorInfoJson = null;
-                try {
-                  errorInfoJson = Y.JSON.parse(o.responseText);
-                } catch (e) {
-                  alert("JSON Parse failed!");
-                  return;
-                }
-
-                errorInfoPanelBodyContent =
-                  '<pre>' +
-                    Y.JSON.stringify(errorInfoJson.logs, null, 4) +
-                    '</pre>';
-
-                errorInfoPanel.set('bodyContent', errorInfoPanelBodyContent);
-
-                isLogFetched = true;
-              },
-              failure: function (x, o) {
-                alert(App.io.DEFAULT_AJAX_ERROR_MESSAGE);
-              }
-            }
-          });
-        } else {
-          errorInfoPanel.show();
-        }
-        break;
-    }
-  }.bind(this);
-
-  Y.one('#' + CONTAINER_DOM_ID).delegate('click', onClick, 'a');
-
-};

+ 0 - 169
hmc/js/uninstall.js

@@ -1,169 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-function getWipeOutConfirmation () {
-  var selections = globalYui.all("#confirmWipeOutDivId input[type=checkbox]");
-
-  var wipeOutChecked = false;
-  selections.each( function(selection) {
-    wipeOutChecked = selection.get('checked');
-  });
-
-  if (wipeOutChecked) {
-    return "wipeOut";
-  } else {
-    return "uninstall";
-  }
-
-}
-
-globalYui.one('#addNodesSubmitButtonId').on('click',function (e) {
-
-  var focusId = '';
-  var message = '';
-  var errCount = 0;
-
-  var userId = globalYui.Lang.trim(globalYui.one("#clusterDeployUserId").get('value'));
-  if (userId == '') {
-    errCount++;
-    focusId = '#clusterDeployUserId';
-    message += 'SSH Username cannot be empty';
-    globalYui.one("#clusterDeployUserId").addClass('formInputError');
-  } else {
-    globalYui.one("#clusterDeployUserId").removeClass('formInputError');
-  }
-
-  var fileName = globalYui.one("#clusterDeployUserIdentityFileId").get('value');
-  if (fileName == '') {
-    errCount++;
-    if (focusId == '') {
-      focusId = '#clusterDeployUserIdentityFileId';
-    }
-    if (message != '') {
-      message += ',';
-    } 
-    message += 'SSH Private Key File not specified';
-    globalYui.one("#clusterDeployUserIdentityFileId").addClass('formInputError');
-  } else {
-    globalYui.one("#clusterDeployUserIdentityFileId").removeClass('formInputError');
-  }
-
-  if (nodesAction != "uninstall") {
-    fileName = globalYui.one("#clusterHostsFileId").get('value');
-    if (fileName == '') {
-      errCount++;
-      if (focusId == '') {
-        focusId = '#clusterHostsFileId';
-      }
-      if (message != '') {
-        message += ',';
-      } 
-      message += 'Hosts File not specified';
-      globalYui.one("#clusterHostsFileId").addClass('formInputError');
-    } else {
-      globalYui.one("#clusterHostsFileId").removeClass('formInputError');
-    }
-  }
-
-  if (errCount != 0) {
-    globalYui.one(focusId).focus();
-    App.ui.setFormStatus(message, true);
-    return;
-  }
-
-  App.ui.clearFormStatus();
-  
-  var doWipeout = globalYui.one('#confirmWipeOutCheckId').get('checked');
-  var warningMessage = doWipeout ? "All your data, in addition to services, will be deleted from all your cluster nodes.  Are you sure you want to proceed?" : "All your services will be deleted from all your cluster nodes.  Your data will not be deleted.  Are you sure you want to proceed?";
-  
-  var confirmPanel = App.ui.createInfoPanel('Uninstall Cluster');
-  confirmPanel.set('centered', true);
-  confirmPanel.set('bodyContent', warningMessage);
-  confirmPanel.addButton({
-    value: 'Cancel',
-    action: function (e) {
-      e.preventDefault();
-      App.ui.destroyInfoPanel(confirmPanel);
-    },
-    classNames: '',
-    section: 'footer'
-  });
-  confirmPanel.addButton({
-    value: 'Proceed with Uninstall',
-    action: function (e) {
-      e.preventDefault();
-      App.ui.destroyInfoPanel(confirmPanel);
-
-      App.ui.showLoadingOverlay();
-
-      globalYui.log("About to upload files.");
-      e.target.set('disabled', true);
-
-      var addNodesFilesForm = globalYui.one("#addNodesFilesFormId");
-
-      addNodesFilesForm.set('action', '../php/frontend/addNodes.php?clusterName=' + 
-        clusterName);
-
-      /* Set the target of the first form's upload to be a hidden iframe 
-       * on the page so as not to redirect to the PHP page we're POSTing 
-       * to.
-       *
-       * See http://www.openjs.com/articles/ajax/ajax_file_upload/ for 
-       * more on this.
-       */
-      addNodesFilesForm.set('target', 'fileUploadTarget');
-
-      /* And then programmatically submit the first of the 2 forms. */ 
-      addNodesFilesForm.submit();
-      globalYui.log("Files submitted to server.");
-
-      e.target.set('disabled', false);
-    },
-    classNames: 'okButton',
-    section: 'footer'
-  });
-
-  confirmPanel.show();
-  
-});
-
-var setupNodesJson = "";
-
-globalYui.one("#fileUploadTargetId").on('load', function (e) {
-
-    e.target.set('disabled', true);
-
-    var action = getWipeOutConfirmation();
-
-    var uninstallRequestData = { };
-
-    var userId = globalYui.Lang.trim(globalYui.one("#clusterDeployUserId").get('value'));
-    var url = "../php/frontend/uninstall.php?clusterName=" + clusterName + "&action=" + action + "&clusterDeployUser=" + userId;
-    var requestData = uninstallRequestData;
-    var submitButton = e.target;
-    var thisScreenId = "#addNodesCoreDivId";
-    var nextScreenId = "#txnProgressCoreDivId";
-    var nextScreenRenderFunction = renderUninstallProgress;
-    App.transition.submitDataAndProgressToNextScreen(url, requestData, submitButton, thisScreenId, nextScreenId, nextScreenRenderFunction);
-});
-
-/* Main() */
-App.ui.hideLoadingOverlay();

+ 0 - 57
hmc/js/uninstallProgress.js

@@ -1,57 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-renderUninstallProgress = function (context) {
-
-  var successMessage =
-    '<p>' +
-      'Uninstalled the cluster successfully.' +
-      '<a href="javascript:void(null)" style="margin-left:20px" class="btn btn-large" id="txnProgressWidgetCloseLink">' +
-      'Continue' +
-      '</a>' +
-      '</p>';
-
-  var failureMessage =
-    '<p>' +
-      'There was a problem with uninstall.<br />Take a look at ' +
-      '<a href="javascript:void(null)" id="txnProgressWidgetShowLogsLink">Uninstall Logs</a>' +
-      ' to see what might have happened.<br>' +
-      '<a href="javascript:void(null)" class="btn btn-large" style="margin-top:10px" id="txnProgressWidgetCloseLink">' +
-      'Close' +
-      '</a>' +
-      '</p>';
-
-  var onClose = function (txnProgressWidget) {
-    document.location.href = App.props.homeUrl;
-  };
-
-  var config = {
-    context: context,
-    title: 'Uninstall Cluster',
-    successMessage: successMessage,
-    failureMessage: failureMessage,
-    onClose: onClose
-  };
-
-  var progressWidget = new App.ui.TxnProgressWidget(config);
-
-  progressWidget.show();
-};

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 68
hmc/js/upgradeStack/deploy.js


Vissa filer visades inte eftersom för många filer har ändrats